/// <reference types="node" resolution-mode="require"/>
/// <reference types="node" resolution-mode="require"/>
import { ProcessOutput, ProcessPromise } from 'zx';
import { ERC20Test, XERC20LockboxTest, XERC20VSTest } from '@hyperlane-xyz/core';
import { ChainAddresses } from '@hyperlane-xyz/registry';
import { HypTokenRouterConfig } from '@hyperlane-xyz/sdk';
import { Address } from '@hyperlane-xyz/utils';
import { CommandContext } from '../../context/types.js';
export declare const E2E_TEST_CONFIGS_PATH = "./test-configs";
export declare const REGISTRY_PATH = "./test-configs/anvil";
export declare const TEMP_PATH = "/tmp";
export declare const ANVIL_KEY = "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80";
export declare const E2E_TEST_BURN_ADDRESS = "0x0000000000000000000000000000000000000001";
export declare const CHAIN_NAME_2 = "anvil2";
export declare const CHAIN_NAME_3 = "anvil3";
export declare const EXAMPLES_PATH = "./examples";
export declare const CORE_CONFIG_PATH = "./examples/core-config.yaml";
export declare const CORE_CONFIG_PATH_2 = "/tmp/anvil2/core-config.yaml";
export declare const CORE_READ_CONFIG_PATH_2 = "/tmp/anvil2/core-config-read.yaml";
export declare const CHAIN_2_METADATA_PATH = "./test-configs/anvil/chains/anvil2/metadata.yaml";
export declare const CHAIN_3_METADATA_PATH = "./test-configs/anvil/chains/anvil3/metadata.yaml";
export declare const WARP_CONFIG_PATH_EXAMPLE = "./examples/warp-route-deployment.yaml";
export declare const WARP_CONFIG_PATH_2 = "/tmp/anvil2/warp-route-deployment-anvil2.yaml";
export declare const WARP_DEPLOY_OUTPUT_PATH = "/tmp/warp-route-deployment.yaml";
export declare const WARP_CORE_CONFIG_PATH_2 = "./test-configs/anvil/deployments/warp_routes/ETH/anvil2-config.yaml";
export declare function getCombinedWarpRoutePath(tokenSymbol: string, chains: string[]): string;
export declare const DEFAULT_E2E_TEST_TIMEOUT = 100000;
export declare enum KeyBoardKeys {
    ARROW_DOWN = "\u001B[B",
    ARROW_UP = "\u001B[A",
    ENTER = "\n",
    TAB = "\t"
}
export declare function asyncStreamInputWrite(stream: NodeJS.WritableStream, data: string | Buffer): Promise<void>;
export type TestPromptAction = {
    check: (currentOutput: string) => boolean;
    input: string;
};
/**
 * Takes a {@link ProcessPromise} and a list of inputs that will be supplied
 * in the provided order when the check in the {@link TestPromptAction} matches the output
 * of the {@link ProcessPromise}.
 */
export declare function handlePrompts(processPromise: Readonly<ProcessPromise>, actions: TestPromptAction[]): Promise<ProcessOutput>;
export declare const SELECT_ANVIL_2_FROM_MULTICHAIN_PICKER: string;
export declare const SELECT_ANVIL_3_AFTER_ANVIL_2_FROM_MULTICHAIN_PICKER: string;
export declare const SELECT_MAINNET_CHAIN_TYPE_STEP: TestPromptAction;
export declare const SELECT_ANVIL_2_AND_ANVIL_3_STEPS: ReadonlyArray<TestPromptAction>;
export declare const CONFIRM_DETECTED_OWNER_STEP: Readonly<TestPromptAction>;
export declare const SETUP_CHAIN_SIGNERS_MANUALLY_STEPS: ReadonlyArray<TestPromptAction>;
/**
 * Retrieves the deployed Warp address from the Warp core config.
 */
export declare function getDeployedWarpAddress(chain: string, warpCorePath: string): string | null;
/**
 * Updates the owner of the Warp route deployment config, and then output to a file
 */
export declare function updateWarpOwnerConfig(chain: string, owner: Address, warpCorePath: string, warpDeployPath: string): Promise<string>;
/**
 * Updates the Warp route deployment configuration with a new owner, and then applies the changes.
 */
export declare function updateOwner(owner: Address, chain: string, warpConfigPath: string, warpCoreConfigPath: string): Promise<ProcessOutput>;
/**
 * Extends the Warp route deployment with a new warp config
 */
export declare function extendWarpConfig(params: {
    chain: string;
    chainToExtend: string;
    extendedConfig: HypTokenRouterConfig;
    warpCorePath: string;
    warpDeployPath: string;
    strategyUrl?: string;
}): Promise<string>;
/**
 * Sets up an incomplete warp route extension for testing purposes.
 *
 * This function creates a new warp route configuration for the second chain.
 */
export declare function setupIncompleteWarpRouteExtension(chain2Addresses: ChainAddresses): Promise<{
    chain2DomainId: string;
    chain3DomainId: string;
    warpConfigPath: string;
    configToExtend: HypTokenRouterConfig;
    context: CommandContext;
    combinedWarpCorePath: string;
}>;
/**
 * Deploys new core contracts on the specified chain if it doesn't already exist, and returns the chain addresses.
 */
export declare function deployOrUseExistingCore(chain: string, coreInputPath: string, key: string): Promise<Record<string, string>>;
export declare function getDomainId(chainName: string, key: string): Promise<string>;
export declare function deployToken(privateKey: string, chain: string, decimals?: number, symbol?: string): Promise<ERC20Test>;
export declare function deploy4626Vault(privateKey: string, chain: string, tokenAddress: string): Promise<import("@hyperlane-xyz/core").ERC4626Test>;
export declare function deployXERC20VSToken(privateKey: string, chain: string, decimals?: number, symbol?: string): Promise<XERC20VSTest>;
export declare function deployXERC20LockboxToken(privateKey: string, chain: string, token: ERC20Test): Promise<XERC20LockboxTest>;
/**
 * Performs a round-trip warp relay between two chains using the specified warp core config.
 *
 * @param chain1 - The first chain to send the warp relay from.
 * @param chain2 - The second chain to send the warp relay to and back from.
 * @param warpCoreConfigPath - The path to the warp core config file.
 * @returns A promise that resolves when the round-trip warp relay is complete.
 */
export declare function sendWarpRouteMessageRoundTrip(chain1: string, chain2: string, warpCoreConfigPath: string): Promise<ProcessOutput>;
export declare function hyperlaneSendMessage(origin: string, destination: string): Promise<ProcessOutput>;
export declare function hyperlaneRelayer(chains: string[], warp?: string): ProcessPromise;
//# sourceMappingURL=helpers.d.ts.map