import * as constants from '../core/constants.js';
import { type AccountManager } from '../core/account-manager.js';
import { type ProfileManager } from '../core/profile-manager.js';
import { BaseCommand } from './base.js';
import { type ClusterReferenceName, type CommandDefinition, type Optional, type SoloListrTask } from '../types/index.js';
import { type NamespaceName } from '../types/namespace/namespace-name.js';
import { type CommandFlag, type CommandFlags } from '../types/flag-types.js';
import { type ComponentFactoryApi } from '../core/config/remote/api/component-factory-api.js';
interface MirrorNodeDeployConfigClass {
    isChartInstalled: boolean;
    cacheDir: string;
    chartDirectory: string;
    clusterContext: string;
    clusterReference: ClusterReferenceName;
    namespace: NamespaceName;
    enableIngress: boolean;
    ingressControllerValueFile: string;
    mirrorStaticIp: string;
    profileFile: string;
    profileName: string;
    valuesFile: string;
    valuesArg: string;
    quiet: boolean;
    mirrorNodeVersion: string;
    pinger: boolean;
    operatorId: string;
    operatorKey: string;
    useExternalDatabase: boolean;
    storageType: constants.StorageType;
    storageReadAccessKey: string;
    storageReadSecrets: string;
    storageEndpoint: string;
    storageBucket: string;
    storageBucketPrefix: string;
    storageBucketRegion: string;
    externalDatabaseHost: Optional<string>;
    externalDatabaseOwnerUsername: Optional<string>;
    externalDatabaseOwnerPassword: Optional<string>;
    externalDatabaseReadonlyUsername: Optional<string>;
    externalDatabaseReadonlyPassword: Optional<string>;
    domainName: Optional<string>;
    forcePortForward: Optional<boolean>;
}
interface MirrorNodeDeployContext {
    config: MirrorNodeDeployConfigClass;
    addressBook: string;
}
interface MirrorNodeDestroyContext {
    config: {
        namespace: NamespaceName;
        clusterContext: string;
        isChartInstalled: boolean;
        clusterReference: ClusterReferenceName;
    };
}
export declare class MirrorNodeCommand extends BaseCommand {
    private readonly accountManager?;
    private readonly profileManager?;
    private readonly componentFactory?;
    static readonly DEPLOY_COMMAND: string;
    constructor(accountManager?: AccountManager, profileManager?: ProfileManager, componentFactory?: ComponentFactoryApi);
    static readonly COMMAND_NAME = "mirror-node";
    private static readonly DEPLOY_CONFIGS_NAME;
    static readonly DEPLOY_FLAGS_LIST: {
        required: CommandFlag[];
        optional: CommandFlag[];
    };
    static readonly DESTROY_FLAGS_LIST: CommandFlags;
    private prepareValuesArg;
    private deployMirrorNode;
    private deploy;
    private getEnvironmentVariablePrefix;
    private getChartNamespace;
    private destroy;
    getCommandDefinition(): CommandDefinition;
    /** Removes the mirror node components from remote config. */
    disableMirrorNodeComponents(): SoloListrTask<MirrorNodeDestroyContext>;
    /** Adds the mirror node components to remote config. */
    addMirrorNodeComponents(): SoloListrTask<MirrorNodeDeployContext>;
    close(): Promise<void>;
}
export {};
