import 'chai-as-promised';
import 'dotenv/config';
import { ClusterCommand } from '../src/commands/cluster/index.js';
import { InitCommand } from '../src/commands/init/init.js';
import { NetworkCommand } from '../src/commands/network.js';
import { NodeCommand } from '../src/commands/node/index.js';
import { type DependencyManager } from '../src/core/dependency-managers/index.js';
import { type AccountId } from '@hiero-ledger/sdk';
import { type AccountCommand } from '../src/commands/account.js';
import { type SoloLogger } from '../src/core/logging/solo-logger.js';
import { type NodeAlias } from '../src/types/aliases.js';
import { type K8Factory } from '../src/integration/kube/k8-factory.js';
import { type AccountManager } from '../src/core/account-manager.js';
import { type PlatformInstaller } from '../src/core/platform-installer.js';
import { type ProfileManager } from '../src/core/profile-manager.js';
import { type LockManager } from '../src/core/lock/lock-manager.js';
import { type CertificateManager } from '../src/core/certificate-manager.js';
import { type ConfigManager } from '../src/core/config-manager.js';
import { type ChartManager } from '../src/core/chart-manager.js';
import { type PackageDownloader } from '../src/core/package-downloader.js';
import { type KeyManager } from '../src/core/key-manager.js';
import { NamespaceName } from '../src/types/namespace/namespace-name.js';
import { DeploymentCommand } from '../src/commands/deployment.js';
import { Argv } from './helpers/argv-wrapper.js';
import { type ClusterReferenceName } from '../src/types/index.js';
import { type CommandInvoker } from './helpers/command-invoker.js';
import { type HelmClient } from '../src/integration/helm/helm-client.js';
import { type NodeServiceMapping } from '../src/types/mappings/node-service-mapping.js';
import { type LocalConfigRuntimeState } from '../src/business/runtime-state/config/local/local-config-runtime-state.js';
import { type InstanceOverrides } from '../src/core/dependency-injection/container-init.js';
import { type RemoteConfigRuntimeStateApi } from '../src/business/runtime-state/api/remote-config-runtime-state-api.js';
export declare const BASE_TEST_DIR: string;
export declare function getTestCluster(): ClusterReferenceName;
export declare function getTestLogger(): SoloLogger;
export declare function getTestCacheDirectory(testName?: string): string;
export declare function getTemporaryDirectory(): string;
export declare function deployNetworkTest(argv: Argv, commandInvoker: CommandInvoker, networkCmd: NetworkCommand): void;
export declare function startNodesTest(argv: Argv, commandInvoker: CommandInvoker, nodeCmd: NodeCommand): void;
interface TestOptions {
    logger: SoloLogger;
    helm: HelmClient;
    k8Factory: K8Factory;
    chartManager: ChartManager;
    configManager: ConfigManager;
    downloader: PackageDownloader;
    platformInstaller: PlatformInstaller;
    depManager: DependencyManager;
    keyManager: KeyManager;
    accountManager: AccountManager;
    cacheDir: string;
    profileManager: ProfileManager;
    leaseManager: LockManager;
    certificateManager: CertificateManager;
    remoteConfig: RemoteConfigRuntimeStateApi;
    localConfig: LocalConfigRuntimeState;
    commandInvoker: CommandInvoker;
}
export interface BootstrapResponse {
    deployment: string;
    namespace: NamespaceName;
    opts: TestOptions;
    manager: {
        accountManager: AccountManager;
    };
    cmd: {
        initCmd: InitCommand;
        clusterCmd: ClusterCommand;
        networkCmd: NetworkCommand;
        nodeCmd: NodeCommand;
        accountCmd: AccountCommand;
        deploymentCmd: DeploymentCommand;
    };
}
interface Cmd {
    k8FactoryArg?: K8Factory;
    initCmdArg?: InitCommand;
    clusterCmdArg?: ClusterCommand;
    networkCmdArg?: NetworkCommand;
    nodeCmdArg?: NodeCommand;
    accountCmdArg?: AccountCommand;
    deploymentCmdArg?: DeploymentCommand;
    containerOverrides?: InstanceOverrides;
}
/** Initialize common test variables */
export declare function bootstrapTestVariables(testName: string, argv: Argv, { k8FactoryArg, initCmdArg, clusterCmdArg, networkCmdArg, nodeCmdArg, accountCmdArg, deploymentCmdArg }: Cmd): BootstrapResponse;
/** Bootstrap network in a given namespace, then run the test call back providing the bootstrap response */
export declare function endToEndTestSuite(testName: string, argv: Argv, { k8FactoryArg, initCmdArg, clusterCmdArg, networkCmdArg, nodeCmdArg, accountCmdArg, startNodes, containerOverrides, deployNetwork, }: Cmd & {
    startNodes?: boolean;
    deployNetwork?: boolean;
}, testsCallBack?: (bootstrapResp: BootstrapResponse) => void): void;
export declare function balanceQueryShouldSucceed(accountManager: AccountManager, namespace: NamespaceName, remoteConfig: RemoteConfigRuntimeStateApi, logger: SoloLogger, skipNodeAlias?: NodeAlias): void;
export declare function accountCreationShouldSucceed(accountManager: AccountManager, namespace: NamespaceName, remoteConfig: RemoteConfigRuntimeStateApi, logger: SoloLogger, skipNodeAlias?: NodeAlias, expectedAccountId?: AccountId): void;
export declare function getNodeAliasesPrivateKeysHash(networkNodeServicesMap: NodeServiceMapping, k8Factory: K8Factory, destinationDirectory: string): Promise<Map<`node${number}`, Map<string, string>>>;
export declare const testLocalConfigData: {
    userIdentity: {
        name: string;
        host: string;
    };
    soloVersion: string;
    deployments: {
        deployment: {
            clusters: string[];
            namespace: string;
            realm: number;
            shard: number;
        };
        'deployment-2': {
            clusters: string[];
            namespace: string;
            realm: number;
            shard: number;
        };
        'deployment-3': {
            clusters: string[];
            namespace: string;
            realm: number;
            shard: number;
        };
    };
    clusterRefs: {
        'cluster-1': string;
        'cluster-2': string;
    };
};
export { HEDERA_PLATFORM_VERSION as HEDERA_PLATFORM_VERSION_TAG } from '../version.js';
export declare function hederaPlatformSupportsNonZeroRealms(): boolean;
export declare function localHederaPlatformSupportsNonZeroRealms(): boolean;
