import { CliLoggerService } from './cli-logger.service';
export interface K3sMasterConfig {
    serverId?: string;
    clusterId: string;
    clusterName: string;
    k3sToken: string;
    k3sVersion?: string;
    instanceId: string;
    instanceName: string;
    provider: string;
    caPublicKey?: string;
    operationId?: string;
    deployObservabilityStack?: boolean;
    postgresPassword: string;
    redisPassword: string;
    grafanaPassword: string;
    encryptionKey?: string;
    authMode?: string;
    jwtSecret?: string;
    adminEmail?: string;
    adminPassword?: string;
    zitadelMasterkey?: string;
    zitadelDbAdminPassword?: string;
    zitadelDbUserPassword?: string;
    zitadelDomain?: string;
    zitadelAdminEmail?: string;
    zitadelAdminTempPassword?: string;
    fluiApiKey?: string;
    providerApiKey?: string;
    providerScalewayAccessKey?: string;
    providerScalewaySecretKey?: string;
    providerRegions?: string;
    clusterRegion?: string;
    instanceType?: string;
    clusterFirewallId?: string;
    nipIoCertEnabled?: boolean;
    acmeStaging?: boolean;
    nipHostnameToken?: string | null;
    envVnet?: {
        vnetProviderResourceId: string;
        vnetProvider: string;
        vnetName: string;
        vnetIpRange: string;
        subnetProviderResourceId: string;
        subnetIpRange: string;
        subnetType: string;
        networkZone: string;
    };
    /**
     * Flui shared storage configuration (NFS+fscache, see scaling doc §14).
     * When `enabled`, the master mounts a Flui-managed Volume on
     * /var/lib/flui/storage, exports it via NFSv4, and re-points
     * local-path-provisioner to it. Workers mount the same path via NFS.
     */
    sharedStorage?: {
        enabled: boolean;
        volumeDevicePath?: string;
        volumeSizeGb?: number;
    };
}
export interface K3sWorkerConfig {
    serverId?: string;
    clusterId: string;
    clusterName: string;
    k3sToken: string;
    masterIp: string;
    k3sVersion?: string;
    instanceId: string;
    instanceName: string;
    provider: string;
    caPublicKey?: string;
    operationId?: string;
    /**
     * Flui shared storage on workers: install cachefilesd + mount NFS export
     * from master. See scaling doc §14.
     */
    sharedStorage?: {
        enabled: boolean;
        masterPrivateIp?: string;
    };
}
/**
 * CLI K3s Script Service
 *
 * Generates K3s initialization scripts for observability clusters.
 * Uses scripts from cli/src/modules/instances/assets/scripts/ directory.
 */
export declare class CliK3sScriptService {
    private readonly cliLogger;
    private readonly logger;
    constructor(cliLogger: CliLoggerService);
    /**
     * Log to both console and operation log file
     */
    private log;
    /**
     * Generate cloud-init script for K3s master node
     * Uses bootstrap approach: generates minimal script that downloads from GitHub
     */
    generateMasterScript(config: K3sMasterConfig): Promise<string>;
    /**
     * Generate cloud-init script for K3s worker node
     * Uses bootstrap approach: generates minimal script that downloads from GitHub
     */
    generateWorkerScript(config: K3sWorkerConfig): Promise<string>;
    /**
     * Generate bootstrap script that downloads and executes K3s init script from GitHub
     */
    private generateBootstrapScript;
    /**
     * Save script to debug directory for inspection
     */
    private saveDebugScript;
}
