import * as Schema from "effect/Schema";

import * as MobyIdentifiers from "../schemas/id.ts";
import * as TypesPluginConfig from "./TypesPluginConfig.generated.ts";
import * as TypesPluginSettings from "./TypesPluginSettings.generated.ts";

export class TypesPlugin extends Schema.Class<TypesPlugin>("TypesPlugin")(
    {
        Config: Schema.NullOr(TypesPluginConfig.TypesPluginConfig),
        Enabled: Schema.Boolean,
        Id: Schema.optional(MobyIdentifiers.PluginIdentifier),
        Name: Schema.String,
        PluginReference: Schema.optional(Schema.String),
        Settings: Schema.NullOr(TypesPluginSettings.TypesPluginSettings),
    },
    {
        identifier: "TypesPlugin",
        title: "types.Plugin",
        documentation: "https://pkg.go.dev/github.com/docker/docker@v28.4.0+incompatible/api/types#Plugin",
    }
) {}
