import { Address } from '@hyperlane-xyz/utils';
import { HyperlaneContractsMap } from '../contracts/types.js';
import { CoreFactories } from '../core/contracts.js';
import { CoreConfig } from '../core/types.js';
import { IgpFactories } from '../gas/contracts.js';
import { IgpConfig } from '../gas/types.js';
import { HookConfig, HookType } from '../hook/types.js';
import { IsmConfig, IsmType, MultisigIsmConfig, WeightedMultisigIsmConfig } from '../ism/types.js';
import { RouterConfig } from '../router/types.js';
import { ChainMap, ChainName } from '../types.js';
export declare function randomInt(max: number, min?: number): number;
export declare function randomAddress(): Address;
export declare function randomSvmAddress(): Address;
export declare function randomStarknetAddress(): Address;
export declare function randomCosmosAddress(prefix: string): Promise
;
export declare function createRouterConfigMap(owner: Address, coreContracts: HyperlaneContractsMap, igpContracts: HyperlaneContractsMap): ChainMap;
export declare function testCoreConfig(chains: ChainName[], owner?: string): ChainMap;
export declare function testIgpConfig(chains: ChainName[], owner?: string): ChainMap;
export declare const hookTypes: ("custom" | "merkleTreeHook" | "interchainGasPaymaster" | "aggregationHook" | "protocolFee" | "opStackHook" | "domainRoutingHook" | "fallbackRoutingHook" | "amountRoutingHook" | "pausableHook" | "arbL2ToL1Hook" | "defaultHook" | "ccipHook" | "unknownHook")[];
export declare const hookTypesToFilter: HookType[];
export declare const DEFAULT_TOKEN_DECIMALS = 18;
export declare function randomHookConfig(depth?: number, maxDepth?: number, providedHookType?: HookType): HookConfig;
export declare const randomMultisigIsmConfig: (m: number, n: number, addresses?: string[]) => MultisigIsmConfig;
export declare const randomWeightedMultisigIsmConfig: (n: number, addresses?: string[]) => WeightedMultisigIsmConfig;
export declare const randomIsmConfig: (depth?: number, maxDepth?: number, providedIsmType?: IsmType) => Exclude;
/**
* Generate a random ISM config suitable for deployment with specific validators/relayer.
* Unlike randomIsmConfig, this version allows specifying validator addresses and relayer
* for use in hardhat tests where real signatures are needed.
*/
export declare const randomDeployableIsmConfig: (maxDepth?: number, validatorAddresses?: string[], relayerAddress?: string) => Exclude;
//# sourceMappingURL=testUtils.d.ts.map