UNPKG

@hyperlane-xyz/sdk

Version:

The official SDK for the Hyperlane Network

1,502 lines 80.7 kB
import { z } from 'zod'; import { Address, WithAddress } from '@hyperlane-xyz/utils'; import { ChainMap, OwnableConfig } from '../types.js'; export declare enum OnchainHookType { UNUSED = 0, ROUTING = 1, AGGREGATION = 2, MERKLE_TREE = 3, INTERCHAIN_GAS_PAYMASTER = 4, FALLBACK_ROUTING = 5, ID_AUTH_ISM = 6, PAUSABLE = 7, PROTOCOL_FEE = 8, DEPRECATED = 9, RATE_LIMITED = 10, ARB_L2_TO_L1 = 11, OP_L2_TO_L1 = 12, MAILBOX_DEFAULT_HOOK = 13, AMOUNT_ROUTING = 14, CCTP = 15, TIMELOCK_ROUTING = 16, PREDICATE_ROUTER_WRAPPER = 17 } export declare const HookType: { /** * Retained for backwards compatibility with pre-deployed hooks that don't fit * a named type. Excluded from `DeployableHookType` — cannot be deployed via * `HyperlaneHookDeployer`. New code should use a specific named hook type. */ readonly CUSTOM: "custom"; readonly MERKLE_TREE: "merkleTreeHook"; readonly INTERCHAIN_GAS_PAYMASTER: "interchainGasPaymaster"; readonly AGGREGATION: "aggregationHook"; readonly PROTOCOL_FEE: "protocolFee"; readonly OP_STACK: "opStackHook"; readonly ROUTING: "domainRoutingHook"; readonly FALLBACK_ROUTING: "fallbackRoutingHook"; readonly AMOUNT_ROUTING: "amountRoutingHook"; readonly PAUSABLE: "pausableHook"; readonly ARB_L2_TO_L1: "arbL2ToL1Hook"; readonly MAILBOX_DEFAULT: "defaultHook"; readonly CCIP: "ccipHook"; /** * References a pre-deployed CCTP hook by address. Excluded from * `DeployableHookType` — not deployed via `HyperlaneHookDeployer`; the * `EvmHookModule.deploy` path just connects to `config.address`. */ readonly CCTP: "cctpHook"; /** * Rate-limits outbound token volume on the origin chain at dispatch time. * Warp-route only. Not valid for core required/default hooks. */ readonly RATE_LIMITED: "rateLimitedHook"; readonly UNKNOWN: "unknownHook"; readonly PREDICATE: "predicateHook"; }; export type HookType = (typeof HookType)[keyof typeof HookType]; export type DeployableHookType = Exclude<HookType, typeof HookType.CUSTOM | typeof HookType.PREDICATE | typeof HookType.UNKNOWN | typeof HookType.CCTP>; export declare const HookTypeToContractNameMap: Record<DeployableHookType, string>; export type MerkleTreeHookConfig = z.infer<typeof MerkleTreeSchema>; export type IgpHookConfig = z.infer<typeof IgpSchema>; export type ProtocolFeeHookConfig = z.infer<typeof ProtocolFeeSchema>; export type PausableHookConfig = z.infer<typeof PausableHookSchema>; export type OpStackHookConfig = z.infer<typeof OpStackHookSchema>; export type ArbL2ToL1HookConfig = z.infer<typeof ArbL2ToL1HookSchema>; export type MailboxDefaultHookConfig = z.infer<typeof MailboxDefaultHookSchema>; export type RateLimitedHookConfig = z.infer<typeof RateLimitedHookSchema>; export type CCIPHookConfig = z.infer<typeof CCIPHookSchema>; export type AggregationHookConfig = { type: typeof HookType.AGGREGATION; hooks: Array<HookConfig>; }; export type RoutingHookConfig = OwnableConfig & { domains: ChainMap<HookConfig>; }; export type DomainRoutingHookConfig = RoutingHookConfig & { type: typeof HookType.ROUTING; }; export type FallbackRoutingHookConfig = RoutingHookConfig & { type: typeof HookType.FALLBACK_ROUTING; fallback: HookConfig; }; export type AmountRoutingHookConfig = { type: typeof HookType.AMOUNT_ROUTING; threshold: number; lowerHook: HookConfig; upperHook: HookConfig; }; export type HookConfig = z.infer<typeof HookConfigSchema>; export type DerivedHookConfig = WithAddress<Exclude<HookConfig, Address>>; export declare const MUTABLE_HOOK_TYPE: HookType[]; export declare const ProtocolFeeSchema: z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"protocolFee">; beneficiary: z.ZodString; maxProtocolFee: z.ZodString; protocolFee: z.ZodString; }, "strip", z.ZodTypeAny, { type: "protocolFee"; owner: string; protocolFee: string; beneficiary: string; maxProtocolFee: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "protocolFee"; owner: string; protocolFee: string; beneficiary: string; maxProtocolFee: string; ownerOverrides?: Record<string, string> | undefined; }>; export declare const MerkleTreeSchema: z.ZodObject<{ type: z.ZodLiteral<"merkleTreeHook">; }, "strip", z.ZodTypeAny, { type: "merkleTreeHook"; }, { type: "merkleTreeHook"; }>; export declare const PredicateHookSchema: z.ZodObject<{ type: z.ZodLiteral<"predicateHook">; address: z.ZodString; }, "strip", z.ZodTypeAny, { type: "predicateHook"; address: string; }, { type: "predicateHook"; address: string; }>; export type PredicateHookConfig = z.infer<typeof PredicateHookSchema>; export declare const PausableHookSchema: z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { paused: z.ZodBoolean; } & { type: z.ZodLiteral<"pausableHook">; }, "strip", z.ZodTypeAny, { type: "pausableHook"; owner: string; paused: boolean; ownerOverrides?: Record<string, string> | undefined; }, { type: "pausableHook"; owner: string; paused: boolean; ownerOverrides?: Record<string, string> | undefined; }>; export declare const MailboxDefaultHookSchema: z.ZodObject<{ type: z.ZodLiteral<"defaultHook">; }, "strip", z.ZodTypeAny, { type: "defaultHook"; }, { type: "defaultHook"; }>; export declare const OpStackHookSchema: z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"opStackHook">; nativeBridge: z.ZodString; destinationChain: z.ZodString; }, "strip", z.ZodTypeAny, { type: "opStackHook"; owner: string; nativeBridge: string; destinationChain: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "opStackHook"; owner: string; nativeBridge: string; destinationChain: string; ownerOverrides?: Record<string, string> | undefined; }>; export declare const ArbL2ToL1HookSchema: z.ZodObject<{ type: z.ZodLiteral<"arbL2ToL1Hook">; arbSys: z.ZodString; bridge: z.ZodOptional<z.ZodString>; destinationChain: z.ZodString; childHook: z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>; }, "strip", z.ZodTypeAny, { type: "arbL2ToL1Hook"; destinationChain: string; arbSys: string; bridge?: string | undefined; childHook?: any; }, { type: "arbL2ToL1Hook"; destinationChain: string; arbSys: string; bridge?: string | undefined; childHook?: any; }>; export declare const IgpSchema: z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"interchainGasPaymaster">; beneficiary: z.ZodString; oracleKey: z.ZodString; overhead: z.ZodRecord<z.ZodString, z.ZodNumber>; oracleConfig: z.ZodRecord<z.ZodString, z.ZodObject<{ gasPrice: z.ZodString; tokenExchangeRate: z.ZodString; } & { tokenDecimals: z.ZodOptional<z.ZodNumber>; } & { typicalCost: z.ZodOptional<z.ZodObject<{ handleGasAmount: z.ZodNumber; totalGasAmount: z.ZodNumber; totalUsdCost: z.ZodNumber; }, "strip", z.ZodTypeAny, { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; }, { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; }>>; }, "strip", z.ZodTypeAny, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }>>; quoteSigners: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; contractVersion: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "interchainGasPaymaster"; owner: string; beneficiary: string; oracleKey: string; overhead: Record<string, number>; oracleConfig: Record<string, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }>; ownerOverrides?: Record<string, string> | undefined; quoteSigners?: string[] | undefined; contractVersion?: string | undefined; }, { type: "interchainGasPaymaster"; owner: string; beneficiary: string; oracleKey: string; overhead: Record<string, number>; oracleConfig: Record<string, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }>; ownerOverrides?: Record<string, string> | undefined; quoteSigners?: string[] | undefined; contractVersion?: string | undefined; }>; export declare const DomainRoutingHookConfigSchema: z.ZodSchema<DomainRoutingHookConfig>; export declare const FallbackRoutingHookConfigSchema: z.ZodSchema<FallbackRoutingHookConfig>; export declare const AmountRoutingHookConfigSchema: z.ZodSchema<AmountRoutingHookConfig>; export declare const AggregationHookConfigSchema: z.ZodSchema<AggregationHookConfig>; export declare const CCIPHookSchema: z.ZodObject<{ type: z.ZodLiteral<"ccipHook">; destinationChain: z.ZodString; }, "strip", z.ZodTypeAny, { type: "ccipHook"; destinationChain: string; }, { type: "ccipHook"; destinationChain: string; }>; export declare const CctpHookSchema: z.ZodObject<{ type: z.ZodLiteral<"cctpHook">; address: z.ZodString; }, "strip", z.ZodTypeAny, { type: "cctpHook"; address: string; }, { type: "cctpHook"; address: string; }>; export type CctpHookConfig = z.infer<typeof CctpHookSchema>; export declare const UnknownHookSchema: z.ZodObject<{ type: z.ZodLiteral<"unknownHook">; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ type: z.ZodLiteral<"unknownHook">; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ type: z.ZodLiteral<"unknownHook">; }, z.ZodTypeAny, "passthrough">>; export type UnknownHookConfig = z.infer<typeof UnknownHookSchema>; export declare const RateLimitedHookSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"rateLimitedHook">; maxCapacity: z.ZodString; }, "strip", z.ZodTypeAny, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }>, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }>, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }>; /** * Recursively normalizes unknown hook type values to HookType.UNKNOWN. * Use this before parsing with HookConfigSchema when configs may contain * hook types not yet known to this SDK version. * * Note: String address configs (e.g., "0x...") are passed through unchanged * since they represent deployed hook addresses, not hook type configs. */ export declare function normalizeUnknownHookTypes<T>(config: T): T; export declare const HookConfigSchema: z.ZodUnion<[z.ZodString, z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"protocolFee">; beneficiary: z.ZodString; maxProtocolFee: z.ZodString; protocolFee: z.ZodString; }, "strip", z.ZodTypeAny, { type: "protocolFee"; owner: string; protocolFee: string; beneficiary: string; maxProtocolFee: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "protocolFee"; owner: string; protocolFee: string; beneficiary: string; maxProtocolFee: string; ownerOverrides?: Record<string, string> | undefined; }>, z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { paused: z.ZodBoolean; } & { type: z.ZodLiteral<"pausableHook">; }, "strip", z.ZodTypeAny, { type: "pausableHook"; owner: string; paused: boolean; ownerOverrides?: Record<string, string> | undefined; }, { type: "pausableHook"; owner: string; paused: boolean; ownerOverrides?: Record<string, string> | undefined; }>, z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"opStackHook">; nativeBridge: z.ZodString; destinationChain: z.ZodString; }, "strip", z.ZodTypeAny, { type: "opStackHook"; owner: string; nativeBridge: string; destinationChain: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "opStackHook"; owner: string; nativeBridge: string; destinationChain: string; ownerOverrides?: Record<string, string> | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"merkleTreeHook">; }, "strip", z.ZodTypeAny, { type: "merkleTreeHook"; }, { type: "merkleTreeHook"; }>, z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"interchainGasPaymaster">; beneficiary: z.ZodString; oracleKey: z.ZodString; overhead: z.ZodRecord<z.ZodString, z.ZodNumber>; oracleConfig: z.ZodRecord<z.ZodString, z.ZodObject<{ gasPrice: z.ZodString; tokenExchangeRate: z.ZodString; } & { tokenDecimals: z.ZodOptional<z.ZodNumber>; } & { typicalCost: z.ZodOptional<z.ZodObject<{ handleGasAmount: z.ZodNumber; totalGasAmount: z.ZodNumber; totalUsdCost: z.ZodNumber; }, "strip", z.ZodTypeAny, { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; }, { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; }>>; }, "strip", z.ZodTypeAny, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }>>; quoteSigners: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; contractVersion: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "interchainGasPaymaster"; owner: string; beneficiary: string; oracleKey: string; overhead: Record<string, number>; oracleConfig: Record<string, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }>; ownerOverrides?: Record<string, string> | undefined; quoteSigners?: string[] | undefined; contractVersion?: string | undefined; }, { type: "interchainGasPaymaster"; owner: string; beneficiary: string; oracleKey: string; overhead: Record<string, number>; oracleConfig: Record<string, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }>; ownerOverrides?: Record<string, string> | undefined; quoteSigners?: string[] | undefined; contractVersion?: string | undefined; }>, z.ZodType<DomainRoutingHookConfig, z.ZodTypeDef, DomainRoutingHookConfig>, z.ZodType<FallbackRoutingHookConfig, z.ZodTypeDef, FallbackRoutingHookConfig>, z.ZodType<AmountRoutingHookConfig, z.ZodTypeDef, AmountRoutingHookConfig>, z.ZodType<AggregationHookConfig, z.ZodTypeDef, AggregationHookConfig>, z.ZodObject<{ type: z.ZodLiteral<"arbL2ToL1Hook">; arbSys: z.ZodString; bridge: z.ZodOptional<z.ZodString>; destinationChain: z.ZodString; childHook: z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>; }, "strip", z.ZodTypeAny, { type: "arbL2ToL1Hook"; destinationChain: string; arbSys: string; bridge?: string | undefined; childHook?: any; }, { type: "arbL2ToL1Hook"; destinationChain: string; arbSys: string; bridge?: string | undefined; childHook?: any; }>, z.ZodObject<{ type: z.ZodLiteral<"defaultHook">; }, "strip", z.ZodTypeAny, { type: "defaultHook"; }, { type: "defaultHook"; }>, z.ZodObject<{ type: z.ZodLiteral<"ccipHook">; destinationChain: z.ZodString; }, "strip", z.ZodTypeAny, { type: "ccipHook"; destinationChain: string; }, { type: "ccipHook"; destinationChain: string; }>, z.ZodObject<{ type: z.ZodLiteral<"cctpHook">; address: z.ZodString; }, "strip", z.ZodTypeAny, { type: "cctpHook"; address: string; }, { type: "cctpHook"; address: string; }>, z.ZodEffects<z.ZodEffects<z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"rateLimitedHook">; maxCapacity: z.ZodString; }, "strip", z.ZodTypeAny, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }>, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }>, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"unknownHook">; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ type: z.ZodLiteral<"unknownHook">; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ type: z.ZodLiteral<"unknownHook">; }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{ type: z.ZodLiteral<"predicateHook">; address: z.ZodString; }, "strip", z.ZodTypeAny, { type: "predicateHook"; address: string; }, { type: "predicateHook"; address: string; }>]>; /** * Forward-compatible hook config schema that normalizes unknown hook types. * Use this instead of HookConfigSchema when parsing configs that may contain * hook types added in newer registry versions. */ export declare const SafeParseHookConfigSchema: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"protocolFee">; beneficiary: z.ZodString; maxProtocolFee: z.ZodString; protocolFee: z.ZodString; }, "strip", z.ZodTypeAny, { type: "protocolFee"; owner: string; protocolFee: string; beneficiary: string; maxProtocolFee: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "protocolFee"; owner: string; protocolFee: string; beneficiary: string; maxProtocolFee: string; ownerOverrides?: Record<string, string> | undefined; }>, z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { paused: z.ZodBoolean; } & { type: z.ZodLiteral<"pausableHook">; }, "strip", z.ZodTypeAny, { type: "pausableHook"; owner: string; paused: boolean; ownerOverrides?: Record<string, string> | undefined; }, { type: "pausableHook"; owner: string; paused: boolean; ownerOverrides?: Record<string, string> | undefined; }>, z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"opStackHook">; nativeBridge: z.ZodString; destinationChain: z.ZodString; }, "strip", z.ZodTypeAny, { type: "opStackHook"; owner: string; nativeBridge: string; destinationChain: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "opStackHook"; owner: string; nativeBridge: string; destinationChain: string; ownerOverrides?: Record<string, string> | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"merkleTreeHook">; }, "strip", z.ZodTypeAny, { type: "merkleTreeHook"; }, { type: "merkleTreeHook"; }>, z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"interchainGasPaymaster">; beneficiary: z.ZodString; oracleKey: z.ZodString; overhead: z.ZodRecord<z.ZodString, z.ZodNumber>; oracleConfig: z.ZodRecord<z.ZodString, z.ZodObject<{ gasPrice: z.ZodString; tokenExchangeRate: z.ZodString; } & { tokenDecimals: z.ZodOptional<z.ZodNumber>; } & { typicalCost: z.ZodOptional<z.ZodObject<{ handleGasAmount: z.ZodNumber; totalGasAmount: z.ZodNumber; totalUsdCost: z.ZodNumber; }, "strip", z.ZodTypeAny, { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; }, { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; }>>; }, "strip", z.ZodTypeAny, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }>>; quoteSigners: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; contractVersion: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "interchainGasPaymaster"; owner: string; beneficiary: string; oracleKey: string; overhead: Record<string, number>; oracleConfig: Record<string, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }>; ownerOverrides?: Record<string, string> | undefined; quoteSigners?: string[] | undefined; contractVersion?: string | undefined; }, { type: "interchainGasPaymaster"; owner: string; beneficiary: string; oracleKey: string; overhead: Record<string, number>; oracleConfig: Record<string, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }>; ownerOverrides?: Record<string, string> | undefined; quoteSigners?: string[] | undefined; contractVersion?: string | undefined; }>, z.ZodType<DomainRoutingHookConfig, z.ZodTypeDef, DomainRoutingHookConfig>, z.ZodType<FallbackRoutingHookConfig, z.ZodTypeDef, FallbackRoutingHookConfig>, z.ZodType<AmountRoutingHookConfig, z.ZodTypeDef, AmountRoutingHookConfig>, z.ZodType<AggregationHookConfig, z.ZodTypeDef, AggregationHookConfig>, z.ZodObject<{ type: z.ZodLiteral<"arbL2ToL1Hook">; arbSys: z.ZodString; bridge: z.ZodOptional<z.ZodString>; destinationChain: z.ZodString; childHook: z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>; }, "strip", z.ZodTypeAny, { type: "arbL2ToL1Hook"; destinationChain: string; arbSys: string; bridge?: string | undefined; childHook?: any; }, { type: "arbL2ToL1Hook"; destinationChain: string; arbSys: string; bridge?: string | undefined; childHook?: any; }>, z.ZodObject<{ type: z.ZodLiteral<"defaultHook">; }, "strip", z.ZodTypeAny, { type: "defaultHook"; }, { type: "defaultHook"; }>, z.ZodObject<{ type: z.ZodLiteral<"ccipHook">; destinationChain: z.ZodString; }, "strip", z.ZodTypeAny, { type: "ccipHook"; destinationChain: string; }, { type: "ccipHook"; destinationChain: string; }>, z.ZodObject<{ type: z.ZodLiteral<"cctpHook">; address: z.ZodString; }, "strip", z.ZodTypeAny, { type: "cctpHook"; address: string; }, { type: "cctpHook"; address: string; }>, z.ZodEffects<z.ZodEffects<z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"rateLimitedHook">; maxCapacity: z.ZodString; }, "strip", z.ZodTypeAny, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }>, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }>, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"unknownHook">; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ type: z.ZodLiteral<"unknownHook">; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ type: z.ZodLiteral<"unknownHook">; }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{ type: z.ZodLiteral<"predicateHook">; address: z.ZodString; }, "strip", z.ZodTypeAny, { type: "predicateHook"; address: string; }, { type: "predicateHook"; address: string; }>]>, string | { type: "merkleTreeHook"; } | { type: "interchainGasPaymaster"; owner: string; beneficiary: string; oracleKey: string; overhead: Record<string, number>; oracleConfig: Record<string, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }>; ownerOverrides?: Record<string, string> | undefined; quoteSigners?: string[] | undefined; contractVersion?: string | undefined; } | { type: "protocolFee"; owner: string; protocolFee: string; beneficiary: string; maxProtocolFee: string; ownerOverrides?: Record<string, string> | undefined; } | { type: "pausableHook"; owner: string; paused: boolean; ownerOverrides?: Record<string, string> | undefined; } | { type: "opStackHook"; owner: string; nativeBridge: string; destinationChain: string; ownerOverrides?: Record<string, string> | undefined; } | { type: "arbL2ToL1Hook"; destinationChain: string; arbSys: string; bridge?: string | undefined; childHook?: any; } | { type: "defaultHook"; } | { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; } | { type: "ccipHook"; destinationChain: string; } | DomainRoutingHookConfig | FallbackRoutingHookConfig | AmountRoutingHookConfig | AggregationHookConfig | { type: "cctpHook"; address: string; } | z.objectOutputType<{ type: z.ZodLiteral<"unknownHook">; }, z.ZodTypeAny, "passthrough"> | { type: "predicateHook"; address: string; }, unknown>; export declare const HooksConfigSchema: z.ZodObject<{ default: z.ZodUnion<[z.ZodString, z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"protocolFee">; beneficiary: z.ZodString; maxProtocolFee: z.ZodString; protocolFee: z.ZodString; }, "strip", z.ZodTypeAny, { type: "protocolFee"; owner: string; protocolFee: string; beneficiary: string; maxProtocolFee: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "protocolFee"; owner: string; protocolFee: string; beneficiary: string; maxProtocolFee: string; ownerOverrides?: Record<string, string> | undefined; }>, z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { paused: z.ZodBoolean; } & { type: z.ZodLiteral<"pausableHook">; }, "strip", z.ZodTypeAny, { type: "pausableHook"; owner: string; paused: boolean; ownerOverrides?: Record<string, string> | undefined; }, { type: "pausableHook"; owner: string; paused: boolean; ownerOverrides?: Record<string, string> | undefined; }>, z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"opStackHook">; nativeBridge: z.ZodString; destinationChain: z.ZodString; }, "strip", z.ZodTypeAny, { type: "opStackHook"; owner: string; nativeBridge: string; destinationChain: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "opStackHook"; owner: string; nativeBridge: string; destinationChain: string; ownerOverrides?: Record<string, string> | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"merkleTreeHook">; }, "strip", z.ZodTypeAny, { type: "merkleTreeHook"; }, { type: "merkleTreeHook"; }>, z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"interchainGasPaymaster">; beneficiary: z.ZodString; oracleKey: z.ZodString; overhead: z.ZodRecord<z.ZodString, z.ZodNumber>; oracleConfig: z.ZodRecord<z.ZodString, z.ZodObject<{ gasPrice: z.ZodString; tokenExchangeRate: z.ZodString; } & { tokenDecimals: z.ZodOptional<z.ZodNumber>; } & { typicalCost: z.ZodOptional<z.ZodObject<{ handleGasAmount: z.ZodNumber; totalGasAmount: z.ZodNumber; totalUsdCost: z.ZodNumber; }, "strip", z.ZodTypeAny, { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; }, { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; }>>; }, "strip", z.ZodTypeAny, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }>>; quoteSigners: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; contractVersion: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "interchainGasPaymaster"; owner: string; beneficiary: string; oracleKey: string; overhead: Record<string, number>; oracleConfig: Record<string, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }>; ownerOverrides?: Record<string, string> | undefined; quoteSigners?: string[] | undefined; contractVersion?: string | undefined; }, { type: "interchainGasPaymaster"; owner: string; beneficiary: string; oracleKey: string; overhead: Record<string, number>; oracleConfig: Record<string, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }>; ownerOverrides?: Record<string, string> | undefined; quoteSigners?: string[] | undefined; contractVersion?: string | undefined; }>, z.ZodType<DomainRoutingHookConfig, z.ZodTypeDef, DomainRoutingHookConfig>, z.ZodType<FallbackRoutingHookConfig, z.ZodTypeDef, FallbackRoutingHookConfig>, z.ZodType<AmountRoutingHookConfig, z.ZodTypeDef, AmountRoutingHookConfig>, z.ZodType<AggregationHookConfig, z.ZodTypeDef, AggregationHookConfig>, z.ZodObject<{ type: z.ZodLiteral<"arbL2ToL1Hook">; arbSys: z.ZodString; bridge: z.ZodOptional<z.ZodString>; destinationChain: z.ZodString; childHook: z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>; }, "strip", z.ZodTypeAny, { type: "arbL2ToL1Hook"; destinationChain: string; arbSys: string; bridge?: string | undefined; childHook?: any; }, { type: "arbL2ToL1Hook"; destinationChain: string; arbSys: string; bridge?: string | undefined; childHook?: any; }>, z.ZodObject<{ type: z.ZodLiteral<"defaultHook">; }, "strip", z.ZodTypeAny, { type: "defaultHook"; }, { type: "defaultHook"; }>, z.ZodObject<{ type: z.ZodLiteral<"ccipHook">; destinationChain: z.ZodString; }, "strip", z.ZodTypeAny, { type: "ccipHook"; destinationChain: string; }, { type: "ccipHook"; destinationChain: string; }>, z.ZodObject<{ type: z.ZodLiteral<"cctpHook">; address: z.ZodString; }, "strip", z.ZodTypeAny, { type: "cctpHook"; address: string; }, { type: "cctpHook"; address: string; }>, z.ZodEffects<z.ZodEffects<z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"rateLimitedHook">; maxCapacity: z.ZodString; }, "strip", z.ZodTypeAny, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }>, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }>, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"unknownHook">; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ type: z.ZodLiteral<"unknownHook">; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ type: z.ZodLiteral<"unknownHook">; }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{ type: z.ZodLiteral<"predicateHook">; address: z.ZodString; }, "strip", z.ZodTypeAny, { type: "predicateHook"; address: string; }, { type: "predicateHook"; address: string; }>]>; required: z.ZodUnion<[z.ZodString, z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"protocolFee">; beneficiary: z.ZodString; maxProtocolFee: z.ZodString; protocolFee: z.ZodString; }, "strip", z.ZodTypeAny, { type: "protocolFee"; owner: string; protocolFee: string; beneficiary: string; maxProtocolFee: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "protocolFee"; owner: string; protocolFee: string; beneficiary: string; maxProtocolFee: string; ownerOverrides?: Record<string, string> | undefined; }>, z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { paused: z.ZodBoolean; } & { type: z.ZodLiteral<"pausableHook">; }, "strip", z.ZodTypeAny, { type: "pausableHook"; owner: string; paused: boolean; ownerOverrides?: Record<string, string> | undefined; }, { type: "pausableHook"; owner: string; paused: boolean; ownerOverrides?: Record<string, string> | undefined; }>, z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"opStackHook">; nativeBridge: z.ZodString; destinationChain: z.ZodString; }, "strip", z.ZodTypeAny, { type: "opStackHook"; owner: string; nativeBridge: string; destinationChain: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "opStackHook"; owner: string; nativeBridge: string; destinationChain: string; ownerOverrides?: Record<string, string> | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"merkleTreeHook">; }, "strip", z.ZodTypeAny, { type: "merkleTreeHook"; }, { type: "merkleTreeHook"; }>, z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"interchainGasPaymaster">; beneficiary: z.ZodString; oracleKey: z.ZodString; overhead: z.ZodRecord<z.ZodString, z.ZodNumber>; oracleConfig: z.ZodRecord<z.ZodString, z.ZodObject<{ gasPrice: z.ZodString; tokenExchangeRate: z.ZodString; } & { tokenDecimals: z.ZodOptional<z.ZodNumber>; } & { typicalCost: z.ZodOptional<z.ZodObject<{ handleGasAmount: z.ZodNumber; totalGasAmount: z.ZodNumber; totalUsdCost: z.ZodNumber; }, "strip", z.ZodTypeAny, { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; }, { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; }>>; }, "strip", z.ZodTypeAny, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }>>; quoteSigners: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; contractVersion: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "interchainGasPaymaster"; owner: string; beneficiary: string; oracleKey: string; overhead: Record<string, number>; oracleConfig: Record<string, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }>; ownerOverrides?: Record<string, string> | undefined; quoteSigners?: string[] | undefined; contractVersion?: string | undefined; }, { type: "interchainGasPaymaster"; owner: string; beneficiary: string; oracleKey: string; overhead: Record<string, number>; oracleConfig: Record<string, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }>; ownerOverrides?: Record<string, string> | undefined; quoteSigners?: string[] | undefined; contractVersion?: string | undefined; }>, z.ZodType<DomainRoutingHookConfig, z.ZodTypeDef, DomainRoutingHookConfig>, z.ZodType<FallbackRoutingHookConfig, z.ZodTypeDef, FallbackRoutingHookConfig>, z.ZodType<AmountRoutingHookConfig, z.ZodTypeDef, AmountRoutingHookConfig>, z.ZodType<AggregationHookConfig, z.ZodTypeDef, AggregationHookConfig>, z.ZodObject<{ type: z.ZodLiteral<"arbL2ToL1Hook">; arbSys: z.ZodString; bridge: z.ZodOptional<z.ZodString>; destinationChain: z.ZodString; childHook: z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>; }, "strip", z.ZodTypeAny, { type: "arbL2ToL1Hook"; destinationChain: string; arbSys: string; bridge?: string | undefined; childHook?: any; }, { type: "arbL2ToL1Hook"; destinationChain: string; arbSys: string; bridge?: string | undefined; childHook?: any; }>, z.ZodObject<{ type: z.ZodLiteral<"defaultHook">; }, "strip", z.ZodTypeAny, { type: "defaultHook"; }, { type: "defaultHook"; }>, z.ZodObject<{ type: z.ZodLiteral<"ccipHook">; destinationChain: z.ZodString; }, "strip", z.ZodTypeAny, { type: "ccipHook"; destinationChain: string; }, { type: "ccipHook"; destinationChain: string; }>, z.ZodObject<{ type: z.ZodLiteral<"cctpHook">; address: z.ZodString; }, "strip", z.ZodTypeAny, { type: "cctpHook"; address: string; }, { type: "cctpHook"; address: string; }>, z.ZodEffects<z.ZodEffects<z.ZodObject<{ owner: z.ZodString; ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; } & { type: z.ZodLiteral<"rateLimitedHook">; maxCapacity: z.ZodString; }, "strip", z.ZodTypeAny, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }>, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }>, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }, { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"unknownHook">; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ type: z.ZodLiteral<"unknownHook">; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ type: z.ZodLiteral<"unknownHook">; }, z.ZodTypeAny, "passthrough">>, z.ZodObject<{ type: z.ZodLiteral<"predicateHook">; address: z.ZodString; }, "strip", z.ZodTypeAny, { type: "predicateHook"; address: string; }, { type: "predicateHook"; address: string; }>]>; }, "strip", z.ZodTypeAny, { default: string | { type: "merkleTreeHook"; } | { type: "interchainGasPaymaster"; owner: string; beneficiary: string; oracleKey: string; overhead: Record<string, number>; oracleConfig: Record<string, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }>; ownerOverrides?: Record<string, string> | undefined; quoteSigners?: string[] | undefined; contractVersion?: string | undefined; } | { type: "protocolFee"; owner: string; protocolFee: string; beneficiary: string; maxProtocolFee: string; ownerOverrides?: Record<string, string> | undefined; } | { type: "pausableHook"; owner: string; paused: boolean; ownerOverrides?: Record<string, string> | undefined; } | { type: "opStackHook"; owner: string; nativeBridge: string; destinationChain: string; ownerOverrides?: Record<string, string> | undefined; } | { type: "arbL2ToL1Hook"; destinationChain: string; arbSys: string; bridge?: string | undefined; childHook?: any; } | { type: "defaultHook"; } | { type: "rateLimitedHook"; owner: string; maxCapacity: string; ownerOverrides?: Record<string, string> | undefined; } | { type: "ccipHook"; destinationChain: string; } | DomainRoutingHookConfig | FallbackRoutingHookConfig | AmountRoutingHookConfig | AggregationHookConfig | { type: "cctpHook"; address: string; } | z.objectOutputType<{ type: z.ZodLiteral<"unknownHook">; }, z.ZodTypeAny, "passthrough"> | { type: "predicateHook"; address: string; }; required: string | { type: "merkleTreeHook"; } | { type: "interchainGasPaymaster"; owner: string; beneficiary: string; oracleKey: string; overhead: Record<string, number>; oracleConfig: Record<string, { gasPrice: string; tokenExchangeRate: string; tokenDecimals?: number | undefined; typicalCost?: { handleGasAmount: number; totalGasAmount: number; totalUsdCost: number; } | undefined; }>; ownerOverrides?: Record<string, string> | undefined; quoteSigners?: string[] | undefined; contractVersion?: string | undefined; } | { type: "protocolFee"; owner: string; protocolFee: string; beneficiary: string; maxProtocolFee: string; ownerOverrides?: Record<string, string> | undefined; } | { type: "pausableHoo