import * as Schema from "effect/Schema";
import * as MobySchemas from "../schemas/index.js";
import * as SwarmSpec from "./SwarmSpec.generated.js";
declare const SwarmInitRequest_base: Schema.Class<SwarmInitRequest, {
    /**
     * Listen address used for inter-manager communication, as well as
     * determining the networking interface used for the VXLAN Tunnel
     * Endpoint (VTEP). This can either be an address/port combination in
     * the form 192.168.1.1:4567, or an interface followed by a port number,
     * like eth0:4567. If the port number is omitted, the default swarm
     * listening port is used.
     */
    ListenAddr: Schema.Union<[Schema.TemplateLiteral<`${string}:${number}`>, MobySchemas.AddressSchemas.$AddressString, typeof Schema.String]>;
    /**
     * Externally reachable address advertised to other nodes. This can
     * either be an address/port combination in the form 192.168.1.1:4567,
     * or an interface followed by a port number, like eth0:4567. If the
     * port number is omitted, the port number from the listen address is
     * used. If AdvertiseAddr is not specified, it will be automatically
     * detected when possible.
     */
    AdvertiseAddr: Schema.optionalWith<Schema.Union<[Schema.TemplateLiteral<`${string}:${number}`>, MobySchemas.AddressSchemas.$AddressString, typeof Schema.String]>, {
        nullable: true;
    }>;
    /**
     * Address or interface to use for data path traffic (format:
     * <ip|interface>), for example, 192.168.1.1, or an interface, like
     * eth0. If DataPathAddr is unspecified, the same address as
     * AdvertiseAddr is used.
     *
     * The DataPathAddr specifies the address that global scope network
     * drivers will publish towards other nodes in order to reach the
     * containers running on this node. Using this parameter it is possible
     * to separate the container data traffic from the management traffic of
     * the cluster.
     */
    DataPathAddr: Schema.optionalWith<Schema.Union<[MobySchemas.AddressSchemas.$AddressString, typeof Schema.String]>, {
        nullable: true;
    }>;
    /**
     * DataPathPort specifies the data path port number for data traffic.
     * Acceptable port range is 1024 to 49151. if no port is set or is set
     * to 0, default port 4789 will be used.
     */
    DataPathPort: Schema.optionalWith<MobySchemas.PortSchemas.$Port, {
        nullable: true;
    }>;
    /** Force creation of a new swarm. */
    ForceNewCluster: Schema.optionalWith<typeof Schema.Boolean, {
        nullable: true;
    }>;
    /** User modifiable swarm configuration. */
    Spec: Schema.optionalWith<typeof SwarmSpec.SwarmSpec, {
        nullable: true;
    }>;
    /**
     * Default Address Pool specifies default subnet pools for global scope
     * networks.
     */
    DefaultAddrPool: Schema.optionalWith<Schema.Array$<MobySchemas.CidrBlockSchemas.$CidrBlockFromString>, {
        nullable: true;
    }>;
    /**
     * SubnetSize specifies the subnet size of the networks created from the
     * default subnet pool.
     */
    SubnetSize: Schema.optionalWith<MobySchemas.UInt32Schemas.$UInt32, {
        default: () => MobySchemas.UInt32Schemas.UInt32Brand;
        nullable: true;
    }>;
    AutoLockManagers: Schema.optionalWith<typeof Schema.Boolean, {
        nullable: true;
    }>;
    Availability: Schema.optionalWith<Schema.Literal<["active", "pause", "drain"]>, {
        nullable: true;
    }>;
}, Schema.Struct.Encoded<{
    /**
     * Listen address used for inter-manager communication, as well as
     * determining the networking interface used for the VXLAN Tunnel
     * Endpoint (VTEP). This can either be an address/port combination in
     * the form 192.168.1.1:4567, or an interface followed by a port number,
     * like eth0:4567. If the port number is omitted, the default swarm
     * listening port is used.
     */
    ListenAddr: Schema.Union<[Schema.TemplateLiteral<`${string}:${number}`>, MobySchemas.AddressSchemas.$AddressString, typeof Schema.String]>;
    /**
     * Externally reachable address advertised to other nodes. This can
     * either be an address/port combination in the form 192.168.1.1:4567,
     * or an interface followed by a port number, like eth0:4567. If the
     * port number is omitted, the port number from the listen address is
     * used. If AdvertiseAddr is not specified, it will be automatically
     * detected when possible.
     */
    AdvertiseAddr: Schema.optionalWith<Schema.Union<[Schema.TemplateLiteral<`${string}:${number}`>, MobySchemas.AddressSchemas.$AddressString, typeof Schema.String]>, {
        nullable: true;
    }>;
    /**
     * Address or interface to use for data path traffic (format:
     * <ip|interface>), for example, 192.168.1.1, or an interface, like
     * eth0. If DataPathAddr is unspecified, the same address as
     * AdvertiseAddr is used.
     *
     * The DataPathAddr specifies the address that global scope network
     * drivers will publish towards other nodes in order to reach the
     * containers running on this node. Using this parameter it is possible
     * to separate the container data traffic from the management traffic of
     * the cluster.
     */
    DataPathAddr: Schema.optionalWith<Schema.Union<[MobySchemas.AddressSchemas.$AddressString, typeof Schema.String]>, {
        nullable: true;
    }>;
    /**
     * DataPathPort specifies the data path port number for data traffic.
     * Acceptable port range is 1024 to 49151. if no port is set or is set
     * to 0, default port 4789 will be used.
     */
    DataPathPort: Schema.optionalWith<MobySchemas.PortSchemas.$Port, {
        nullable: true;
    }>;
    /** Force creation of a new swarm. */
    ForceNewCluster: Schema.optionalWith<typeof Schema.Boolean, {
        nullable: true;
    }>;
    /** User modifiable swarm configuration. */
    Spec: Schema.optionalWith<typeof SwarmSpec.SwarmSpec, {
        nullable: true;
    }>;
    /**
     * Default Address Pool specifies default subnet pools for global scope
     * networks.
     */
    DefaultAddrPool: Schema.optionalWith<Schema.Array$<MobySchemas.CidrBlockSchemas.$CidrBlockFromString>, {
        nullable: true;
    }>;
    /**
     * SubnetSize specifies the subnet size of the networks created from the
     * default subnet pool.
     */
    SubnetSize: Schema.optionalWith<MobySchemas.UInt32Schemas.$UInt32, {
        default: () => MobySchemas.UInt32Schemas.UInt32Brand;
        nullable: true;
    }>;
    AutoLockManagers: Schema.optionalWith<typeof Schema.Boolean, {
        nullable: true;
    }>;
    Availability: Schema.optionalWith<Schema.Literal<["active", "pause", "drain"]>, {
        nullable: true;
    }>;
}>, never, {
    readonly Availability?: "active" | "pause" | "drain" | undefined;
} & {
    readonly Spec?: SwarmSpec.SwarmSpec | undefined;
} & {
    readonly AutoLockManagers?: boolean | undefined;
} & {
    readonly SubnetSize?: MobySchemas.UInt32Schemas.UInt32Brand;
} & {
    readonly DataPathPort?: MobySchemas.PortSchemas.PortBrand | undefined;
} & {
    readonly DefaultAddrPool?: readonly (MobySchemas.CidrBlockSchemas.CidrBlockBase<"ipv4"> | MobySchemas.CidrBlockSchemas.CidrBlockBase<"ipv6">)[] | undefined;
} & {
    readonly ListenAddr: string;
} & {
    readonly AdvertiseAddr?: string | undefined;
} & {
    readonly DataPathAddr?: string | undefined;
} & {
    readonly ForceNewCluster?: boolean | undefined;
}, {}, {}>;
export declare class SwarmInitRequest extends SwarmInitRequest_base {
}
export {};
//# sourceMappingURL=SwarmInitRequest.generated.d.ts.map