import { ContractMethodArgs, Overrides, Signer } from 'ethers';
import './type.js';
import { FactoryOptions } from 'hardhat/types';
import { BaseContract } from 'ethers';
import { ContractTransactionResponse } from 'ethers';
import { ChainwebNetwork } from './utils/chainweb.js';
import { Origin } from './pure-utils.js';
export declare function getNetworks(): string[];
export declare function getChainIdContract(): import("ethers").Contract;
export declare function callChainIdContract(): Promise<number>;
export declare function runOverChains<T>(callback: (chainId: number) => Promise<T>): Promise<T[]>;
export declare const deployContractOnChains: DeployContractOnChains;
export declare function requestSpvProof(targetChain: number, origin: Omit<Origin, 'originContractAddress'>, chainwebNetwork?: ChainwebNetwork): Promise<string>;
export declare function createTamperedProof(targetChain: number, origin: Origin, chainwebNetwork?: ChainwebNetwork): Promise<string>;
export declare const getChainIds: () => Promise<number[]>;
export type DeployedContractsOnChains<T extends BaseContract = BaseContract> = {
    contract: T & {
        deploymentTransaction(): ContractTransactionResponse;
    };
    address: string;
    chain: number;
    network: {
        name: string;
    };
};
export type DeployContractProperties<A extends unknown[] = unknown[]> = {
    name: string;
    signer?: Signer;
    factoryOptions?: FactoryOptions;
    constructorArgs?: ContractMethodArgs<A>;
    overrides?: Overrides;
};
export type DeployContractOnChains = <T extends BaseContract = BaseContract, A extends unknown[] = unknown[]>(args: DeployContractProperties<A>) => Promise<{
    deployments: DeployedContractsOnChains<T>[];
}>;
//# sourceMappingURL=utils.d.ts.map