/**
 * Copyright (C) 2024 Hedera Hashgraph, LLC
 *
 * Licensed under the Apache License, Version 2.0 (the ""License"");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an ""AS IS"" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
import 'chai-as-promised';
import { ClusterCommand } from '../src/commands/cluster/index.js';
import { InitCommand } from '../src/commands/init.js';
import { NetworkCommand } from '../src/commands/network.js';
import { NodeCommand } from '../src/commands/node/index.js';
import { DependencyManager } from '../src/core/dependency_managers/index.js';
import { AccountCommand } from '../src/commands/account.js';
import { SoloLogger } from '../src/core/logging.js';
import type { BaseCommand } from '../src/commands/base.js';
import type { NodeAlias } from '../src/types/aliases.js';
import type { NetworkNodeServices } from '../src/core/network_node_services.js';
import { K8 } from '../src/core/k8.js';
import { AccountManager } from '../src/core/account_manager.js';
import { PlatformInstaller } from '../src/core/platform_installer.js';
import { ProfileManager } from '../src/core/profile_manager.js';
import { LeaseManager } from '../src/core/lease/lease_manager.js';
import { CertificateManager } from '../src/core/certificate_manager.js';
import { LocalConfig } from '../src/core/config/local_config.js';
import { RemoteConfigManager } from '../src/core/config/remote/remote_config_manager.js';
import { ConfigManager } from '../src/core/config_manager.js';
import { Helm } from '../src/core/helm.js';
import { ChartManager } from '../src/core/chart_manager.js';
import { PackageDownloader } from '../src/core/package_downloader.js';
import { KeyManager } from '../src/core/key_manager.js';
export declare const TEST_CLUSTER = "solo-e2e";
export declare const HEDERA_PLATFORM_VERSION_TAG = "v0.58.3";
export declare const BASE_TEST_DIR: string;
export declare let testLogger: SoloLogger;
export declare function getTestCacheDir(testName?: string): string;
export declare function getTmpDir(): string;
/** Get argv with defaults */
export declare function getDefaultArgv(): Record<string, any>;
interface TestOpts {
    logger: SoloLogger;
    helm: Helm;
    k8: K8;
    chartManager: ChartManager;
    configManager: ConfigManager;
    downloader: PackageDownloader;
    platformInstaller: PlatformInstaller;
    depManager: DependencyManager;
    keyManager: KeyManager;
    accountManager: AccountManager;
    cacheDir: string;
    profileManager: ProfileManager;
    leaseManager: LeaseManager;
    certificateManager: CertificateManager;
    remoteConfigManager: RemoteConfigManager;
    localConfig: LocalConfig;
}
interface BootstrapResponse {
    namespace: string;
    opts: TestOpts;
    manager: {
        accountManager: AccountManager;
    };
    cmd: {
        initCmd: InitCommand;
        clusterCmd: ClusterCommand;
        networkCmd: NetworkCommand;
        nodeCmd: NodeCommand;
        accountCmd: AccountCommand;
    };
}
/** Initialize common test variables */
export declare function bootstrapTestVariables(testName: string, argv: any, k8Arg?: K8 | null, initCmdArg?: InitCommand | null, clusterCmdArg?: ClusterCommand | null, networkCmdArg?: NetworkCommand | null, nodeCmdArg?: NodeCommand | null, accountCmdArg?: AccountCommand | null): BootstrapResponse;
/** Bootstrap network in a given namespace, then run the test call back providing the bootstrap response */
export declare function e2eTestSuite(testName: string, argv: Record<any, any>, k8Arg?: K8 | null, initCmdArg?: InitCommand | null, clusterCmdArg?: ClusterCommand | null, networkCmdArg?: NetworkCommand | null, nodeCmdArg?: NodeCommand | null, accountCmdArg?: AccountCommand | null, startNodes?: boolean, testsCallBack?: (bootstrapResp: BootstrapResponse) => void): void;
export declare function balanceQueryShouldSucceed(accountManager: AccountManager, cmd: BaseCommand, namespace: string, skipNodeAlias?: NodeAlias): void;
export declare function accountCreationShouldSucceed(accountManager: AccountManager, nodeCmd: BaseCommand, namespace: string, skipNodeAlias?: NodeAlias): void;
export declare function getNodeAliasesPrivateKeysHash(networkNodeServicesMap: Map<NodeAlias, NetworkNodeServices>, namespace: string, k8: K8, destDir: string): Promise<Map<`node${number}`, Map<string, string>>>;
export declare function getK8Instance(configManager: ConfigManager): K8;
export declare const testLocalConfigData: {
    userEmailAddress: string;
    deployments: {
        deployment: {
            clusters: string[];
        };
        'deployment-2': {
            clusters: string[];
        };
        'deployment-3': {
            clusters: string[];
        };
    };
    currentDeploymentName: string;
    clusterContextMapping: {
        'cluster-1': string;
        'cluster-2': string;
    };
};
export {};
