import { Logger } from 'pino';
import { Address } from '@hyperlane-xyz/utils';
import { CCIPContractCache } from '../ccip/utils.js';
import { ContractVerifier } from '../deploy/verify/ContractVerifier.js';
import { MultiProvider } from '../providers/MultiProvider.js';
import { AnnotatedEV5Transaction } from '../providers/ProviderType.js';
import { HypTokenRouterConfig } from '../token/types.js';
import { ChainName } from '../types.js';
import { extractIsmAndHookFactoryAddresses } from '../utils/ism.js';
import { DerivedHookConfig } from './types.js';
type ReadOnlyDerivedHookConfig = Readonly<DerivedHookConfig>;
type ReadOnlyHookConfig = Readonly<NonNullable<HypTokenRouterConfig['hook']>>;
type UpdateHookParams = {
    evmChainName: ChainName;
    mailbox: string;
    proxyAdminAddress: string;
    expectedConfig: ReadOnlyHookConfig;
    actualConfig: ReadOnlyDerivedHookConfig | string;
    logger: Logger;
    hookAndIsmFactories: ReturnType<typeof extractIsmAndHookFactoryAddresses>;
    multiProvider: MultiProvider;
    setHookFunctionCallEncoder: (newHookAddress: Address) => string;
    ccipContractCache?: CCIPContractCache;
    contractVerifier?: ContractVerifier;
    rateLimitedSender?: Address;
};
export declare function getEvmHookUpdateTransactions(clientContractAddress: string, updateHookParams: Readonly<UpdateHookParams>): Promise<{
    transactions: AnnotatedEV5Transaction[];
    newHookAddress: Address;
}>;
export {};
//# sourceMappingURL=updates.d.ts.map