/**
 * SPDX-License-Identifier: Apache-2.0
 */
import { type AccountManager } from '../../core/account_manager.js';
import { type ConfigManager } from '../../core/config_manager.js';
import { type KeyManager } from '../../core/key_manager.js';
import { type ProfileManager } from '../../core/profile_manager.js';
import { type PlatformInstaller } from '../../core/platform_installer.js';
import { type K8Factory } from '../../core/kube/k8_factory.js';
import { type ChartManager } from '../../core/chart_manager.js';
import { type CertificateManager } from '../../core/certificate_manager.js';
import { Task } from '../../core/task.js';
import { type SoloLogger } from '../../core/logging.js';
import { type Listr, type ListrTaskWrapper } from 'listr2';
import { type ConfigBuilder, type NodeAlias, type NodeAliases, type SkipCheck } from '../../types/aliases.js';
import { NodeStatusCodes, NodeSubcommandType } from '../../core/enumerations.js';
import { type Lease } from '../../core/lease/lease.js';
import { type BaseCommand } from '../base.js';
import { type NamespaceName } from '../../core/kube/resources/namespace/namespace_name.js';
import { PodRef } from '../../core/kube/resources/pod/pod_ref.js';
import { type Optional } from '../../types/index.js';
import { ConsensusNode } from '../../core/model/consensus_node.js';
export declare class NodeCommandTasks {
    private readonly accountManager;
    private readonly configManager;
    private readonly keyManager;
    private readonly profileManager;
    private readonly platformInstaller;
    private readonly logger;
    private readonly k8Factory;
    private readonly parent;
    private readonly chartManager;
    private readonly certificateManager;
    private readonly prepareValuesFiles;
    constructor(opts: {
        logger: SoloLogger;
        accountManager: AccountManager;
        configManager: ConfigManager;
        k8Factory: K8Factory;
        platformInstaller: PlatformInstaller;
        keyManager: KeyManager;
        profileManager: ProfileManager;
        chartManager: ChartManager;
        certificateManager: CertificateManager;
        parent: BaseCommand;
    });
    private _prepareUpgradeZip;
    private _uploadUpgradeZip;
    private copyLocalBuildPathToNode;
    _uploadPlatformSoftware(nodeAliases: NodeAliases, podRefs: Record<NodeAlias, PodRef>, task: ListrTaskWrapper<any, any, any>, localBuildPath: string, consensusNodes: Optional<ConsensusNode[]>): Listr<any, any, any>;
    _fetchPlatformSoftware(nodeAliases: NodeAliases, podRefs: Record<NodeAlias, PodRef>, releaseTag: string, task: ListrTaskWrapper<any, any, any>, platformInstaller: PlatformInstaller, consensusNodes?: Optional<ConsensusNode[]>): Listr<any, any, any>;
    _checkNodeActivenessTask(ctx: any, task: ListrTaskWrapper<any, any, any>, nodeAliases: NodeAliases, status?: NodeStatusCodes): Listr<any, any, any>;
    _checkNetworkNodeActiveness(namespace: NamespaceName, nodeAlias: NodeAlias, task: ListrTaskWrapper<any, any, any>, title: string, index: number, status?: NodeStatusCodes, maxAttempts?: number, delay?: number, timeout?: number, context?: string): Promise<PodRef>;
    /** Return task for check if node proxies are ready */
    _checkNodesProxiesTask(ctx: any, task: ListrTaskWrapper<any, any, any>, nodeAliases: NodeAliases): Listr<any, any, any>;
    /**
     * When generating multiple all aliases are read from config.nodeAliases,
     * When generating a single key the alias in config.nodeAlias is used
     */
    _generateGossipKeys(generateMultiple: boolean): Task;
    /**
     * When generating multiple all aliases are read from config.nodeAliases,
     * When generating a single key the alias in config.nodeAlias is used
     */
    _generateGrpcTlsKeys(generateMultiple: boolean): Task;
    copyGrpcTlsCertificates(): Task;
    _addStake(namespace: NamespaceName, accountId: string, nodeAlias: NodeAlias, stakeAmount?: number, context?: string): Promise<void>;
    prepareUpgradeZip(): Task;
    loadAdminKey(): Task;
    checkExistingNodesStakedAmount(): Task;
    sendPrepareUpgradeTransaction(): Task;
    sendFreezeUpgradeTransaction(): Task;
    /** Download generated config files and key files from the network node */
    downloadNodeGeneratedFiles(): Task;
    downloadNodeUpgradeFiles(): Task;
    taskCheckNetworkNodePods(ctx: any, task: ListrTaskWrapper<any, any, any>, nodeAliases: NodeAliases, maxAttempts?: any): Listr;
    /** Check if the network node pod is running */
    checkNetworkNodePod(namespace: NamespaceName, nodeAlias: NodeAlias, maxAttempts?: number, delay?: number, context?: Optional<string>): Promise<PodRef>;
    identifyExistingNodes(): Task;
    uploadStateFiles(skip: SkipCheck | boolean): Task;
    identifyNetworkPods(maxAttempts?: number): Task;
    fetchPlatformSoftware(aliasesField: string): Task;
    populateServiceMap(): Task;
    setupNetworkNodes(nodeAliasesProperty: string, isGenesis: boolean): Task;
    private generateNodeOverridesJson;
    /**
     * Generate genesis network json file
     * @private
     * @param namespace - namespace
     * @param consensusNodes - consensus nodes
     * @param keysDir - keys directory
     * @param stagingDir - staging directory
     */
    private generateGenesisNetworkJson;
    prepareStagingDirectory(nodeAliasesProperty: any): Task;
    startNodes(nodeAliasesProperty: string): Task;
    enablePortForwarding(): Task;
    checkAllNodesAreActive(nodeAliasesProperty: string): Task;
    checkAllNodesAreFrozen(nodeAliasesProperty: string): Task;
    checkNodeProxiesAreActive(): Task;
    checkAllNodeProxiesAreActive(): Task;
    triggerStakeWeightCalculate(transactionType: NodeSubcommandType): Task;
    addNodeStakes(): Task;
    stakeNewNode(): Task;
    stopNodes(): Task;
    finalize(): Task;
    dumpNetworkNodesSaveState(): Task;
    getNodeLogsAndConfigs(): Task;
    getNodeStateFiles(): Task;
    checkPVCsEnabled(): Task;
    determineNewNodeAccountNumber(): Task;
    generateGossipKeys(): Task;
    generateGossipKey(): Task;
    generateGrpcTlsKeys(): Task;
    generateGrpcTlsKey(): Task;
    loadSigningKeyCertificate(): Task;
    computeMTLSCertificateHash(): Task;
    prepareGossipEndpoints(): Task;
    refreshNodeList(): Task;
    prepareGrpcServiceEndpoints(): Task;
    sendNodeUpdateTransaction(): Task;
    copyNodeKeysToSecrets(): Task;
    updateChartWithConfigMap(title: string, transactionType: NodeSubcommandType, skip?: SkipCheck | boolean): Task;
    saveContextData(argv: any, targetFile: string, parser: any): Task;
    loadContextData(argv: any, targetFile: string, parser: any): Task;
    killNodes(): Task;
    killNodesAndUpdateConfigMap(): Task;
    checkNodePodsAreRunning(): Task;
    sleep(title: string, milliseconds: number): Task;
    downloadLastState(): Task;
    uploadStateToNewNode(): Task;
    sendNodeDeleteTransaction(): Task;
    sendNodeCreateTransaction(): Task;
    initialize(argv: any, configInit: ConfigBuilder, lease: Lease | null, shouldLoadNodeClient?: boolean): Task;
}
