import { z } from 'zod';
import { MailboxClient, ProxyAdmin__factory, Router, TimelockController__factory } from '@hyperlane-xyz/core';
import { Address, AddressBytes32 } from '@hyperlane-xyz/utils';
import { HyperlaneFactories } from '../contracts/types.js';
import { UpgradeConfig } from '../deploy/proxy.js';
import { CheckerViolation } from '../deploy/types.js';
import { DerivedHookConfig } from '../hook/types.js';
import { DerivedIsmConfig } from '../ism/types.js';
import { ChainMap } from '../types.js';
export type RouterAddress = {
    router: Address;
};
export type MailboxClientConfig = z.infer<typeof MailboxClientConfigSchema>;
export type DerivedMailboxClientFields = {
    hook: string | DerivedHookConfig;
    interchainSecurityModule: string | DerivedIsmConfig;
};
export type DerivedMailboxClientConfig = Omit<MailboxClientConfig, keyof DerivedMailboxClientFields> & DerivedMailboxClientFields;
export type RouterConfig = z.infer<typeof RouterConfigSchema>;
export type GasRouterConfig = z.infer<typeof GasRouterConfigSchema>;
export type ProxiedRouterConfig = RouterConfig & Partial<UpgradeConfig>;
export type ProxiedFactories = HyperlaneFactories & {
    proxyAdmin: ProxyAdmin__factory;
    timelockController: TimelockController__factory;
};
export declare const proxiedFactories: ProxiedFactories;
export declare enum ClientViolationType {
    InterchainSecurityModule = "ClientIsm",
    Mailbox = "ClientMailbox",
    Hook = "ClientHook"
}
export interface ClientViolation extends CheckerViolation {
    type: ClientViolationType;
    contract: MailboxClient;
    description?: string;
}
export declare enum RouterViolationType {
    MisconfiguredEnrolledRouter = "MisconfiguredEnrolledRouter",
    MissingEnrolledRouter = "MissingEnrolledRouter",
    MissingRouter = "MissingRouter"
}
export interface RouterViolation extends CheckerViolation {
    type: RouterViolationType.MisconfiguredEnrolledRouter;
    contract: Router;
    routerDiff: ChainMap<{
        actual: AddressBytes32;
        expected: AddressBytes32;
    }>;
    description?: string;
}
export interface MissingEnrolledRouterViolation extends CheckerViolation {
    type: RouterViolationType.MissingEnrolledRouter;
    contract: Router;
    missingChains: string[];
    description?: string;
}
export interface MissingRouterViolation extends CheckerViolation {
    type: RouterViolationType.MissingRouter;
    contract: Router;
    description?: string;
}
export type RemoteRouters = z.infer<typeof RemoteRoutersSchema>;
export type DestinationGas = z.infer<typeof DestinationGasSchema>;
export declare const MailboxClientConfigSchema: z.ZodObject<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    mailbox: z.ZodString;
    hook: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        type: z.ZodLiteral<import("../hook/types.js").HookType.PROTOCOL_FEE>;
        beneficiary: z.ZodString;
        maxProtocolFee: z.ZodString;
        protocolFee: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.PROTOCOL_FEE;
        owner: string;
        protocolFee: string;
        beneficiary: string;
        maxProtocolFee: string;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: import("../hook/types.js").HookType.PROTOCOL_FEE;
        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<import("../hook/types.js").HookType.PAUSABLE>;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.PAUSABLE;
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: import("../hook/types.js").HookType.PAUSABLE;
        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<import("../hook/types.js").HookType.OP_STACK>;
        nativeBridge: z.ZodString;
        destinationChain: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.OP_STACK;
        owner: string;
        nativeBridge: string;
        destinationChain: string;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: import("../hook/types.js").HookType.OP_STACK;
        owner: string;
        nativeBridge: string;
        destinationChain: string;
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodObject<{
        type: z.ZodLiteral<import("../hook/types.js").HookType.MERKLE_TREE>;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.MERKLE_TREE;
    }, {
        type: import("../hook/types.js").HookType.MERKLE_TREE;
    }>, z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        type: z.ZodLiteral<import("../hook/types.js").HookType.INTERCHAIN_GAS_PAYMASTER>;
        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>;
        }, "strip", z.ZodTypeAny, {
            gasPrice: string;
            tokenExchangeRate: string;
            tokenDecimals?: number | undefined;
        }, {
            gasPrice: string;
            tokenExchangeRate: string;
            tokenDecimals?: number | undefined;
        }>>;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.INTERCHAIN_GAS_PAYMASTER;
        owner: string;
        beneficiary: string;
        oracleKey: string;
        overhead: Record<string, number>;
        oracleConfig: Record<string, {
            gasPrice: string;
            tokenExchangeRate: string;
            tokenDecimals?: number | undefined;
        }>;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: import("../hook/types.js").HookType.INTERCHAIN_GAS_PAYMASTER;
        owner: string;
        beneficiary: string;
        oracleKey: string;
        overhead: Record<string, number>;
        oracleConfig: Record<string, {
            gasPrice: string;
            tokenExchangeRate: string;
            tokenDecimals?: number | undefined;
        }>;
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodType<import("../hook/types.js").DomainRoutingHookConfig, z.ZodTypeDef, import("../hook/types.js").DomainRoutingHookConfig>, z.ZodType<import("../hook/types.js").FallbackRoutingHookConfig, z.ZodTypeDef, import("../hook/types.js").FallbackRoutingHookConfig>, z.ZodType<import("../hook/types.js").AmountRoutingHookConfig, z.ZodTypeDef, import("../hook/types.js").AmountRoutingHookConfig>, z.ZodType<import("../hook/types.js").AggregationHookConfig, z.ZodTypeDef, import("../hook/types.js").AggregationHookConfig>, z.ZodObject<{
        type: z.ZodLiteral<import("../hook/types.js").HookType.ARB_L2_TO_L1>;
        arbSys: z.ZodString;
        bridge: z.ZodOptional<z.ZodString>;
        destinationChain: z.ZodString;
        childHook: z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.ARB_L2_TO_L1;
        destinationChain: string;
        arbSys: string;
        bridge?: string | undefined;
        childHook?: any;
    }, {
        type: import("../hook/types.js").HookType.ARB_L2_TO_L1;
        destinationChain: string;
        arbSys: string;
        bridge?: string | undefined;
        childHook?: any;
    }>, z.ZodObject<{
        type: z.ZodLiteral<import("../hook/types.js").HookType.MAILBOX_DEFAULT>;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.MAILBOX_DEFAULT;
    }, {
        type: import("../hook/types.js").HookType.MAILBOX_DEFAULT;
    }>, z.ZodObject<{
        type: z.ZodLiteral<import("../hook/types.js").HookType.CCIP>;
        destinationChain: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.CCIP;
        destinationChain: string;
    }, {
        type: import("../hook/types.js").HookType.CCIP;
        destinationChain: string;
    }>]>>;
    interchainSecurityModule: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
        type: z.ZodLiteral<import("../ism/types.js").IsmType.TEST_ISM>;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.TEST_ISM;
    }, {
        type: import("../ism/types.js").IsmType.TEST_ISM;
    }>, z.ZodObject<{
        type: z.ZodLiteral<import("../ism/types.js").IsmType.OP_STACK>;
        origin: z.ZodString;
        nativeBridge: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.OP_STACK;
        origin: string;
        nativeBridge: string;
    }, {
        type: import("../ism/types.js").IsmType.OP_STACK;
        origin: string;
        nativeBridge: string;
    }>, z.ZodIntersection<z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        paused: z.ZodBoolean;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodObject<{
        type: z.ZodLiteral<import("../ism/types.js").IsmType.PAUSABLE>;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.PAUSABLE;
    }, {
        type: import("../ism/types.js").IsmType.PAUSABLE;
    }>>, z.ZodObject<{
        type: z.ZodLiteral<import("../ism/types.js").IsmType.TRUSTED_RELAYER>;
        relayer: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.TRUSTED_RELAYER;
        relayer: string;
    }, {
        type: import("../ism/types.js").IsmType.TRUSTED_RELAYER;
        relayer: string;
    }>, z.ZodObject<{
        type: z.ZodLiteral<import("../ism/types.js").IsmType.CCIP>;
        originChain: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.CCIP;
        originChain: string;
    }, {
        type: import("../ism/types.js").IsmType.CCIP;
        originChain: string;
    }>, z.ZodIntersection<z.ZodObject<{
        validators: z.ZodArray<z.ZodString, "many">;
        threshold: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        validators: string[];
        threshold: number;
    }, {
        validators: string[];
        threshold: number;
    }>, z.ZodObject<{
        type: z.ZodUnion<[z.ZodLiteral<import("../ism/types.js").IsmType.MERKLE_ROOT_MULTISIG>, z.ZodLiteral<import("../ism/types.js").IsmType.MESSAGE_ID_MULTISIG>, z.ZodLiteral<import("../ism/types.js").IsmType.STORAGE_MERKLE_ROOT_MULTISIG>, z.ZodLiteral<import("../ism/types.js").IsmType.STORAGE_MESSAGE_ID_MULTISIG>]>;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.MESSAGE_ID_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MESSAGE_ID_MULTISIG;
    }, {
        type: import("../ism/types.js").IsmType.MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.MESSAGE_ID_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MESSAGE_ID_MULTISIG;
    }>>, z.ZodIntersection<z.ZodObject<{
        validators: z.ZodArray<z.ZodObject<{
            signingAddress: z.ZodString;
            weight: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            signingAddress: string;
            weight: number;
        }, {
            signingAddress: string;
            weight: number;
        }>, "many">;
        thresholdWeight: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    }, {
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    }>, z.ZodObject<{
        type: z.ZodUnion<[z.ZodLiteral<import("../ism/types.js").IsmType.WEIGHTED_MERKLE_ROOT_MULTISIG>, z.ZodLiteral<import("../ism/types.js").IsmType.WEIGHTED_MESSAGE_ID_MULTISIG>]>;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.WEIGHTED_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.WEIGHTED_MESSAGE_ID_MULTISIG;
    }, {
        type: import("../ism/types.js").IsmType.WEIGHTED_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.WEIGHTED_MESSAGE_ID_MULTISIG;
    }>>, z.ZodType<import("../ism/types.js").RoutingIsmConfig, z.ZodTypeDef, import("../ism/types.js").RoutingIsmConfig>, z.ZodType<import("../ism/types.js").AggregationIsmConfig, z.ZodTypeDef, import("../ism/types.js").AggregationIsmConfig>, z.ZodObject<{
        type: z.ZodLiteral<import("../ism/types.js").IsmType.ARB_L2_TO_L1>;
        bridge: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.ARB_L2_TO_L1;
        bridge: string;
    }, {
        type: import("../ism/types.js").IsmType.ARB_L2_TO_L1;
        bridge: string;
    }>]>>;
}, "strip", z.ZodTypeAny, {
    owner: string;
    mailbox: string;
    ownerOverrides?: Record<string, string> | undefined;
    hook?: string | {
        type: import("../hook/types.js").HookType.MERKLE_TREE;
    } | {
        type: import("../hook/types.js").HookType.INTERCHAIN_GAS_PAYMASTER;
        owner: string;
        beneficiary: string;
        oracleKey: string;
        overhead: Record<string, number>;
        oracleConfig: Record<string, {
            gasPrice: string;
            tokenExchangeRate: string;
            tokenDecimals?: number | undefined;
        }>;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.PROTOCOL_FEE;
        owner: string;
        protocolFee: string;
        beneficiary: string;
        maxProtocolFee: string;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.PAUSABLE;
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.OP_STACK;
        owner: string;
        nativeBridge: string;
        destinationChain: string;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.ARB_L2_TO_L1;
        destinationChain: string;
        arbSys: string;
        bridge?: string | undefined;
        childHook?: any;
    } | {
        type: import("../hook/types.js").HookType.MAILBOX_DEFAULT;
    } | {
        type: import("../hook/types.js").HookType.CCIP;
        destinationChain: string;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | undefined;
    interchainSecurityModule?: string | ({
        validators: string[];
        threshold: number;
    } & {
        type: import("../ism/types.js").IsmType.MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.MESSAGE_ID_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MESSAGE_ID_MULTISIG;
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: import("../ism/types.js").IsmType.WEIGHTED_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.WEIGHTED_MESSAGE_ID_MULTISIG;
    }) | {
        type: import("../ism/types.js").IsmType.TEST_ISM;
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: import("../ism/types.js").IsmType.PAUSABLE;
    }) | {
        type: import("../ism/types.js").IsmType.OP_STACK;
        origin: string;
        nativeBridge: string;
    } | {
        type: import("../ism/types.js").IsmType.TRUSTED_RELAYER;
        relayer: string;
    } | {
        type: import("../ism/types.js").IsmType.CCIP;
        originChain: string;
    } | {
        type: import("../ism/types.js").IsmType.ARB_L2_TO_L1;
        bridge: string;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | undefined;
}, {
    owner: string;
    mailbox: string;
    ownerOverrides?: Record<string, string> | undefined;
    hook?: string | {
        type: import("../hook/types.js").HookType.MERKLE_TREE;
    } | {
        type: import("../hook/types.js").HookType.INTERCHAIN_GAS_PAYMASTER;
        owner: string;
        beneficiary: string;
        oracleKey: string;
        overhead: Record<string, number>;
        oracleConfig: Record<string, {
            gasPrice: string;
            tokenExchangeRate: string;
            tokenDecimals?: number | undefined;
        }>;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.PROTOCOL_FEE;
        owner: string;
        protocolFee: string;
        beneficiary: string;
        maxProtocolFee: string;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.PAUSABLE;
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.OP_STACK;
        owner: string;
        nativeBridge: string;
        destinationChain: string;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.ARB_L2_TO_L1;
        destinationChain: string;
        arbSys: string;
        bridge?: string | undefined;
        childHook?: any;
    } | {
        type: import("../hook/types.js").HookType.MAILBOX_DEFAULT;
    } | {
        type: import("../hook/types.js").HookType.CCIP;
        destinationChain: string;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | undefined;
    interchainSecurityModule?: string | ({
        validators: string[];
        threshold: number;
    } & {
        type: import("../ism/types.js").IsmType.MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.MESSAGE_ID_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MESSAGE_ID_MULTISIG;
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: import("../ism/types.js").IsmType.WEIGHTED_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.WEIGHTED_MESSAGE_ID_MULTISIG;
    }) | {
        type: import("../ism/types.js").IsmType.TEST_ISM;
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: import("../ism/types.js").IsmType.PAUSABLE;
    }) | {
        type: import("../ism/types.js").IsmType.OP_STACK;
        origin: string;
        nativeBridge: string;
    } | {
        type: import("../ism/types.js").IsmType.TRUSTED_RELAYER;
        relayer: string;
    } | {
        type: import("../ism/types.js").IsmType.CCIP;
        originChain: string;
    } | {
        type: import("../ism/types.js").IsmType.ARB_L2_TO_L1;
        bridge: string;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | undefined;
}>;
export declare const ForeignDeploymentConfigSchema: z.ZodObject<{
    foreignDeployment: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    foreignDeployment?: string | undefined;
}, {
    foreignDeployment?: string | undefined;
}>;
export declare const RemoteRouterDomain: z.ZodString;
export declare const RemoteRouterRouter: z.ZodObject<{
    address: z.ZodString;
}, "strip", z.ZodTypeAny, {
    address: string;
}, {
    address: string;
}>;
export declare const RemoteRoutersSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
    address: z.ZodString;
}, "strip", z.ZodTypeAny, {
    address: string;
}, {
    address: string;
}>>;
export declare const RouterConfigSchema: z.ZodObject<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    mailbox: z.ZodString;
    hook: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        type: z.ZodLiteral<import("../hook/types.js").HookType.PROTOCOL_FEE>;
        beneficiary: z.ZodString;
        maxProtocolFee: z.ZodString;
        protocolFee: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.PROTOCOL_FEE;
        owner: string;
        protocolFee: string;
        beneficiary: string;
        maxProtocolFee: string;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: import("../hook/types.js").HookType.PROTOCOL_FEE;
        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<import("../hook/types.js").HookType.PAUSABLE>;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.PAUSABLE;
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: import("../hook/types.js").HookType.PAUSABLE;
        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<import("../hook/types.js").HookType.OP_STACK>;
        nativeBridge: z.ZodString;
        destinationChain: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.OP_STACK;
        owner: string;
        nativeBridge: string;
        destinationChain: string;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: import("../hook/types.js").HookType.OP_STACK;
        owner: string;
        nativeBridge: string;
        destinationChain: string;
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodObject<{
        type: z.ZodLiteral<import("../hook/types.js").HookType.MERKLE_TREE>;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.MERKLE_TREE;
    }, {
        type: import("../hook/types.js").HookType.MERKLE_TREE;
    }>, z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        type: z.ZodLiteral<import("../hook/types.js").HookType.INTERCHAIN_GAS_PAYMASTER>;
        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>;
        }, "strip", z.ZodTypeAny, {
            gasPrice: string;
            tokenExchangeRate: string;
            tokenDecimals?: number | undefined;
        }, {
            gasPrice: string;
            tokenExchangeRate: string;
            tokenDecimals?: number | undefined;
        }>>;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.INTERCHAIN_GAS_PAYMASTER;
        owner: string;
        beneficiary: string;
        oracleKey: string;
        overhead: Record<string, number>;
        oracleConfig: Record<string, {
            gasPrice: string;
            tokenExchangeRate: string;
            tokenDecimals?: number | undefined;
        }>;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: import("../hook/types.js").HookType.INTERCHAIN_GAS_PAYMASTER;
        owner: string;
        beneficiary: string;
        oracleKey: string;
        overhead: Record<string, number>;
        oracleConfig: Record<string, {
            gasPrice: string;
            tokenExchangeRate: string;
            tokenDecimals?: number | undefined;
        }>;
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodType<import("../hook/types.js").DomainRoutingHookConfig, z.ZodTypeDef, import("../hook/types.js").DomainRoutingHookConfig>, z.ZodType<import("../hook/types.js").FallbackRoutingHookConfig, z.ZodTypeDef, import("../hook/types.js").FallbackRoutingHookConfig>, z.ZodType<import("../hook/types.js").AmountRoutingHookConfig, z.ZodTypeDef, import("../hook/types.js").AmountRoutingHookConfig>, z.ZodType<import("../hook/types.js").AggregationHookConfig, z.ZodTypeDef, import("../hook/types.js").AggregationHookConfig>, z.ZodObject<{
        type: z.ZodLiteral<import("../hook/types.js").HookType.ARB_L2_TO_L1>;
        arbSys: z.ZodString;
        bridge: z.ZodOptional<z.ZodString>;
        destinationChain: z.ZodString;
        childHook: z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.ARB_L2_TO_L1;
        destinationChain: string;
        arbSys: string;
        bridge?: string | undefined;
        childHook?: any;
    }, {
        type: import("../hook/types.js").HookType.ARB_L2_TO_L1;
        destinationChain: string;
        arbSys: string;
        bridge?: string | undefined;
        childHook?: any;
    }>, z.ZodObject<{
        type: z.ZodLiteral<import("../hook/types.js").HookType.MAILBOX_DEFAULT>;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.MAILBOX_DEFAULT;
    }, {
        type: import("../hook/types.js").HookType.MAILBOX_DEFAULT;
    }>, z.ZodObject<{
        type: z.ZodLiteral<import("../hook/types.js").HookType.CCIP>;
        destinationChain: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.CCIP;
        destinationChain: string;
    }, {
        type: import("../hook/types.js").HookType.CCIP;
        destinationChain: string;
    }>]>>;
    interchainSecurityModule: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
        type: z.ZodLiteral<import("../ism/types.js").IsmType.TEST_ISM>;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.TEST_ISM;
    }, {
        type: import("../ism/types.js").IsmType.TEST_ISM;
    }>, z.ZodObject<{
        type: z.ZodLiteral<import("../ism/types.js").IsmType.OP_STACK>;
        origin: z.ZodString;
        nativeBridge: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.OP_STACK;
        origin: string;
        nativeBridge: string;
    }, {
        type: import("../ism/types.js").IsmType.OP_STACK;
        origin: string;
        nativeBridge: string;
    }>, z.ZodIntersection<z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        paused: z.ZodBoolean;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodObject<{
        type: z.ZodLiteral<import("../ism/types.js").IsmType.PAUSABLE>;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.PAUSABLE;
    }, {
        type: import("../ism/types.js").IsmType.PAUSABLE;
    }>>, z.ZodObject<{
        type: z.ZodLiteral<import("../ism/types.js").IsmType.TRUSTED_RELAYER>;
        relayer: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.TRUSTED_RELAYER;
        relayer: string;
    }, {
        type: import("../ism/types.js").IsmType.TRUSTED_RELAYER;
        relayer: string;
    }>, z.ZodObject<{
        type: z.ZodLiteral<import("../ism/types.js").IsmType.CCIP>;
        originChain: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.CCIP;
        originChain: string;
    }, {
        type: import("../ism/types.js").IsmType.CCIP;
        originChain: string;
    }>, z.ZodIntersection<z.ZodObject<{
        validators: z.ZodArray<z.ZodString, "many">;
        threshold: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        validators: string[];
        threshold: number;
    }, {
        validators: string[];
        threshold: number;
    }>, z.ZodObject<{
        type: z.ZodUnion<[z.ZodLiteral<import("../ism/types.js").IsmType.MERKLE_ROOT_MULTISIG>, z.ZodLiteral<import("../ism/types.js").IsmType.MESSAGE_ID_MULTISIG>, z.ZodLiteral<import("../ism/types.js").IsmType.STORAGE_MERKLE_ROOT_MULTISIG>, z.ZodLiteral<import("../ism/types.js").IsmType.STORAGE_MESSAGE_ID_MULTISIG>]>;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.MESSAGE_ID_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MESSAGE_ID_MULTISIG;
    }, {
        type: import("../ism/types.js").IsmType.MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.MESSAGE_ID_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MESSAGE_ID_MULTISIG;
    }>>, z.ZodIntersection<z.ZodObject<{
        validators: z.ZodArray<z.ZodObject<{
            signingAddress: z.ZodString;
            weight: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            signingAddress: string;
            weight: number;
        }, {
            signingAddress: string;
            weight: number;
        }>, "many">;
        thresholdWeight: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    }, {
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    }>, z.ZodObject<{
        type: z.ZodUnion<[z.ZodLiteral<import("../ism/types.js").IsmType.WEIGHTED_MERKLE_ROOT_MULTISIG>, z.ZodLiteral<import("../ism/types.js").IsmType.WEIGHTED_MESSAGE_ID_MULTISIG>]>;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.WEIGHTED_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.WEIGHTED_MESSAGE_ID_MULTISIG;
    }, {
        type: import("../ism/types.js").IsmType.WEIGHTED_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.WEIGHTED_MESSAGE_ID_MULTISIG;
    }>>, z.ZodType<import("../ism/types.js").RoutingIsmConfig, z.ZodTypeDef, import("../ism/types.js").RoutingIsmConfig>, z.ZodType<import("../ism/types.js").AggregationIsmConfig, z.ZodTypeDef, import("../ism/types.js").AggregationIsmConfig>, z.ZodObject<{
        type: z.ZodLiteral<import("../ism/types.js").IsmType.ARB_L2_TO_L1>;
        bridge: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.ARB_L2_TO_L1;
        bridge: string;
    }, {
        type: import("../ism/types.js").IsmType.ARB_L2_TO_L1;
        bridge: string;
    }>]>>;
    foreignDeployment: z.ZodOptional<z.ZodString>;
    remoteRouters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
        address: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        address: string;
    }, {
        address: string;
    }>>>;
    proxyAdmin: z.ZodOptional<z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        address: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        ownerOverrides?: Record<string, string> | undefined;
        address?: string | undefined;
    }, {
        owner: string;
        ownerOverrides?: Record<string, string> | undefined;
        address?: string | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    owner: string;
    mailbox: string;
    ownerOverrides?: Record<string, string> | undefined;
    hook?: string | {
        type: import("../hook/types.js").HookType.MERKLE_TREE;
    } | {
        type: import("../hook/types.js").HookType.INTERCHAIN_GAS_PAYMASTER;
        owner: string;
        beneficiary: string;
        oracleKey: string;
        overhead: Record<string, number>;
        oracleConfig: Record<string, {
            gasPrice: string;
            tokenExchangeRate: string;
            tokenDecimals?: number | undefined;
        }>;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.PROTOCOL_FEE;
        owner: string;
        protocolFee: string;
        beneficiary: string;
        maxProtocolFee: string;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.PAUSABLE;
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.OP_STACK;
        owner: string;
        nativeBridge: string;
        destinationChain: string;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.ARB_L2_TO_L1;
        destinationChain: string;
        arbSys: string;
        bridge?: string | undefined;
        childHook?: any;
    } | {
        type: import("../hook/types.js").HookType.MAILBOX_DEFAULT;
    } | {
        type: import("../hook/types.js").HookType.CCIP;
        destinationChain: string;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | undefined;
    interchainSecurityModule?: string | ({
        validators: string[];
        threshold: number;
    } & {
        type: import("../ism/types.js").IsmType.MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.MESSAGE_ID_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MESSAGE_ID_MULTISIG;
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: import("../ism/types.js").IsmType.WEIGHTED_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.WEIGHTED_MESSAGE_ID_MULTISIG;
    }) | {
        type: import("../ism/types.js").IsmType.TEST_ISM;
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: import("../ism/types.js").IsmType.PAUSABLE;
    }) | {
        type: import("../ism/types.js").IsmType.OP_STACK;
        origin: string;
        nativeBridge: string;
    } | {
        type: import("../ism/types.js").IsmType.TRUSTED_RELAYER;
        relayer: string;
    } | {
        type: import("../ism/types.js").IsmType.CCIP;
        originChain: string;
    } | {
        type: import("../ism/types.js").IsmType.ARB_L2_TO_L1;
        bridge: string;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string, {
        address: string;
    }> | undefined;
    proxyAdmin?: {
        owner: string;
        ownerOverrides?: Record<string, string> | undefined;
        address?: string | undefined;
    } | undefined;
}, {
    owner: string;
    mailbox: string;
    ownerOverrides?: Record<string, string> | undefined;
    hook?: string | {
        type: import("../hook/types.js").HookType.MERKLE_TREE;
    } | {
        type: import("../hook/types.js").HookType.INTERCHAIN_GAS_PAYMASTER;
        owner: string;
        beneficiary: string;
        oracleKey: string;
        overhead: Record<string, number>;
        oracleConfig: Record<string, {
            gasPrice: string;
            tokenExchangeRate: string;
            tokenDecimals?: number | undefined;
        }>;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.PROTOCOL_FEE;
        owner: string;
        protocolFee: string;
        beneficiary: string;
        maxProtocolFee: string;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.PAUSABLE;
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.OP_STACK;
        owner: string;
        nativeBridge: string;
        destinationChain: string;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.ARB_L2_TO_L1;
        destinationChain: string;
        arbSys: string;
        bridge?: string | undefined;
        childHook?: any;
    } | {
        type: import("../hook/types.js").HookType.MAILBOX_DEFAULT;
    } | {
        type: import("../hook/types.js").HookType.CCIP;
        destinationChain: string;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | undefined;
    interchainSecurityModule?: string | ({
        validators: string[];
        threshold: number;
    } & {
        type: import("../ism/types.js").IsmType.MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.MESSAGE_ID_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MESSAGE_ID_MULTISIG;
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: import("../ism/types.js").IsmType.WEIGHTED_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.WEIGHTED_MESSAGE_ID_MULTISIG;
    }) | {
        type: import("../ism/types.js").IsmType.TEST_ISM;
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: import("../ism/types.js").IsmType.PAUSABLE;
    }) | {
        type: import("../ism/types.js").IsmType.OP_STACK;
        origin: string;
        nativeBridge: string;
    } | {
        type: import("../ism/types.js").IsmType.TRUSTED_RELAYER;
        relayer: string;
    } | {
        type: import("../ism/types.js").IsmType.CCIP;
        originChain: string;
    } | {
        type: import("../ism/types.js").IsmType.ARB_L2_TO_L1;
        bridge: string;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string, {
        address: string;
    }> | undefined;
    proxyAdmin?: {
        owner: string;
        ownerOverrides?: Record<string, string> | undefined;
        address?: string | undefined;
    } | undefined;
}>;
export declare const DestinationGasSchema: z.ZodRecord<z.ZodString, z.ZodString>;
export declare const GasRouterConfigSchema: z.ZodObject<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    mailbox: z.ZodString;
    proxyAdmin: z.ZodOptional<z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        address: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        ownerOverrides?: Record<string, string> | undefined;
        address?: string | undefined;
    }, {
        owner: string;
        ownerOverrides?: Record<string, string> | undefined;
        address?: string | undefined;
    }>>;
    hook: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        type: z.ZodLiteral<import("../hook/types.js").HookType.PROTOCOL_FEE>;
        beneficiary: z.ZodString;
        maxProtocolFee: z.ZodString;
        protocolFee: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.PROTOCOL_FEE;
        owner: string;
        protocolFee: string;
        beneficiary: string;
        maxProtocolFee: string;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: import("../hook/types.js").HookType.PROTOCOL_FEE;
        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<import("../hook/types.js").HookType.PAUSABLE>;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.PAUSABLE;
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: import("../hook/types.js").HookType.PAUSABLE;
        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<import("../hook/types.js").HookType.OP_STACK>;
        nativeBridge: z.ZodString;
        destinationChain: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.OP_STACK;
        owner: string;
        nativeBridge: string;
        destinationChain: string;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: import("../hook/types.js").HookType.OP_STACK;
        owner: string;
        nativeBridge: string;
        destinationChain: string;
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodObject<{
        type: z.ZodLiteral<import("../hook/types.js").HookType.MERKLE_TREE>;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.MERKLE_TREE;
    }, {
        type: import("../hook/types.js").HookType.MERKLE_TREE;
    }>, z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        type: z.ZodLiteral<import("../hook/types.js").HookType.INTERCHAIN_GAS_PAYMASTER>;
        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>;
        }, "strip", z.ZodTypeAny, {
            gasPrice: string;
            tokenExchangeRate: string;
            tokenDecimals?: number | undefined;
        }, {
            gasPrice: string;
            tokenExchangeRate: string;
            tokenDecimals?: number | undefined;
        }>>;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.INTERCHAIN_GAS_PAYMASTER;
        owner: string;
        beneficiary: string;
        oracleKey: string;
        overhead: Record<string, number>;
        oracleConfig: Record<string, {
            gasPrice: string;
            tokenExchangeRate: string;
            tokenDecimals?: number | undefined;
        }>;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: import("../hook/types.js").HookType.INTERCHAIN_GAS_PAYMASTER;
        owner: string;
        beneficiary: string;
        oracleKey: string;
        overhead: Record<string, number>;
        oracleConfig: Record<string, {
            gasPrice: string;
            tokenExchangeRate: string;
            tokenDecimals?: number | undefined;
        }>;
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodType<import("../hook/types.js").DomainRoutingHookConfig, z.ZodTypeDef, import("../hook/types.js").DomainRoutingHookConfig>, z.ZodType<import("../hook/types.js").FallbackRoutingHookConfig, z.ZodTypeDef, import("../hook/types.js").FallbackRoutingHookConfig>, z.ZodType<import("../hook/types.js").AmountRoutingHookConfig, z.ZodTypeDef, import("../hook/types.js").AmountRoutingHookConfig>, z.ZodType<import("../hook/types.js").AggregationHookConfig, z.ZodTypeDef, import("../hook/types.js").AggregationHookConfig>, z.ZodObject<{
        type: z.ZodLiteral<import("../hook/types.js").HookType.ARB_L2_TO_L1>;
        arbSys: z.ZodString;
        bridge: z.ZodOptional<z.ZodString>;
        destinationChain: z.ZodString;
        childHook: z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.ARB_L2_TO_L1;
        destinationChain: string;
        arbSys: string;
        bridge?: string | undefined;
        childHook?: any;
    }, {
        type: import("../hook/types.js").HookType.ARB_L2_TO_L1;
        destinationChain: string;
        arbSys: string;
        bridge?: string | undefined;
        childHook?: any;
    }>, z.ZodObject<{
        type: z.ZodLiteral<import("../hook/types.js").HookType.MAILBOX_DEFAULT>;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.MAILBOX_DEFAULT;
    }, {
        type: import("../hook/types.js").HookType.MAILBOX_DEFAULT;
    }>, z.ZodObject<{
        type: z.ZodLiteral<import("../hook/types.js").HookType.CCIP>;
        destinationChain: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../hook/types.js").HookType.CCIP;
        destinationChain: string;
    }, {
        type: import("../hook/types.js").HookType.CCIP;
        destinationChain: string;
    }>]>>;
    interchainSecurityModule: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
        type: z.ZodLiteral<import("../ism/types.js").IsmType.TEST_ISM>;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.TEST_ISM;
    }, {
        type: import("../ism/types.js").IsmType.TEST_ISM;
    }>, z.ZodObject<{
        type: z.ZodLiteral<import("../ism/types.js").IsmType.OP_STACK>;
        origin: z.ZodString;
        nativeBridge: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.OP_STACK;
        origin: string;
        nativeBridge: string;
    }, {
        type: import("../ism/types.js").IsmType.OP_STACK;
        origin: string;
        nativeBridge: string;
    }>, z.ZodIntersection<z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        paused: z.ZodBoolean;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodObject<{
        type: z.ZodLiteral<import("../ism/types.js").IsmType.PAUSABLE>;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.PAUSABLE;
    }, {
        type: import("../ism/types.js").IsmType.PAUSABLE;
    }>>, z.ZodObject<{
        type: z.ZodLiteral<import("../ism/types.js").IsmType.TRUSTED_RELAYER>;
        relayer: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.TRUSTED_RELAYER;
        relayer: string;
    }, {
        type: import("../ism/types.js").IsmType.TRUSTED_RELAYER;
        relayer: string;
    }>, z.ZodObject<{
        type: z.ZodLiteral<import("../ism/types.js").IsmType.CCIP>;
        originChain: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.CCIP;
        originChain: string;
    }, {
        type: import("../ism/types.js").IsmType.CCIP;
        originChain: string;
    }>, z.ZodIntersection<z.ZodObject<{
        validators: z.ZodArray<z.ZodString, "many">;
        threshold: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        validators: string[];
        threshold: number;
    }, {
        validators: string[];
        threshold: number;
    }>, z.ZodObject<{
        type: z.ZodUnion<[z.ZodLiteral<import("../ism/types.js").IsmType.MERKLE_ROOT_MULTISIG>, z.ZodLiteral<import("../ism/types.js").IsmType.MESSAGE_ID_MULTISIG>, z.ZodLiteral<import("../ism/types.js").IsmType.STORAGE_MERKLE_ROOT_MULTISIG>, z.ZodLiteral<import("../ism/types.js").IsmType.STORAGE_MESSAGE_ID_MULTISIG>]>;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.MESSAGE_ID_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MESSAGE_ID_MULTISIG;
    }, {
        type: import("../ism/types.js").IsmType.MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.MESSAGE_ID_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MESSAGE_ID_MULTISIG;
    }>>, z.ZodIntersection<z.ZodObject<{
        validators: z.ZodArray<z.ZodObject<{
            signingAddress: z.ZodString;
            weight: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            signingAddress: string;
            weight: number;
        }, {
            signingAddress: string;
            weight: number;
        }>, "many">;
        thresholdWeight: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    }, {
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    }>, z.ZodObject<{
        type: z.ZodUnion<[z.ZodLiteral<import("../ism/types.js").IsmType.WEIGHTED_MERKLE_ROOT_MULTISIG>, z.ZodLiteral<import("../ism/types.js").IsmType.WEIGHTED_MESSAGE_ID_MULTISIG>]>;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.WEIGHTED_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.WEIGHTED_MESSAGE_ID_MULTISIG;
    }, {
        type: import("../ism/types.js").IsmType.WEIGHTED_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.WEIGHTED_MESSAGE_ID_MULTISIG;
    }>>, z.ZodType<import("../ism/types.js").RoutingIsmConfig, z.ZodTypeDef, import("../ism/types.js").RoutingIsmConfig>, z.ZodType<import("../ism/types.js").AggregationIsmConfig, z.ZodTypeDef, import("../ism/types.js").AggregationIsmConfig>, z.ZodObject<{
        type: z.ZodLiteral<import("../ism/types.js").IsmType.ARB_L2_TO_L1>;
        bridge: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: import("../ism/types.js").IsmType.ARB_L2_TO_L1;
        bridge: string;
    }, {
        type: import("../ism/types.js").IsmType.ARB_L2_TO_L1;
        bridge: string;
    }>]>>;
    foreignDeployment: z.ZodOptional<z.ZodString>;
    remoteRouters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
        address: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        address: string;
    }, {
        address: string;
    }>>>;
    gas: z.ZodOptional<z.ZodNumber>;
    destinationGas: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, "strip", z.ZodTypeAny, {
    owner: string;
    mailbox: string;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        ownerOverrides?: Record<string, string> | undefined;
        address?: string | undefined;
    } | undefined;
    hook?: string | {
        type: import("../hook/types.js").HookType.MERKLE_TREE;
    } | {
        type: import("../hook/types.js").HookType.INTERCHAIN_GAS_PAYMASTER;
        owner: string;
        beneficiary: string;
        oracleKey: string;
        overhead: Record<string, number>;
        oracleConfig: Record<string, {
            gasPrice: string;
            tokenExchangeRate: string;
            tokenDecimals?: number | undefined;
        }>;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.PROTOCOL_FEE;
        owner: string;
        protocolFee: string;
        beneficiary: string;
        maxProtocolFee: string;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.PAUSABLE;
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.OP_STACK;
        owner: string;
        nativeBridge: string;
        destinationChain: string;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.ARB_L2_TO_L1;
        destinationChain: string;
        arbSys: string;
        bridge?: string | undefined;
        childHook?: any;
    } | {
        type: import("../hook/types.js").HookType.MAILBOX_DEFAULT;
    } | {
        type: import("../hook/types.js").HookType.CCIP;
        destinationChain: string;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | undefined;
    interchainSecurityModule?: string | ({
        validators: string[];
        threshold: number;
    } & {
        type: import("../ism/types.js").IsmType.MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.MESSAGE_ID_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MESSAGE_ID_MULTISIG;
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: import("../ism/types.js").IsmType.WEIGHTED_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.WEIGHTED_MESSAGE_ID_MULTISIG;
    }) | {
        type: import("../ism/types.js").IsmType.TEST_ISM;
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: import("../ism/types.js").IsmType.PAUSABLE;
    }) | {
        type: import("../ism/types.js").IsmType.OP_STACK;
        origin: string;
        nativeBridge: string;
    } | {
        type: import("../ism/types.js").IsmType.TRUSTED_RELAYER;
        relayer: string;
    } | {
        type: import("../ism/types.js").IsmType.CCIP;
        originChain: string;
    } | {
        type: import("../ism/types.js").IsmType.ARB_L2_TO_L1;
        bridge: string;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string, {
        address: string;
    }> | undefined;
    gas?: number | undefined;
    destinationGas?: Record<string, string> | undefined;
}, {
    owner: string;
    mailbox: string;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        ownerOverrides?: Record<string, string> | undefined;
        address?: string | undefined;
    } | undefined;
    hook?: string | {
        type: import("../hook/types.js").HookType.MERKLE_TREE;
    } | {
        type: import("../hook/types.js").HookType.INTERCHAIN_GAS_PAYMASTER;
        owner: string;
        beneficiary: string;
        oracleKey: string;
        overhead: Record<string, number>;
        oracleConfig: Record<string, {
            gasPrice: string;
            tokenExchangeRate: string;
            tokenDecimals?: number | undefined;
        }>;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.PROTOCOL_FEE;
        owner: string;
        protocolFee: string;
        beneficiary: string;
        maxProtocolFee: string;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.PAUSABLE;
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.OP_STACK;
        owner: string;
        nativeBridge: string;
        destinationChain: string;
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: import("../hook/types.js").HookType.ARB_L2_TO_L1;
        destinationChain: string;
        arbSys: string;
        bridge?: string | undefined;
        childHook?: any;
    } | {
        type: import("../hook/types.js").HookType.MAILBOX_DEFAULT;
    } | {
        type: import("../hook/types.js").HookType.CCIP;
        destinationChain: string;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | undefined;
    interchainSecurityModule?: string | ({
        validators: string[];
        threshold: number;
    } & {
        type: import("../ism/types.js").IsmType.MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.MESSAGE_ID_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.STORAGE_MESSAGE_ID_MULTISIG;
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: import("../ism/types.js").IsmType.WEIGHTED_MERKLE_ROOT_MULTISIG | import("../ism/types.js").IsmType.WEIGHTED_MESSAGE_ID_MULTISIG;
    }) | {
        type: import("../ism/types.js").IsmType.TEST_ISM;
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: import("../ism/types.js").IsmType.PAUSABLE;
    }) | {
        type: import("../ism/types.js").IsmType.OP_STACK;
        origin: string;
        nativeBridge: string;
    } | {
        type: import("../ism/types.js").IsmType.TRUSTED_RELAYER;
        relayer: string;
    } | {
        type: import("../ism/types.js").IsmType.CCIP;
        originChain: string;
    } | {
        type: import("../ism/types.js").IsmType.ARB_L2_TO_L1;
        bridge: string;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string, {
        address: string;
    }> | undefined;
    gas?: number | undefined;
    destinationGas?: Record<string, string> | undefined;
}>;
//# sourceMappingURL=types.d.ts.map