import { ClusterEntity } from '../../../src/modules/infrastructure/clusters/entities/cluster.entity';
import { InfrastructureOperationEntity } from '../../../src/modules/infrastructure/servers/entities/infrastructure-operations.entity';
import { CliClusterRepository } from '../lib/repositories/cli-cluster.repository';
import { CliNodeRepository } from '../lib/repositories/cli-node.repository';
import { CliOperationRepository } from '../lib/repositories/cli-operation.repository';
import { ProviderFactory } from '../../../src/modules/providers/services/provider.factory';
import { EncryptionService } from '../../../src/modules/shared/encryption/services/encryption.service';
import { CliK3sScriptService } from './cli-k3s-script.service';
import { LabelService } from '../../../src/modules/infrastructure/shared/services/label.service';
import { CliCaService } from './cli-ca.service';
import { HetznerFirewallService } from '../../../src/modules/providers/services/hetzner-firewall.service';
import { CliFirewallRepository } from '../lib/repositories/cli-firewall.repository';
import { CliSshService } from './cli-ssh.service';
import { CliLoggerService } from './cli-logger.service';
import { CliVnetRepository } from '../lib/repositories/cli-vnet.repository';
/**
 * CLI Cluster Creator Service
 *
 * Creates K3s clusters synchronously without Bull queue.
 * This service bypasses the queue processor and creates infrastructure directly.
 */
export declare class CliClusterCreatorService {
    private readonly clusterRepository;
    private readonly nodeRepository;
    private readonly operationRepository;
    private readonly providerFactory;
    private readonly encryptionService;
    private readonly k3sScriptService;
    private readonly labelService;
    private readonly caService;
    private readonly firewallService;
    private readonly firewallRepository;
    private readonly sshService;
    private readonly cliLoggerService;
    private readonly vnetRepository;
    private readonly logger;
    constructor(clusterRepository: CliClusterRepository, nodeRepository: CliNodeRepository, operationRepository: CliOperationRepository, providerFactory: ProviderFactory, encryptionService: EncryptionService, k3sScriptService: CliK3sScriptService, labelService: LabelService, caService: CliCaService, firewallService: HetznerFirewallService, firewallRepository: CliFirewallRepository, sshService: CliSshService, cliLoggerService: CliLoggerService, vnetRepository: CliVnetRepository);
    /** Log to both NestJS stdout and operation log file */
    private log;
    /**
     * Create cluster synchronously (bypasses Bull queue)
     */
    createClusterSync(cluster: ClusterEntity, operation: InfrastructureOperationEntity): Promise<void>;
    /**
     * Generate bootstrap SSH key for a node
     * Returns the SSH key ID from the cloud provider and local key paths
     */
    private decryptClusterSecrets;
    private generateBootstrapKey;
    /**
     * Get CA enrollment script for cloud-init
     */
    private getCaEnrollmentScript;
    /**
     * Wait for observability stack to be ready by polling health endpoint
     */
    private waitForObservabilityStackReady;
    /**
     * Wait for server to be ready
     */
    private waitForServerReady;
    /**
     * Fetch the real kubeconfig from the K3s master via SSH.
     * K3s generates a valid kubeconfig with client certificates at
     * /etc/rancher/k3s/k3s.yaml. We read it and replace 127.0.0.1
     * with the actual master IP so it's accessible remotely.
     */
    private fetchKubeconfig;
    /**
     * Patch the existing flui-secrets Kubernetes secret with SSH CA keys.
     *
     * The bootstrap script (00-secrets.yaml) creates flui-secrets with
     * DB_PASSWORD, REDIS_PASSWORD, ENCRYPTION_KEY, GRAFANA_ADMIN_PASSWORD.
     * This method adds SSH CA keys so the API can SSH to servers using
     * the same CA as the CLI (unified SSH access).
     */
    private createApiCredentialsSecret;
}
