import { Address, WithAddress } from '@hyperlane-xyz/utils';
import { IsmConfig } from '../ism/types.js';
type ChainAddresses = Record<string, string>;
/**
 * Extracts the ISM and Hook factory addresses from chain-specific registry addresses
 * @param registryAddresses The registry addresses for a specific chain
 * @returns The extracted ISM and Hook factory addresses
 */
export declare function ismTreeContainsRateLimited(ism: unknown): boolean;
/**
 * Recursively sets `recipient` on all RATE_LIMITED ISM nodes in the config tree.
 * Pass `undefined` to strip the field.
 * `defaultOwner` is set on nodes that don't have an explicit owner.
 */
export declare function setRateLimitedIsmRecipient(ismConfig: IsmConfig, recipient: Address | undefined, defaultOwner?: string): IsmConfig;
export declare function extractIsmAndHookFactoryAddresses(registryAddresses: ChainAddresses): Pick<Record<string, string>, "staticMerkleRootMultisigIsmFactory" | "staticMessageIdMultisigIsmFactory" | "staticAggregationIsmFactory" | "staticAggregationHookFactory" | "domainRoutingIsmFactory" | "incrementalDomainRoutingIsmFactory" | "staticMerkleRootWeightedMultisigIsmFactory" | "staticMessageIdWeightedMultisigIsmFactory">;
export declare function multisigIsmVerificationCost(m: number, n: number): number;
export declare function normalizeConfig(obj: WithAddress<any>): any;
export declare function sortArraysInConfig(config: any): any;
export {};
//# sourceMappingURL=ism.d.ts.map