import { type ProfileManager } from '../core/profile-manager.js';
import { type AccountManager } from '../core/account-manager.js';
import { BaseCommand } from './base.js';
import { type ArgvStruct, type NodeAliases } from '../types/aliases.js';
import { type ClusterReferenceName, type ComponentId, NamespaceNameAsString, type Optional, type SoloListrTask } from '../types/index.js';
import { NamespaceName } from '../types/namespace/namespace-name.js';
import { type RelayNodeStateSchema } from '../data/schema/model/remote/state/relay-node-state-schema.js';
import { type CommandFlags } from '../types/flag-types.js';
interface RelayDestroyConfigClass {
    chartDirectory: string;
    namespace: NamespaceName;
    deployment: string;
    nodeAliases: NodeAliases;
    releaseName: string;
    isChartInstalled: boolean;
    clusterRef: Optional<ClusterReferenceName>;
    context: Optional<string>;
    id: number;
    isLegacyChartInstalled: boolean;
}
interface RelayDestroyContext {
    config: RelayDestroyConfigClass;
}
interface RelayDeployConfigClass {
    chainId: string;
    chartDirectory: string;
    relayChartDirectory: string;
    namespace: NamespaceName;
    deployment: string;
    nodeAliasesUnparsed: string;
    operatorId: string;
    operatorKey: string;
    profileFile: string;
    profileName: string;
    relayReleaseTag: string;
    replicaCount: number;
    valuesFile: string;
    isChartInstalled: boolean;
    nodeAliases: NodeAliases;
    releaseName: string;
    valuesArg: string;
    clusterRef: Optional<ClusterReferenceName>;
    domainName: Optional<string>;
    context: Optional<string>;
    newRelayComponent: RelayNodeStateSchema;
    id: ComponentId;
    forcePortForward: Optional<boolean>;
    cacheDir: Optional<string>;
    isLegacyChartInstalled: false;
    mirrorNodeId: ComponentId;
    mirrorNamespace: NamespaceNameAsString;
    mirrorNodeReleaseName: string;
    isMirrorNodeLegacyChartInstalled: boolean;
}
interface RelayDeployContext {
    config: RelayDeployConfigClass;
}
export declare class RelayCommand extends BaseCommand {
    private readonly profileManager;
    private readonly accountManager;
    constructor(profileManager: ProfileManager, accountManager: AccountManager);
    private static readonly DEPLOY_CONFIGS_NAME;
    private static readonly UPGRADE_CONFIGS_NAME;
    static readonly DEPLOY_FLAGS_LIST: CommandFlags;
    static readonly UPGRADE_FLAGS_LIST: CommandFlags;
    static readonly DESTROY_FLAGS_LIST: CommandFlags;
    private prepareValuesArgForRelay;
    /**
     * created a JSON string to represent the map between the node keys and their ids
     * output example '{"node-1": "0.0.3", "node-2": "0.004"}'
     */
    private prepareNetworkJsonString;
    private getReleaseName;
    private renderReleaseName;
    private prepareLegacyReleaseName;
    private checkChartIsInstalledTask;
    private prepareChartValuesTask;
    private deployJsonRpcRelayTask;
    private checkRelayIsRunningTask;
    private checkRelayIsReadyTask;
    private enablePortForwardingTask;
    add(argv: ArgvStruct): Promise<boolean>;
    upgrade(argv: ArgvStruct): Promise<boolean>;
    destroy(argv: ArgvStruct): Promise<boolean>;
    /** Adds the relay component to remote config. */
    addRelayComponent(): SoloListrTask<RelayDeployContext>;
    /** Remove the relay component from remote config. */
    disableRelayComponent(): SoloListrTask<RelayDestroyContext>;
    close(): Promise<void>;
    private checkIfLegacyChartIsInstalled;
    private inferRelayId;
    private inferRelayData;
}
export {};
