import * as Schema from "effect/Schema";
import * as ClusterVolumeSpec from "./ClusterVolumeSpec.generated.js";
import * as VolumeInfo from "./VolumeInfo.generated.js";
import * as VolumePublishStatus from "./VolumePublishStatus.generated.js";
declare const ClusterVolume_base: Schema.Class<ClusterVolume, {
    /**
     * Spec is the cluster-specific options from which this volume is
     * derived.
     */
    Spec: Schema.NullOr<typeof ClusterVolumeSpec.ClusterVolumeSpec>;
    /**
     * PublishStatus contains the status of the volume as it pertains to its
     * publishing on Nodes.
     */
    PublishStatus: Schema.optionalWith<Schema.Array$<Schema.NullOr<typeof VolumePublishStatus.VolumePublishStatus>>, {
        nullable: true;
    }>;
    /** Info is information about the global status of the volume. */
    Info: Schema.optionalWith<typeof VolumeInfo.VolumeInfo, {
        nullable: true;
    }>;
    Version: Schema.optionalWith<typeof import("./SwarmVersion.generated.js").SwarmVersion, {
        nullable: true;
    }>;
    CreatedAt: Schema.optionalWith<typeof Schema.DateFromString, {
        nullable: true;
    }>;
    UpdatedAt: Schema.optionalWith<typeof Schema.DateFromString, {
        nullable: true;
    }>;
    /**
     * ID is the Swarm ID of the volume. Because cluster volumes are Swarm
     * objects, they have an ID, unlike non-cluster volumes, which only have
     * a Name. This ID can be used to refer to the cluster volume.
     */
    ID: typeof Schema.String;
}, Schema.Struct.Encoded<{
    /**
     * Spec is the cluster-specific options from which this volume is
     * derived.
     */
    Spec: Schema.NullOr<typeof ClusterVolumeSpec.ClusterVolumeSpec>;
    /**
     * PublishStatus contains the status of the volume as it pertains to its
     * publishing on Nodes.
     */
    PublishStatus: Schema.optionalWith<Schema.Array$<Schema.NullOr<typeof VolumePublishStatus.VolumePublishStatus>>, {
        nullable: true;
    }>;
    /** Info is information about the global status of the volume. */
    Info: Schema.optionalWith<typeof VolumeInfo.VolumeInfo, {
        nullable: true;
    }>;
    Version: Schema.optionalWith<typeof import("./SwarmVersion.generated.js").SwarmVersion, {
        nullable: true;
    }>;
    CreatedAt: Schema.optionalWith<typeof Schema.DateFromString, {
        nullable: true;
    }>;
    UpdatedAt: Schema.optionalWith<typeof Schema.DateFromString, {
        nullable: true;
    }>;
    /**
     * ID is the Swarm ID of the volume. Because cluster volumes are Swarm
     * objects, they have an ID, unlike non-cluster volumes, which only have
     * a Name. This ID can be used to refer to the cluster volume.
     */
    ID: typeof Schema.String;
}>, never, {
    readonly ID: string;
} & {
    readonly CreatedAt?: Date | undefined;
} & {
    readonly Version?: import("./SwarmVersion.generated.js").SwarmVersion | undefined;
} & {
    readonly UpdatedAt?: Date | undefined;
} & {
    readonly Spec: ClusterVolumeSpec.ClusterVolumeSpec | null;
} & {
    readonly PublishStatus?: readonly (VolumePublishStatus.VolumePublishStatus | null)[] | undefined;
} & {
    readonly Info?: VolumeInfo.VolumeInfo | undefined;
}, {}, {}>;
export declare class ClusterVolume extends ClusterVolume_base {
}
export {};
//# sourceMappingURL=ClusterVolume.generated.d.ts.map