SwapParamsSchema: ZodEffects<
    ZodEffects<
        ZodDiscriminatedUnion<
            "mode",
            [
                ZodObject<
                    extendShape<
                        {
                            assetIn: ZodDiscriminatedUnion<
                                "type",
                                [
                                    ZodObject<{ type: ... }, "strip", { type: ... }, { type: ... }>,
                                    ZodObject<
                                        { jettonMaster: ...; type: ... },
                                        "strip",
                                        { jettonMaster: ...; type: ... },
                                        { jettonMaster: ...; type: ... },
                                    >,
                                    ZodObject<
                                        { currencyId: ...; type: ... },
                                        "strip",
                                        { currencyId: ...; type: ... },
                                        { currencyId: ...; type: ... },
                                    >,
                                ],
                            >;
                            assetOut: ZodDiscriminatedUnion<
                                "type",
                                [
                                    ZodObject<{ type: ... }, "strip", { type: ... }, { type: ... }>,
                                    ZodObject<
                                        { jettonMaster: ...; type: ... },
                                        "strip",
                                        { jettonMaster: ...; type: ... },
                                        { jettonMaster: ...; type: ... },
                                    >,
                                    ZodObject<
                                        { currencyId: ...; type: ... },
                                        "strip",
                                        { currencyId: ...; type: ... },
                                        { currencyId: ...; type: ... },
                                    >,
                                ],
                            >;
                            routes: ZodOptional<ZodArray<ZodUnion<[(...), (...)]>>>;
                        },
                        {
                            amountIn: ZodUnion<
                                [
                                    ZodBigInt,
                                    ZodEffects<ZodString, bigint, string>,
                                    ZodEffects<ZodNumber, bigint, number>,
                                ],
                            >;
                            mode: ZodLiteral<"ExactIn">;
                        },
                    >,
                    "strip",
                    {
                        amountIn: bigint;
                        assetIn: | { type: TON }
                        | { jettonMaster: Address; type: JETTON }
                        | { currencyId: number; type: EXTRA_CURRENCY };
                        assetOut:
                            | { type: TON }
                            | { jettonMaster: Address; type: JETTON }
                            | { currencyId: number; type: EXTRA_CURRENCY };
                        mode: "ExactIn";
                        routes?: Address[];
                    },
                    {
                        amountIn: string
                        | number
                        | bigint;
                        assetIn:
                            | { type: TON }
                            | { jettonMaster: string | Address; type: JETTON }
                            | { currencyId: number; type: EXTRA_CURRENCY };
                        assetOut:
                            | { type: TON }
                            | { jettonMaster: string | Address; type: JETTON }
                            | { currencyId: number; type: EXTRA_CURRENCY };
                        mode: "ExactIn";
                        routes?: (string | Address)[];
                    },
                >,
                ZodObject<
                    extendShape<
                        {
                            assetIn: ZodDiscriminatedUnion<
                                "type",
                                [
                                    ZodObject<{ type: ... }, "strip", { type: ... }, { type: ... }>,
                                    ZodObject<
                                        { jettonMaster: ...; type: ... },
                                        "strip",
                                        { jettonMaster: ...; type: ... },
                                        { jettonMaster: ...; type: ... },
                                    >,
                                    ZodObject<
                                        { currencyId: ...; type: ... },
                                        "strip",
                                        { currencyId: ...; type: ... },
                                        { currencyId: ...; type: ... },
                                    >,
                                ],
                            >;
                            assetOut: ZodDiscriminatedUnion<
                                "type",
                                [
                                    ZodObject<{ type: ... }, "strip", { type: ... }, { type: ... }>,
                                    ZodObject<
                                        { jettonMaster: ...; type: ... },
                                        "strip",
                                        { jettonMaster: ...; type: ... },
                                        { jettonMaster: ...; type: ... },
                                    >,
                                    ZodObject<
                                        { currencyId: ...; type: ... },
                                        "strip",
                                        { currencyId: ...; type: ... },
                                        { currencyId: ...; type: ... },
                                    >,
                                ],
                            >;
                            routes: ZodOptional<ZodArray<ZodUnion<[(...), (...)]>>>;
                        },
                        {
                            amountOut: ZodUnion<
                                [
                                    ZodBigInt,
                                    ZodEffects<ZodString, bigint, string>,
                                    ZodEffects<ZodNumber, bigint, number>,
                                ],
                            >;
                            mode: ZodLiteral<"ExactOut">;
                        },
                    >,
                    "strip",
                    {
                        amountOut: bigint;
                        assetIn: | { type: TON }
                        | { jettonMaster: Address; type: JETTON }
                        | { currencyId: number; type: EXTRA_CURRENCY };
                        assetOut:
                            | { type: TON }
                            | { jettonMaster: Address; type: JETTON }
                            | { currencyId: number; type: EXTRA_CURRENCY };
                        mode: "ExactOut";
                        routes?: Address[];
                    },
                    {
                        amountOut: string
                        | number
                        | bigint;
                        assetIn:
                            | { type: TON }
                            | { jettonMaster: string | Address; type: JETTON }
                            | { currencyId: number; type: EXTRA_CURRENCY };
                        assetOut:
                            | { type: TON }
                            | { jettonMaster: string | Address; type: JETTON }
                            | { currencyId: number; type: EXTRA_CURRENCY };
                        mode: "ExactOut";
                        routes?: (string | Address)[];
                    },
                >,
            ],
        >,
        | {
            amountIn: bigint;
            assetIn: | { type: TON }
            | { jettonMaster: Address; type: JETTON }
            | { currencyId: number; type: EXTRA_CURRENCY };
            assetOut:
                | { type: TON }
                | { jettonMaster: Address; type: JETTON }
                | { currencyId: number; type: EXTRA_CURRENCY };
            mode: "ExactIn";
            routes?: Address[];
        }
        | {
            amountOut: bigint;
            assetIn: | { type: TON }
            | { jettonMaster: Address; type: JETTON }
            | { currencyId: number; type: EXTRA_CURRENCY };
            assetOut:
                | { type: TON }
                | { jettonMaster: Address; type: JETTON }
                | { currencyId: number; type: EXTRA_CURRENCY };
            mode: "ExactOut";
            routes?: Address[];
        },
        | {
            amountIn: string
            | number
            | bigint;
            assetIn:
                | { type: TON }
                | { jettonMaster: string | Address; type: JETTON }
                | { currencyId: number; type: EXTRA_CURRENCY };
            assetOut:
                | { type: TON }
                | { jettonMaster: string | Address; type: JETTON }
                | { currencyId: number; type: EXTRA_CURRENCY };
            mode: "ExactIn";
            routes?: (string | Address)[];
        }
        | {
            amountOut: string
            | number
            | bigint;
            assetIn:
                | { type: TON }
                | { jettonMaster: string | Address; type: JETTON }
                | { currencyId: number; type: EXTRA_CURRENCY };
            assetOut:
                | { type: TON }
                | { jettonMaster: string | Address; type: JETTON }
                | { currencyId: number; type: EXTRA_CURRENCY };
            mode: "ExactOut";
            routes?: (string | Address)[];
        },
    >,
    | {
        amountIn: bigint;
        assetIn: Asset;
        assetOut: Asset;
        mode: "ExactIn";
        routes?: Address[];
    }
    | {
        amountOut: bigint;
        assetIn: Asset;
        assetOut: Asset;
        mode: "ExactOut";
        routes?: Address[];
    },
    | {
        amountIn: string
        | number
        | bigint;
        assetIn:
            | { type: TON }
            | { jettonMaster: string | Address; type: JETTON }
            | { currencyId: number; type: EXTRA_CURRENCY };
        assetOut:
            | { type: TON }
            | { jettonMaster: string | Address; type: JETTON }
            | { currencyId: number; type: EXTRA_CURRENCY };
        mode: "ExactIn";
        routes?: (string | Address)[];
    }
    | {
        amountOut: string
        | number
        | bigint;
        assetIn:
            | { type: TON }
            | { jettonMaster: string | Address; type: JETTON }
            | { currencyId: number; type: EXTRA_CURRENCY };
        assetOut:
            | { type: TON }
            | { jettonMaster: string | Address; type: JETTON }
            | { currencyId: number; type: EXTRA_CURRENCY };
        mode: "ExactOut";
        routes?: (string | Address)[];
    },
> = ...