import { ClusterEntity } from '../../../src/modules/infrastructure/clusters/entities/cluster.entity';
import { CreateClusterDto } from '../../../src/modules/infrastructure/clusters/dto/create-cluster.dto';
import { InfrastructureOperationEntity } from '../../../src/modules/infrastructure/servers/entities/infrastructure-operations.entity';
import { CliClusterRepository } from '../lib/repositories/cli-cluster.repository';
import { CliOperationRepository } from '../lib/repositories/cli-operation.repository';
import { CliNodeRepository } from '../lib/repositories/cli-node.repository';
import { CliFirewallRepository } from '../lib/repositories/cli-firewall.repository';
import { EncryptionService } from '../../../src/modules/shared/encryption/services/encryption.service';
import { CliSshService } from './cli-ssh.service';
import { CliCaService } from './cli-ca.service';
import { ProviderFactory } from '../../../src/modules/providers/services/provider.factory';
import { HetznerFirewallService } from '../../../src/modules/providers/services/hetzner-firewall.service';
/**
 * CLI Clusters Service
 *
 * Simplified version of ClustersService for CLI usage.
 * Uses file-based repositories and Bull queue mock.
 * Integrates SSH and CA management for secure server access.
 */
export declare class CliClustersService {
    private readonly clusterRepository;
    private readonly operationRepository;
    private readonly nodeRepository;
    private readonly firewallRepository;
    private readonly encryptionService;
    private readonly sshService;
    private readonly caService;
    private readonly providerFactory;
    private readonly firewallService;
    private readonly infrastructureQueue;
    private readonly logger;
    constructor(clusterRepository: CliClusterRepository, operationRepository: CliOperationRepository, nodeRepository: CliNodeRepository, firewallRepository: CliFirewallRepository, encryptionService: EncryptionService, sshService: CliSshService, caService: CliCaService, providerFactory: ProviderFactory, firewallService: HetznerFirewallService, infrastructureQueue: any);
    /**
     * Create a new cluster
     */
    create(createClusterDto: CreateClusterDto): Promise<{
        cluster: ClusterEntity;
        operation: InfrastructureOperationEntity;
    }>;
    /**
     * Get cluster by ID
     */
    findOne(id: string): Promise<ClusterEntity | null>;
    /**
     * Get kubeconfig for cluster
     */
    getKubeconfig(clusterId: string): Promise<string | null>;
    /**
     * Delete cluster with orphaned VPS cleanup
     */
    remove(id: string): Promise<void>;
    /**
     * Verify that a server is safe to delete
     * Checks for all required flui labels
     */
    private formatVolumeRef;
    private verifySafeDeletion;
    /**
     * Get or create encryption key from ~/.flui/encryption.key
     * Same pattern as CA: generate once, reuse forever.
     * This key is shared between CLI and API (local dev) and deployed
     * to K8s clusters as ENCRYPTION_KEY in the flui-secrets Secret.
     */
    private getOrCreateEncryptionKey;
    /**
     * Generate random K3s token
     */
    private generateK3sToken;
    /**
     * Generate secure password for observability stack components
     * Uses safe characters for bash variables: a-zA-Z0-9-_@.+:=
     */
    private generateSecurePassword;
}
