import { Address, ProtocolType } from '@hyperlane-xyz/utils';
import { InterchainAccount } from '../../../middleware/account/InterchainAccount.js';
import { ChainMap } from '../../../types.js';
import { MultiProvider } from '../../MultiProvider.js';
import { AnnotatedEV5Transaction, ProtocolTypedReceipt } from '../../ProviderType.js';
import { TxSubmitterInterface } from './TxSubmitterInterface.js';
import { TxSubmitterType } from './TxSubmitterTypes.js';
import { EvmIcaTxSubmitterProps } from './ethersV5/types.js';
type EvmIcaTxSubmitterConstructorConfig = Omit<EvmIcaTxSubmitterProps, 'internalSubmitter' | 'type'> & {
    originInterchainAccountRouter: Address;
};
export declare class EvmIcaTxSubmitter implements TxSubmitterInterface<ProtocolType.Ethereum> {
    protected readonly config: EvmIcaTxSubmitterConstructorConfig;
    protected readonly submitter: TxSubmitterInterface<ProtocolType.Ethereum>;
    protected readonly multiProvider: MultiProvider;
    protected readonly interchainAccountApp: InterchainAccount;
    readonly txSubmitterType: TxSubmitterType;
    protected constructor(config: EvmIcaTxSubmitterConstructorConfig, submitter: TxSubmitterInterface<ProtocolType.Ethereum>, multiProvider: MultiProvider, interchainAccountApp: InterchainAccount);
    static fromConfig(config: EvmIcaTxSubmitterProps, multiProvider: MultiProvider, coreAddressesByChain: Readonly<ChainMap<Record<string, string>>>): Promise<EvmIcaTxSubmitter>;
    submit(...txs: AnnotatedEV5Transaction[]): Promise<void | ProtocolTypedReceipt<ProtocolType.Ethereum>['receipt'] | ProtocolTypedReceipt<ProtocolType.Ethereum>['receipt'][]>;
}
export {};
//# sourceMappingURL=IcaTxSubmitter.d.ts.map