import { BaseCommand } from './base.js';
import { type ClusterCommandTasks } from './cluster/tasks.js';
import { type ClusterReferenceName, type DeploymentName, type SoloListrTask } from '../types/index.js';
import { NamespaceName } from '../types/namespace/namespace-name.js';
import { type ArgvStruct, type NodeAliases } from '../types/aliases.js';
import { LedgerPhase } from '../data/schema/model/remote/ledger-phase.js';
import { CommandFlags } from '../types/flag-types.js';
interface DeploymentAddClusterConfig {
    quiet: boolean;
    context: string;
    namespace: NamespaceName;
    deployment: DeploymentName;
    clusterRef: ClusterReferenceName;
    enableCertManager: boolean;
    numberOfConsensusNodes: number;
    dnsBaseDomain: string;
    dnsConsensusNodePattern: string;
    ledgerPhase?: LedgerPhase;
    nodeAliases: NodeAliases;
    existingNodesCount: number;
    existingClusterContext?: string;
}
export interface DeploymentAddClusterContext {
    config: DeploymentAddClusterConfig;
}
export declare class DeploymentCommand extends BaseCommand {
    private readonly tasks;
    constructor(tasks: ClusterCommandTasks);
    static CREATE_FLAGS_LIST: CommandFlags;
    static DESTROY_FLAGS_LIST: CommandFlags;
    static ADD_CLUSTER_FLAGS_LIST: CommandFlags;
    static LIST_DEPLOYMENTS_FLAGS_LIST: CommandFlags;
    /**
     * Create new deployment inside the local config
     */
    create(argv: ArgvStruct): Promise<boolean>;
    /**
     * Delete a deployment from the local config
     */
    delete(argv: ArgvStruct): Promise<boolean>;
    /**
     * Add new cluster for specified deployment, and create or edit the remote config
     */
    addCluster(argv: ArgvStruct): Promise<boolean>;
    list(argv: ArgvStruct): Promise<boolean>;
    close(): Promise<void>;
    /**
     * Initializes and populates the config and context for 'deployment cluster attach'
     */
    initializeClusterAddConfig(argv: ArgvStruct): SoloListrTask<DeploymentAddClusterContext>;
    /**
     * Validates:
     * - cluster ref is present in the local config's cluster-ref => context mapping
     * - the deployment is created
     * - the cluster-ref is not already added to the deployment
     */
    verifyClusterAddArgs(): SoloListrTask<DeploymentAddClusterContext>;
    /**
     * Checks the ledger phase:
     * - if remote config is found check's the ledgerPhase field to see if it's pre or post genesis.
     *   - pre genesis:
     *     - prompts user if needed.
     *     - generates node aliases based on '--number-of-consensus-nodes'
     *   - post genesis:
     *     - throws if '--number-of-consensus-nodes' is passed
     * - if remote config is not found:
     *   - prompts user if needed.
     *   - generates node aliases based on '--number-of-consensus-nodes'.
     */
    checkNetworkState(): SoloListrTask<DeploymentAddClusterContext>;
    /**
     * Tries to connect with the cluster using the context from the local config
     */
    testClusterConnection(): SoloListrTask<DeploymentAddClusterContext>;
    verifyClusterAddPrerequisites(): SoloListrTask<DeploymentAddClusterContext>;
    checkForExistingDeployments(): SoloListrTask<DeploymentAddClusterContext>;
    /**
     * Adds the new cluster-ref for the deployment in local config
     */
    addClusterRefToDeployments(): SoloListrTask<DeploymentAddClusterContext>;
    /**
     * - if remote config not found, create new remote config for the deployment.
     * - if remote config is found, add the new data for the deployment.
     */
    createOrEditRemoteConfigForNewDeployment(argv: ArgvStruct): SoloListrTask<DeploymentAddClusterContext>;
    /** Show list of existing deployments in the cluster */
    private showExistingDeploymentsInCluster;
}
export {};
