Type Alias transfer_assets_using_type_and_then

transfer_assets_using_type_and_then: TxDescriptor<
    {
        assets: Enum<
            {
                V3: { fun: XcmV3MultiassetFungibility; id: XcmV3MultiassetAssetId }[];
                V4: {
                    fun: XcmV3MultiassetFungibility;
                    id: { interior: XcmV3Junctions; parents: number };
                }[];
                V5: {
                    fun: XcmV3MultiassetFungibility;
                    id: {
                        interior: Enum<
                            {
                                Here: undefined;
                                X1: Enum<
                                    {
                                        AccountId32: ...;
                                        AccountIndex64: ...;
                                        AccountKey20: ...;
                                        GeneralIndex: ...;
                                        GeneralKey: ...;
                                        GlobalConsensus: ...;
                                        OnlyChild: ...;
                                        PalletInstance: ...;
                                        Parachain: ...;
                                        Plurality: ...;
                                    },
                                >;
                                X2: FixedSizeArray<2, Enum<(...)>>;
                                X3: FixedSizeArray<3, Enum<(...)>>;
                                X4: FixedSizeArray<4, Enum<(...)>>;
                                X5: FixedSizeArray<5, Enum<(...)>>;
                                X6: FixedSizeArray<6, Enum<(...)>>;
                                X7: FixedSizeArray<7, Enum<(...)>>;
                                X8: FixedSizeArray<8, Enum<(...)>>;
                            },
                        >;
                        parents: number;
                    };
                }[];
            },
        >;
        assets_transfer_type: Enum<
            {
                DestinationReserve: undefined;
                LocalReserve: undefined;
                RemoteReserve: Enum<
                    {
                        V3: { interior: XcmV3Junctions; parents: number };
                        V4: { interior: XcmV3Junctions; parents: number };
                        V5: {
                            interior: Enum<
                                {
                                    Here: undefined;
                                    X1: Enum<
                                        {
                                            AccountId32: ...;
                                            AccountIndex64: ...;
                                            AccountKey20: ...;
                                            GeneralIndex: ...;
                                            GeneralKey: ...;
                                            GlobalConsensus: ...;
                                            OnlyChild: ...;
                                            PalletInstance: ...;
                                            Parachain: ...;
                                            Plurality: ...;
                                        },
                                    >;
                                    X2: FixedSizeArray<2, Enum<(...)>>;
                                    X3: FixedSizeArray<3, Enum<(...)>>;
                                    X4: FixedSizeArray<4, Enum<(...)>>;
                                    X5: FixedSizeArray<5, Enum<(...)>>;
                                    X6: FixedSizeArray<6, Enum<(...)>>;
                                    X7: FixedSizeArray<7, Enum<(...)>>;
                                    X8: FixedSizeArray<8, Enum<(...)>>;
                                },
                            >;
                            parents: number;
                        };
                    },
                >;
                Teleport: undefined;
            },
        >;
        custom_xcm_on_dest: Enum<
            {
                V3: XcmV3Instruction[];
                V4: XcmV4Instruction[];
                V5: Enum<
                    {
                        AliasOrigin: {
                            interior: Enum<
                                {
                                    Here: undefined;
                                    X1: Enum<(...)>;
                                    X2: FixedSizeArray<(...), (...)>;
                                    X3: FixedSizeArray<(...), (...)>;
                                    X4: FixedSizeArray<(...), (...)>;
                                    X5: FixedSizeArray<(...), (...)>;
                                    X6: FixedSizeArray<(...), (...)>;
                                    X7: FixedSizeArray<(...), (...)>;
                                    X8: FixedSizeArray<(...), (...)>;
                                },
                            >;
                            parents: number;
                        };
                        BurnAsset: {
                            fun: XcmV3MultiassetFungibility;
                            id: { interior: Enum<(...)>; parents: number };
                        }[];
                        BuyExecution: {
                            fees: {
                                fun: XcmV3MultiassetFungibility;
                                id: { interior: Enum<(...)>; parents: number };
                            };
                            weight_limit: XcmV3WeightLimit;
                        };
                        ClaimAsset: {
                            assets: {
                                fun: XcmV3MultiassetFungibility;
                                id: { interior: ...; parents: ... };
                            }[];
                            ticket: {
                                interior: Enum<
                                    {
                                        Here: ...;
                                        X1: ...;
                                        X2: ...;
                                        X3: ...;
                                        X4: ...;
                                        X5: ...;
                                        X6: ...;
                                        X7: ...;
                                        X8: ...;
                                    },
                                >;
                                parents: number;
                            };
                        };
                        ClearError: undefined;
                        ClearOrigin: undefined;
                        ClearTopic: undefined;
                        ClearTransactStatus: undefined;
                        DepositAsset: {
                            assets: Enum<{ Definite: (...)[]; Wild: Enum<(...)> }>;
                            beneficiary: {
                                interior: Enum<
                                    {
                                        Here: ...;
                                        X1: ...;
                                        X2: ...;
                                        X3: ...;
                                        X4: ...;
                                        X5: ...;
                                        X6: ...;
                                        X7: ...;
                                        X8: ...;
                                    },
                                >;
                                parents: number;
                            };
                        };
                        DepositReserveAsset: {
                            assets: Enum<{ Definite: (...)[]; Wild: Enum<(...)> }>;
                            dest: {
                                interior: Enum<
                                    {
                                        Here: ...;
                                        X1: ...;
                                        X2: ...;
                                        X3: ...;
                                        X4: ...;
                                        X5: ...;
                                        X6: ...;
                                        X7: ...;
                                        X8: ...;
                                    },
                                >;
                                parents: number;
                            };
                            xcm: __Circular;
                        };
                        DescendOrigin: Enum<
                            {
                                Here: undefined;
                                X1: Enum<
                                    {
                                        AccountId32: ...;
                                        AccountIndex64: ...;
                                        AccountKey20: ...;
                                        GeneralIndex: ...;
                                        GeneralKey: ...;
                                        GlobalConsensus: ...;
                                        OnlyChild: ...;
                                        PalletInstance: ...;
                                        Parachain: ...;
                                        Plurality: ...;
                                    },
                                >;
                                X2: FixedSizeArray<2, Enum<(...)>>;
                                X3: FixedSizeArray<3, Enum<(...)>>;
                                X4: FixedSizeArray<4, Enum<(...)>>;
                                X5: FixedSizeArray<5, Enum<(...)>>;
                                X6: FixedSizeArray<6, Enum<(...)>>;
                                X7: FixedSizeArray<7, Enum<(...)>>;
                                X8: FixedSizeArray<8, Enum<(...)>>;
                            },
                        >;
                        ExchangeAsset: {
                            give: Enum<{ Definite: (...)[]; Wild: Enum<(...)> }>;
                            maximal: boolean;
                            want: {
                                fun: XcmV3MultiassetFungibility;
                                id: { interior: ...; parents: ... };
                            }[];
                        };
                        ExecuteWithOrigin: {
                            descendant_origin?: Enum<(...)>;
                            xcm: __Circular;
                        };
                        ExpectAsset: {
                            fun: XcmV3MultiassetFungibility;
                            id: { interior: Enum<(...)>; parents: number };
                        }[];
                        ExpectError?: [number, Enum<(...)>];
                        ExpectOrigin?: { interior: Enum<(...)>; parents: number };
                        ExpectPallet: {
                            crate_major: number;
                            index: number;
                            min_crate_minor: number;
                            module_name: Binary;
                            name: Binary;
                        };
                        ExpectTransactStatus: XcmV3MaybeErrorCode;
                        ExportMessage: {
                            destination: Enum<
                                {
                                    Here: undefined;
                                    X1: Enum<(...)>;
                                    X2: FixedSizeArray<(...), (...)>;
                                    X3: FixedSizeArray<(...), (...)>;
                                    X4: FixedSizeArray<(...), (...)>;
                                    X5: FixedSizeArray<(...), (...)>;
                                    X6: FixedSizeArray<(...), (...)>;
                                    X7: FixedSizeArray<(...), (...)>;
                                    X8: FixedSizeArray<(...), (...)>;
                                },
                            >;
                            network: Enum<
                                {
                                    BitcoinCash: undefined;
                                    BitcoinCore: undefined;
                                    ByFork: { block_hash: ...; block_number: ... };
                                    ByGenesis: FixedSizeBinary<(...)>;
                                    Ethereum: { chain_id: ... };
                                    Kusama: undefined;
                                    Polkadot: undefined;
                                    PolkadotBulletin: undefined;
                                },
                            >;
                            xcm: __Circular;
                        };
                        HrmpChannelAccepted: { recipient: number };
                        HrmpChannelClosing: {
                            initiator: number;
                            recipient: number;
                            sender: number;
                        };
                        HrmpNewChannelOpenRequest: {
                            max_capacity: number;
                            max_message_size: number;
                            sender: number;
                        };
                        InitiateReserveWithdraw: {
                            assets: Enum<{ Definite: (...)[]; Wild: Enum<(...)> }>;
                            reserve: {
                                interior: Enum<
                                    {
                                        Here: ...;
                                        X1: ...;
                                        X2: ...;
                                        X3: ...;
                                        X4: ...;
                                        X5: ...;
                                        X6: ...;
                                        X7: ...;
                                        X8: ...;
                                    },
                                >;
                                parents: number;
                            };
                            xcm: __Circular;
                        };
                        InitiateTeleport: {
                            assets: Enum<{ Definite: (...)[]; Wild: Enum<(...)> }>;
                            dest: {
                                interior: Enum<
                                    {
                                        Here: ...;
                                        X1: ...;
                                        X2: ...;
                                        X3: ...;
                                        X4: ...;
                                        X5: ...;
                                        X6: ...;
                                        X7: ...;
                                        X8: ...;
                                    },
                                >;
                                parents: number;
                            };
                            xcm: __Circular;
                        };
                        InitiateTransfer: {
                            assets: Enum<
                                { ReserveDeposit: ...; ReserveWithdraw: ...; Teleport: ... },
                            >[];
                            destination: {
                                interior: Enum<
                                    {
                                        Here: ...;
                                        X1: ...;
                                        X2: ...;
                                        X3: ...;
                                        X4: ...;
                                        X5: ...;
                                        X6: ...;
                                        X7: ...;
                                        X8: ...;
                                    },
                                >;
                                parents: number;
                            };
                            preserve_origin: boolean;
                            remote_fees?: Enum<(...)>;
                            remote_xcm: __Circular;
                        };
                        LockAsset: {
                            asset: {
                                fun: XcmV3MultiassetFungibility;
                                id: { interior: Enum<(...)>; parents: number };
                            };
                            unlocker: {
                                interior: Enum<
                                    {
                                        Here: ...;
                                        X1: ...;
                                        X2: ...;
                                        X3: ...;
                                        X4: ...;
                                        X5: ...;
                                        X6: ...;
                                        X7: ...;
                                        X8: ...;
                                    },
                                >;
                                parents: number;
                            };
                        };
                        NoteUnlockable: {
                            asset: {
                                fun: XcmV3MultiassetFungibility;
                                id: { interior: Enum<(...)>; parents: number };
                            };
                            owner: {
                                interior: Enum<
                                    {
                                        Here: ...;
                                        X1: ...;
                                        X2: ...;
                                        X3: ...;
                                        X4: ...;
                                        X5: ...;
                                        X6: ...;
                                        X7: ...;
                                        X8: ...;
                                    },
                                >;
                                parents: number;
                            };
                        };
                        PayFees: {
                            asset: {
                                fun: XcmV3MultiassetFungibility;
                                id: { interior: Enum<(...)>; parents: number };
                            };
                        };
                        QueryPallet: {
                            module_name: Binary;
                            response_info: {
                                destination: { interior: Enum<(...)>; parents: number };
                                max_weight: { proof_size: bigint; ref_time: bigint };
                                query_id: bigint;
                            };
                        };
                        QueryResponse: {
                            max_weight: { proof_size: bigint; ref_time: bigint };
                            querier?: { interior: ...; parents: ... };
                            query_id: bigint;
                            response: Enum<
                                {
                                    Assets: (...)[];
                                    DispatchResult: XcmV3MaybeErrorCode;
                                    ExecutionResult?: (...) | (...);
                                    Null: undefined;
                                    PalletsInfo: (...)[];
                                    Version: number;
                                },
                            >;
                        };
                        ReceiveTeleportedAsset: {
                            fun: XcmV3MultiassetFungibility;
                            id: { interior: Enum<(...)>; parents: number };
                        }[];
                        RefundSurplus: undefined;
                        ReportError: {
                            destination: {
                                interior: Enum<
                                    {
                                        Here: ...;
                                        X1: ...;
                                        X2: ...;
                                        X3: ...;
                                        X4: ...;
                                        X5: ...;
                                        X6: ...;
                                        X7: ...;
                                        X8: ...;
                                    },
                                >;
                                parents: number;
                            };
                            max_weight: { proof_size: bigint; ref_time: bigint };
                            query_id: bigint;
                        };
                        ReportHolding: {
                            assets: Enum<{ Definite: (...)[]; Wild: Enum<(...)> }>;
                            response_info: {
                                destination: { interior: Enum<(...)>; parents: number };
                                max_weight: { proof_size: bigint; ref_time: bigint };
                                query_id: bigint;
                            };
                        };
                        ReportTransactStatus: {
                            destination: {
                                interior: Enum<
                                    {
                                        Here: ...;
                                        X1: ...;
                                        X2: ...;
                                        X3: ...;
                                        X4: ...;
                                        X5: ...;
                                        X6: ...;
                                        X7: ...;
                                        X8: ...;
                                    },
                                >;
                                parents: number;
                            };
                            max_weight: { proof_size: bigint; ref_time: bigint };
                            query_id: bigint;
                        };
                        RequestUnlock: {
                            asset: {
                                fun: XcmV3MultiassetFungibility;
                                id: { interior: Enum<(...)>; parents: number };
                            };
                            locker: {
                                interior: Enum<
                                    {
                                        Here: ...;
                                        X1: ...;
                                        X2: ...;
                                        X3: ...;
                                        X4: ...;
                                        X5: ...;
                                        X6: ...;
                                        X7: ...;
                                        X8: ...;
                                    },
                                >;
                                parents: number;
                            };
                        };
                        ReserveAssetDeposited: {
                            fun: XcmV3MultiassetFungibility;
                            id: { interior: Enum<(...)>; parents: number };
                        }[];
                        SetAppendix: __Circular;
                        SetErrorHandler: __Circular;
                        SetFeesMode: { jit_withdraw: boolean };
                        SetHints: { hints: Enum<{ AssetClaimer: ... }>[] };
                        SetTopic: FixedSizeBinary<32>;
                        SubscribeVersion: {
                            max_response_weight: { proof_size: bigint; ref_time: bigint };
                            query_id: bigint;
                        };
                        Transact: {
                            call: Binary;
                            fallback_max_weight?: { proof_size: ...; ref_time: ... };
                            origin_kind: XcmV2OriginKind;
                        };
                        TransferAsset: {
                            assets: {
                                fun: XcmV3MultiassetFungibility;
                                id: { interior: ...; parents: ... };
                            }[];
                            beneficiary: {
                                interior: Enum<
                                    {
                                        Here: ...;
                                        X1: ...;
                                        X2: ...;
                                        X3: ...;
                                        X4: ...;
                                        X5: ...;
                                        X6: ...;
                                        X7: ...;
                                        X8: ...;
                                    },
                                >;
                                parents: number;
                            };
                        };
                        TransferReserveAsset: {
                            assets: {
                                fun: XcmV3MultiassetFungibility;
                                id: { interior: ...; parents: ... };
                            }[];
                            dest: {
                                interior: Enum<
                                    {
                                        Here: ...;
                                        X1: ...;
                                        X2: ...;
                                        X3: ...;
                                        X4: ...;
                                        X5: ...;
                                        X6: ...;
                                        X7: ...;
                                        X8: ...;
                                    },
                                >;
                                parents: number;
                            };
                            xcm: __Circular;
                        };
                        Trap: bigint;
                        UniversalOrigin: Enum<
                            {
                                AccountId32: {
                                    id: FixedSizeBinary<(...)>;
                                    network?: (...) | (...);
                                };
                                AccountIndex64: { index: bigint; network?: (...)
                                | (...) };
                                AccountKey20: {
                                    key: FixedSizeBinary<(...)>;
                                    network?: (...) | (...);
                                };
                                GeneralIndex: bigint;
                                GeneralKey: { data: FixedSizeBinary<(...)>; length: number };
                                GlobalConsensus: Enum<
                                    {
                                        BitcoinCash: ...;
                                        BitcoinCore: ...;
                                        ByFork: ...;
                                        ByGenesis: ...;
                                        Ethereum: ...;
                                        Kusama: ...;
                                        Polkadot: ...;
                                        PolkadotBulletin: ...;
                                    },
                                >;
                                OnlyChild: undefined;
                                PalletInstance: number;
                                Parachain: number;
                                Plurality: { id: XcmV3JunctionBodyId; part: XcmV2JunctionBodyPart };
                            },
                        >;
                        UnlockAsset: {
                            asset: {
                                fun: XcmV3MultiassetFungibility;
                                id: { interior: Enum<(...)>; parents: number };
                            };
                            target: {
                                interior: Enum<
                                    {
                                        Here: ...;
                                        X1: ...;
                                        X2: ...;
                                        X3: ...;
                                        X4: ...;
                                        X5: ...;
                                        X6: ...;
                                        X7: ...;
                                        X8: ...;
                                    },
                                >;
                                parents: number;
                            };
                        };
                        UnpaidExecution: {
                            check_origin?: { interior: ...; parents: ... };
                            weight_limit: XcmV3WeightLimit;
                        };
                        UnsubscribeVersion: undefined;
                        WithdrawAsset: {
                            fun: XcmV3MultiassetFungibility;
                            id: { interior: Enum<(...)>; parents: number };
                        }[];
                    },
                >[];
            },
        >;
        dest: Enum<
            {
                V3: { interior: XcmV3Junctions; parents: number };
                V4: { interior: XcmV3Junctions; parents: number };
                V5: {
                    interior: Enum<
                        {
                            Here: undefined;
                            X1: Enum<
                                {
                                    AccountId32: {
                                        id: FixedSizeBinary<(...)>;
                                        network?: (...) | (...);
                                    };
                                    AccountIndex64: { index: bigint; network?: (...)
                                    | (...) };
                                    AccountKey20: {
                                        key: FixedSizeBinary<(...)>;
                                        network?: (...) | (...);
                                    };
                                    GeneralIndex: bigint;
                                    GeneralKey: { data: FixedSizeBinary<(...)>; length: number };
                                    GlobalConsensus: Enum<
                                        {
                                            BitcoinCash: ...;
                                            BitcoinCore: ...;
                                            ByFork: ...;
                                            ByGenesis: ...;
                                            Ethereum: ...;
                                            Kusama: ...;
                                            Polkadot: ...;
                                            PolkadotBulletin: ...;
                                        },
                                    >;
                                    OnlyChild: undefined;
                                    PalletInstance: number;
                                    Parachain: number;
                                    Plurality: { id: XcmV3JunctionBodyId; part: XcmV2JunctionBodyPart };
                                },
                            >;
                            X2: FixedSizeArray<
                                2,
                                Enum<
                                    {
                                        AccountId32: { id: ...; network?: ... };
                                        AccountIndex64: { index: ...; network?: ... };
                                        AccountKey20: { key: ...; network?: ... };
                                        GeneralIndex: bigint;
                                        GeneralKey: { data: ...; length: ... };
                                        GlobalConsensus: Enum<(...)>;
                                        OnlyChild: undefined;
                                        PalletInstance: number;
                                        Parachain: number;
                                        Plurality: { id: ...; part: ... };
                                    },
                                >,
                            >;
                            X3: FixedSizeArray<
                                3,
                                Enum<
                                    {
                                        AccountId32: { id: ...; network?: ... };
                                        AccountIndex64: { index: ...; network?: ... };
                                        AccountKey20: { key: ...; network?: ... };
                                        GeneralIndex: bigint;
                                        GeneralKey: { data: ...; length: ... };
                                        GlobalConsensus: Enum<(...)>;
                                        OnlyChild: undefined;
                                        PalletInstance: number;
                                        Parachain: number;
                                        Plurality: { id: ...; part: ... };
                                    },
                                >,
                            >;
                            X4: FixedSizeArray<
                                4,
                                Enum<
                                    {
                                        AccountId32: { id: ...; network?: ... };
                                        AccountIndex64: { index: ...; network?: ... };
                                        AccountKey20: { key: ...; network?: ... };
                                        GeneralIndex: bigint;
                                        GeneralKey: { data: ...; length: ... };
                                        GlobalConsensus: Enum<(...)>;
                                        OnlyChild: undefined;
                                        PalletInstance: number;
                                        Parachain: number;
                                        Plurality: { id: ...; part: ... };
                                    },
                                >,
                            >;
                            X5: FixedSizeArray<
                                5,
                                Enum<
                                    {
                                        AccountId32: { id: ...; network?: ... };
                                        AccountIndex64: { index: ...; network?: ... };
                                        AccountKey20: { key: ...; network?: ... };
                                        GeneralIndex: bigint;
                                        GeneralKey: { data: ...; length: ... };
                                        GlobalConsensus: Enum<(...)>;
                                        OnlyChild: undefined;
                                        PalletInstance: number;
                                        Parachain: number;
                                        Plurality: { id: ...; part: ... };
                                    },
                                >,
                            >;
                            X6: FixedSizeArray<
                                6,
                                Enum<
                                    {
                                        AccountId32: { id: ...; network?: ... };
                                        AccountIndex64: { index: ...; network?: ... };
                                        AccountKey20: { key: ...; network?: ... };
                                        GeneralIndex: bigint;
                                        GeneralKey: { data: ...; length: ... };
                                        GlobalConsensus: Enum<(...)>;
                                        OnlyChild: undefined;
                                        PalletInstance: number;
                                        Parachain: number;
                                        Plurality: { id: ...; part: ... };
                                    },
                                >,
                            >;
                            X7: FixedSizeArray<
                                7,
                                Enum<
                                    {
                                        AccountId32: { id: ...; network?: ... };
                                        AccountIndex64: { index: ...; network?: ... };
                                        AccountKey20: { key: ...; network?: ... };
                                        GeneralIndex: bigint;
                                        GeneralKey: { data: ...; length: ... };
                                        GlobalConsensus: Enum<(...)>;
                                        OnlyChild: undefined;
                                        PalletInstance: number;
                                        Parachain: number;
                                        Plurality: { id: ...; part: ... };
                                    },
                                >,
                            >;
                            X8: FixedSizeArray<
                                8,
                                Enum<
                                    {
                                        AccountId32: { id: ...; network?: ... };
                                        AccountIndex64: { index: ...; network?: ... };
                                        AccountKey20: { key: ...; network?: ... };
                                        GeneralIndex: bigint;
                                        GeneralKey: { data: ...; length: ... };
                                        GlobalConsensus: Enum<(...)>;
                                        OnlyChild: undefined;
                                        PalletInstance: number;
                                        Parachain: number;
                                        Plurality: { id: ...; part: ... };
                                    },
                                >,
                            >;
                        },
                    >;
                    parents: number;
                };
            },
        >;
        fees_transfer_type: Enum<
            {
                DestinationReserve: undefined;
                LocalReserve: undefined;
                RemoteReserve: Enum<
                    {
                        V3: { interior: XcmV3Junctions; parents: number };
                        V4: { interior: XcmV3Junctions; parents: number };
                        V5: {
                            interior: Enum<
                                {
                                    Here: undefined;
                                    X1: Enum<
                                        {
                                            AccountId32: ...;
                                            AccountIndex64: ...;
                                            AccountKey20: ...;
                                            GeneralIndex: ...;
                                            GeneralKey: ...;
                                            GlobalConsensus: ...;
                                            OnlyChild: ...;
                                            PalletInstance: ...;
                                            Parachain: ...;
                                            Plurality: ...;
                                        },
                                    >;
                                    X2: FixedSizeArray<2, Enum<(...)>>;
                                    X3: FixedSizeArray<3, Enum<(...)>>;
                                    X4: FixedSizeArray<4, Enum<(...)>>;
                                    X5: FixedSizeArray<5, Enum<(...)>>;
                                    X6: FixedSizeArray<6, Enum<(...)>>;
                                    X7: FixedSizeArray<7, Enum<(...)>>;
                                    X8: FixedSizeArray<8, Enum<(...)>>;
                                },
                            >;
                            parents: number;
                        };
                    },
                >;
                Teleport: undefined;
            },
        >;
        remote_fees_id: Enum<
            {
                V3: XcmV3MultiassetAssetId;
                V4: { interior: XcmV3Junctions; parents: number };
                V5: {
                    interior: Enum<
                        {
                            Here: undefined;
                            X1: Enum<
                                {
                                    AccountId32: {
                                        id: FixedSizeBinary<(...)>;
                                        network?: (...) | (...);
                                    };
                                    AccountIndex64: { index: bigint; network?: (...)
                                    | (...) };
                                    AccountKey20: {
                                        key: FixedSizeBinary<(...)>;
                                        network?: (...) | (...);
                                    };
                                    GeneralIndex: bigint;
                                    GeneralKey: { data: FixedSizeBinary<(...)>; length: number };
                                    GlobalConsensus: Enum<
                                        {
                                            BitcoinCash: ...;
                                            BitcoinCore: ...;
                                            ByFork: ...;
                                            ByGenesis: ...;
                                            Ethereum: ...;
                                            Kusama: ...;
                                            Polkadot: ...;
                                            PolkadotBulletin: ...;
                                        },
                                    >;
                                    OnlyChild: undefined;
                                    PalletInstance: number;
                                    Parachain: number;
                                    Plurality: { id: XcmV3JunctionBodyId; part: XcmV2JunctionBodyPart };
                                },
                            >;
                            X2: FixedSizeArray<
                                2,
                                Enum<
                                    {
                                        AccountId32: { id: ...; network?: ... };
                                        AccountIndex64: { index: ...; network?: ... };
                                        AccountKey20: { key: ...; network?: ... };
                                        GeneralIndex: bigint;
                                        GeneralKey: { data: ...; length: ... };
                                        GlobalConsensus: Enum<(...)>;
                                        OnlyChild: undefined;
                                        PalletInstance: number;
                                        Parachain: number;
                                        Plurality: { id: ...; part: ... };
                                    },
                                >,
                            >;
                            X3: FixedSizeArray<
                                3,
                                Enum<
                                    {
                                        AccountId32: { id: ...; network?: ... };
                                        AccountIndex64: { index: ...; network?: ... };
                                        AccountKey20: { key: ...; network?: ... };
                                        GeneralIndex: bigint;
                                        GeneralKey: { data: ...; length: ... };
                                        GlobalConsensus: Enum<(...)>;
                                        OnlyChild: undefined;
                                        PalletInstance: number;
                                        Parachain: number;
                                        Plurality: { id: ...; part: ... };
                                    },
                                >,
                            >;
                            X4: FixedSizeArray<
                                4,
                                Enum<
                                    {
                                        AccountId32: { id: ...; network?: ... };
                                        AccountIndex64: { index: ...; network?: ... };
                                        AccountKey20: { key: ...; network?: ... };
                                        GeneralIndex: bigint;
                                        GeneralKey: { data: ...; length: ... };
                                        GlobalConsensus: Enum<(...)>;
                                        OnlyChild: undefined;
                                        PalletInstance: number;
                                        Parachain: number;
                                        Plurality: { id: ...; part: ... };
                                    },
                                >,
                            >;
                            X5: FixedSizeArray<
                                5,
                                Enum<
                                    {
                                        AccountId32: { id: ...; network?: ... };
                                        AccountIndex64: { index: ...; network?: ... };
                                        AccountKey20: { key: ...; network?: ... };
                                        GeneralIndex: bigint;
                                        GeneralKey: { data: ...; length: ... };
                                        GlobalConsensus: Enum<(...)>;
                                        OnlyChild: undefined;
                                        PalletInstance: number;
                                        Parachain: number;
                                        Plurality: { id: ...; part: ... };
                                    },
                                >,
                            >;
                            X6: FixedSizeArray<
                                6,
                                Enum<
                                    {
                                        AccountId32: { id: ...; network?: ... };
                                        AccountIndex64: { index: ...; network?: ... };
                                        AccountKey20: { key: ...; network?: ... };
                                        GeneralIndex: bigint;
                                        GeneralKey: { data: ...; length: ... };
                                        GlobalConsensus: Enum<(...)>;
                                        OnlyChild: undefined;
                                        PalletInstance: number;
                                        Parachain: number;
                                        Plurality: { id: ...; part: ... };
                                    },
                                >,
                            >;
                            X7: FixedSizeArray<
                                7,
                                Enum<
                                    {
                                        AccountId32: { id: ...; network?: ... };
                                        AccountIndex64: { index: ...; network?: ... };
                                        AccountKey20: { key: ...; network?: ... };
                                        GeneralIndex: bigint;
                                        GeneralKey: { data: ...; length: ... };
                                        GlobalConsensus: Enum<(...)>;
                                        OnlyChild: undefined;
                                        PalletInstance: number;
                                        Parachain: number;
                                        Plurality: { id: ...; part: ... };
                                    },
                                >,
                            >;
                            X8: FixedSizeArray<
                                8,
                                Enum<
                                    {
                                        AccountId32: { id: ...; network?: ... };
                                        AccountIndex64: { index: ...; network?: ... };
                                        AccountKey20: { key: ...; network?: ... };
                                        GeneralIndex: bigint;
                                        GeneralKey: { data: ...; length: ... };
                                        GlobalConsensus: Enum<(...)>;
                                        OnlyChild: undefined;
                                        PalletInstance: number;
                                        Parachain: number;
                                        Plurality: { id: ...; part: ... };
                                    },
                                >,
                            >;
                        },
                    >;
                    parents: number;
                };
            },
        >;
        weight_limit: XcmV3WeightLimit;
    },
>

Transfer assets from the local chain to the destination chain using explicit transfer types for assets and fees.

assets must have same reserve location or may be teleportable to dest. Caller must provide the assets_transfer_type to be used for assets:

  • TransferType::LocalReserve: transfer assets to sovereign account of destination chain and forward a notification XCM to dest to mint and deposit reserve-based assets to beneficiary.
  • TransferType::DestinationReserve: burn local assets and forward a notification to dest chain to withdraw the reserve assets from this chain's sovereign account and deposit them to beneficiary.
  • TransferType::RemoteReserve(reserve): burn local assets, forward XCM to reserve chain to move reserves from this chain's SA to dest chain's SA, and forward another XCM to dest to mint and deposit reserve-based assets to beneficiary. Typically the remote reserve is Asset Hub.
  • TransferType::Teleport: burn local assets and forward XCM to dest chain to mint/teleport assets and deposit them to beneficiary.

On the destination chain, as well as any intermediary hops, BuyExecution is used to buy execution using transferred assets identified by remote_fees_id. Make sure enough of the specified remote_fees_id asset is included in the given list of assets. remote_fees_id should be enough to pay for weight_limit. If more weight is needed than weight_limit, then the operation will fail and the sent assets may be at risk.

remote_fees_id may use different transfer type than rest of assets and can be specified through fees_transfer_type.

The caller needs to specify what should happen to the transferred assets once they reach the dest chain. This is done through the custom_xcm_on_dest parameter, which contains the instructions to execute on dest as a final step. This is usually as simple as: Xcm(vec![DepositAsset { assets: Wild(AllCounted(assets.len())), beneficiary }]), but could be something more exotic like sending the assets even further.

  • origin: Must be capable of withdrawing the assets and executing XCM.
  • dest: Destination context for the assets. Will typically be [Parent, Parachain(..)] to send from parachain to parachain, or [Parachain(..)] to send from relay to parachain, or (parents: 2, (GlobalConsensus(..), ..)) to send from parachain across a bridge to another ecosystem destination.
  • assets: The assets to be withdrawn. This should include the assets used to pay the fee on the dest (and possibly reserve) chains.
  • assets_transfer_type: The XCM TransferType used to transfer the assets.
  • remote_fees_id: One of the included assets to be used to pay fees.
  • fees_transfer_type: The XCM TransferType used to transfer the fees assets.
  • custom_xcm_on_dest: The XCM to be executed on dest chain as the last step of the transfer, which also determines what happens to the assets on the destination chain.
  • weight_limit: The remote-side weight limit, if any, for the XCM fee purchase.