import { ClusterNodeEntity } from './cluster-node.entity';
import { HostnameMode } from '../../../dns/enums/hostname-mode.enum';
export declare enum ClusterStatus {
    CREATING = "creating",
    READY = "ready",
    SCALING = "scaling",
    STOPPED = "stopped",
    ERROR = "error",
    DELETING = "deleting",
    DELETION_FAILED = "deletion_failed",
    DELETED = "deleted"
}
export declare enum ClusterType {
    OBSERVABILITY = "observability",
    WORKLOAD = "workload"
}
export declare class ClusterEntity {
    id: string;
    generateId(): void;
    name: string;
    provider: string;
    region: string;
    nodeSize: string;
    nodeCount: number;
    autoscalingEnabled: boolean;
    minNodes?: number;
    maxNodes?: number;
    scaleUpMemoryPct?: number;
    scaleUpCpuPct?: number;
    cooldownSeconds?: number;
    k3sTokenEncrypted: string;
    k3sVersion?: string;
    masterNodeId?: string;
    masterIpAddress?: string;
    masterPrivateIp?: string;
    /**
     * Flui shared storage (NFS+fscache architecture, see APPLICATION_SCALING_AND_RESOURCE_MANAGEMENT.md §14).
     * When true, the master has an attached Volume that hosts the NFS export
     * for cluster-wide shared storage. Workers mount it via NFSv4 + fscache.
     * Default: true (controlled at creation by `flui env create --no-shared-storage`).
     */
    sharedStorageEnabled: boolean;
    /**
     * Provider id of the Volume backing the NFS share, when sharedStorageEnabled
     * is true. Stored so it can be cleaned up at destroy time.
     */
    sharedStorageVolumeId?: string | null;
    /** Size of the shared storage Volume in GB at creation time. */
    sharedStorageVolumeSizeGb?: number | null;
    kubeconfigEncrypted?: string;
    status: ClusterStatus;
    clusterType: ClusterType;
    endpointHostnameMode: HostnameMode;
    nipHostnameToken?: string | null;
    metadata: Record<string, any>;
    sshKeyIds?: string[];
    image?: string;
    diskSizeGb?: number;
    bootstrapKeyId?: string;
    createdAt: Date;
    updatedAt: Date;
    deletedAt?: Date;
    nodes: ClusterNodeEntity[];
}
