import { TimelockController } from '@hyperlane-xyz/core';
import { ProtocolType } from '@hyperlane-xyz/utils';
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 { EvmTimelockControllerSubmitterProps } from './types.js';
type EvmTimelockControllerSubmitterConstructorConfig = Required<Pick<EvmTimelockControllerSubmitterProps, 'chain' | 'predecessor' | 'delay' | 'salt'>>;
export declare class EV5TimelockSubmitter implements TxSubmitterInterface<ProtocolType.Ethereum> {
    protected readonly config: EvmTimelockControllerSubmitterConstructorConfig;
    protected readonly multiProvider: MultiProvider;
    protected readonly proposerSubmitter: TxSubmitterInterface<ProtocolType.Ethereum>;
    protected readonly timelockInstance: TimelockController;
    readonly txSubmitterType: TxSubmitterType;
    protected constructor(config: EvmTimelockControllerSubmitterConstructorConfig, multiProvider: MultiProvider, proposerSubmitter: TxSubmitterInterface<ProtocolType.Ethereum>, timelockInstance: TimelockController);
    static fromConfig(config: EvmTimelockControllerSubmitterProps, multiProvider: MultiProvider, coreAddressesByChain: ChainMap<Record<string, string>>): Promise<EV5TimelockSubmitter>;
    submit(...txs: AnnotatedEV5Transaction[]): Promise<void | ProtocolTypedReceipt<ProtocolType.Ethereum>['receipt'] | ProtocolTypedReceipt<ProtocolType.Ethereum>['receipt'][]>;
}
export {};
//# sourceMappingURL=EV5TimelockSubmitter.d.ts.map