import { TimelockController } from '@hyperlane-xyz/core';
import { Address } from '@hyperlane-xyz/utils';
import { MultiProvider } from '../../providers/MultiProvider.js';
import { EvmEventLogsReader, EvmEventLogsReaderConfig } from '../../rpc/evm/EvmEventLogsReader.js';
import { ChainNameOrId } from '../../types.js';
import { ExecutableTimelockTx, TimelockTx } from '../types.js';
export type EvmTimelockReaderConfig = {
    chain: Readonly<ChainNameOrId>;
    timelockAddress: Readonly<Address>;
    multiProvider: Readonly<MultiProvider>;
} & EvmEventLogsReaderConfig;
export declare class EvmTimelockReader {
    protected readonly chain: ChainNameOrId;
    protected readonly multiProvider: MultiProvider;
    protected timelockInstance: TimelockController;
    protected evmLogReader: EvmEventLogsReader;
    protected constructor(chain: ChainNameOrId, multiProvider: MultiProvider, timelockInstance: TimelockController, evmLogReader: EvmEventLogsReader);
    static fromConfig(config: EvmTimelockReaderConfig): EvmTimelockReader;
    getOperationsSalt(): Promise<Record<string, string>>;
    getScheduledOperations(): Promise<Record<string, TimelockTx>>;
    getCancelledOperationIds(): Promise<Set<string>>;
    getExecutedOperationIds(): Promise<Set<string>>;
    getReadyOperationIds(operationIds: string[]): Promise<Set<string>>;
    getPendingOperationIds(operationIds: string[]): Promise<Set<string>>;
    getPendingScheduledOperations(): Promise<Record<string, TimelockTx>>;
    getScheduledExecutableTransactions(): Promise<Record<string, ExecutableTimelockTx>>;
    hasRole(address: Address, role: string): Promise<boolean>;
    canExecuteOperations(address: Address): Promise<boolean>;
    canCancelOperations(address: Address): Promise<boolean>;
    canScheduleOperations(address: Address): Promise<boolean>;
}
//# sourceMappingURL=EvmTimelockReader.d.ts.map