import { Address, ProtocolType } from '@hyperlane-xyz/utils'; import { HyperlaneModule, HyperlaneModuleParams } from '../core/AbstractHyperlaneModule.js'; import { ContractVerifier } from '../deploy/verify/ContractVerifier.js'; import { MultiProvider } from '../providers/MultiProvider.js'; import { AnnotatedEV5Transaction } from '../providers/ProviderType.js'; import { ChainNameOrId } from '../types.js'; import { EvmTokenFeeDeployer } from './EvmTokenFeeDeployer.js'; import { DerivedTokenFeeConfig, EvmTokenFeeReader, TokenFeeReaderParams } from './EvmTokenFeeReader.js'; import { ResolvedTokenFeeConfigInput, TokenFeeConfig, TokenFeeConfigInput } from './types.js'; type TokenFeeModuleAddresses = { deployedFee: Address; }; export declare class EvmTokenFeeModule extends HyperlaneModule { protected readonly multiProvider: MultiProvider; protected readonly contractVerifier?: ContractVerifier | undefined; static protocols: ProtocolType[]; protected readonly logger: import("pino").default.Logger; protected readonly deployer: EvmTokenFeeDeployer; protected readonly reader: EvmTokenFeeReader; protected readonly chainName: string; protected readonly chainId: number; constructor(multiProvider: MultiProvider, params: HyperlaneModuleParams, contractVerifier?: ContractVerifier | undefined); static create({ multiProvider, chain, config, contractVerifier, }: { multiProvider: MultiProvider; chain: ChainNameOrId; config: TokenFeeConfig; contractVerifier?: ContractVerifier; }): Promise; static expandConfig(params: { config: ResolvedTokenFeeConfigInput; multiProvider: MultiProvider; chainName: string; }): Promise; private deploy; read(params?: Partial): Promise; /** * Updates the fee configuration to match the target config. * * IMPORTANT: This method may deploy new contracts as a side effect when: * - An immutable fee type (e.g., LinearFee) needs parameter changes (triggers redeploy) * - A new routing destination is added that doesn't have an existing sub-fee contract * * These deployments are executed immediately and are NOT included in the returned * transaction array. The returned transactions only include configuration changes * (e.g., setFeeContract, ownership transfers) that callers need to execute. * * This behavior is consistent with other Hyperlane SDK modules (EvmIsmModule, EvmHookModule). * * @param targetConfig - The desired fee configuration * @param params - Optional parameters including routingDestinations for reading sub-fees. * If not provided for RoutingFee configs, destinations are derived from * targetConfig.feeContracts keys. * @returns Transactions to execute for configuration updates (does not include deployments) */ update(targetConfig: TokenFeeConfigInput, params?: Partial): Promise; private updateRoutingFee; private createOwnershipUpdateTxs; } export {}; //# sourceMappingURL=EvmTokenFeeModule.d.ts.map