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;
            SetAssetClaimer: {
                location: {
                    interior: Enum<{
                        Here: ...;
                        X1: ...;
                        X2: ...;
                        X3: ...;
                        X4: ...;
                        X5: ...;
                        X6: ...;
                        X7: ...;
                        X8: ...;
                    }>;
                    parents: number;
                };
            };
            SetErrorHandler: __Circular;
            SetFeesMode: {
                jit_withdraw: boolean;
            };
            SetTopic: FixedSizeBinary<32>;
            SubscribeVersion: {
                max_response_weight: {
                    proof_size: bigint;
                    ref_time: bigint;
                };
                query_id: bigint;
            };
            Transact: {
                call: Binary;
                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.