quote
$(Expr(:toplevel, quote
    begin
        begin
            @cenum BlendMode::Int32 BlendMode_DEFAULT = 0 BlendMode_MULTIPLY = 1 BlendMode_SCREEN = 2 BlendMode_OVERLAY = 3 BlendMode_DARKEN = 4 BlendMode_LIGHTEN = 5 BlendMode_COLOR_DODGE = 6 BlendMode_COLOR_BURN = 7 BlendMode_HARD_LIGHT = 8 BlendMode_SOFT_LIGHT = 9 BlendMode_DIFFERENCE = 10 BlendMode_EXCLUSION = 11 BlendMode_COLOR = 12 BlendMode_HUE = 13 BlendMode_SATURATION = 14 BlendMode_LUMINOSITY = 15
            (GLib.g_type(::Type{T}) where T <: BlendMode) = begin
                    ccall(("gsk_blend_mode_get_type", libgtk4), GType, ())
                end
        end
        begin
            @cenum Corner::Int32 Corner_TOP_LEFT = 0 Corner_TOP_RIGHT = 1 Corner_BOTTOM_RIGHT = 2 Corner_BOTTOM_LEFT = 3
            (GLib.g_type(::Type{T}) where T <: Corner) = begin
                    ccall(("gsk_corner_get_type", libgtk4), GType, ())
                end
        end
        begin
            @cenum GLUniformType::Int32 GLUniformType_NONE = 0 GLUniformType_FLOAT = 1 GLUniformType_INT = 2 GLUniformType_UINT = 3 GLUniformType_BOOL = 4 GLUniformType_VEC2 = 5 GLUniformType_VEC3 = 6 GLUniformType_VEC4 = 7
            (GLib.g_type(::Type{T}) where T <: GLUniformType) = begin
                    ccall(("gsk_gl_uniform_type_get_type", libgtk4), GType, ())
                end
        end
        begin
            @cenum RenderNodeType::Int32 RenderNodeType_NOT_A_RENDER_NODE = 0 RenderNodeType_CONTAINER_NODE = 1 RenderNodeType_CAIRO_NODE = 2 RenderNodeType_COLOR_NODE = 3 RenderNodeType_LINEAR_GRADIENT_NODE = 4 RenderNodeType_REPEATING_LINEAR_GRADIENT_NODE = 5 RenderNodeType_RADIAL_GRADIENT_NODE = 6 RenderNodeType_REPEATING_RADIAL_GRADIENT_NODE = 7 RenderNodeType_CONIC_GRADIENT_NODE = 8 RenderNodeType_BORDER_NODE = 9 RenderNodeType_TEXTURE_NODE = 10 RenderNodeType_INSET_SHADOW_NODE = 11 RenderNodeType_OUTSET_SHADOW_NODE = 12 RenderNodeType_TRANSFORM_NODE = 13 RenderNodeType_OPACITY_NODE = 14 RenderNodeType_COLOR_MATRIX_NODE = 15 RenderNodeType_REPEAT_NODE = 16 RenderNodeType_CLIP_NODE = 17 RenderNodeType_ROUNDED_CLIP_NODE = 18 RenderNodeType_SHADOW_NODE = 19 RenderNodeType_BLEND_NODE = 20 RenderNodeType_CROSS_FADE_NODE = 21 RenderNodeType_TEXT_NODE = 22 RenderNodeType_BLUR_NODE = 23 RenderNodeType_DEBUG_NODE = 24 RenderNodeType_GL_SHADER_NODE = 25
            (GLib.g_type(::Type{T}) where T <: RenderNodeType) = begin
                    ccall(("gsk_render_node_type_get_type", libgtk4), GType, ())
                end
        end
        begin
            @cenum ScalingFilter::Int32 ScalingFilter_LINEAR = 0 ScalingFilter_NEAREST = 1 ScalingFilter_TRILINEAR = 2
            (GLib.g_type(::Type{T}) where T <: ScalingFilter) = begin
                    ccall(("gsk_scaling_filter_get_type", libgtk4), GType, ())
                end
        end
        begin
            @cenum SerializationError::Int32 SerializationError_UNSUPPORTED_FORMAT = 0 SerializationError_UNSUPPORTED_VERSION = 1 SerializationError_INVALID_DATA = 2
            (GLib.g_type(::Type{T}) where T <: SerializationError) = begin
                    ccall(("gsk_serialization_error_get_type", libgtk4), GType, ())
                end
        end
        begin
            @cenum TransformCategory::Int32 TransformCategory_UNKNOWN = 0 TransformCategory_ANY = 1 TransformCategory_3D = 2 TransformCategory_2D = 3 TransformCategory_2D_AFFINE = 4 TransformCategory_2D_TRANSLATE = 5 TransformCategory_IDENTITY = 6
            (GLib.g_type(::Type{T}) where T <: TransformCategory) = begin
                    ccall(("gsk_transform_category_get_type", libgtk4), GType, ())
                end
        end
        @doc "The blend modes available for render nodes.\n \nDetails can be found in the [GTK docs](https://docs.gtk.org/gsk4/enum.BlendMode.html)." BlendMode
        @doc "The corner indices used by `GskRoundedRect`.\n \nDetails can be found in the [GTK docs](https://docs.gtk.org/gsk4/enum.Corner.html)." Corner
        @doc "This defines the types of the uniforms that `GskGLShaders`\ndeclare.\n \nDetails can be found in the [GTK docs](https://docs.gtk.org/gsk4/enum.GLUniformType.html)." GLUniformType
        @doc "The type of a node determines what the node is rendering.\n \nDetails can be found in the [GTK docs](https://docs.gtk.org/gsk4/enum.RenderNodeType.html)." RenderNodeType
        @doc "The filters used when scaling texture data.\n \nDetails can be found in the [GTK docs](https://docs.gtk.org/gsk4/enum.ScalingFilter.html)." ScalingFilter
        @doc "Errors that can happen during (de)serialization.\n \nDetails can be found in the [GTK docs](https://docs.gtk.org/gsk4/enum.SerializationError.html)." SerializationError
        @doc "The categories of matrices relevant for GSK and GTK.\n \nDetails can be found in the [GTK docs](https://docs.gtk.org/gsk4/enum.TransformCategory.html)." TransformCategory
    end
end))
end
