import { type TypedTransactionReceipt } from '@hyperlane-xyz/sdk/providers/ProviderType';
import type { ITokenMetadata } from '@hyperlane-xyz/sdk/token/ITokenMetadata';
import type { ChainName } from '@hyperlane-xyz/sdk/types';
import type { WarpTypedTransaction } from '@hyperlane-xyz/sdk/warp/types';
import { HexString, ProtocolType } from '@hyperlane-xyz/utils';
export interface ChainAddress {
    address: string;
    chainName?: ChainName;
}
export interface AccountInfo {
    protocol: ProtocolType;
    addresses: Array<ChainAddress>;
    publicKey?: Promise<HexString | undefined>;
    isReady: boolean;
}
export interface WalletDetails {
    name?: string;
    logoUrl?: string;
}
export interface ActiveChainInfo {
    chainDisplayName?: string;
    chainName?: ChainName;
}
export type SendTransactionFn<TxReq extends WarpTypedTransaction = WarpTypedTransaction, TxResp extends TypedTransactionReceipt = TypedTransactionReceipt> = (params: {
    tx: TxReq;
    chainName: ChainName;
    activeChainName?: ChainName;
}) => Promise<{
    hash: string;
    confirm: () => Promise<TxResp>;
}>;
export type SendMultiTransactionFn<TxReq extends WarpTypedTransaction = WarpTypedTransaction, TxResp extends TypedTransactionReceipt = TypedTransactionReceipt> = (params: {
    txs: TxReq[];
    chainName: ChainName;
    activeChainName?: ChainName;
}) => Promise<{
    hash: string;
    confirm: () => Promise<TxResp>;
}>;
export type SwitchNetworkFn = (chainName: ChainName) => Promise<void>;
export interface ChainTransactionFns {
    sendTransaction: SendTransactionFn;
    sendMultiTransaction: SendMultiTransactionFn;
    switchNetwork?: SwitchNetworkFn;
}
export interface SwitchNetworkFns {
    switchNetwork: SwitchNetworkFn;
}
export interface WatchAssetFns {
    addAsset: (token: ITokenMetadata, activeChainName: ChainName) => Promise<boolean>;
}
//# sourceMappingURL=types.d.ts.map