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: "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;
    };
}, {
    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.objectInputType<{
        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: "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.objectInputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    };
}>;
export type HooksConfig = z.infer<typeof HooksConfigSchema>;
export declare const HooksConfigMapSchema: z.ZodRecord<z.ZodString, 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: "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;
    };
}, {
    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.objectInputType<{
        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: "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.objectInputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    };
}>>;
export type HooksConfigMap = z.infer<typeof HooksConfigMapSchema>;
//# sourceMappingURL=types.d.ts.map