import { WalletClient, SimulateContractParameters, TransactionReceipt } from 'viem';
import { GenericPublicClient } from '../utils/genericPublicClient.js';
import { InterchainTokenDeployedEventArgs, TokenDeployed } from '../types/types.js';
export declare function deployInterchainTokenCall(salt: `0x${string}`, name: string, symbol: string, decimals: number, initialSupply: number, minter: `0x${string}`): SimulateContractParameters;
export declare function deployRemoteInterchainTokenCall(salt: `0x${string}`, destinationChain: string, gasValue: bigint): SimulateContractParameters;
export declare function getInterchainTokenDeployedFromLogs(receipt: TransactionReceipt, salt: `0x${string}`): InterchainTokenDeployedEventArgs | undefined;
export declare function estimateRemoteDeploymentGas(sourceChainName: string, destinationChain: string, executeData: `0x${string}`): Promise<bigint>;
export declare function deployInterchainToken(name: string, symbol: string, decimals: number, initialSupply: number, minter: `0x${string}`, walletClient: WalletClient, publicClient: GenericPublicClient): Promise<{
    hash: `0x${string}`;
    tokenDeployed: InterchainTokenDeployedEventArgs | undefined;
}>;
export declare function deployRemoteInterchainToken(salt: `0x${string}`, destinationChain: string, gasValue: bigint, walletClient: WalletClient, publicClient: GenericPublicClient): Promise<{
    hash: `0x${string}`;
    tokenDeployed: InterchainTokenDeployedEventArgs | undefined;
}>;
export declare function deployInterchainTokenMulticall(name: string, symbol: string, decimals: number, initialSupply: number, minter: string, destinationChains: string[], walletClient: any, publicClient: any): Promise<{
    hash: string;
    tokenDeployed?: TokenDeployed;
}>;
