export interface Label {
    key: string;
    value: string;
}
export type LabelArray = Label[];
export interface GenerateLabelsConfig {
    resourceType: 'server' | 'cluster-node' | 'ssh-key';
    clusterId?: string;
    clusterName?: string;
    nodeId?: string;
    nodeType?: 'master' | 'worker';
    environment?: string;
    sshKeyId?: string;
    sshKeyName?: string;
}
export declare class LabelService {
    private readonly logger;
    private readonly FLUI_VERSION;
    /**
     * Generate standard Flui labels for a server/node
     * @returns Array of label objects
     */
    generateServerLabels(config: GenerateLabelsConfig): LabelArray;
    /**
     * Convert label array to Record for provider compatibility
     */
    toRecord(labels: LabelArray): Record<string, string>;
    /**
     * Convert Record to label array
     */
    fromRecord(record: Record<string, string> | null | undefined): LabelArray;
    /**
     * Validate if a server is managed by Flui
     */
    isFluiManagedServer(labels: LabelArray | null | undefined): boolean;
    /**
     * Get label value by key
     */
    getLabelValue(labels: LabelArray, key: string): string | undefined;
    /**
     * Extract cluster info from labels
     */
    getClusterInfoFromLabels(labels: LabelArray): {
        clusterId?: string;
        clusterName?: string;
        nodeId?: string;
        nodeType?: string;
    };
    /**
     * Generate standard Flui labels for an SSH key
     * @returns Array of label objects
     */
    generateSSHKeyLabels(config: {
        sshKeyId: string;
        sshKeyName: string;
        environment?: string;
    }): LabelArray;
    /**
     * Validate if an SSH key is managed by Flui
     */
    isFluiManagedSSHKey(labels: LabelArray | Record<string, string> | null | undefined): boolean;
    /**
     * Extract SSH key info from labels
     */
    getSSHKeyInfoFromLabels(labels: LabelArray | Record<string, string>): {
        sshKeyId?: string;
        sshKeyName?: string;
        environment?: string;
    };
}
