import { z } from 'zod';
import { TokenFeeType } from '../fee/types.js';
import { DerivedRouterConfig, GasRouterConfigSchema } from '../router/types.js';
import { ChainMap } from '../types.js';
export declare const WarpRouteDeployConfigSchemaErrors: {
    ONLY_SYNTHETIC_REBASE: string;
    NO_SYNTHETIC_ONLY: string;
};
export declare const contractVersionMatchesDependency: (version: string) => boolean;
export declare const VERSION_ERROR_MESSAGE = "Contract version must match the @hyperlane-xyz/core dependency version (11.3.1)";
export declare const TokenMetadataSchema: z.ZodObject<{
    name: z.ZodString;
    symbol: z.ZodString;
    decimals: z.ZodOptional<z.ZodNumber>;
    scale: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>;
    isNft: z.ZodOptional<z.ZodBoolean>;
    contractVersion: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    symbol: string;
    name: string;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
}, {
    symbol: string;
    name: string;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
}>;
export type TokenMetadata = z.infer<typeof TokenMetadataSchema>;
export declare const isTokenMetadata: (config: unknown) => config is {
    symbol: string;
    name: string;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
};
export declare const isEverclearTokenBridgeConfig: (config: unknown) => config is {
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
};
export declare const BaseMovableTokenConfigSchema: z.ZodObject<{
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
}, "strip", z.ZodTypeAny, {
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
}, {
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
}>;
export declare const PredicateWrapperConfigSchema: z.ZodObject<{
    predicateRegistry: z.ZodString;
    policyId: z.ZodString;
    owner: z.ZodString;
}, "strip", z.ZodTypeAny, {
    owner: string;
    predicateRegistry: string;
    policyId: string;
}, {
    owner: string;
    predicateRegistry: string;
    policyId: string;
}>;
export type PredicateWrapperConfig = z.infer<typeof PredicateWrapperConfigSchema>;
export declare const isPredicateWrapperConfig: (config: unknown) => config is {
    owner: string;
    predicateRegistry: string;
    policyId: string;
};
export declare const NativeTokenConfigSchema: z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "strip", z.ZodTypeAny, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>;
export type NativeTokenConfig = z.infer<typeof NativeTokenConfigSchema>;
export declare const isNativeTokenConfig: (config: unknown) => config is {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
};
export declare const OpL2TokenConfigSchema: z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "type"> & {
    type: z.ZodLiteral<"nativeOpL2">;
    l2Bridge: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>;
export declare const OpL1TokenConfigSchema: z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "type"> & {
    type: z.ZodLiteral<"nativeOpL1">;
    portal: z.ZodString;
    version: z.ZodNumber;
} & Omit<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
} & {
    type: z.ZodLiteral<"offchainLookupIsm">;
    urls: z.ZodArray<z.ZodString, "many">;
}, "type" | "owner">, "strip", z.ZodTypeAny, {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>;
export type OpL1TokenConfig = z.infer<typeof OpL1TokenConfigSchema>;
export declare const isOpL1TokenConfig: (config: unknown) => config is {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
};
export type OpL2TokenConfig = z.infer<typeof OpL2TokenConfigSchema>;
export declare const isOpL2TokenConfig: (config: unknown) => config is {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
};
export declare const CollateralTokenConfigSchema: z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["collateral", "collateralVault", "collateralVaultRebase", "collateralFiat", "collateralUri"]>;
    token: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>;
export type CollateralTokenConfig = z.infer<typeof CollateralTokenConfigSchema>;
export declare const isCollateralTokenConfig: (config: unknown) => config is {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
};
export declare enum XERC20Type {
    Velo = "velo",
    Standard = "standard"
}
declare const XERC20VSLimitConfigSchema: z.ZodObject<{
    type: z.ZodLiteral<XERC20Type.Velo>;
    bufferCap: z.ZodOptional<z.ZodString>;
    rateLimitPerSecond: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    type: XERC20Type.Velo;
    bufferCap?: string | undefined;
    rateLimitPerSecond?: string | undefined;
}, {
    type: XERC20Type.Velo;
    bufferCap?: string | undefined;
    rateLimitPerSecond?: string | undefined;
}>;
export type XERC20VSLimitConfig = z.infer<typeof XERC20VSLimitConfigSchema>;
declare const XERC20StandardLimitConfigSchema: z.ZodObject<{
    type: z.ZodLiteral<XERC20Type.Standard>;
    mint: z.ZodOptional<z.ZodString>;
    burn: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    type: XERC20Type.Standard;
    mint?: string | undefined;
    burn?: string | undefined;
}, {
    type: XERC20Type.Standard;
    mint?: string | undefined;
    burn?: string | undefined;
}>;
export type XERC20StandardLimitConfig = z.infer<typeof XERC20StandardLimitConfigSchema>;
declare const xERC20ExtraBridgesLimitConfigsSchema: z.ZodObject<{
    lockbox: z.ZodString;
    limits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
        type: z.ZodLiteral<XERC20Type.Velo>;
        bufferCap: z.ZodOptional<z.ZodString>;
        rateLimitPerSecond: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        type: XERC20Type.Velo;
        bufferCap?: string | undefined;
        rateLimitPerSecond?: string | undefined;
    }, {
        type: XERC20Type.Velo;
        bufferCap?: string | undefined;
        rateLimitPerSecond?: string | undefined;
    }>, z.ZodObject<{
        type: z.ZodLiteral<XERC20Type.Standard>;
        mint: z.ZodOptional<z.ZodString>;
        burn: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        type: XERC20Type.Standard;
        mint?: string | undefined;
        burn?: string | undefined;
    }, {
        type: XERC20Type.Standard;
        mint?: string | undefined;
        burn?: string | undefined;
    }>]>;
}, "strip", z.ZodTypeAny, {
    lockbox: string;
    limits: {
        type: XERC20Type.Velo;
        bufferCap?: string | undefined;
        rateLimitPerSecond?: string | undefined;
    } | {
        type: XERC20Type.Standard;
        mint?: string | undefined;
        burn?: string | undefined;
    };
}, {
    lockbox: string;
    limits: {
        type: XERC20Type.Velo;
        bufferCap?: string | undefined;
        rateLimitPerSecond?: string | undefined;
    } | {
        type: XERC20Type.Standard;
        mint?: string | undefined;
        burn?: string | undefined;
    };
}>;
declare const xERC20TokenMetadataSchema: z.ZodObject<{
    xERC20: z.ZodOptional<z.ZodObject<{
        extraBridges: z.ZodOptional<z.ZodArray<z.ZodObject<{
            lockbox: z.ZodString;
            limits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
                type: z.ZodLiteral<XERC20Type.Velo>;
                bufferCap: z.ZodOptional<z.ZodString>;
                rateLimitPerSecond: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            }, {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            }>, z.ZodObject<{
                type: z.ZodLiteral<XERC20Type.Standard>;
                mint: z.ZodOptional<z.ZodString>;
                burn: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            }, {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            }>]>;
        }, "strip", z.ZodTypeAny, {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }, {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }>, "many">>;
        warpRouteLimits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
            type: z.ZodLiteral<XERC20Type.Velo>;
            bufferCap: z.ZodOptional<z.ZodString>;
            rateLimitPerSecond: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        }, {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        }>, z.ZodObject<{
            type: z.ZodLiteral<XERC20Type.Standard>;
            mint: z.ZodOptional<z.ZodString>;
            burn: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        }, {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        }>]>;
    }, "strip", z.ZodTypeAny, {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    }, {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
}, {
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
}>;
export type XERC20TokenMetadata = z.infer<typeof xERC20TokenMetadataSchema>;
export type XERC20TokenExtraBridgesLimits = z.infer<typeof xERC20ExtraBridgesLimitConfigsSchema>;
export declare const XERC20TokenConfigSchema: z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["collateral", "collateralVault", "collateralVaultRebase", "collateralFiat", "collateralUri"]>;
    token: z.ZodString;
}, "type"> & {
    type: z.ZodEnum<["xERC20", "xERC20Lockbox"]>;
} & {
    xERC20: z.ZodOptional<z.ZodObject<{
        extraBridges: z.ZodOptional<z.ZodArray<z.ZodObject<{
            lockbox: z.ZodString;
            limits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
                type: z.ZodLiteral<XERC20Type.Velo>;
                bufferCap: z.ZodOptional<z.ZodString>;
                rateLimitPerSecond: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            }, {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            }>, z.ZodObject<{
                type: z.ZodLiteral<XERC20Type.Standard>;
                mint: z.ZodOptional<z.ZodString>;
                burn: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            }, {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            }>]>;
        }, "strip", z.ZodTypeAny, {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }, {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }>, "many">>;
        warpRouteLimits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
            type: z.ZodLiteral<XERC20Type.Velo>;
            bufferCap: z.ZodOptional<z.ZodString>;
            rateLimitPerSecond: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        }, {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        }>, z.ZodObject<{
            type: z.ZodLiteral<XERC20Type.Standard>;
            mint: z.ZodOptional<z.ZodString>;
            burn: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        }, {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        }>]>;
    }, "strip", z.ZodTypeAny, {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    }, {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>;
export type XERC20LimitsTokenConfig = z.infer<typeof XERC20TokenConfigSchema>;
export declare const isXERC20TokenConfig: (config: unknown) => config is {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
};
export declare const CctpTokenConfigSchema: z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralCctp">;
    token: z.ZodString;
    messageTransmitter: z.ZodString;
    tokenMessenger: z.ZodString;
    cctpVersion: z.ZodEnum<["V1", "V2"]>;
    minFinalityThreshold: z.ZodOptional<z.ZodNumber>;
    maxFeeBps: z.ZodOptional<z.ZodNumber>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
} & Omit<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
} & {
    type: z.ZodLiteral<"offchainLookupIsm">;
    urls: z.ZodArray<z.ZodString, "many">;
}, "type" | "owner">, "strip", z.ZodTypeAny, {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
}, {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
}>;
export type CctpTokenConfig = z.infer<typeof CctpTokenConfigSchema>;
export declare const isCctpTokenConfig: (config: unknown) => config is {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
};
export declare const DepositAddressRecipientConfigSchema: z.ZodObject<{
    depositAddress: z.ZodEffects<z.ZodString, string, string>;
    feeBps: z.ZodEffects<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>, string | number | undefined, string | number | undefined>;
}, "strip", z.ZodTypeAny, {
    depositAddress: string;
    feeBps?: string | number | undefined;
}, {
    depositAddress: string;
    feeBps?: string | number | undefined;
}>;
export type DepositAddressRecipientConfig = z.infer<typeof DepositAddressRecipientConfigSchema>;
export declare const DepositAddressDestinationConfigSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
    depositAddress: z.ZodEffects<z.ZodString, string, string>;
    feeBps: z.ZodEffects<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>, string | number | undefined, string | number | undefined>;
}, "strip", z.ZodTypeAny, {
    depositAddress: string;
    feeBps?: string | number | undefined;
}, {
    depositAddress: string;
    feeBps?: string | number | undefined;
}>>;
export type DepositAddressDestinationConfig = z.infer<typeof DepositAddressDestinationConfigSchema>;
export declare const DepositAddressTokenConfigSchema: z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralDepositAddress">;
    token: z.ZodString;
    destinationConfigs: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodRecord<z.ZodString, z.ZodObject<{
        depositAddress: z.ZodEffects<z.ZodString, string, string>;
        feeBps: z.ZodEffects<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>, string | number | undefined, string | number | undefined>;
    }, "strip", z.ZodTypeAny, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>;
export type DepositAddressTokenConfig = z.infer<typeof DepositAddressTokenConfigSchema>;
export declare const isDepositAddressTokenConfig: (config: unknown) => config is {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
};
export declare const OftTokenConfigSchema: z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralOft">;
    token: z.ZodString;
    oft: z.ZodString;
    domainMappings: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodNumber>;
    extraOptions: z.ZodOptional<z.ZodString>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
}, {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
}>;
export type OftTokenConfig = z.infer<typeof OftTokenConfigSchema>;
export declare const isOftTokenConfig: (config: unknown) => config is {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
};
export declare const CollateralRebaseTokenConfigSchema: z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralVaultRebase">;
}, "strip", z.ZodTypeAny, {
    type: "collateralVaultRebase";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
}, {
    type: "collateralVaultRebase";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
}>;
export declare const isCollateralRebaseTokenConfig: (config: unknown) => config is {
    type: "collateralVaultRebase";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
};
export declare const SyntheticTokenConfigSchema: z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodEnum<["synthetic", "syntheticUri"]>;
    initialSupply: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    metadataUri: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
}, {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
}>;
export type SyntheticTokenConfig = z.infer<typeof SyntheticTokenConfigSchema>;
export declare const isSyntheticTokenConfig: (config: unknown) => config is {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
};
export declare const SyntheticRebaseTokenConfigSchema: z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"syntheticRebase">;
    collateralChainName: z.ZodString;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>;
export type SyntheticRebaseTokenConfig = z.infer<typeof SyntheticRebaseTokenConfigSchema>;
export declare const isSyntheticRebaseTokenConfig: (config: unknown) => config is {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
};
/**
 * Configuration for CrossCollateralRouter (multi-router collateral routing).
 * Direct 1-message atomic transfers between collateral routers.
 */
export declare const CrossCollateralTokenConfigSchema: z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodLiteral<"crossCollateral">;
    token: z.ZodString;
    /** Map of domain → router addresses to enroll */
    crossCollateralRouters: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodString, "many">>>;
}, "strip", z.ZodTypeAny, {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>;
export type CrossCollateralTokenConfig = z.infer<typeof CrossCollateralTokenConfigSchema>;
export declare const isCrossCollateralTokenConfig: (config: unknown) => config is {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
};
export declare const EverclearCollateralTokenConfigSchema: z.ZodObject<{
    everclearBridgeAddress: z.ZodString;
    outputAssets: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>;
    everclearFeeParams: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodObject<{
        fee: z.ZodNumber;
        deadline: z.ZodNumber;
        signature: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        signature: string;
        fee: number;
        deadline: number;
    }, {
        signature: string;
        fee: number;
        deadline: number;
    }>>;
    symbol: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    token: z.ZodString;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    type: z.ZodLiteral<"collateralEverclear">;
}, "strip", z.ZodTypeAny, {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>;
export type EverclearCollateralTokenConfig = z.infer<typeof EverclearCollateralTokenConfigSchema>;
export declare const isEverclearCollateralTokenConfig: (config: unknown) => config is {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
};
export declare const EverclearEthBridgeTokenConfigSchema: z.ZodObject<{
    everclearBridgeAddress: z.ZodString;
    outputAssets: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>;
    everclearFeeParams: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodObject<{
        fee: z.ZodNumber;
        deadline: z.ZodNumber;
        signature: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        signature: string;
        fee: number;
        deadline: number;
    }, {
        signature: string;
        fee: number;
        deadline: number;
    }>>;
    symbol: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    type: z.ZodLiteral<"ethEverclear">;
    wethAddress: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>;
export type EverclearEthBridgeTokenConfig = z.infer<typeof EverclearEthBridgeTokenConfigSchema>;
export declare const isEverclearEthBridgeTokenConfig: (config: unknown) => config is {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
};
export declare enum ContractVerificationStatus {
    Verified = "verified",
    Unverified = "unverified",
    Error = "error",
    Skipped = "skipped"
}
export declare enum OwnerStatus {
    Active = "active",// Active address with nonce > 0 and/or contract code
    Inactive = "inactive",
    GnosisSafe = "gnosisSafe",
    Error = "error",
    Skipped = "skipped"
}
export declare const HypTokenRouterVirtualConfigSchema: z.ZodObject<{
    contractVerificationStatus: z.ZodRecord<z.ZodString, z.ZodEnum<[ContractVerificationStatus.Error, ContractVerificationStatus.Skipped, ContractVerificationStatus.Verified, ContractVerificationStatus.Unverified]>>;
    ownerStatus: z.ZodRecord<z.ZodString, z.ZodEnum<[OwnerStatus.Error, OwnerStatus.Skipped, OwnerStatus.Active, OwnerStatus.Inactive, OwnerStatus.GnosisSafe]>>;
}, "strip", z.ZodTypeAny, {
    contractVerificationStatus: Record<string, ContractVerificationStatus>;
    ownerStatus: Record<string, OwnerStatus>;
}, {
    contractVerificationStatus: Record<string, ContractVerificationStatus>;
    ownerStatus: Record<string, OwnerStatus>;
}>;
export type HypTokenRouterVirtualConfig = z.infer<typeof HypTokenRouterVirtualConfigSchema>;
export declare const UnknownTokenConfigSchema: z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">>;
export type UnknownTokenConfig = z.infer<typeof UnknownTokenConfigSchema>;
export declare const isUnknownTokenConfig: (config: unknown) => config is z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">;
declare const AllHypTokenConfigSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "strip", z.ZodTypeAny, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "type"> & {
    type: z.ZodLiteral<"nativeOpL2">;
    l2Bridge: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "type"> & {
    type: z.ZodLiteral<"nativeOpL1">;
    portal: z.ZodString;
    version: z.ZodNumber;
} & Omit<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
} & {
    type: z.ZodLiteral<"offchainLookupIsm">;
    urls: z.ZodArray<z.ZodString, "many">;
}, "type" | "owner">, "strip", z.ZodTypeAny, {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["collateral", "collateralVault", "collateralVaultRebase", "collateralFiat", "collateralUri"]>;
    token: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["collateral", "collateralVault", "collateralVaultRebase", "collateralFiat", "collateralUri"]>;
    token: z.ZodString;
}, "type"> & {
    type: z.ZodEnum<["xERC20", "xERC20Lockbox"]>;
} & {
    xERC20: z.ZodOptional<z.ZodObject<{
        extraBridges: z.ZodOptional<z.ZodArray<z.ZodObject<{
            lockbox: z.ZodString;
            limits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
                type: z.ZodLiteral<XERC20Type.Velo>;
                bufferCap: z.ZodOptional<z.ZodString>;
                rateLimitPerSecond: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            }, {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            }>, z.ZodObject<{
                type: z.ZodLiteral<XERC20Type.Standard>;
                mint: z.ZodOptional<z.ZodString>;
                burn: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            }, {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            }>]>;
        }, "strip", z.ZodTypeAny, {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }, {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }>, "many">>;
        warpRouteLimits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
            type: z.ZodLiteral<XERC20Type.Velo>;
            bufferCap: z.ZodOptional<z.ZodString>;
            rateLimitPerSecond: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        }, {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        }>, z.ZodObject<{
            type: z.ZodLiteral<XERC20Type.Standard>;
            mint: z.ZodOptional<z.ZodString>;
            burn: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        }, {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        }>]>;
    }, "strip", z.ZodTypeAny, {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    }, {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodEnum<["synthetic", "syntheticUri"]>;
    initialSupply: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    metadataUri: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
}, {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"syntheticRebase">;
    collateralChainName: z.ZodString;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralCctp">;
    token: z.ZodString;
    messageTransmitter: z.ZodString;
    tokenMessenger: z.ZodString;
    cctpVersion: z.ZodEnum<["V1", "V2"]>;
    minFinalityThreshold: z.ZodOptional<z.ZodNumber>;
    maxFeeBps: z.ZodOptional<z.ZodNumber>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
} & Omit<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
} & {
    type: z.ZodLiteral<"offchainLookupIsm">;
    urls: z.ZodArray<z.ZodString, "many">;
}, "type" | "owner">, "strip", z.ZodTypeAny, {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
}, {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralOft">;
    token: z.ZodString;
    oft: z.ZodString;
    domainMappings: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodNumber>;
    extraOptions: z.ZodOptional<z.ZodString>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
}, {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
}>, z.ZodObject<{
    everclearBridgeAddress: z.ZodString;
    outputAssets: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>;
    everclearFeeParams: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodObject<{
        fee: z.ZodNumber;
        deadline: z.ZodNumber;
        signature: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        signature: string;
        fee: number;
        deadline: number;
    }, {
        signature: string;
        fee: number;
        deadline: number;
    }>>;
    symbol: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    token: z.ZodString;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    type: z.ZodLiteral<"collateralEverclear">;
}, "strip", z.ZodTypeAny, {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    everclearBridgeAddress: z.ZodString;
    outputAssets: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>;
    everclearFeeParams: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodObject<{
        fee: z.ZodNumber;
        deadline: z.ZodNumber;
        signature: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        signature: string;
        fee: number;
        deadline: number;
    }, {
        signature: string;
        fee: number;
        deadline: number;
    }>>;
    symbol: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    type: z.ZodLiteral<"ethEverclear">;
    wethAddress: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralDepositAddress">;
    token: z.ZodString;
    destinationConfigs: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodRecord<z.ZodString, z.ZodObject<{
        depositAddress: z.ZodEffects<z.ZodString, string, string>;
        feeBps: z.ZodEffects<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>, string | number | undefined, string | number | undefined>;
    }, "strip", z.ZodTypeAny, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodLiteral<"crossCollateral">;
    token: z.ZodString;
    /** Map of domain → router addresses to enroll */
    crossCollateralRouters: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodString, "many">>>;
}, "strip", z.ZodTypeAny, {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">>]>;
export type HypTokenConfig = z.infer<typeof AllHypTokenConfigSchema>;
/**
 * @remarks
 * The discriminatedUnion is basically a switch statement for zod schemas
 * It uses the 'type' key to pick from the array of schemas to validate
 */
export declare const HypTokenConfigSchema: z.ZodEffects<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "strip", z.ZodTypeAny, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "type"> & {
    type: z.ZodLiteral<"nativeOpL2">;
    l2Bridge: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "type"> & {
    type: z.ZodLiteral<"nativeOpL1">;
    portal: z.ZodString;
    version: z.ZodNumber;
} & Omit<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
} & {
    type: z.ZodLiteral<"offchainLookupIsm">;
    urls: z.ZodArray<z.ZodString, "many">;
}, "type" | "owner">, "strip", z.ZodTypeAny, {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["collateral", "collateralVault", "collateralVaultRebase", "collateralFiat", "collateralUri"]>;
    token: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["collateral", "collateralVault", "collateralVaultRebase", "collateralFiat", "collateralUri"]>;
    token: z.ZodString;
}, "type"> & {
    type: z.ZodEnum<["xERC20", "xERC20Lockbox"]>;
} & {
    xERC20: z.ZodOptional<z.ZodObject<{
        extraBridges: z.ZodOptional<z.ZodArray<z.ZodObject<{
            lockbox: z.ZodString;
            limits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
                type: z.ZodLiteral<XERC20Type.Velo>;
                bufferCap: z.ZodOptional<z.ZodString>;
                rateLimitPerSecond: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            }, {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            }>, z.ZodObject<{
                type: z.ZodLiteral<XERC20Type.Standard>;
                mint: z.ZodOptional<z.ZodString>;
                burn: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            }, {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            }>]>;
        }, "strip", z.ZodTypeAny, {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }, {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }>, "many">>;
        warpRouteLimits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
            type: z.ZodLiteral<XERC20Type.Velo>;
            bufferCap: z.ZodOptional<z.ZodString>;
            rateLimitPerSecond: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        }, {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        }>, z.ZodObject<{
            type: z.ZodLiteral<XERC20Type.Standard>;
            mint: z.ZodOptional<z.ZodString>;
            burn: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        }, {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        }>]>;
    }, "strip", z.ZodTypeAny, {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    }, {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodEnum<["synthetic", "syntheticUri"]>;
    initialSupply: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    metadataUri: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
}, {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"syntheticRebase">;
    collateralChainName: z.ZodString;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralCctp">;
    token: z.ZodString;
    messageTransmitter: z.ZodString;
    tokenMessenger: z.ZodString;
    cctpVersion: z.ZodEnum<["V1", "V2"]>;
    minFinalityThreshold: z.ZodOptional<z.ZodNumber>;
    maxFeeBps: z.ZodOptional<z.ZodNumber>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
} & Omit<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
} & {
    type: z.ZodLiteral<"offchainLookupIsm">;
    urls: z.ZodArray<z.ZodString, "many">;
}, "type" | "owner">, "strip", z.ZodTypeAny, {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
}, {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralOft">;
    token: z.ZodString;
    oft: z.ZodString;
    domainMappings: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodNumber>;
    extraOptions: z.ZodOptional<z.ZodString>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
}, {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
}>, z.ZodObject<{
    everclearBridgeAddress: z.ZodString;
    outputAssets: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>;
    everclearFeeParams: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodObject<{
        fee: z.ZodNumber;
        deadline: z.ZodNumber;
        signature: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        signature: string;
        fee: number;
        deadline: number;
    }, {
        signature: string;
        fee: number;
        deadline: number;
    }>>;
    symbol: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    token: z.ZodString;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    type: z.ZodLiteral<"collateralEverclear">;
}, "strip", z.ZodTypeAny, {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    everclearBridgeAddress: z.ZodString;
    outputAssets: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>;
    everclearFeeParams: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodObject<{
        fee: z.ZodNumber;
        deadline: z.ZodNumber;
        signature: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        signature: string;
        fee: number;
        deadline: number;
    }, {
        signature: string;
        fee: number;
        deadline: number;
    }>>;
    symbol: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    type: z.ZodLiteral<"ethEverclear">;
    wethAddress: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralDepositAddress">;
    token: z.ZodString;
    destinationConfigs: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodRecord<z.ZodString, z.ZodObject<{
        depositAddress: z.ZodEffects<z.ZodString, string, string>;
        feeBps: z.ZodEffects<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>, string | number | undefined, string | number | undefined>;
    }, "strip", z.ZodTypeAny, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodLiteral<"crossCollateral">;
    token: z.ZodString;
    /** Map of domain → router addresses to enroll */
    crossCollateralRouters: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodString, "many">>>;
}, "strip", z.ZodTypeAny, {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">>]>, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
} | {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
} | {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
} | {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">, unknown>;
export declare const HypTokenRouterConfigSchema: z.ZodEffects<z.ZodIntersection<z.ZodIntersection<z.ZodEffects<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "strip", z.ZodTypeAny, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "type"> & {
    type: z.ZodLiteral<"nativeOpL2">;
    l2Bridge: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "type"> & {
    type: z.ZodLiteral<"nativeOpL1">;
    portal: z.ZodString;
    version: z.ZodNumber;
} & Omit<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
} & {
    type: z.ZodLiteral<"offchainLookupIsm">;
    urls: z.ZodArray<z.ZodString, "many">;
}, "type" | "owner">, "strip", z.ZodTypeAny, {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["collateral", "collateralVault", "collateralVaultRebase", "collateralFiat", "collateralUri"]>;
    token: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["collateral", "collateralVault", "collateralVaultRebase", "collateralFiat", "collateralUri"]>;
    token: z.ZodString;
}, "type"> & {
    type: z.ZodEnum<["xERC20", "xERC20Lockbox"]>;
} & {
    xERC20: z.ZodOptional<z.ZodObject<{
        extraBridges: z.ZodOptional<z.ZodArray<z.ZodObject<{
            lockbox: z.ZodString;
            limits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
                type: z.ZodLiteral<XERC20Type.Velo>;
                bufferCap: z.ZodOptional<z.ZodString>;
                rateLimitPerSecond: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            }, {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            }>, z.ZodObject<{
                type: z.ZodLiteral<XERC20Type.Standard>;
                mint: z.ZodOptional<z.ZodString>;
                burn: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            }, {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            }>]>;
        }, "strip", z.ZodTypeAny, {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }, {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }>, "many">>;
        warpRouteLimits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
            type: z.ZodLiteral<XERC20Type.Velo>;
            bufferCap: z.ZodOptional<z.ZodString>;
            rateLimitPerSecond: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        }, {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        }>, z.ZodObject<{
            type: z.ZodLiteral<XERC20Type.Standard>;
            mint: z.ZodOptional<z.ZodString>;
            burn: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        }, {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        }>]>;
    }, "strip", z.ZodTypeAny, {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    }, {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodEnum<["synthetic", "syntheticUri"]>;
    initialSupply: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    metadataUri: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
}, {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"syntheticRebase">;
    collateralChainName: z.ZodString;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralCctp">;
    token: z.ZodString;
    messageTransmitter: z.ZodString;
    tokenMessenger: z.ZodString;
    cctpVersion: z.ZodEnum<["V1", "V2"]>;
    minFinalityThreshold: z.ZodOptional<z.ZodNumber>;
    maxFeeBps: z.ZodOptional<z.ZodNumber>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
} & Omit<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
} & {
    type: z.ZodLiteral<"offchainLookupIsm">;
    urls: z.ZodArray<z.ZodString, "many">;
}, "type" | "owner">, "strip", z.ZodTypeAny, {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
}, {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralOft">;
    token: z.ZodString;
    oft: z.ZodString;
    domainMappings: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodNumber>;
    extraOptions: z.ZodOptional<z.ZodString>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
}, {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
}>, z.ZodObject<{
    everclearBridgeAddress: z.ZodString;
    outputAssets: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>;
    everclearFeeParams: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodObject<{
        fee: z.ZodNumber;
        deadline: z.ZodNumber;
        signature: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        signature: string;
        fee: number;
        deadline: number;
    }, {
        signature: string;
        fee: number;
        deadline: number;
    }>>;
    symbol: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    token: z.ZodString;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    type: z.ZodLiteral<"collateralEverclear">;
}, "strip", z.ZodTypeAny, {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    everclearBridgeAddress: z.ZodString;
    outputAssets: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>;
    everclearFeeParams: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodObject<{
        fee: z.ZodNumber;
        deadline: z.ZodNumber;
        signature: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        signature: string;
        fee: number;
        deadline: number;
    }, {
        signature: string;
        fee: number;
        deadline: number;
    }>>;
    symbol: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    type: z.ZodLiteral<"ethEverclear">;
    wethAddress: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralDepositAddress">;
    token: z.ZodString;
    destinationConfigs: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodRecord<z.ZodString, z.ZodObject<{
        depositAddress: z.ZodEffects<z.ZodString, string, string>;
        feeBps: z.ZodEffects<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>, string | number | undefined, string | number | undefined>;
    }, "strip", z.ZodTypeAny, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodLiteral<"crossCollateral">;
    token: z.ZodString;
    /** Map of domain → router addresses to enroll */
    crossCollateralRouters: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodString, "many">>>;
}, "strip", z.ZodTypeAny, {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">>]>, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
} | {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
} | {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
} | {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">, unknown>, 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<"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<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<"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;
    }>]>>;
    interchainSecurityModule: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
        type: z.ZodLiteral<"testIsm">;
    }, "strip", z.ZodTypeAny, {
        type: "testIsm";
    }, {
        type: "testIsm";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"opStackIsm">;
        origin: z.ZodString;
        nativeBridge: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    }, {
        type: "opStackIsm";
        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<"pausableIsm">;
    }, "strip", z.ZodTypeAny, {
        type: "pausableIsm";
    }, {
        type: "pausableIsm";
    }>>, z.ZodObject<{
        type: z.ZodLiteral<"trustedRelayerIsm">;
        relayer: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "trustedRelayerIsm";
        relayer: string;
    }, {
        type: "trustedRelayerIsm";
        relayer: string;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"ccipIsm">;
        originChain: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "ccipIsm";
        originChain: string;
    }, {
        type: "ccipIsm";
        originChain: string;
    }>, z.ZodEffects<z.ZodEffects<z.ZodObject<{
        type: z.ZodLiteral<"rateLimitedIsm">;
        maxCapacity: z.ZodString;
        recipient: z.ZodOptional<z.ZodString>;
        owner: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }>, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }>, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }>, z.ZodIntersection<z.ZodObject<{
        validators: z.ZodArray<z.ZodString, "many">;
        threshold: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        threshold: number;
        validators: string[];
    }, {
        threshold: number;
        validators: string[];
    }>, z.ZodObject<{
        type: z.ZodUnion<[z.ZodLiteral<"merkleRootMultisigIsm">, z.ZodLiteral<"messageIdMultisigIsm">, z.ZodLiteral<"storageMerkleRootMultisigIsm">, z.ZodLiteral<"storageMessageIdMultisigIsm">]>;
    }, "strip", z.ZodTypeAny, {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }, {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }>>, 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<"weightedMerkleRootMultisigIsm">, z.ZodLiteral<"weightedMessageIdMultisigIsm">]>;
    }, "strip", z.ZodTypeAny, {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }, {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }>>, 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<"arbL2ToL1Ism">;
        bridge: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "arbL2ToL1Ism";
        bridge: string;
    }, {
        type: "arbL2ToL1Ism";
        bridge: string;
    }>, z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    } & {
        type: z.ZodLiteral<"offchainLookupIsm">;
        urls: z.ZodArray<z.ZodString, "many">;
    }, "strip", z.ZodTypeAny, {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    } & {
        type: z.ZodLiteral<"interchainAccountRouting">;
        isms: z.ZodRecord<z.ZodString, z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        type: "interchainAccountRouting";
        owner: string;
        isms: Record<string, string>;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: "interchainAccountRouting";
        owner: string;
        isms: Record<string, string>;
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"unknownIsm">;
    }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough">>]>>;
} & {
    foreignDeployment: z.ZodOptional<z.ZodString>;
} & {
    remoteRouters: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, 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;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    }>>;
    tokenFee: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        maxFee: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        halfAmount: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        type: z.ZodLiteral<TokenFeeType.LinearFee>;
        bps: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodNumber, z.ZodString]>, number, string | number>, number, string | number>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
    }, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    }>, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
    }, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    }>, {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    }, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    }>, z.ZodEffects<z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        quoteSigners: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    } & {
        maxFee: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        halfAmount: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        type: z.ZodLiteral<TokenFeeType.OffchainQuotedLinearFee>;
        bps: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodNumber, z.ZodString]>, number, string | number>, number, string | number>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
        quoteSigners?: string[] | undefined;
    }, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    }>, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
        quoteSigners?: string[] | undefined;
    }, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    }>, {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    }, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.ProgressiveFee>;
        maxFee: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
        halfAmount: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.RegressiveFee>;
        maxFee: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
        halfAmount: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.RoutingFee>;
        feeContracts: z.ZodRecord<z.ZodString, z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }>, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.CrossCollateralRoutingFee>;
        feeContracts: z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>>, Record<string, any>, Record<string, any>>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }>, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }>]>>;
} & {
    gas: z.ZodOptional<z.ZodNumber>;
    destinationGas: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>>;
}, "strip", z.ZodTypeAny, {
    owner: string;
    mailbox: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectOutputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    } | {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}, {
    owner: string;
    mailbox: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectInputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: "interchainAccountRouting";
        owner: string;
        isms: Record<string, string>;
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectInputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    } | {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}>>, z.ZodObject<{
    contractVerificationStatus: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<[ContractVerificationStatus.Error, ContractVerificationStatus.Skipped, ContractVerificationStatus.Verified, ContractVerificationStatus.Unverified]>>>;
    ownerStatus: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<[OwnerStatus.Error, OwnerStatus.Skipped, OwnerStatus.Active, OwnerStatus.Inactive, OwnerStatus.GnosisSafe]>>>;
}, "strip", z.ZodTypeAny, {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}, {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}>>, (({
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
} | {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
} | {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
} | {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">) & {
    owner: string;
    mailbox: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectOutputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    } | {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}) & {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}, unknown>;
export type HypTokenRouterConfig = z.infer<typeof HypTokenRouterConfigSchema>;
export type DerivedTokenRouterConfig = z.infer<typeof HypTokenConfigSchema> & z.infer<typeof GasRouterConfigSchema> & DerivedRouterConfig;
export type DerivedWarpRouteDeployConfig = ChainMap<DerivedTokenRouterConfig>;
export declare function derivedHookAddress(config: DerivedTokenRouterConfig): string;
export declare function derivedIsmAddress(config: DerivedTokenRouterConfig): string;
export declare const HypTokenRouterConfigMailboxOptionalBaseSchema: z.ZodIntersection<z.ZodIntersection<z.ZodEffects<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "strip", z.ZodTypeAny, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "type"> & {
    type: z.ZodLiteral<"nativeOpL2">;
    l2Bridge: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "type"> & {
    type: z.ZodLiteral<"nativeOpL1">;
    portal: z.ZodString;
    version: z.ZodNumber;
} & Omit<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
} & {
    type: z.ZodLiteral<"offchainLookupIsm">;
    urls: z.ZodArray<z.ZodString, "many">;
}, "type" | "owner">, "strip", z.ZodTypeAny, {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["collateral", "collateralVault", "collateralVaultRebase", "collateralFiat", "collateralUri"]>;
    token: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["collateral", "collateralVault", "collateralVaultRebase", "collateralFiat", "collateralUri"]>;
    token: z.ZodString;
}, "type"> & {
    type: z.ZodEnum<["xERC20", "xERC20Lockbox"]>;
} & {
    xERC20: z.ZodOptional<z.ZodObject<{
        extraBridges: z.ZodOptional<z.ZodArray<z.ZodObject<{
            lockbox: z.ZodString;
            limits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
                type: z.ZodLiteral<XERC20Type.Velo>;
                bufferCap: z.ZodOptional<z.ZodString>;
                rateLimitPerSecond: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            }, {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            }>, z.ZodObject<{
                type: z.ZodLiteral<XERC20Type.Standard>;
                mint: z.ZodOptional<z.ZodString>;
                burn: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            }, {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            }>]>;
        }, "strip", z.ZodTypeAny, {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }, {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }>, "many">>;
        warpRouteLimits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
            type: z.ZodLiteral<XERC20Type.Velo>;
            bufferCap: z.ZodOptional<z.ZodString>;
            rateLimitPerSecond: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        }, {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        }>, z.ZodObject<{
            type: z.ZodLiteral<XERC20Type.Standard>;
            mint: z.ZodOptional<z.ZodString>;
            burn: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        }, {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        }>]>;
    }, "strip", z.ZodTypeAny, {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    }, {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodEnum<["synthetic", "syntheticUri"]>;
    initialSupply: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    metadataUri: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
}, {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"syntheticRebase">;
    collateralChainName: z.ZodString;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralCctp">;
    token: z.ZodString;
    messageTransmitter: z.ZodString;
    tokenMessenger: z.ZodString;
    cctpVersion: z.ZodEnum<["V1", "V2"]>;
    minFinalityThreshold: z.ZodOptional<z.ZodNumber>;
    maxFeeBps: z.ZodOptional<z.ZodNumber>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
} & Omit<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
} & {
    type: z.ZodLiteral<"offchainLookupIsm">;
    urls: z.ZodArray<z.ZodString, "many">;
}, "type" | "owner">, "strip", z.ZodTypeAny, {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
}, {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralOft">;
    token: z.ZodString;
    oft: z.ZodString;
    domainMappings: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodNumber>;
    extraOptions: z.ZodOptional<z.ZodString>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
}, {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
}>, z.ZodObject<{
    everclearBridgeAddress: z.ZodString;
    outputAssets: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>;
    everclearFeeParams: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodObject<{
        fee: z.ZodNumber;
        deadline: z.ZodNumber;
        signature: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        signature: string;
        fee: number;
        deadline: number;
    }, {
        signature: string;
        fee: number;
        deadline: number;
    }>>;
    symbol: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    token: z.ZodString;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    type: z.ZodLiteral<"collateralEverclear">;
}, "strip", z.ZodTypeAny, {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    everclearBridgeAddress: z.ZodString;
    outputAssets: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>;
    everclearFeeParams: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodObject<{
        fee: z.ZodNumber;
        deadline: z.ZodNumber;
        signature: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        signature: string;
        fee: number;
        deadline: number;
    }, {
        signature: string;
        fee: number;
        deadline: number;
    }>>;
    symbol: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    type: z.ZodLiteral<"ethEverclear">;
    wethAddress: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralDepositAddress">;
    token: z.ZodString;
    destinationConfigs: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodRecord<z.ZodString, z.ZodObject<{
        depositAddress: z.ZodEffects<z.ZodString, string, string>;
        feeBps: z.ZodEffects<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>, string | number | undefined, string | number | undefined>;
    }, "strip", z.ZodTypeAny, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodLiteral<"crossCollateral">;
    token: z.ZodString;
    /** Map of domain → router addresses to enroll */
    crossCollateralRouters: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodString, "many">>>;
}, "strip", z.ZodTypeAny, {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">>]>, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
} | {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
} | {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
} | {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">, unknown>, z.ZodObject<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, 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<"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<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<"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;
    }>]>>;
    interchainSecurityModule: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
        type: z.ZodLiteral<"testIsm">;
    }, "strip", z.ZodTypeAny, {
        type: "testIsm";
    }, {
        type: "testIsm";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"opStackIsm">;
        origin: z.ZodString;
        nativeBridge: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    }, {
        type: "opStackIsm";
        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<"pausableIsm">;
    }, "strip", z.ZodTypeAny, {
        type: "pausableIsm";
    }, {
        type: "pausableIsm";
    }>>, z.ZodObject<{
        type: z.ZodLiteral<"trustedRelayerIsm">;
        relayer: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "trustedRelayerIsm";
        relayer: string;
    }, {
        type: "trustedRelayerIsm";
        relayer: string;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"ccipIsm">;
        originChain: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "ccipIsm";
        originChain: string;
    }, {
        type: "ccipIsm";
        originChain: string;
    }>, z.ZodEffects<z.ZodEffects<z.ZodObject<{
        type: z.ZodLiteral<"rateLimitedIsm">;
        maxCapacity: z.ZodString;
        recipient: z.ZodOptional<z.ZodString>;
        owner: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }>, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }>, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }>, z.ZodIntersection<z.ZodObject<{
        validators: z.ZodArray<z.ZodString, "many">;
        threshold: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        threshold: number;
        validators: string[];
    }, {
        threshold: number;
        validators: string[];
    }>, z.ZodObject<{
        type: z.ZodUnion<[z.ZodLiteral<"merkleRootMultisigIsm">, z.ZodLiteral<"messageIdMultisigIsm">, z.ZodLiteral<"storageMerkleRootMultisigIsm">, z.ZodLiteral<"storageMessageIdMultisigIsm">]>;
    }, "strip", z.ZodTypeAny, {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }, {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }>>, 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<"weightedMerkleRootMultisigIsm">, z.ZodLiteral<"weightedMessageIdMultisigIsm">]>;
    }, "strip", z.ZodTypeAny, {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }, {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }>>, 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<"arbL2ToL1Ism">;
        bridge: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "arbL2ToL1Ism";
        bridge: string;
    }, {
        type: "arbL2ToL1Ism";
        bridge: string;
    }>, z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    } & {
        type: z.ZodLiteral<"offchainLookupIsm">;
        urls: z.ZodArray<z.ZodString, "many">;
    }, "strip", z.ZodTypeAny, {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    } & {
        type: z.ZodLiteral<"interchainAccountRouting">;
        isms: z.ZodRecord<z.ZodString, z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        type: "interchainAccountRouting";
        owner: string;
        isms: Record<string, string>;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: "interchainAccountRouting";
        owner: string;
        isms: Record<string, string>;
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"unknownIsm">;
    }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough">>]>>;
    foreignDeployment: z.ZodOptional<z.ZodString>;
    remoteRouters: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, 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;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    }>>;
    tokenFee: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        maxFee: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        halfAmount: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        type: z.ZodLiteral<TokenFeeType.LinearFee>;
        bps: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodNumber, z.ZodString]>, number, string | number>, number, string | number>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
    }, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    }>, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
    }, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    }>, {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    }, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    }>, z.ZodEffects<z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        quoteSigners: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    } & {
        maxFee: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        halfAmount: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        type: z.ZodLiteral<TokenFeeType.OffchainQuotedLinearFee>;
        bps: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodNumber, z.ZodString]>, number, string | number>, number, string | number>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
        quoteSigners?: string[] | undefined;
    }, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    }>, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
        quoteSigners?: string[] | undefined;
    }, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    }>, {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    }, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.ProgressiveFee>;
        maxFee: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
        halfAmount: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.RegressiveFee>;
        maxFee: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
        halfAmount: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.RoutingFee>;
        feeContracts: z.ZodRecord<z.ZodString, z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }>, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.CrossCollateralRoutingFee>;
        feeContracts: z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>>, Record<string, any>, Record<string, any>>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }>, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }>]>>;
    gas: z.ZodOptional<z.ZodNumber>;
    destinationGas: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>>;
} & {
    mailbox: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectOutputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    } | {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}, {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectInputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: "interchainAccountRouting";
        owner: string;
        isms: Record<string, string>;
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectInputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    } | {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}>>, z.ZodObject<{
    contractVerificationStatus: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<[ContractVerificationStatus.Error, ContractVerificationStatus.Skipped, ContractVerificationStatus.Verified, ContractVerificationStatus.Unverified]>>>;
    ownerStatus: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<[OwnerStatus.Error, OwnerStatus.Skipped, OwnerStatus.Active, OwnerStatus.Inactive, OwnerStatus.GnosisSafe]>>>;
}, "strip", z.ZodTypeAny, {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}, {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}>>;
export type HypTokenRouterConfigMailboxOptionalBase = z.infer<typeof HypTokenRouterConfigMailboxOptionalBaseSchema>;
export declare const HypTokenRouterConfigMailboxOptionalSchema: z.ZodEffects<z.ZodIntersection<z.ZodIntersection<z.ZodEffects<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "strip", z.ZodTypeAny, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "type"> & {
    type: z.ZodLiteral<"nativeOpL2">;
    l2Bridge: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "type"> & {
    type: z.ZodLiteral<"nativeOpL1">;
    portal: z.ZodString;
    version: z.ZodNumber;
} & Omit<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
} & {
    type: z.ZodLiteral<"offchainLookupIsm">;
    urls: z.ZodArray<z.ZodString, "many">;
}, "type" | "owner">, "strip", z.ZodTypeAny, {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["collateral", "collateralVault", "collateralVaultRebase", "collateralFiat", "collateralUri"]>;
    token: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["collateral", "collateralVault", "collateralVaultRebase", "collateralFiat", "collateralUri"]>;
    token: z.ZodString;
}, "type"> & {
    type: z.ZodEnum<["xERC20", "xERC20Lockbox"]>;
} & {
    xERC20: z.ZodOptional<z.ZodObject<{
        extraBridges: z.ZodOptional<z.ZodArray<z.ZodObject<{
            lockbox: z.ZodString;
            limits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
                type: z.ZodLiteral<XERC20Type.Velo>;
                bufferCap: z.ZodOptional<z.ZodString>;
                rateLimitPerSecond: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            }, {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            }>, z.ZodObject<{
                type: z.ZodLiteral<XERC20Type.Standard>;
                mint: z.ZodOptional<z.ZodString>;
                burn: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            }, {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            }>]>;
        }, "strip", z.ZodTypeAny, {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }, {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }>, "many">>;
        warpRouteLimits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
            type: z.ZodLiteral<XERC20Type.Velo>;
            bufferCap: z.ZodOptional<z.ZodString>;
            rateLimitPerSecond: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        }, {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        }>, z.ZodObject<{
            type: z.ZodLiteral<XERC20Type.Standard>;
            mint: z.ZodOptional<z.ZodString>;
            burn: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        }, {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        }>]>;
    }, "strip", z.ZodTypeAny, {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    }, {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodEnum<["synthetic", "syntheticUri"]>;
    initialSupply: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    metadataUri: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
}, {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"syntheticRebase">;
    collateralChainName: z.ZodString;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralCctp">;
    token: z.ZodString;
    messageTransmitter: z.ZodString;
    tokenMessenger: z.ZodString;
    cctpVersion: z.ZodEnum<["V1", "V2"]>;
    minFinalityThreshold: z.ZodOptional<z.ZodNumber>;
    maxFeeBps: z.ZodOptional<z.ZodNumber>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
} & Omit<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
} & {
    type: z.ZodLiteral<"offchainLookupIsm">;
    urls: z.ZodArray<z.ZodString, "many">;
}, "type" | "owner">, "strip", z.ZodTypeAny, {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
}, {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralOft">;
    token: z.ZodString;
    oft: z.ZodString;
    domainMappings: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodNumber>;
    extraOptions: z.ZodOptional<z.ZodString>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
}, {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
}>, z.ZodObject<{
    everclearBridgeAddress: z.ZodString;
    outputAssets: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>;
    everclearFeeParams: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodObject<{
        fee: z.ZodNumber;
        deadline: z.ZodNumber;
        signature: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        signature: string;
        fee: number;
        deadline: number;
    }, {
        signature: string;
        fee: number;
        deadline: number;
    }>>;
    symbol: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    token: z.ZodString;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    type: z.ZodLiteral<"collateralEverclear">;
}, "strip", z.ZodTypeAny, {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    everclearBridgeAddress: z.ZodString;
    outputAssets: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>;
    everclearFeeParams: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodObject<{
        fee: z.ZodNumber;
        deadline: z.ZodNumber;
        signature: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        signature: string;
        fee: number;
        deadline: number;
    }, {
        signature: string;
        fee: number;
        deadline: number;
    }>>;
    symbol: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    type: z.ZodLiteral<"ethEverclear">;
    wethAddress: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralDepositAddress">;
    token: z.ZodString;
    destinationConfigs: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodRecord<z.ZodString, z.ZodObject<{
        depositAddress: z.ZodEffects<z.ZodString, string, string>;
        feeBps: z.ZodEffects<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>, string | number | undefined, string | number | undefined>;
    }, "strip", z.ZodTypeAny, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodLiteral<"crossCollateral">;
    token: z.ZodString;
    /** Map of domain → router addresses to enroll */
    crossCollateralRouters: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodString, "many">>>;
}, "strip", z.ZodTypeAny, {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">>]>, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
} | {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
} | {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
} | {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">, unknown>, z.ZodObject<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, 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<"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<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<"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;
    }>]>>;
    interchainSecurityModule: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
        type: z.ZodLiteral<"testIsm">;
    }, "strip", z.ZodTypeAny, {
        type: "testIsm";
    }, {
        type: "testIsm";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"opStackIsm">;
        origin: z.ZodString;
        nativeBridge: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    }, {
        type: "opStackIsm";
        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<"pausableIsm">;
    }, "strip", z.ZodTypeAny, {
        type: "pausableIsm";
    }, {
        type: "pausableIsm";
    }>>, z.ZodObject<{
        type: z.ZodLiteral<"trustedRelayerIsm">;
        relayer: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "trustedRelayerIsm";
        relayer: string;
    }, {
        type: "trustedRelayerIsm";
        relayer: string;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"ccipIsm">;
        originChain: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "ccipIsm";
        originChain: string;
    }, {
        type: "ccipIsm";
        originChain: string;
    }>, z.ZodEffects<z.ZodEffects<z.ZodObject<{
        type: z.ZodLiteral<"rateLimitedIsm">;
        maxCapacity: z.ZodString;
        recipient: z.ZodOptional<z.ZodString>;
        owner: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }>, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }>, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }>, z.ZodIntersection<z.ZodObject<{
        validators: z.ZodArray<z.ZodString, "many">;
        threshold: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        threshold: number;
        validators: string[];
    }, {
        threshold: number;
        validators: string[];
    }>, z.ZodObject<{
        type: z.ZodUnion<[z.ZodLiteral<"merkleRootMultisigIsm">, z.ZodLiteral<"messageIdMultisigIsm">, z.ZodLiteral<"storageMerkleRootMultisigIsm">, z.ZodLiteral<"storageMessageIdMultisigIsm">]>;
    }, "strip", z.ZodTypeAny, {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }, {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }>>, 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<"weightedMerkleRootMultisigIsm">, z.ZodLiteral<"weightedMessageIdMultisigIsm">]>;
    }, "strip", z.ZodTypeAny, {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }, {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }>>, 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<"arbL2ToL1Ism">;
        bridge: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "arbL2ToL1Ism";
        bridge: string;
    }, {
        type: "arbL2ToL1Ism";
        bridge: string;
    }>, z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    } & {
        type: z.ZodLiteral<"offchainLookupIsm">;
        urls: z.ZodArray<z.ZodString, "many">;
    }, "strip", z.ZodTypeAny, {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    } & {
        type: z.ZodLiteral<"interchainAccountRouting">;
        isms: z.ZodRecord<z.ZodString, z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        type: "interchainAccountRouting";
        owner: string;
        isms: Record<string, string>;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: "interchainAccountRouting";
        owner: string;
        isms: Record<string, string>;
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"unknownIsm">;
    }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough">>]>>;
    foreignDeployment: z.ZodOptional<z.ZodString>;
    remoteRouters: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, 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;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    }>>;
    tokenFee: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        maxFee: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        halfAmount: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        type: z.ZodLiteral<TokenFeeType.LinearFee>;
        bps: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodNumber, z.ZodString]>, number, string | number>, number, string | number>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
    }, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    }>, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
    }, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    }>, {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    }, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    }>, z.ZodEffects<z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        quoteSigners: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    } & {
        maxFee: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        halfAmount: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        type: z.ZodLiteral<TokenFeeType.OffchainQuotedLinearFee>;
        bps: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodNumber, z.ZodString]>, number, string | number>, number, string | number>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
        quoteSigners?: string[] | undefined;
    }, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    }>, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
        quoteSigners?: string[] | undefined;
    }, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    }>, {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    }, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.ProgressiveFee>;
        maxFee: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
        halfAmount: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.RegressiveFee>;
        maxFee: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
        halfAmount: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.RoutingFee>;
        feeContracts: z.ZodRecord<z.ZodString, z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }>, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.CrossCollateralRoutingFee>;
        feeContracts: z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>>, Record<string, any>, Record<string, any>>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }>, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }>]>>;
    gas: z.ZodOptional<z.ZodNumber>;
    destinationGas: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>>;
} & {
    mailbox: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectOutputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    } | {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}, {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectInputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: "interchainAccountRouting";
        owner: string;
        isms: Record<string, string>;
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectInputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    } | {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}>>, z.ZodObject<{
    contractVerificationStatus: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<[ContractVerificationStatus.Error, ContractVerificationStatus.Skipped, ContractVerificationStatus.Verified, ContractVerificationStatus.Unverified]>>>;
    ownerStatus: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<[OwnerStatus.Error, OwnerStatus.Skipped, OwnerStatus.Active, OwnerStatus.Inactive, OwnerStatus.GnosisSafe]>>>;
}, "strip", z.ZodTypeAny, {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}, {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}>>, (({
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
} | {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
} | {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
} | {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">) & {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectOutputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    } | {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}) & {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}, unknown>;
export type HypTokenRouterConfigMailboxOptional = z.infer<typeof HypTokenRouterConfigMailboxOptionalSchema>;
export declare const WarpRouteDeployConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodIntersection<z.ZodIntersection<z.ZodEffects<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "strip", z.ZodTypeAny, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "type"> & {
    type: z.ZodLiteral<"nativeOpL2">;
    l2Bridge: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "type"> & {
    type: z.ZodLiteral<"nativeOpL1">;
    portal: z.ZodString;
    version: z.ZodNumber;
} & Omit<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
} & {
    type: z.ZodLiteral<"offchainLookupIsm">;
    urls: z.ZodArray<z.ZodString, "many">;
}, "type" | "owner">, "strip", z.ZodTypeAny, {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["collateral", "collateralVault", "collateralVaultRebase", "collateralFiat", "collateralUri"]>;
    token: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["collateral", "collateralVault", "collateralVaultRebase", "collateralFiat", "collateralUri"]>;
    token: z.ZodString;
}, "type"> & {
    type: z.ZodEnum<["xERC20", "xERC20Lockbox"]>;
} & {
    xERC20: z.ZodOptional<z.ZodObject<{
        extraBridges: z.ZodOptional<z.ZodArray<z.ZodObject<{
            lockbox: z.ZodString;
            limits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
                type: z.ZodLiteral<XERC20Type.Velo>;
                bufferCap: z.ZodOptional<z.ZodString>;
                rateLimitPerSecond: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            }, {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            }>, z.ZodObject<{
                type: z.ZodLiteral<XERC20Type.Standard>;
                mint: z.ZodOptional<z.ZodString>;
                burn: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            }, {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            }>]>;
        }, "strip", z.ZodTypeAny, {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }, {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }>, "many">>;
        warpRouteLimits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
            type: z.ZodLiteral<XERC20Type.Velo>;
            bufferCap: z.ZodOptional<z.ZodString>;
            rateLimitPerSecond: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        }, {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        }>, z.ZodObject<{
            type: z.ZodLiteral<XERC20Type.Standard>;
            mint: z.ZodOptional<z.ZodString>;
            burn: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        }, {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        }>]>;
    }, "strip", z.ZodTypeAny, {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    }, {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodEnum<["synthetic", "syntheticUri"]>;
    initialSupply: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    metadataUri: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
}, {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"syntheticRebase">;
    collateralChainName: z.ZodString;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralCctp">;
    token: z.ZodString;
    messageTransmitter: z.ZodString;
    tokenMessenger: z.ZodString;
    cctpVersion: z.ZodEnum<["V1", "V2"]>;
    minFinalityThreshold: z.ZodOptional<z.ZodNumber>;
    maxFeeBps: z.ZodOptional<z.ZodNumber>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
} & Omit<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
} & {
    type: z.ZodLiteral<"offchainLookupIsm">;
    urls: z.ZodArray<z.ZodString, "many">;
}, "type" | "owner">, "strip", z.ZodTypeAny, {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
}, {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralOft">;
    token: z.ZodString;
    oft: z.ZodString;
    domainMappings: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodNumber>;
    extraOptions: z.ZodOptional<z.ZodString>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
}, {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
}>, z.ZodObject<{
    everclearBridgeAddress: z.ZodString;
    outputAssets: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>;
    everclearFeeParams: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodObject<{
        fee: z.ZodNumber;
        deadline: z.ZodNumber;
        signature: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        signature: string;
        fee: number;
        deadline: number;
    }, {
        signature: string;
        fee: number;
        deadline: number;
    }>>;
    symbol: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    token: z.ZodString;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    type: z.ZodLiteral<"collateralEverclear">;
}, "strip", z.ZodTypeAny, {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    everclearBridgeAddress: z.ZodString;
    outputAssets: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>;
    everclearFeeParams: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodObject<{
        fee: z.ZodNumber;
        deadline: z.ZodNumber;
        signature: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        signature: string;
        fee: number;
        deadline: number;
    }, {
        signature: string;
        fee: number;
        deadline: number;
    }>>;
    symbol: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    type: z.ZodLiteral<"ethEverclear">;
    wethAddress: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralDepositAddress">;
    token: z.ZodString;
    destinationConfigs: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodRecord<z.ZodString, z.ZodObject<{
        depositAddress: z.ZodEffects<z.ZodString, string, string>;
        feeBps: z.ZodEffects<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>, string | number | undefined, string | number | undefined>;
    }, "strip", z.ZodTypeAny, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodLiteral<"crossCollateral">;
    token: z.ZodString;
    /** Map of domain → router addresses to enroll */
    crossCollateralRouters: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodString, "many">>>;
}, "strip", z.ZodTypeAny, {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">>]>, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
} | {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
} | {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
} | {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">, unknown>, z.ZodObject<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, 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<"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<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<"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;
    }>]>>;
    interchainSecurityModule: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
        type: z.ZodLiteral<"testIsm">;
    }, "strip", z.ZodTypeAny, {
        type: "testIsm";
    }, {
        type: "testIsm";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"opStackIsm">;
        origin: z.ZodString;
        nativeBridge: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    }, {
        type: "opStackIsm";
        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<"pausableIsm">;
    }, "strip", z.ZodTypeAny, {
        type: "pausableIsm";
    }, {
        type: "pausableIsm";
    }>>, z.ZodObject<{
        type: z.ZodLiteral<"trustedRelayerIsm">;
        relayer: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "trustedRelayerIsm";
        relayer: string;
    }, {
        type: "trustedRelayerIsm";
        relayer: string;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"ccipIsm">;
        originChain: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "ccipIsm";
        originChain: string;
    }, {
        type: "ccipIsm";
        originChain: string;
    }>, z.ZodEffects<z.ZodEffects<z.ZodObject<{
        type: z.ZodLiteral<"rateLimitedIsm">;
        maxCapacity: z.ZodString;
        recipient: z.ZodOptional<z.ZodString>;
        owner: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }>, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }>, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }>, z.ZodIntersection<z.ZodObject<{
        validators: z.ZodArray<z.ZodString, "many">;
        threshold: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        threshold: number;
        validators: string[];
    }, {
        threshold: number;
        validators: string[];
    }>, z.ZodObject<{
        type: z.ZodUnion<[z.ZodLiteral<"merkleRootMultisigIsm">, z.ZodLiteral<"messageIdMultisigIsm">, z.ZodLiteral<"storageMerkleRootMultisigIsm">, z.ZodLiteral<"storageMessageIdMultisigIsm">]>;
    }, "strip", z.ZodTypeAny, {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }, {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }>>, 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<"weightedMerkleRootMultisigIsm">, z.ZodLiteral<"weightedMessageIdMultisigIsm">]>;
    }, "strip", z.ZodTypeAny, {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }, {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }>>, 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<"arbL2ToL1Ism">;
        bridge: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "arbL2ToL1Ism";
        bridge: string;
    }, {
        type: "arbL2ToL1Ism";
        bridge: string;
    }>, z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    } & {
        type: z.ZodLiteral<"offchainLookupIsm">;
        urls: z.ZodArray<z.ZodString, "many">;
    }, "strip", z.ZodTypeAny, {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    } & {
        type: z.ZodLiteral<"interchainAccountRouting">;
        isms: z.ZodRecord<z.ZodString, z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        type: "interchainAccountRouting";
        owner: string;
        isms: Record<string, string>;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: "interchainAccountRouting";
        owner: string;
        isms: Record<string, string>;
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"unknownIsm">;
    }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough">>]>>;
    foreignDeployment: z.ZodOptional<z.ZodString>;
    remoteRouters: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, 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;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    }>>;
    tokenFee: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        maxFee: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        halfAmount: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        type: z.ZodLiteral<TokenFeeType.LinearFee>;
        bps: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodNumber, z.ZodString]>, number, string | number>, number, string | number>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
    }, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    }>, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
    }, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    }>, {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    }, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    }>, z.ZodEffects<z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        quoteSigners: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    } & {
        maxFee: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        halfAmount: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        type: z.ZodLiteral<TokenFeeType.OffchainQuotedLinearFee>;
        bps: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodNumber, z.ZodString]>, number, string | number>, number, string | number>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
        quoteSigners?: string[] | undefined;
    }, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    }>, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
        quoteSigners?: string[] | undefined;
    }, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    }>, {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    }, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.ProgressiveFee>;
        maxFee: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
        halfAmount: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.RegressiveFee>;
        maxFee: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
        halfAmount: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.RoutingFee>;
        feeContracts: z.ZodRecord<z.ZodString, z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }>, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.CrossCollateralRoutingFee>;
        feeContracts: z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>>, Record<string, any>, Record<string, any>>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }>, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }>]>>;
    gas: z.ZodOptional<z.ZodNumber>;
    destinationGas: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>>;
} & {
    mailbox: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectOutputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    } | {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}, {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectInputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: "interchainAccountRouting";
        owner: string;
        isms: Record<string, string>;
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectInputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    } | {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}>>, z.ZodObject<{
    contractVerificationStatus: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<[ContractVerificationStatus.Error, ContractVerificationStatus.Skipped, ContractVerificationStatus.Verified, ContractVerificationStatus.Unverified]>>>;
    ownerStatus: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<[OwnerStatus.Error, OwnerStatus.Skipped, OwnerStatus.Active, OwnerStatus.Inactive, OwnerStatus.GnosisSafe]>>>;
}, "strip", z.ZodTypeAny, {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}, {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}>>, (({
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
} | {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
} | {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
} | {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">) & {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectOutputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    } | {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}) & {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}, unknown>>, Record<string, (({
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
} | {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
} | {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
} | {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">) & {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectOutputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    } | {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}) & {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}>, Record<string, unknown>>, Record<string, (({
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
} | {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
} | {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
} | {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">) & {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectOutputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    } | {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}) & {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}>, Record<string, unknown>>, Record<string, (({
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
} | {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
} | {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
} | {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">) & {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectOutputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    } | {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}) & {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}>, Record<string, unknown>>, Record<string, (({
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
} | {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
} | {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
} | {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">) & {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectOutputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    } | {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}) & {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}>, Record<string, unknown>>;
export type WarpRouteDeployConfig = z.infer<typeof WarpRouteDeployConfigSchema>;
export declare const WarpRouteDeployConfigMailboxRequiredSchema: z.ZodIntersection<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodIntersection<z.ZodIntersection<z.ZodEffects<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "strip", z.ZodTypeAny, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "type"> & {
    type: z.ZodLiteral<"nativeOpL2">;
    l2Bridge: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "type"> & {
    type: z.ZodLiteral<"nativeOpL1">;
    portal: z.ZodString;
    version: z.ZodNumber;
} & Omit<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
} & {
    type: z.ZodLiteral<"offchainLookupIsm">;
    urls: z.ZodArray<z.ZodString, "many">;
}, "type" | "owner">, "strip", z.ZodTypeAny, {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["collateral", "collateralVault", "collateralVaultRebase", "collateralFiat", "collateralUri"]>;
    token: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<Omit<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["collateral", "collateralVault", "collateralVaultRebase", "collateralFiat", "collateralUri"]>;
    token: z.ZodString;
}, "type"> & {
    type: z.ZodEnum<["xERC20", "xERC20Lockbox"]>;
} & {
    xERC20: z.ZodOptional<z.ZodObject<{
        extraBridges: z.ZodOptional<z.ZodArray<z.ZodObject<{
            lockbox: z.ZodString;
            limits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
                type: z.ZodLiteral<XERC20Type.Velo>;
                bufferCap: z.ZodOptional<z.ZodString>;
                rateLimitPerSecond: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            }, {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            }>, z.ZodObject<{
                type: z.ZodLiteral<XERC20Type.Standard>;
                mint: z.ZodOptional<z.ZodString>;
                burn: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            }, {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            }>]>;
        }, "strip", z.ZodTypeAny, {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }, {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }>, "many">>;
        warpRouteLimits: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
            type: z.ZodLiteral<XERC20Type.Velo>;
            bufferCap: z.ZodOptional<z.ZodString>;
            rateLimitPerSecond: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        }, {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        }>, z.ZodObject<{
            type: z.ZodLiteral<XERC20Type.Standard>;
            mint: z.ZodOptional<z.ZodString>;
            burn: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        }, {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        }>]>;
    }, "strip", z.ZodTypeAny, {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    }, {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodEnum<["synthetic", "syntheticUri"]>;
    initialSupply: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    metadataUri: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
}, {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"syntheticRebase">;
    collateralChainName: z.ZodString;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralCctp">;
    token: z.ZodString;
    messageTransmitter: z.ZodString;
    tokenMessenger: z.ZodString;
    cctpVersion: z.ZodEnum<["V1", "V2"]>;
    minFinalityThreshold: z.ZodOptional<z.ZodNumber>;
    maxFeeBps: z.ZodOptional<z.ZodNumber>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
} & Omit<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
} & {
    type: z.ZodLiteral<"offchainLookupIsm">;
    urls: z.ZodArray<z.ZodString, "many">;
}, "type" | "owner">, "strip", z.ZodTypeAny, {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
}, {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralOft">;
    token: z.ZodString;
    oft: z.ZodString;
    domainMappings: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodNumber>;
    extraOptions: z.ZodOptional<z.ZodString>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
}, {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
}>, z.ZodObject<{
    everclearBridgeAddress: z.ZodString;
    outputAssets: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>;
    everclearFeeParams: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodObject<{
        fee: z.ZodNumber;
        deadline: z.ZodNumber;
        signature: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        signature: string;
        fee: number;
        deadline: number;
    }, {
        signature: string;
        fee: number;
        deadline: number;
    }>>;
    symbol: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    token: z.ZodString;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    type: z.ZodLiteral<"collateralEverclear">;
}, "strip", z.ZodTypeAny, {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    everclearBridgeAddress: z.ZodString;
    outputAssets: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>;
    everclearFeeParams: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodObject<{
        fee: z.ZodNumber;
        deadline: z.ZodNumber;
        signature: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        signature: string;
        fee: number;
        deadline: number;
    }, {
        signature: string;
        fee: number;
        deadline: number;
    }>>;
    symbol: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    type: z.ZodLiteral<"ethEverclear">;
    wethAddress: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"collateralDepositAddress">;
    token: z.ZodString;
    destinationConfigs: z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodRecord<z.ZodString, z.ZodObject<{
        depositAddress: z.ZodEffects<z.ZodString, string, string>;
        feeBps: z.ZodEffects<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>, string | number | undefined, string | number | undefined>;
    }, "strip", z.ZodTypeAny, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>>;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodLiteral<"crossCollateral">;
    token: z.ZodString;
    /** Map of domain → router addresses to enroll */
    crossCollateralRouters: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodString, "many">>>;
}, "strip", z.ZodTypeAny, {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">>]>, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
} | {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
} | {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
} | {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">, unknown>, z.ZodObject<{
    owner: z.ZodString;
    ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, 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<"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<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<"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;
    }>]>>;
    interchainSecurityModule: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
        type: z.ZodLiteral<"testIsm">;
    }, "strip", z.ZodTypeAny, {
        type: "testIsm";
    }, {
        type: "testIsm";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"opStackIsm">;
        origin: z.ZodString;
        nativeBridge: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    }, {
        type: "opStackIsm";
        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<"pausableIsm">;
    }, "strip", z.ZodTypeAny, {
        type: "pausableIsm";
    }, {
        type: "pausableIsm";
    }>>, z.ZodObject<{
        type: z.ZodLiteral<"trustedRelayerIsm">;
        relayer: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "trustedRelayerIsm";
        relayer: string;
    }, {
        type: "trustedRelayerIsm";
        relayer: string;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"ccipIsm">;
        originChain: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "ccipIsm";
        originChain: string;
    }, {
        type: "ccipIsm";
        originChain: string;
    }>, z.ZodEffects<z.ZodEffects<z.ZodObject<{
        type: z.ZodLiteral<"rateLimitedIsm">;
        maxCapacity: z.ZodString;
        recipient: z.ZodOptional<z.ZodString>;
        owner: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }>, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }>, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }, {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    }>, z.ZodIntersection<z.ZodObject<{
        validators: z.ZodArray<z.ZodString, "many">;
        threshold: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        threshold: number;
        validators: string[];
    }, {
        threshold: number;
        validators: string[];
    }>, z.ZodObject<{
        type: z.ZodUnion<[z.ZodLiteral<"merkleRootMultisigIsm">, z.ZodLiteral<"messageIdMultisigIsm">, z.ZodLiteral<"storageMerkleRootMultisigIsm">, z.ZodLiteral<"storageMessageIdMultisigIsm">]>;
    }, "strip", z.ZodTypeAny, {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }, {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }>>, 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<"weightedMerkleRootMultisigIsm">, z.ZodLiteral<"weightedMessageIdMultisigIsm">]>;
    }, "strip", z.ZodTypeAny, {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }, {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }>>, 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<"arbL2ToL1Ism">;
        bridge: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "arbL2ToL1Ism";
        bridge: string;
    }, {
        type: "arbL2ToL1Ism";
        bridge: string;
    }>, z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    } & {
        type: z.ZodLiteral<"offchainLookupIsm">;
        urls: z.ZodArray<z.ZodString, "many">;
    }, "strip", z.ZodTypeAny, {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodObject<{
        owner: z.ZodString;
        ownerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    } & {
        type: z.ZodLiteral<"interchainAccountRouting">;
        isms: z.ZodRecord<z.ZodString, z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        type: "interchainAccountRouting";
        owner: string;
        isms: Record<string, string>;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        type: "interchainAccountRouting";
        owner: string;
        isms: Record<string, string>;
        ownerOverrides?: Record<string, string> | undefined;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"unknownIsm">;
    }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough">>]>>;
    foreignDeployment: z.ZodOptional<z.ZodString>;
    remoteRouters: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, 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;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    }, {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    }>>;
    tokenFee: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        maxFee: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        halfAmount: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        type: z.ZodLiteral<TokenFeeType.LinearFee>;
        bps: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodNumber, z.ZodString]>, number, string | number>, number, string | number>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
    }, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    }>, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
    }, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    }>, {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    }, {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    }>, z.ZodEffects<z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        quoteSigners: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    } & {
        maxFee: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        halfAmount: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>>;
        type: z.ZodLiteral<TokenFeeType.OffchainQuotedLinearFee>;
        bps: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodNumber, z.ZodString]>, number, string | number>, number, string | number>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
        quoteSigners?: string[] | undefined;
    }, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    }>, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        bps?: number | undefined;
        quoteSigners?: string[] | undefined;
    }, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    }>, {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    }, {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.ProgressiveFee>;
        maxFee: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
        halfAmount: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.RegressiveFee>;
        maxFee: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
        halfAmount: z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    }, {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.RoutingFee>;
        feeContracts: z.ZodRecord<z.ZodString, z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }>, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }, {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    }>, z.ZodEffects<z.ZodObject<{
        owner: z.ZodString;
    } & {
        type: z.ZodLiteral<TokenFeeType.CrossCollateralRoutingFee>;
        feeContracts: z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>>, Record<string, any>, Record<string, any>>>;
    }, "strip", z.ZodTypeAny, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }>, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }, {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    }>]>>;
    gas: z.ZodOptional<z.ZodNumber>;
    destinationGas: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodString>>;
} & {
    mailbox: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectOutputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    } | {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}, {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectInputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | {
        type: "interchainAccountRouting";
        owner: string;
        isms: Record<string, string>;
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectInputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
    } | {
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: string | number | bigint | undefined;
        halfAmount?: string | number | bigint | undefined;
        bps?: string | number | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: string | number | bigint;
        halfAmount: string | number | bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}>>, z.ZodObject<{
    contractVerificationStatus: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<[ContractVerificationStatus.Error, ContractVerificationStatus.Skipped, ContractVerificationStatus.Verified, ContractVerificationStatus.Unverified]>>>;
    ownerStatus: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<[OwnerStatus.Error, OwnerStatus.Skipped, OwnerStatus.Active, OwnerStatus.Inactive, OwnerStatus.GnosisSafe]>>>;
}, "strip", z.ZodTypeAny, {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}, {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}>>, (({
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
} | {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
} | {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
} | {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">) & {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectOutputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    } | {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}) & {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}, unknown>>, Record<string, (({
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
} | {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
} | {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
} | {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">) & {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectOutputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    } | {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}) & {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}>, Record<string, unknown>>, Record<string, (({
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
} | {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
} | {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
} | {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">) & {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectOutputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    } | {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}) & {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}>, Record<string, unknown>>, Record<string, (({
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
} | {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
} | {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
} | {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">) & {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectOutputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    } | {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}) & {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}>, Record<string, unknown>>, Record<string, (({
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL2";
    l2Bridge: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "nativeOpL1";
    version: number;
    urls: string[];
    portal: string;
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "xERC20" | "xERC20Lockbox";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    xERC20?: {
        warpRouteLimits: {
            type: XERC20Type.Velo;
            bufferCap?: string | undefined;
            rateLimitPerSecond?: string | undefined;
        } | {
            type: XERC20Type.Standard;
            mint?: string | undefined;
            burn?: string | undefined;
        };
        extraBridges?: {
            lockbox: string;
            limits: {
                type: XERC20Type.Velo;
                bufferCap?: string | undefined;
                rateLimitPerSecond?: string | undefined;
            } | {
                type: XERC20Type.Standard;
                mint?: string | undefined;
                burn?: string | undefined;
            };
        }[] | undefined;
    } | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralCctp";
    token: string;
    urls: string[];
    messageTransmitter: string;
    tokenMessenger: string;
    cctpVersion: "V1" | "V2";
    symbol?: string | undefined;
    name?: string | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    minFinalityThreshold?: number | undefined;
    maxFeeBps?: number | undefined;
} | {
    type: "collateralDepositAddress";
    token: string;
    destinationConfigs: Record<string | number, Record<string, {
        depositAddress: string;
        feeBps?: string | number | undefined;
    }>>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralOft";
    token: string;
    oft: string;
    domainMappings: Record<string | number, number>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    extraOptions?: string | undefined;
} | {
    type: "synthetic" | "syntheticUri";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
    initialSupply?: string | number | undefined;
    metadataUri?: string | undefined;
} | {
    type: "syntheticRebase";
    collateralChainName: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateralEverclear";
    token: string;
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "ethEverclear";
    everclearBridgeAddress: string;
    outputAssets: Record<string | number, string>;
    everclearFeeParams: Record<string | number, {
        signature: string;
        fee: number;
        deadline: number;
    }>;
    wethAddress: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | z.objectOutputType<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    type: z.ZodLiteral<"unknown">;
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
}, z.ZodTypeAny, "passthrough">) & {
    owner: string;
    gas?: number | undefined;
    ownerOverrides?: Record<string, string> | undefined;
    proxyAdmin?: {
        owner: string;
        address?: string | undefined;
        ownerOverrides?: Record<string, string> | undefined;
    } | undefined;
    mailbox?: string | undefined;
    hook?: 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;
    } | import("../hook/types.js").DomainRoutingHookConfig | import("../hook/types.js").FallbackRoutingHookConfig | import("../hook/types.js").AmountRoutingHookConfig | import("../hook/types.js").AggregationHookConfig | {
        type: "cctpHook";
        address: string;
    } | z.objectOutputType<{
        type: z.ZodLiteral<"unknownHook">;
    }, z.ZodTypeAny, "passthrough"> | {
        type: "predicateHook";
        address: string;
    } | undefined;
    interchainSecurityModule?: string | ({
        threshold: number;
        validators: string[];
    } & {
        type: "merkleRootMultisigIsm" | "messageIdMultisigIsm" | "storageMerkleRootMultisigIsm" | "storageMessageIdMultisigIsm";
    }) | ({
        validators: {
            signingAddress: string;
            weight: number;
        }[];
        thresholdWeight: number;
    } & {
        type: "weightedMerkleRootMultisigIsm" | "weightedMessageIdMultisigIsm";
    }) | {
        type: "testIsm";
    } | ({
        owner: string;
        paused: boolean;
        ownerOverrides?: Record<string, string> | undefined;
    } & {
        type: "pausableIsm";
    }) | {
        type: "opStackIsm";
        origin: string;
        nativeBridge: string;
    } | {
        type: "trustedRelayerIsm";
        relayer: string;
    } | {
        type: "ccipIsm";
        originChain: string;
    } | {
        type: "arbL2ToL1Ism";
        bridge: string;
    } | {
        type: "rateLimitedIsm";
        maxCapacity: string;
        owner?: string | undefined;
        recipient?: string | undefined;
    } | {
        type: "offchainLookupIsm";
        owner: string;
        urls: string[];
        ownerOverrides?: Record<string, string> | undefined;
    } | import("../ism/types.js").RoutingIsmConfig | import("../ism/types.js").AggregationIsmConfig | z.objectOutputType<{
        type: z.ZodLiteral<"unknownIsm">;
    }, z.ZodTypeAny, "passthrough"> | undefined;
    foreignDeployment?: string | undefined;
    remoteRouters?: Record<string | number, {
        address: string;
    }> | undefined;
    tokenFee?: {
        bps: number;
        type: TokenFeeType.LinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
    } | {
        bps: number;
        type: TokenFeeType.OffchainQuotedLinearFee;
        owner: string;
        maxFee?: bigint | undefined;
        halfAmount?: bigint | undefined;
        quoteSigners?: string[] | undefined;
    } | {
        type: TokenFeeType.ProgressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RegressiveFee;
        owner: string;
        maxFee: bigint;
        halfAmount: bigint;
    } | {
        type: TokenFeeType.RoutingFee;
        owner: string;
        feeContracts: Record<string, any>;
    } | {
        type: TokenFeeType.CrossCollateralRoutingFee;
        owner: string;
        feeContracts: Record<string, Record<string, any>>;
    } | undefined;
    destinationGas?: Record<string | number, string> | undefined;
}) & {
    contractVerificationStatus?: Record<string, ContractVerificationStatus> | undefined;
    ownerStatus?: Record<string, OwnerStatus> | undefined;
}>, Record<string, unknown>>, z.ZodRecord<z.ZodString, z.ZodObject<{
    mailbox: z.ZodString;
}, "strip", z.ZodTypeAny, {
    mailbox: string;
}, {
    mailbox: string;
}>>>;
export type WarpRouteDeployConfigMailboxRequired = z.infer<typeof WarpRouteDeployConfigMailboxRequiredSchema>;
declare const MovableTokenSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["collateral", "collateralVault", "collateralVaultRebase", "collateralFiat", "collateralUri"]>;
    token: z.ZodString;
}, "strip", z.ZodTypeAny, {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodLiteral<"crossCollateral">;
    token: z.ZodString;
    /** Map of domain → router addresses to enroll */
    crossCollateralRouters: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodString, "many">>>;
}, "strip", z.ZodTypeAny, {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>, z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    symbol: z.ZodOptional<z.ZodString>;
    decimals: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    scale: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        numerator: z.ZodNumber;
        denominator: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        numerator: number;
        denominator: number;
    }, {
        numerator: number;
        denominator: number;
    }>, z.ZodObject<{
        numerator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
        denominator: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodUnion<[z.ZodBigInt, z.ZodNumber]>, z.ZodString]>, bigint, string | number | bigint>, bigint, string | number | bigint>;
    }, "strip", z.ZodTypeAny, {
        numerator: bigint;
        denominator: bigint;
    }, {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    }>]>>>;
    isNft: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    contractVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
} & {
    predicateWrapper: z.ZodOptional<z.ZodObject<{
        predicateRegistry: z.ZodString;
        policyId: z.ZodString;
        owner: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }, {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    }>>;
    allowedRebalancingBridges: z.ZodOptional<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodArray<z.ZodObject<{
        bridge: z.ZodString;
        approvedTokens: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    }, "strip", z.ZodTypeAny, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }>, "many">>>;
    allowedRebalancers: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
    type: z.ZodEnum<["native", "nativeScaled"]>;
}, "strip", z.ZodTypeAny, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}, {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: string | number | bigint;
        denominator: string | number | bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
}>]>;
export type MovableTokenConfig = z.infer<typeof MovableTokenSchema>;
export declare const isMovableCollateralTokenConfig: (config: unknown) => config is {
    type: "native" | "nativeScaled";
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "collateral" | "collateralVault" | "collateralVaultRebase" | "collateralFiat" | "collateralUri";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
} | {
    type: "crossCollateral";
    token: string;
    symbol?: string | undefined;
    name?: string | undefined;
    decimals?: number | undefined;
    crossCollateralRouters?: Record<string | number, string[]> | undefined;
    contractVersion?: string | undefined;
    scale?: number | {
        numerator: number;
        denominator: number;
    } | {
        numerator: bigint;
        denominator: bigint;
    } | undefined;
    isNft?: boolean | undefined;
    allowedRebalancingBridges?: Record<string | number, {
        bridge: string;
        approvedTokens?: string[] | undefined;
    }[]> | undefined;
    allowedRebalancers?: string[] | undefined;
    predicateWrapper?: {
        owner: string;
        predicateRegistry: string;
        policyId: string;
    } | undefined;
};
export {};
//# sourceMappingURL=types.d.ts.map