import * as Schema from "effect/Schema";
import * as MobySchemas from "../schemas/index.js";
declare const SwarmJoinRequest_base: Schema.Class<SwarmJoinRequest, {
    /**
     * Listen address used for inter-manager communication if the node gets
     * promoted to manager, as well as determining the networking interface
     * used for the VXLAN Tunnel Endpoint (VTEP).
     */
    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;
    }>;
    /** Addresses of manager nodes already participating in the swarm. */
    RemoteAddrs: Schema.optionalWith<Schema.Array$<typeof Schema.String>, {
        nullable: true;
    }>;
    /** Secret token for joining this swarm. */
    JoinToken: typeof Schema.String;
    Availability: Schema.optionalWith<Schema.Literal<["active", "pause", "drain"]>, {
        nullable: true;
    }>;
}, Schema.Struct.Encoded<{
    /**
     * Listen address used for inter-manager communication if the node gets
     * promoted to manager, as well as determining the networking interface
     * used for the VXLAN Tunnel Endpoint (VTEP).
     */
    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;
    }>;
    /** Addresses of manager nodes already participating in the swarm. */
    RemoteAddrs: Schema.optionalWith<Schema.Array$<typeof Schema.String>, {
        nullable: true;
    }>;
    /** Secret token for joining this swarm. */
    JoinToken: typeof Schema.String;
    Availability: Schema.optionalWith<Schema.Literal<["active", "pause", "drain"]>, {
        nullable: true;
    }>;
}>, never, {
    readonly Availability?: "active" | "pause" | "drain" | undefined;
} & {
    readonly ListenAddr: string;
} & {
    readonly AdvertiseAddr?: string | undefined;
} & {
    readonly DataPathAddr?: string | undefined;
} & {
    readonly JoinToken: string;
} & {
    readonly RemoteAddrs?: readonly string[] | undefined;
}, {}, {}>;
export declare class SwarmJoinRequest extends SwarmJoinRequest_base {
}
export {};
//# sourceMappingURL=SwarmJoinRequest.generated.d.ts.map