@moonbeam-network/xcm-builder 2.1.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.cjs +1 -1
- package/build/index.cjs.map +1 -1
- package/build/index.d.cts +2 -0
- package/build/index.d.ts +2 -0
- package/build/index.mjs +1 -1
- package/build/index.mjs.map +1 -1
- package/package.json +3 -3
package/build/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var h=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var $=(n,r)=>{for(var t in r)h(n,t,{get:r[t],enumerable:!0})},N=(n,r,t,e)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of G(r))!U.call(n,i)&&i!==t&&h(n,i,{get:()=>r[i],enumerable:!(e=z(r,i))||e.enumerable});return n};var Q=n=>N(h({},"__esModule",{value:!0}),n);var ar={};$(ar,{AssetMinBuilder:()=>K,BalanceBuilder:()=>Y,BaseConfig:()=>f,CallType:()=>g,ContractBuilder:()=>j,ContractConfig:()=>m,ExtrinsicBuilder:()=>ir,ExtrinsicConfig:()=>a,FeeBuilder:()=>or,SubstrateQueryConfig:()=>c,XcmVersion:()=>P,evm:()=>S,substrate:()=>k});module.exports=Q(ar);var Ut=require("@polkadot/api-augment");var g=(t=>(t.Evm="Evm",t.Substrate="Substrate",t))(g||{});var f=class{module;func;type;constructor({module:r,func:t,type:e}){this.module=r,this.func=t,this.type=e}};var c=class extends f{args;transform;constructor({args:r=[],transform:t,type:e="Substrate",...i}){super({...i,type:e}),this.args=r,this.transform=t}};function K(){return{assetRegistry:L,assets:J}}function L(){let n="assetRegistry";return{assetMetadatas:()=>({build:({asset:r})=>new c({module:n,func:"assetMetadatas",args:[r],transform:async t=>t.unwrapOrDefault().minimalBalance.toBigInt()})}),currencyMetadatas:()=>({build:({asset:r})=>new c({module:n,func:"currencyMetadatas",args:[r],transform:async t=>t.unwrapOrDefault().minimalBalance.toBigInt()})})}}function J(){return{asset:()=>({build:({asset:n})=>new c({module:"assets",func:"asset",args:[n],transform:async r=>r.unwrapOrDefault().minBalance.toBigInt()})})}}var v=require("@polkadot/util");var A=require("@moonbeam-network/xcm-utils"),d=require("@polkadot/util"),T=require("@polkadot/util-crypto");var m=class extends f{args;address;constructor({args:r,address:t,...e}){super({...e,type:"Evm"}),this.args=r,this.address=t}};var w=18446744073709551615n;function X(){return{transfer:(n=w)=>({build:({address:r,amount:t,asset:e,destination:i})=>new m({args:[(0,d.isString)(e)?(0,A.formatAssetIdToERC20)(e):e,t,I(r,i),n],func:"transfer",module:"Xtokens"})}),transferMultiCurrencies:(n=w)=>({build:({address:r,amount:t,asset:e,destination:i,fee:o,feeAsset:s})=>new m({args:[[[(0,d.isString)(e)?(0,A.formatAssetIdToERC20)(e):e,t],[(0,d.isString)(s)?(0,A.formatAssetIdToERC20)(s):s,o]],1,I(r,i),n],func:"transferMultiCurrencies",module:"Xtokens"})})}}function I(n,r){let e=`0x${r.isEvmParachain()?"03":"01"}${(0,d.u8aToHex)((0,T.decodeAddress)(n),-1,!1)}00`;return[1,r.parachainId?[`0x0000000${r.parachainId.toString(16)}`,e]:[e]]}function j(){return{Xtokens:X}}function Y(){return{evm:S,substrate:k}}function S(){return{erc20:Z}}function k(){return{assets:rr,system:tr,tokens:nr}}function Z(){return{build:({address:n,asset:r})=>{if(!r||!(0,v.isString)(r))throw new Error(`Invalid contract address: ${r}`);return new m({address:r,args:[n],func:"balanceOf",module:"Erc20"})}}}function rr(){return{account:()=>({build:({address:n,asset:r})=>new c({module:"assets",func:"account",args:[r,n],transform:async t=>t.unwrapOrDefault().balance.toBigInt()})})}}function tr(){return{account:()=>({build:({address:n})=>new c({module:"system",func:"account",args:[n],transform:async r=>{let t=r.data,e=t.miscFrozen??t.frozen;return BigInt(t.free.sub(e).toString())}})}),accountEquilibrium:()=>({build:({address:n,asset:r})=>new c({module:"system",func:"account",args:[n],transform:async t=>{var s;if(t.data.isEmpty)return 0n;let e=t.data.toJSON(),i;if(Array.isArray(e)&&(i=e),Array.isArray((s=e==null?void 0:e.v0)==null?void 0:s.balance)&&(i=e.v0.balance),!i)throw new Error("Can't get balance from Equilibrium chain");let o=i.find(([b])=>b===r);return o?BigInt(o[1].positive):0n}})})}}function nr(){return{accounts:()=>({build:({address:n,asset:r})=>new c({module:"tokens",func:"accounts",args:[n,r],transform:async({free:t,frozen:e})=>BigInt(t.sub(e).toString())})})}}var F=require("@polkadot/types"),D=require("@polkadot/util"),M=require("@polkadot/util-crypto");var P=(e=>(e.v1="V1",e.v2="V2",e.v3="V3",e))(P||{});function l(n,r=0){if(!n)return"V1";let{type:t}=n.meta.args[r],e=n.meta.registry.createType(t.toString()),i=(0,F.getTypeDef)(e==null?void 0:e.toRawType());if(!i.sub)return"V1";let o=Array.isArray(i.sub)?i.sub.map(s=>s.name):[i.sub.name];if(o.includes("V1"))return"V1";if(o.includes("V2"))return"V2";if(o.includes("V3"))return"V3";throw new Error("Can't find Xcm version")}function u(n){return n.length===42&&n.startsWith("0x")?{AccountKey20:{key:n}}:{AccountId32:{id:(0,D.u8aToHex)((0,M.decodeAddress)(n)),network:null}}}var a=class extends f{getArgs;constructor({getArgs:r,...t}){super({...t,type:"Substrate"}),this.getArgs=r}};var O="eqBalances";function W(){return{xcmTransfer:()=>({build:({address:n,amount:r,asset:t,destination:e})=>new a({module:O,func:"xcmTransfer",getArgs:()=>[t,r,{parents:1,interior:{X2:[{Parachain:e.parachainId},u(n)]}},"ThisAccWillPay"]})}),transferXcm:()=>({build:({address:n,amount:r,asset:t,destination:e,fee:i,feeAsset:o})=>new a({module:O,func:"transferXcm",getArgs:()=>{let s=r-i>0n?r-i:0n;return[[t,t===o?s:r],[o,i],{parents:1,interior:{X2:[{Parachain:e.parachainId},u(n)]}}]}})})}}function p({asset:n,address:r,destination:t,func:e,parents:i=1,feeIndex:o=0}){let s=l(e);return[{[s]:{parents:i,interior:{X1:{Parachain:t.parachainId}}}},{[s]:{parents:0,interior:{X1:u(r)}}},{[s]:n},o,"Unlimited"]}var B="polkadotXcm";function _(){return{limitedReserveTransferAssets:()=>{let n="limitedReserveTransferAssets";return{here:()=>({build:r=>new a({module:B,func:n,getArgs:t=>p({...r,func:t,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:r.amount}}]})})}),X1:()=>({build:r=>new a({module:B,func:n,getArgs:t=>p({...r,func:t,asset:[{id:{Concrete:{parents:0,interior:{X1:{PalletInstance:r.palletInstance}}}},fun:{Fungible:r.amount}}]})})}),X2:()=>({build:r=>new a({module:B,func:n,getArgs:t=>{let e=!!r.feeAsset&&r.asset!==r.feeAsset,i=[{id:{Concrete:{parents:0,interior:{X2:[{PalletInstance:r.palletInstance},{GeneralIndex:r.asset}]}}},fun:{Fungible:r.amount}}];return e&&i.push({id:{Concrete:{parents:0,interior:{X2:[{PalletInstance:r.palletInstance},{GeneralIndex:r.feeAsset}]}}},fun:{Fungible:r.fee}}),p({...r,func:t,asset:i,feeIndex:e?1:0})}})})}},limitedReserveWithdrawAssets:()=>{let n="limitedReserveWithdrawAssets";return{X2:()=>({build:r=>new a({module:B,func:n,getArgs:t=>p({...r,func:t,asset:[{id:{Concrete:{parents:1,interior:{X2:[{Parachain:r.destination.parachainId},{PalletInstance:r.palletInstance}]}}},fun:{Fungible:r.amount}}]})})})}}}}function x(){return"Unlimited"}function C(n,r,t){return{[n]:{parents:1,interior:{X2:[{Parachain:t.parachainId},u(r)]}}}}var y="xTokens";function R(){return{transfer:()=>({build:({address:n,amount:r,asset:t,destination:e})=>new a({module:y,func:"transfer",getArgs:i=>{let o=l(i,2);return[t,r,C(o,n,e),x()]}})}),transferMultiAsset:n=>{let r="transferMultiasset";return{here:()=>({build:({address:t,amount:e,destination:i})=>new a({module:y,func:r,getArgs:o=>{let s=l(o,1);return[{[s]:{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:e}}},C(s,t,i),x()]}})}),X1:()=>({build:({address:t,amount:e,destination:i})=>new a({module:y,func:r,getArgs:o=>{let s=l(o,1);return[{[s]:{id:{Concrete:{parents:1,interior:{X1:{Parachain:n}}}},fun:{Fungible:e}}},C(s,t,i),x()]}})}),X2:()=>({build:({address:t,amount:e,asset:i,destination:o})=>new a({module:y,func:r,getArgs:s=>{let b=l(s,1);return[{[b]:{id:{Concrete:{parents:1,interior:{X2:[{Parachain:n},{GeneralKey:i}]}}},fun:{Fungible:e}}},C(b,t,o),x()]}})})}},transferMultiCurrencies:()=>({build:({address:n,amount:r,asset:t,destination:e,fee:i,feeAsset:o})=>new a({module:y,func:"transferMulticurrencies",getArgs:()=>[[[t,r],[o,i]],1,C("V3",n,e),x()]})})}}var V="xTransfer";function q(){return{transfer:()=>{let n="transfer";return{here:()=>({build:({address:r,amount:t,destination:e})=>new a({module:V,func:n,getArgs:()=>[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:t}},{parents:1,interior:{X2:[{Parachain:e.parachainId},u(r)]}},{refTime:5e9,proofSize:0}]})}),X2:()=>({build:({address:r,amount:t,destination:e,palletInstance:i})=>new a({module:V,func:n,getArgs:()=>[{id:{Concrete:{parents:1,interior:{X2:[{Parachain:e.parachainId},{PalletInstance:i}]}}},fun:{Fungible:t||1n}},{parents:1,interior:{X2:[{Parachain:e.parachainId},u(r)]}},{refTime:5e9,proofSize:0}]})})}}}}var er="xcmPallet";function H(){return{limitedReserveTransferAssets:(n=1)=>{let r="limitedReserveTransferAssets";return{here:()=>({build:t=>new a({module:er,func:r,getArgs:e=>p({...t,parents:n,func:e,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:t.amount}}]})})})}}}}function ir(){return{eqBalances:W,xTokens:R,xTransfer:q,polkadotXcm:_,xcmPallet:H}}var E=class{api;call;type="Substrate";constructor({api:r,call:t}){this.api=r,this.call=t}};function or(){return{assetManager:sr}}function sr(){return{assetTypeUnitsPerSecond:(n=1e9)=>({build:({api:r,asset:t})=>new E({api:r,call:async()=>{let e=await r.query.assetManager.assetIdType(t);if(e.isNone)throw new Error(`No asset type found for asset ${t}`);let i=e.unwrap(),s=(await r.query.assetManager.assetTypeUnitsPerSecond(i)).unwrapOrDefault().toBigInt();return BigInt(n)*s/BigInt(10**12)}})})}}0&&(module.exports={AssetMinBuilder,BalanceBuilder,BaseConfig,CallType,ContractBuilder,ContractConfig,ExtrinsicBuilder,ExtrinsicConfig,FeeBuilder,SubstrateQueryConfig,XcmVersion,evm,substrate});
|
|
1
|
+
"use strict";var w=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var N=(e,r)=>{for(var t in r)w(e,t,{get:r[t],enumerable:!0})},Q=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of G(r))!U.call(e,i)&&i!==t&&w(e,i,{get:()=>r[i],enumerable:!(n=H(r,i))||n.enumerable});return e};var K=e=>Q(w({},"__esModule",{value:!0}),e);var ur={};N(ur,{AssetMinBuilder:()=>L,BalanceBuilder:()=>rr,BaseConfig:()=>l,CallType:()=>g,ContractBuilder:()=>Z,ContractConfig:()=>m,ExtrinsicBuilder:()=>sr,ExtrinsicConfig:()=>a,FeeBuilder:()=>ar,SubstrateQueryConfig:()=>c,XcmVersion:()=>P,evm:()=>D,substrate:()=>F});module.exports=K(ur);var Nt=require("@polkadot/api-augment");var g=(t=>(t.Evm="Evm",t.Substrate="Substrate",t))(g||{});var l=class{module;func;type;constructor({module:r,func:t,type:n}){this.module=r,this.func=t,this.type=n}};var c=class extends l{args;transform;constructor({args:r=[],transform:t,type:n="Substrate",...i}){super({...i,type:n}),this.args=r,this.transform=t}};function L(){return{assetRegistry:J,assets:j}}function J(){let e="assetRegistry";return{assetMetadatas:()=>({build:({asset:r})=>new c({module:e,func:"assetMetadatas",args:[r],transform:async t=>t.unwrapOrDefault().minimalBalance.toBigInt()})}),currencyMetadatas:()=>({build:({asset:r})=>new c({module:e,func:"currencyMetadatas",args:[r],transform:async t=>t.unwrapOrDefault().minimalBalance.toBigInt()})})}}function j(){return{asset:()=>({build:({asset:e})=>new c({module:"assets",func:"asset",args:[e],transform:async r=>r.unwrapOrDefault().minBalance.toBigInt()})})}}var X=require("@polkadot/util"),S=require("@polkadot/util-crypto");var y=require("@moonbeam-network/xcm-utils"),f=require("@polkadot/util"),b=require("@polkadot/util-crypto");var m=class extends l{args;address;constructor({args:r,address:t,...n}){super({...n,type:"Evm"}),this.args=r,this.address=t}};var I=18446744073709551615n;function v(){return{transfer:(e=I)=>({build:({address:r,amount:t,asset:n,destination:i})=>new m({args:[(0,f.isString)(n)?(0,y.formatAssetIdToERC20)(n):n,t,T(r,i),e],func:"transfer",module:"Xtokens"})}),transferMultiCurrencies:(e=I)=>({build:({address:r,amount:t,asset:n,destination:i,fee:o,feeAsset:s})=>new m({args:[[[(0,f.isString)(n)?(0,y.formatAssetIdToERC20)(n):n,t],[(0,f.isString)(s)?(0,y.formatAssetIdToERC20)(s):s,o]],1,T(r,i),e],func:"transferMultiCurrencies",module:"Xtokens"})}),transferWithEvmTo32:(e=I)=>({build:({address:r,amount:t,asset:n,destination:i})=>{let o=Y(r,i);return new m({args:[(0,f.isString)(n)?(0,y.formatAssetIdToERC20)(n):n,t,o,e],func:"transfer",module:"Xtokens"})}})}}function Y(e,r){let t="01",n=(0,b.evmToAddress)(e),i=`0x${t}${(0,f.u8aToHex)((0,b.decodeAddress)(n),-1,!1)}00`;return[1,r.parachainId?[`0x0000000${r.parachainId.toString(16)}`,i]:[i]]}function T(e,r){let n=`0x${r.isEvmParachain()?"03":"01"}${(0,f.u8aToHex)((0,b.decodeAddress)(e),-1,!1)}00`;return[1,r.parachainId?[`0x0000000${r.parachainId.toString(16)}`,n]:[n]]}function Z(){return{Xtokens:v}}function rr(){return{evm:D,substrate:F}}function D(){return{erc20:tr}}function F(){return{assets:nr,system:er,tokens:ir}}function tr(){return{build:({address:e,asset:r})=>{if(!r||!(0,X.isString)(r))throw new Error(`Invalid contract address: ${r}`);return new m({address:r,args:[e],func:"balanceOf",module:"Erc20"})}}}function nr(){return{account:()=>({build:({address:e,asset:r})=>new c({module:"assets",func:"account",args:[r,e],transform:async t=>t.unwrapOrDefault().balance.toBigInt()})})}}function er(){return{account:()=>({build:({address:e})=>new c({module:"system",func:"account",args:[e],transform:async r=>{let t=r.data,n=t.miscFrozen??t.frozen;return BigInt(t.free.sub(n).toString())}})}),accountEquilibrium:()=>({build:({address:e,asset:r})=>new c({module:"system",func:"account",args:[e],transform:async t=>{var s;if(t.data.isEmpty)return 0n;let n=t.data.toJSON(),i;if(Array.isArray(n)&&(i=n),Array.isArray((s=n==null?void 0:n.v0)==null?void 0:s.balance)&&(i=n.v0.balance),!i)throw new Error("Can't get balance from Equilibrium chain");let o=i.find(([B])=>B===r);return o?BigInt(o[1].positive):0n}})}),accountEvmTo32:()=>({build:({address:e})=>{let r=(0,S.evmToAddress)(e);return new c({module:"system",func:"account",args:[r],transform:async t=>{let n=t.data,i=n.miscFrozen??n.frozen;return BigInt(n.free.sub(i).toString())}})}})}}function ir(){return{accounts:()=>({build:({address:e,asset:r})=>new c({module:"tokens",func:"accounts",args:[e,r],transform:async({free:t,frozen:n})=>BigInt(t.sub(n).toString())})})}}var k=require("@polkadot/types"),M=require("@polkadot/util"),O=require("@polkadot/util-crypto");var P=(n=>(n.v1="V1",n.v2="V2",n.v3="V3",n))(P||{});function p(e,r=0){if(!e)return"V1";let{type:t}=e.meta.args[r],n=e.meta.registry.createType(t.toString()),i=(0,k.getTypeDef)(n==null?void 0:n.toRawType());if(!i.sub)return"V1";let o=Array.isArray(i.sub)?i.sub.map(s=>s.name):[i.sub.name];if(o.includes("V1"))return"V1";if(o.includes("V2"))return"V2";if(o.includes("V3"))return"V3";throw new Error("Can't find Xcm version")}function u(e){return e.length===42&&e.startsWith("0x")?{AccountKey20:{key:e}}:{AccountId32:{id:(0,M.u8aToHex)((0,O.decodeAddress)(e)),network:null}}}var a=class extends l{getArgs;constructor({getArgs:r,...t}){super({...t,type:"Substrate"}),this.getArgs=r}};var W="eqBalances";function _(){return{xcmTransfer:()=>({build:({address:e,amount:r,asset:t,destination:n})=>new a({module:W,func:"xcmTransfer",getArgs:()=>[t,r,{parents:1,interior:{X2:[{Parachain:n.parachainId},u(e)]}},"ThisAccWillPay"]})}),transferXcm:()=>({build:({address:e,amount:r,asset:t,destination:n,fee:i,feeAsset:o})=>new a({module:W,func:"transferXcm",getArgs:()=>{let s=r-i>0n?r-i:0n;return[[t,t===o?s:r],[o,i],{parents:1,interior:{X2:[{Parachain:n.parachainId},u(e)]}}]}})})}}function d({asset:e,address:r,destination:t,func:n,parents:i=1,feeIndex:o=0}){let s=p(n);return[{[s]:{parents:i,interior:{X1:{Parachain:t.parachainId}}}},{[s]:{parents:0,interior:{X1:u(r)}}},{[s]:e},o,"Unlimited"]}var h="polkadotXcm";function R(){return{limitedReserveTransferAssets:()=>{let e="limitedReserveTransferAssets";return{here:()=>({build:r=>new a({module:h,func:e,getArgs:t=>d({...r,func:t,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:r.amount}}]})})}),X1:()=>({build:r=>new a({module:h,func:e,getArgs:t=>d({...r,func:t,asset:[{id:{Concrete:{parents:0,interior:{X1:{PalletInstance:r.palletInstance}}}},fun:{Fungible:r.amount}}]})})}),X2:()=>({build:r=>new a({module:h,func:e,getArgs:t=>{let n=!!r.feeAsset&&r.asset!==r.feeAsset,i=[{id:{Concrete:{parents:0,interior:{X2:[{PalletInstance:r.palletInstance},{GeneralIndex:r.asset}]}}},fun:{Fungible:r.amount}}];return n&&i.push({id:{Concrete:{parents:0,interior:{X2:[{PalletInstance:r.palletInstance},{GeneralIndex:r.feeAsset}]}}},fun:{Fungible:r.fee}}),d({...r,func:t,asset:i,feeIndex:n?1:0})}})})}},limitedReserveWithdrawAssets:()=>{let e="limitedReserveWithdrawAssets";return{X2:()=>({build:r=>new a({module:h,func:e,getArgs:t=>d({...r,func:t,asset:[{id:{Concrete:{parents:1,interior:{X2:[{Parachain:r.destination.parachainId},{PalletInstance:r.palletInstance}]}}},fun:{Fungible:r.amount}}]})})})}}}}function x(){return"Unlimited"}function C(e,r,t){return{[e]:{parents:1,interior:{X2:[{Parachain:t.parachainId},u(r)]}}}}var A="xTokens";function z(){return{transfer:()=>({build:({address:e,amount:r,asset:t,destination:n})=>new a({module:A,func:"transfer",getArgs:i=>{let o=p(i,2);return[t,r,C(o,e,n),x()]}})}),transferMultiAsset:e=>{let r="transferMultiasset";return{here:()=>({build:({address:t,amount:n,destination:i})=>new a({module:A,func:r,getArgs:o=>{let s=p(o,1);return[{[s]:{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:n}}},C(s,t,i),x()]}})}),X1:()=>({build:({address:t,amount:n,destination:i})=>new a({module:A,func:r,getArgs:o=>{let s=p(o,1);return[{[s]:{id:{Concrete:{parents:1,interior:{X1:{Parachain:e}}}},fun:{Fungible:n}}},C(s,t,i),x()]}})}),X2:()=>({build:({address:t,amount:n,asset:i,destination:o})=>new a({module:A,func:r,getArgs:s=>{let B=p(s,1);return[{[B]:{id:{Concrete:{parents:1,interior:{X2:[{Parachain:e},{GeneralKey:i}]}}},fun:{Fungible:n}}},C(B,t,o),x()]}})})}},transferMultiCurrencies:()=>({build:({address:e,amount:r,asset:t,destination:n,fee:i,feeAsset:o})=>new a({module:A,func:"transferMulticurrencies",getArgs:()=>[[[t,r],[o,i]],1,C("V3",e,n),x()]})})}}var V="xTransfer";function $(){return{transfer:()=>{let e="transfer";return{here:()=>({build:({address:r,amount:t,destination:n})=>new a({module:V,func:e,getArgs:()=>[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:t}},{parents:1,interior:{X2:[{Parachain:n.parachainId},u(r)]}},{refTime:5e9,proofSize:0}]})}),X2:()=>({build:({address:r,amount:t,destination:n,palletInstance:i})=>new a({module:V,func:e,getArgs:()=>[{id:{Concrete:{parents:1,interior:{X2:[{Parachain:n.parachainId},{PalletInstance:i}]}}},fun:{Fungible:t||1n}},{parents:1,interior:{X2:[{Parachain:n.parachainId},u(r)]}},{refTime:5e9,proofSize:0}]})})}}}}var or="xcmPallet";function q(){return{limitedReserveTransferAssets:(e=1)=>{let r="limitedReserveTransferAssets";return{here:()=>({build:t=>new a({module:or,func:r,getArgs:n=>d({...t,parents:e,func:n,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:t.amount}}]})})})}}}}function sr(){return{eqBalances:_,xTokens:z,xTransfer:$,polkadotXcm:R,xcmPallet:q}}var E=class{api;call;type="Substrate";constructor({api:r,call:t}){this.api=r,this.call=t}};function ar(){return{assetManager:cr}}function cr(){return{assetTypeUnitsPerSecond:(e=1e9)=>({build:({api:r,asset:t})=>new E({api:r,call:async()=>{let n=await r.query.assetManager.assetIdType(t);if(n.isNone)throw new Error(`No asset type found for asset ${t}`);let i=n.unwrap(),s=(await r.query.assetManager.assetTypeUnitsPerSecond(i)).unwrapOrDefault().toBigInt();return BigInt(e)*s/BigInt(10**12)}})})}}0&&(module.exports={AssetMinBuilder,BalanceBuilder,BaseConfig,CallType,ContractBuilder,ContractConfig,ExtrinsicBuilder,ExtrinsicConfig,FeeBuilder,SubstrateQueryConfig,XcmVersion,evm,substrate});
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/build/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/builder.interfaces.ts","../src/types/BaseConfig.ts","../src/types/substrate/SubstrateQueryConfig.ts","../src/asset-min/AssetMinBuilder.ts","../src/balance/BalanceBuilder.ts","../src/contract/contracts/Xtokens/Xtokens.ts","../src/contract/ContractConfig.ts","../src/contract/ContractBuilder.ts","../src/extrinsic/ExtrinsicBuilder.utils.ts","../src/extrinsic/ExtrinsicBuilder.interfaces.ts","../src/extrinsic/ExtrinsicConfig.ts","../src/extrinsic/pallets/eqBalances/eqBalances.ts","../src/extrinsic/pallets/polkadotXcm/polkadotXcm.util.ts","../src/extrinsic/pallets/polkadotXcm/polkadotXcm.ts","../src/extrinsic/pallets/xTokens/xTokens.utils.ts","../src/extrinsic/pallets/xTokens/xTokens.ts","../src/extrinsic/pallets/xTransfer/xTransfer.ts","../src/extrinsic/pallets/xcmPallet/xcmPallet.ts","../src/extrinsic/ExtrinsicBuilder.ts","../src/types/substrate/SubstrateCallConfig.ts","../src/fee/FeeBuilder.ts"],"sourcesContent":["import '@polkadot/api-augment';\n\nexport * from './asset-min';\nexport * from './balance';\nexport * from './builder.interfaces';\nexport * from './contract';\nexport * from './extrinsic';\nexport * from './fee';\nexport * from './types/BaseConfig';\nexport * from './types/substrate/SubstrateQueryConfig';\n","export enum CallType {\n Evm = 'Evm',\n Substrate = 'Substrate',\n}\n","import { CallType } from '../builder.interfaces';\n\nexport interface BaseConfigConstructorParams {\n module: string;\n func: string;\n type: CallType;\n}\n\nexport class BaseConfig {\n readonly module: string;\n\n readonly func: string;\n\n readonly type: CallType;\n\n constructor({ module, func, type }: BaseConfigConstructorParams) {\n this.module = module;\n this.func = func;\n this.type = type;\n }\n}\n","import { SetOptional } from '@moonbeam-network/xcm-types';\nimport { CallType } from '../../builder.interfaces';\nimport { BaseConfig, BaseConfigConstructorParams } from '../BaseConfig';\n\nexport interface QueryConfigConstructorParams\n extends SetOptional<BaseConfigConstructorParams, 'type'> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args?: any[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transform: (data: any) => Promise<bigint>;\n}\n\nexport class SubstrateQueryConfig extends BaseConfig {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly args: any[];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly transform: (data: any) => Promise<bigint>;\n\n constructor({\n args = [],\n transform,\n type = CallType.Substrate,\n ...other\n }: QueryConfigConstructorParams) {\n super({ ...other, type });\n\n this.args = args;\n this.transform = transform;\n }\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { Option } from '@polkadot/types';\nimport { PalletAssetsAssetDetails } from '@polkadot/types/lookup';\nimport { SubstrateQueryConfig } from '../types/substrate/SubstrateQueryConfig';\nimport { AssetMinConfigBuilder } from './AssetMinBuilder.interfaces';\n\nexport function AssetMinBuilder() {\n return {\n assetRegistry,\n assets,\n };\n}\n\nfunction assetRegistry() {\n const pallet = 'assetRegistry';\n return {\n assetMetadatas: (): AssetMinConfigBuilder => ({\n build: ({ asset }) =>\n new SubstrateQueryConfig({\n module: pallet,\n func: 'assetMetadatas',\n args: [asset],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transform: async (response: Option<any>): Promise<bigint> =>\n response.unwrapOrDefault().minimalBalance.toBigInt(),\n }),\n }),\n currencyMetadatas: (): AssetMinConfigBuilder => ({\n build: ({ asset }) =>\n new SubstrateQueryConfig({\n module: pallet,\n func: 'currencyMetadatas',\n args: [asset],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transform: async (response: Option<any>): Promise<bigint> =>\n response.unwrapOrDefault().minimalBalance.toBigInt(),\n }),\n }),\n };\n}\n\nfunction assets() {\n return {\n asset: (): AssetMinConfigBuilder => ({\n build: ({ asset }) =>\n new SubstrateQueryConfig({\n module: 'assets',\n func: 'asset',\n args: [asset],\n transform: async (\n response: Option<PalletAssetsAssetDetails>,\n ): Promise<bigint> =>\n response.unwrapOrDefault().minBalance.toBigInt(),\n }),\n }),\n };\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { Option } from '@polkadot/types';\nimport {\n FrameSystemAccountInfo,\n PalletAssetsAssetAccount,\n PalletBalancesAccountData,\n} from '@polkadot/types/lookup';\nimport { isString } from '@polkadot/util';\nimport { ContractConfig } from '../contract';\nimport { SubstrateQueryConfig } from '../types/substrate/SubstrateQueryConfig';\nimport {\n BalanceConfigBuilder,\n EquilibriumSystemBalanceData,\n PalletBalancesAccountDataOld,\n TokensPalletAccountData,\n} from './BalanceBuilder.interfaces';\n\nexport function BalanceBuilder() {\n return {\n evm,\n substrate,\n };\n}\n\nexport function evm() {\n return {\n erc20,\n };\n}\n\nexport function substrate() {\n return {\n assets,\n system,\n tokens,\n };\n}\n\nfunction erc20(): BalanceConfigBuilder {\n return {\n build: ({ address, asset }) => {\n if (!asset || !isString(asset)) {\n throw new Error(`Invalid contract address: ${asset}`);\n }\n\n return new ContractConfig({\n address: asset,\n args: [address],\n func: 'balanceOf',\n module: 'Erc20',\n });\n },\n };\n}\n\nfunction assets() {\n return {\n account: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) =>\n new SubstrateQueryConfig({\n module: 'assets',\n func: 'account',\n args: [asset, address],\n transform: async (\n response: Option<PalletAssetsAssetAccount>,\n ): Promise<bigint> => response.unwrapOrDefault().balance.toBigInt(),\n }),\n }),\n };\n}\n\nfunction system() {\n return {\n account: (): BalanceConfigBuilder => ({\n build: ({ address }) =>\n new SubstrateQueryConfig({\n module: 'system',\n func: 'account',\n args: [address],\n transform: async (\n response: FrameSystemAccountInfo,\n ): Promise<bigint> => {\n const balance = response.data as PalletBalancesAccountData &\n PalletBalancesAccountDataOld;\n const frozen = balance.miscFrozen ?? balance.frozen;\n\n return BigInt(balance.free.sub(frozen).toString());\n },\n }),\n }),\n accountEquilibrium: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) =>\n new SubstrateQueryConfig({\n module: 'system',\n func: 'account',\n args: [address],\n transform: async (response): Promise<bigint> => {\n if (response.data.isEmpty) {\n return 0n;\n }\n\n const res = response.data.toJSON() as unknown;\n let balances: EquilibriumSystemBalanceData | undefined;\n\n if (Array.isArray(res)) {\n balances = res;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (Array.isArray((res as any)?.v0?.balance)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n balances = (res as any).v0.balance;\n }\n\n if (!balances) {\n throw new Error(\"Can't get balance from Equilibrium chain\");\n }\n\n const balance = balances.find(([assetId]) => assetId === asset);\n\n if (!balance) {\n return 0n;\n }\n\n return BigInt(balance[1].positive);\n },\n }),\n }),\n };\n}\n\nfunction tokens() {\n return {\n accounts: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) =>\n new SubstrateQueryConfig({\n module: 'tokens',\n func: 'accounts',\n args: [address, asset],\n transform: async ({\n free,\n frozen,\n }: TokensPalletAccountData): Promise<bigint> =>\n BigInt(free.sub(frozen).toString()),\n }),\n }),\n };\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { AnyChain } from '@moonbeam-network/xcm-types';\nimport { formatAssetIdToERC20 } from '@moonbeam-network/xcm-utils';\nimport { isString, u8aToHex } from '@polkadot/util';\nimport { decodeAddress } from '@polkadot/util-crypto';\nimport { ContractConfigBuilder } from '../../ContractBuilder.interfaces';\nimport { ContractConfig } from '../../ContractConfig';\n\nconst U_64_MAX = 18446744073709551615n;\n\nexport function Xtokens() {\n return {\n transfer: (weight = U_64_MAX): ContractConfigBuilder => ({\n build: ({ address, amount, asset, destination }) =>\n new ContractConfig({\n args: [\n isString(asset) ? formatAssetIdToERC20(asset) : asset,\n amount,\n getDestinationMultilocation(address, destination),\n weight,\n ],\n func: 'transfer',\n module: 'Xtokens',\n }),\n }),\n transferMultiCurrencies: (weight = U_64_MAX): ContractConfigBuilder => ({\n build: ({ address, amount, asset, destination, fee, feeAsset }) =>\n new ContractConfig({\n args: [\n [\n [isString(asset) ? formatAssetIdToERC20(asset) : asset, amount],\n [\n isString(feeAsset) ? formatAssetIdToERC20(feeAsset) : feeAsset,\n fee,\n ],\n ],\n 1, // index of the fee asset\n getDestinationMultilocation(address, destination),\n weight,\n ],\n func: 'transferMultiCurrencies',\n module: 'Xtokens',\n }),\n }),\n };\n}\n\ntype DestinationMultilocation = [\n /**\n * 1 - if transaction is going through a relay chain\n */\n 1,\n (\n | [\n /**\n * example '0x00000007DC'\n * 7DC - parachain id in hex\n * can be found here:\n * - https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fkusama-rpc.polkadot.io#/parachains\n * - https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/parachains\n */\n string,\n /**\n * example '0x01%account%00',\n * enum = 01 (AccountId32)\n * networkId = 00 (any)\n */\n string,\n ]\n | [\n /**\n * example '0x01%account%00',\n * enum = 01 (AccountId32)\n * networkId = 00 (any)\n */\n string,\n ]\n ),\n];\n\nfunction getDestinationMultilocation(\n address: string,\n destination: AnyChain,\n): DestinationMultilocation {\n /* \n 01: AccountId32\n 03: AccountKey20\n https://docs.moonbeam.network/builders/interoperability/xcm/xc20/xtokens/#building-the-precompile-multilocation\n */\n const accountType = destination.isEvmParachain() ? '03' : '01';\n const acc = `0x${accountType}${u8aToHex(\n decodeAddress(address),\n -1,\n false,\n )}00`;\n\n return [\n 1,\n destination.parachainId\n ? [`0x0000000${destination.parachainId.toString(16)}`, acc]\n : [acc],\n ];\n}\n","import { CallType } from '../builder.interfaces';\nimport { BaseConfig, BaseConfigConstructorParams } from '../types/BaseConfig';\n\nexport interface ContractConfigConstructorParams\n extends Omit<BaseConfigConstructorParams, 'type'> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args: any[];\n address?: string;\n}\n\nexport class ContractConfig extends BaseConfig {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly args: any[];\n\n readonly address?: string;\n\n constructor({ args, address, ...other }: ContractConfigConstructorParams) {\n super({ ...other, type: CallType.Evm });\n\n this.args = args;\n this.address = address;\n }\n}\n","import { Xtokens } from './contracts/Xtokens';\n\nexport function ContractBuilder() {\n return {\n Xtokens,\n };\n}\n","import { SubmittableExtrinsicFunction } from '@polkadot/api/types';\nimport { getTypeDef } from '@polkadot/types';\nimport { u8aToHex } from '@polkadot/util';\nimport { decodeAddress } from '@polkadot/util-crypto';\nimport { XcmVersion } from './ExtrinsicBuilder.interfaces';\n\nexport function getExtrinsicArgumentVersion(\n func?: SubmittableExtrinsicFunction<'promise'>,\n index: number = 0,\n): XcmVersion {\n if (!func) return XcmVersion.v1;\n\n const { type } = func.meta.args[index];\n const instance = func.meta.registry.createType(type.toString());\n const raw = getTypeDef(instance?.toRawType());\n\n if (!raw.sub) {\n return XcmVersion.v1;\n }\n\n const versions = Array.isArray(raw.sub)\n ? raw.sub.map((x) => x.name)\n : [raw.sub.name];\n\n if (versions.includes(XcmVersion.v1)) {\n return XcmVersion.v1;\n }\n\n if (versions.includes(XcmVersion.v2)) {\n return XcmVersion.v2;\n }\n\n if (versions.includes(XcmVersion.v3)) {\n return XcmVersion.v3;\n }\n\n throw new Error(\"Can't find Xcm version\");\n}\n\nexport function getExtrinsicAccount(address: string) {\n const isEthAddress = address.length === 42 && address.startsWith('0x');\n\n return isEthAddress\n ? {\n AccountKey20: {\n key: address,\n },\n }\n : {\n AccountId32: {\n id: u8aToHex(decodeAddress(address)),\n network: null,\n },\n };\n}\n","import { AnyChain, ChainAssetId } from '@moonbeam-network/xcm-types';\nimport { ExtrinsicConfig } from './ExtrinsicConfig';\n\nexport interface ExtrinsicConfigBuilder {\n build: (params: ExtrinsicConfigBuilderPrams) => ExtrinsicConfig;\n}\n\nexport interface ExtrinsicConfigBuilderPrams {\n address: string;\n amount: bigint;\n asset: ChainAssetId;\n destination: AnyChain;\n fee: bigint;\n feeAsset: ChainAssetId;\n palletInstance?: number;\n source: AnyChain;\n}\n\nexport enum XcmVersion {\n v1 = 'V1',\n v2 = 'V2',\n v3 = 'V3',\n}\n\nexport type Parents = 0 | 1;\n","import { SubmittableExtrinsicFunction } from '@polkadot/api/types';\nimport { CallType } from '../builder.interfaces';\nimport { BaseConfig, BaseConfigConstructorParams } from '../types/BaseConfig';\n\nexport interface ExtrinsicConfigConstructorParams\n extends Omit<BaseConfigConstructorParams, 'type'> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getArgs: (func?: SubmittableExtrinsicFunction<'promise'>) => any[];\n}\n\nexport class ExtrinsicConfig extends BaseConfig {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getArgs: (func?: SubmittableExtrinsicFunction<'promise'>) => any[];\n\n constructor({ getArgs, ...other }: ExtrinsicConfigConstructorParams) {\n super({ ...other, type: CallType.Substrate });\n\n this.getArgs = getArgs;\n }\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicAccount } from '../../ExtrinsicBuilder.utils';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\n\nexport enum EqBalancesFee {\n SovereignAccWillPay = 'SovereignAccWillPay',\n TargetChainAccWillPay = 'TargetChainAccWillPay',\n ThisAccWillPay = 'ThisAccWillPay',\n}\n\nconst pallet = 'eqBalances';\n\nexport function eqBalances() {\n return {\n xcmTransfer: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: 'xcmTransfer',\n getArgs: () => [\n asset,\n amount,\n {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n EqBalancesFee.ThisAccWillPay,\n ],\n }),\n }),\n transferXcm: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination, fee, feeAsset }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: 'transferXcm',\n getArgs: () => {\n const amountWithoutFee = amount - fee > 0n ? amount - fee : 0n;\n\n return [\n [asset, asset === feeAsset ? amountWithoutFee : amount],\n [feeAsset, fee],\n {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n ];\n },\n }),\n }),\n };\n}\n","/* eslint-disable sort-keys */\nimport { SubmittableExtrinsicFunction } from '@polkadot/api/types';\nimport {\n ExtrinsicConfigBuilderPrams,\n Parents,\n} from '../../ExtrinsicBuilder.interfaces';\nimport {\n getExtrinsicAccount,\n getExtrinsicArgumentVersion,\n} from '../../ExtrinsicBuilder.utils';\n\nexport interface GetExtrinsicParams extends ExtrinsicConfigBuilderPrams {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n asset: any;\n func?: SubmittableExtrinsicFunction<'promise'>;\n parents?: Parents;\n feeIndex?: number;\n}\n\nexport function getPolkadotXcmExtrinsicArgs({\n asset,\n address,\n destination,\n func,\n parents = 1,\n feeIndex = 0,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n}: GetExtrinsicParams): any[] {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const version = getExtrinsicArgumentVersion(func);\n\n return [\n {\n [version]: {\n parents,\n interior: {\n X1: {\n Parachain: destination.parachainId,\n },\n },\n },\n },\n {\n [version]: {\n parents: 0,\n interior: {\n X1: getExtrinsicAccount(address),\n },\n },\n },\n {\n [version]: asset,\n },\n feeIndex,\n 'Unlimited',\n ];\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport { getPolkadotXcmExtrinsicArgs } from './polkadotXcm.util';\n\nconst pallet = 'polkadotXcm';\n\nexport function polkadotXcm() {\n return {\n limitedReserveTransferAssets: () => {\n const func = 'limitedReserveTransferAssets';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n X1: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: {\n X1: {\n PalletInstance: params.palletInstance,\n },\n },\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n X2: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) => {\n const isAssetDifferent =\n !!params.feeAsset && params.asset !== params.feeAsset;\n const asset = [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: {\n X2: [\n {\n PalletInstance: params.palletInstance,\n },\n {\n GeneralIndex: params.asset,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ];\n\n if (isAssetDifferent) {\n asset.push({\n id: {\n Concrete: {\n parents: 0,\n interior: {\n X2: [\n {\n PalletInstance: params.palletInstance,\n },\n {\n GeneralIndex: params.feeAsset,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: params.fee,\n },\n });\n }\n\n return getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset,\n feeIndex: isAssetDifferent ? 1 : 0,\n });\n },\n }),\n }),\n };\n },\n limitedReserveWithdrawAssets: () => {\n const func = 'limitedReserveWithdrawAssets';\n\n return {\n X2: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: params.destination.parachainId,\n },\n {\n PalletInstance: params.palletInstance,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n };\n },\n };\n}\n","import { AnyChain } from '@moonbeam-network/xcm-types';\nimport { XcmVersion } from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicAccount } from '../../ExtrinsicBuilder.utils';\nimport { XTokensWeightLimit } from './xTokens.interfaces';\n\n/**\n * It is safer to always use unlimited\n */\nexport function getWeight(): XTokensWeightLimit {\n return 'Unlimited';\n}\n\nexport function getDestination(\n version: XcmVersion,\n address: string,\n destination: AnyChain,\n) {\n return {\n [version]: {\n parents: 1,\n // eslint-disable-next-line sort-keys\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n };\n}\n","/* eslint-disable sort-keys */\nimport {\n ExtrinsicConfigBuilder,\n XcmVersion,\n} from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicArgumentVersion } from '../../ExtrinsicBuilder.utils';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport { getDestination, getWeight } from './xTokens.utils';\n\nconst pallet = 'xTokens';\n\nexport function xTokens() {\n return {\n transfer: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: 'transfer',\n getArgs: (func) => {\n const version = getExtrinsicArgumentVersion(func, 2);\n\n return [\n asset,\n amount,\n getDestination(version, address, destination),\n getWeight(),\n ];\n },\n }),\n }),\n transferMultiAsset: (originParachainId: number) => {\n const funcName = 'transferMultiasset';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: funcName,\n getArgs: (func) => {\n const version = getExtrinsicArgumentVersion(func, 1);\n\n return [\n {\n [version]: {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: amount,\n },\n },\n },\n getDestination(version, address, destination),\n getWeight(),\n ];\n },\n }),\n }),\n X1: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: funcName,\n getArgs: (func) => {\n const version = getExtrinsicArgumentVersion(func, 1);\n\n return [\n {\n [version]: {\n id: {\n Concrete: {\n parents: 1,\n interior: {\n X1: {\n Parachain: originParachainId,\n },\n },\n },\n },\n fun: {\n Fungible: amount,\n },\n },\n },\n getDestination(version, address, destination),\n getWeight(),\n ];\n },\n }),\n }),\n X2: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: funcName,\n getArgs: (func) => {\n const version = getExtrinsicArgumentVersion(func, 1);\n\n return [\n {\n [version]: {\n id: {\n Concrete: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: originParachainId,\n },\n {\n GeneralKey: asset,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: amount,\n },\n },\n },\n getDestination(version, address, destination),\n getWeight(),\n ];\n },\n }),\n }),\n };\n },\n transferMultiCurrencies: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination, fee, feeAsset }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: 'transferMulticurrencies',\n getArgs: () => [\n [\n [asset, amount],\n [feeAsset, fee],\n ],\n 1,\n getDestination(XcmVersion.v3, address, destination),\n getWeight(),\n ],\n }),\n }),\n };\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicAccount } from '../../ExtrinsicBuilder.utils';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\n\nconst pallet = 'xTransfer';\n\nexport function xTransfer() {\n return {\n transfer: () => {\n const method = 'transfer';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: method,\n getArgs: () => [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: amount,\n },\n },\n {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n {\n refTime: 5_000_000_000,\n proofSize: 0,\n },\n ],\n }),\n }),\n X2: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, destination, palletInstance }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: method,\n getArgs: () => [\n {\n id: {\n Concrete: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n {\n PalletInstance: palletInstance,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: amount || 1n,\n },\n },\n {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n {\n refTime: 5_000_000_000,\n proofSize: 0,\n },\n ],\n }),\n }),\n };\n },\n };\n}\n","/* eslint-disable sort-keys */\nimport {\n ExtrinsicConfigBuilder,\n Parents,\n} from '../../ExtrinsicBuilder.interfaces';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport { getPolkadotXcmExtrinsicArgs } from '../polkadotXcm/polkadotXcm.util';\n\nconst pallet = 'xcmPallet';\n\nexport function xcmPallet() {\n return {\n limitedReserveTransferAssets: (parents: Parents = 1) => {\n const func = 'limitedReserveTransferAssets';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n parents,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n };\n },\n };\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { eqBalances } from './pallets/eqBalances';\nimport { polkadotXcm } from './pallets/polkadotXcm';\nimport { xTokens } from './pallets/xTokens';\nimport { xTransfer } from './pallets/xTransfer';\nimport { xcmPallet } from './pallets/xcmPallet';\n\nexport function ExtrinsicBuilder() {\n return {\n eqBalances,\n xTokens,\n xTransfer,\n polkadotXcm,\n xcmPallet,\n };\n}\n","import { ApiPromise } from '@polkadot/api';\nimport { CallType } from '../../builder.interfaces';\n\nexport interface SubstrateCallConfigConstructorParams {\n api: ApiPromise;\n call: () => Promise<bigint>;\n}\n\nexport class SubstrateCallConfig {\n readonly api: ApiPromise;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly call: () => Promise<any>;\n\n readonly type = CallType.Substrate;\n\n constructor({ api, call }: SubstrateCallConfigConstructorParams) {\n this.api = api;\n this.call = call;\n }\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { Option, u128 } from '@polkadot/types';\nimport { SubstrateCallConfig } from '../types/substrate/SubstrateCallConfig';\nimport { FeeConfigBuilder } from './FeeBuilder.interfaces';\n\nexport function FeeBuilder() {\n return {\n assetManager,\n };\n}\n\nfunction assetManager() {\n return {\n assetTypeUnitsPerSecond: (weight = 1_000_000_000): FeeConfigBuilder => ({\n build: ({ api, asset }) =>\n new SubstrateCallConfig({\n api,\n call: async (): Promise<bigint> => {\n const type = (await api.query.assetManager.assetIdType(\n asset,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n )) as unknown as Option<any>;\n\n if (type.isNone) {\n throw new Error(`No asset type found for asset ${asset}`);\n }\n\n const unwrappedType = type.unwrap();\n\n const res = (await api.query.assetManager.assetTypeUnitsPerSecond(\n unwrappedType,\n )) as unknown as Option<u128>;\n\n const unitsPerSecond = res.unwrapOrDefault().toBigInt();\n\n return (BigInt(weight) * unitsPerSecond) / BigInt(10 ** 12);\n },\n }),\n }),\n };\n}\n"],"mappings":"yaAAA,IAAAA,GAAA,GAAAC,EAAAD,GAAA,qBAAAE,EAAA,mBAAAC,EAAA,eAAAC,EAAA,aAAAC,EAAA,oBAAAC,EAAA,mBAAAC,EAAA,qBAAAC,GAAA,oBAAAC,EAAA,eAAAC,GAAA,yBAAAC,EAAA,eAAAC,EAAA,QAAAC,EAAA,cAAAC,IAAA,eAAAC,EAAAf,IAAA,IAAAgB,GAAO,iCCAA,IAAKC,OACVA,EAAA,IAAM,MACNA,EAAA,UAAY,YAFFA,OAAA,ICQL,IAAMC,EAAN,KAAiB,CACb,OAEA,KAEA,KAET,YAAY,CAAE,OAAAC,EAAQ,KAAAC,EAAM,KAAAC,CAAK,EAAgC,CAC/D,KAAK,OAASF,EACd,KAAK,KAAOC,EACZ,KAAK,KAAOC,CACd,CACF,ECRO,IAAMC,EAAN,cAAmCC,CAAW,CAE1C,KAGA,UAET,YAAY,CACV,KAAAC,EAAO,CAAC,EACR,UAAAC,EACA,KAAAC,cACA,GAAGC,CACL,EAAiC,CAC/B,MAAM,CAAE,GAAGA,EAAO,KAAAD,CAAK,CAAC,EAExB,KAAK,KAAOF,EACZ,KAAK,UAAYC,CACnB,CACF,ECtBO,SAASG,GAAkB,CAChC,MAAO,CACL,cAAAC,EACA,OAAAC,CACF,CACF,CAEA,SAASD,GAAgB,CACvB,IAAME,EAAS,gBACf,MAAO,CACL,eAAgB,KAA8B,CAC5C,MAAO,CAAC,CAAE,MAAAC,CAAM,IACd,IAAIC,EAAqB,CACvB,OAAQF,EACR,KAAM,iBACN,KAAM,CAACC,CAAK,EAEZ,UAAW,MAAOE,GAChBA,EAAS,gBAAgB,EAAE,eAAe,SAAS,CACvD,CAAC,CACL,GACA,kBAAmB,KAA8B,CAC/C,MAAO,CAAC,CAAE,MAAAF,CAAM,IACd,IAAIC,EAAqB,CACvB,OAAQF,EACR,KAAM,oBACN,KAAM,CAACC,CAAK,EAEZ,UAAW,MAAOE,GAChBA,EAAS,gBAAgB,EAAE,eAAe,SAAS,CACvD,CAAC,CACL,EACF,CACF,CAEA,SAASJ,GAAS,CAChB,MAAO,CACL,MAAO,KAA8B,CACnC,MAAO,CAAC,CAAE,MAAAE,CAAM,IACd,IAAIC,EAAqB,CACvB,OAAQ,SACR,KAAM,QACN,KAAM,CAACD,CAAK,EACZ,UAAW,MACTE,GAEAA,EAAS,gBAAgB,EAAE,WAAW,SAAS,CACnD,CAAC,CACL,EACF,CACF,CCjDA,IAAAC,EAAyB,0BCPzB,IAAAC,EAAqC,uCACrCC,EAAmC,0BACnCC,EAA8B,iCCMvB,IAAMC,EAAN,cAA6BC,CAAW,CAEpC,KAEA,QAET,YAAY,CAAE,KAAAC,EAAM,QAAAC,EAAS,GAAGC,CAAM,EAAoC,CACxE,MAAM,CAAE,GAAGA,EAAO,UAAmB,CAAC,EAEtC,KAAK,KAAOF,EACZ,KAAK,QAAUC,CACjB,CACF,EDdA,IAAME,EAAW,sBAEV,SAASC,GAAU,CACxB,MAAO,CACL,SAAU,CAACC,EAASF,KAAqC,CACvD,MAAO,CAAC,CAAE,QAAAG,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,CAAY,IAC5C,IAAIC,EAAe,CACjB,KAAM,IACJ,YAASF,CAAK,KAAI,wBAAqBA,CAAK,EAAIA,EAChDD,EACAI,EAA4BL,EAASG,CAAW,EAChDJ,CACF,EACA,KAAM,WACN,OAAQ,SACV,CAAC,CACL,GACA,wBAAyB,CAACA,EAASF,KAAqC,CACtE,MAAO,CAAC,CAAE,QAAAG,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,EAAa,IAAAG,EAAK,SAAAC,CAAS,IAC3D,IAAIH,EAAe,CACjB,KAAM,CACJ,CACE,IAAC,YAASF,CAAK,KAAI,wBAAqBA,CAAK,EAAIA,EAAOD,CAAM,EAC9D,IACE,YAASM,CAAQ,KAAI,wBAAqBA,CAAQ,EAAIA,EACtDD,CACF,CACF,EACA,EACAD,EAA4BL,EAASG,CAAW,EAChDJ,CACF,EACA,KAAM,0BACN,OAAQ,SACV,CAAC,CACL,EACF,CACF,CAmCA,SAASM,EACPL,EACAG,EAC0B,CAO1B,IAAMK,EAAM,KADQL,EAAY,eAAe,EAAI,KAAO,IAC9B,MAAG,eAC7B,iBAAcH,CAAO,EACrB,GACA,EACF,CAAC,KAED,MAAO,CACL,EACAG,EAAY,YACR,CAAC,YAAYA,EAAY,YAAY,SAAS,EAAE,CAAC,GAAIK,CAAG,EACxD,CAACA,CAAG,CACV,CACF,CEpGO,SAASC,GAAkB,CAChC,MAAO,CACL,QAAAC,CACF,CACF,CHaO,SAASC,GAAiB,CAC/B,MAAO,CACL,IAAAC,EACA,UAAAC,CACF,CACF,CAEO,SAASD,GAAM,CACpB,MAAO,CACL,MAAAE,CACF,CACF,CAEO,SAASD,GAAY,CAC1B,MAAO,CACL,OAAAE,GACA,OAAAC,GACA,OAAAC,EACF,CACF,CAEA,SAASH,GAA8B,CACrC,MAAO,CACL,MAAO,CAAC,CAAE,QAAAI,EAAS,MAAAC,CAAM,IAAM,CAC7B,GAAI,CAACA,GAAS,IAAC,YAASA,CAAK,EAC3B,MAAM,IAAI,MAAM,6BAA6BA,CAAK,EAAE,EAGtD,OAAO,IAAIC,EAAe,CACxB,QAASD,EACT,KAAM,CAACD,CAAO,EACd,KAAM,YACN,OAAQ,OACV,CAAC,CACH,CACF,CACF,CAEA,SAASH,IAAS,CAChB,MAAO,CACL,QAAS,KAA6B,CACpC,MAAO,CAAC,CAAE,QAAAG,EAAS,MAAAC,CAAM,IACvB,IAAIE,EAAqB,CACvB,OAAQ,SACR,KAAM,UACN,KAAM,CAACF,EAAOD,CAAO,EACrB,UAAW,MACTI,GACoBA,EAAS,gBAAgB,EAAE,QAAQ,SAAS,CACpE,CAAC,CACL,EACF,CACF,CAEA,SAASN,IAAS,CAChB,MAAO,CACL,QAAS,KAA6B,CACpC,MAAO,CAAC,CAAE,QAAAE,CAAQ,IAChB,IAAIG,EAAqB,CACvB,OAAQ,SACR,KAAM,UACN,KAAM,CAACH,CAAO,EACd,UAAW,MACTI,GACoB,CACpB,IAAMC,EAAUD,EAAS,KAEnBE,EAASD,EAAQ,YAAcA,EAAQ,OAE7C,OAAO,OAAOA,EAAQ,KAAK,IAAIC,CAAM,EAAE,SAAS,CAAC,CACnD,CACF,CAAC,CACL,GACA,mBAAoB,KAA6B,CAC/C,MAAO,CAAC,CAAE,QAAAN,EAAS,MAAAC,CAAM,IACvB,IAAIE,EAAqB,CACvB,OAAQ,SACR,KAAM,UACN,KAAM,CAACH,CAAO,EACd,UAAW,MAAOI,GAA8B,CAlG1D,IAAAG,EAmGY,GAAIH,EAAS,KAAK,QAChB,OAAO,GAGT,IAAMI,EAAMJ,EAAS,KAAK,OAAO,EAC7BK,EAYJ,GAVI,MAAM,QAAQD,CAAG,IACnBC,EAAWD,GAIT,MAAM,SAASD,EAAAC,GAAA,YAAAA,EAAa,KAAb,YAAAD,EAAiB,OAAO,IAEzCE,EAAYD,EAAY,GAAG,SAGzB,CAACC,EACH,MAAM,IAAI,MAAM,0CAA0C,EAG5D,IAAMJ,EAAUI,EAAS,KAAK,CAAC,CAACC,CAAO,IAAMA,IAAYT,CAAK,EAE9D,OAAKI,EAIE,OAAOA,EAAQ,CAAC,EAAE,QAAQ,EAHxB,EAIX,CACF,CAAC,CACL,EACF,CACF,CAEA,SAASN,IAAS,CAChB,MAAO,CACL,SAAU,KAA6B,CACrC,MAAO,CAAC,CAAE,QAAAC,EAAS,MAAAC,CAAM,IACvB,IAAIE,EAAqB,CACvB,OAAQ,SACR,KAAM,WACN,KAAM,CAACH,EAASC,CAAK,EACrB,UAAW,MAAO,CAChB,KAAAU,EACA,OAAAL,CACF,IACE,OAAOK,EAAK,IAAIL,CAAM,EAAE,SAAS,CAAC,CACtC,CAAC,CACL,EACF,CACF,CIpJA,IAAAM,EAA2B,2BAC3BC,EAAyB,0BACzBC,EAA8B,iCCevB,IAAKC,OACVA,EAAA,GAAK,KACLA,EAAA,GAAK,KACLA,EAAA,GAAK,KAHKA,OAAA,IDZL,SAASC,EACdC,EACAC,EAAgB,EACJ,CACZ,GAAI,CAACD,EAAM,WAEX,GAAM,CAAE,KAAAE,CAAK,EAAIF,EAAK,KAAK,KAAKC,CAAK,EAC/BE,EAAWH,EAAK,KAAK,SAAS,WAAWE,EAAK,SAAS,CAAC,EACxDE,KAAM,cAAWD,GAAA,YAAAA,EAAU,WAAW,EAE5C,GAAI,CAACC,EAAI,IACP,WAGF,IAAMC,EAAW,MAAM,QAAQD,EAAI,GAAG,EAClCA,EAAI,IAAI,IAAKE,GAAMA,EAAE,IAAI,EACzB,CAACF,EAAI,IAAI,IAAI,EAEjB,GAAIC,EAAS,aAAsB,EACjC,WAGF,GAAIA,EAAS,aAAsB,EACjC,WAGF,GAAIA,EAAS,aAAsB,EACjC,WAGF,MAAM,IAAI,MAAM,wBAAwB,CAC1C,CAEO,SAASE,EAAoBC,EAAiB,CAGnD,OAFqBA,EAAQ,SAAW,IAAMA,EAAQ,WAAW,IAAI,EAGjE,CACE,aAAc,CACZ,IAAKA,CACP,CACF,EACA,CACE,YAAa,CACX,MAAI,eAAS,iBAAcA,CAAO,CAAC,EACnC,QAAS,IACX,CACF,CACN,CE5CO,IAAMC,EAAN,cAA8BC,CAAW,CAE9C,QAEA,YAAY,CAAE,QAAAC,EAAS,GAAGC,CAAM,EAAqC,CACnE,MAAM,CAAE,GAAGA,EAAO,gBAAyB,CAAC,EAE5C,KAAK,QAAUD,CACjB,CACF,ECRA,IAAME,EAAS,aAER,SAASC,GAAa,CAC3B,MAAO,CACL,YAAa,KAA+B,CAC1C,MAAO,CAAC,CAAE,QAAAC,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,CAAY,IAC5C,IAAIC,EAAgB,CAClB,OAAQN,EACR,KAAM,cACN,QAAS,IAAM,CACbI,EACAD,EACA,CACE,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWE,EAAY,WACzB,EACAE,EAAoBL,CAAO,CAC7B,CACF,CACF,EACA,gBACF,CACF,CAAC,CACL,GACA,YAAa,KAA+B,CAC1C,MAAO,CAAC,CAAE,QAAAA,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,EAAa,IAAAG,EAAK,SAAAC,CAAS,IAC3D,IAAIH,EAAgB,CAClB,OAAQN,EACR,KAAM,cACN,QAAS,IAAM,CACb,IAAMU,EAAmBP,EAASK,EAAM,GAAKL,EAASK,EAAM,GAE5D,MAAO,CACL,CAACJ,EAAOA,IAAUK,EAAWC,EAAmBP,CAAM,EACtD,CAACM,EAAUD,CAAG,EACd,CACE,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWH,EAAY,WACzB,EACAE,EAAoBL,CAAO,CAC7B,CACF,CACF,CACF,CACF,CACF,CAAC,CACL,EACF,CACF,CC9CO,SAASS,EAA4B,CAC1C,MAAAC,EACA,QAAAC,EACA,YAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,EACV,SAAAC,EAAW,CAEb,EAA8B,CAE5B,IAAMC,EAAUC,EAA4BJ,CAAI,EAEhD,MAAO,CACL,CACE,CAACG,CAAO,EAAG,CACT,QAAAF,EACA,SAAU,CACR,GAAI,CACF,UAAWF,EAAY,WACzB,CACF,CACF,CACF,EACA,CACE,CAACI,CAAO,EAAG,CACT,QAAS,EACT,SAAU,CACR,GAAIE,EAAoBP,CAAO,CACjC,CACF,CACF,EACA,CACE,CAACK,CAAO,EAAGN,CACb,EACAK,EACA,WACF,CACF,CCnDA,IAAMI,EAAS,cAER,SAASC,GAAc,CAC5B,MAAO,CACL,6BAA8B,IAAM,CAClC,IAAMC,EAAO,+BAEb,MAAO,CACL,KAAM,KAA+B,CACnC,MAAQC,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,KAAME,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,MACZ,CACF,EACA,IAAK,CACH,SAAUF,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAQA,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,KAAME,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,eAAgBF,EAAO,cACzB,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUA,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAQA,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GAAsB,CAC9B,IAAME,EACJ,CAAC,CAACJ,EAAO,UAAYA,EAAO,QAAUA,EAAO,SACzCK,EAAQ,CACZ,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,eAAgBL,EAAO,cACzB,EACA,CACE,aAAcA,EAAO,KACvB,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUA,EAAO,MACnB,CACF,CACF,EAEA,OAAII,GACFC,EAAM,KAAK,CACT,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CA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","names":["src_exports","__export","AssetMinBuilder","BalanceBuilder","BaseConfig","CallType","ContractBuilder","ContractConfig","ExtrinsicBuilder","ExtrinsicConfig","FeeBuilder","SubstrateQueryConfig","XcmVersion","evm","substrate","__toCommonJS","import_api_augment","CallType","BaseConfig","module","func","type","SubstrateQueryConfig","BaseConfig","args","transform","type","other","AssetMinBuilder","assetRegistry","assets","pallet","asset","SubstrateQueryConfig","response","import_util","import_xcm_utils","import_util","import_util_crypto","ContractConfig","BaseConfig","args","address","other","U_64_MAX","Xtokens","weight","address","amount","asset","destination","ContractConfig","getDestinationMultilocation","fee","feeAsset","acc","ContractBuilder","Xtokens","BalanceBuilder","evm","substrate","erc20","assets","system","tokens","address","asset","ContractConfig","SubstrateQueryConfig","response","balance","frozen","_a","res","balances","assetId","free","import_types","import_util","import_util_crypto","XcmVersion","getExtrinsicArgumentVersion","func","index","type","instance","raw","versions","x","getExtrinsicAccount","address","ExtrinsicConfig","BaseConfig","getArgs","other","pallet","eqBalances","address","amount","asset","destination","ExtrinsicConfig","getExtrinsicAccount","fee","feeAsset","amountWithoutFee","getPolkadotXcmExtrinsicArgs","asset","address","destination","func","parents","feeIndex","version","getExtrinsicArgumentVersion","getExtrinsicAccount","pallet","polkadotXcm","func","params","ExtrinsicConfig","extrinsicFunction","getPolkadotXcmExtrinsicArgs","isAssetDifferent","asset","getWeight","getDestination","version","address","destination","getExtrinsicAccount","pallet","xTokens","address","amount","asset","destination","ExtrinsicConfig","func","version","getExtrinsicArgumentVersion","getDestination","getWeight","originParachainId","funcName","fee","feeAsset","pallet","xTransfer","method","address","amount","destination","ExtrinsicConfig","getExtrinsicAccount","palletInstance","pallet","xcmPallet","parents","func","params","ExtrinsicConfig","extrinsicFunction","getPolkadotXcmExtrinsicArgs","ExtrinsicBuilder","eqBalances","xTokens","xTransfer","polkadotXcm","xcmPallet","SubstrateCallConfig","api","call","FeeBuilder","assetManager","weight","api","asset","SubstrateCallConfig","type","unwrappedType","unitsPerSecond"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/builder.interfaces.ts","../src/types/BaseConfig.ts","../src/types/substrate/SubstrateQueryConfig.ts","../src/asset-min/AssetMinBuilder.ts","../src/balance/BalanceBuilder.ts","../src/contract/contracts/Xtokens/Xtokens.ts","../src/contract/ContractConfig.ts","../src/contract/ContractBuilder.ts","../src/extrinsic/ExtrinsicBuilder.utils.ts","../src/extrinsic/ExtrinsicBuilder.interfaces.ts","../src/extrinsic/ExtrinsicConfig.ts","../src/extrinsic/pallets/eqBalances/eqBalances.ts","../src/extrinsic/pallets/polkadotXcm/polkadotXcm.util.ts","../src/extrinsic/pallets/polkadotXcm/polkadotXcm.ts","../src/extrinsic/pallets/xTokens/xTokens.utils.ts","../src/extrinsic/pallets/xTokens/xTokens.ts","../src/extrinsic/pallets/xTransfer/xTransfer.ts","../src/extrinsic/pallets/xcmPallet/xcmPallet.ts","../src/extrinsic/ExtrinsicBuilder.ts","../src/types/substrate/SubstrateCallConfig.ts","../src/fee/FeeBuilder.ts"],"sourcesContent":["import '@polkadot/api-augment';\n\nexport * from './asset-min';\nexport * from './balance';\nexport * from './builder.interfaces';\nexport * from './contract';\nexport * from './extrinsic';\nexport * from './fee';\nexport * from './types/BaseConfig';\nexport * from './types/substrate/SubstrateQueryConfig';\n","export enum CallType {\n Evm = 'Evm',\n Substrate = 'Substrate',\n}\n","import { CallType } from '../builder.interfaces';\n\nexport interface BaseConfigConstructorParams {\n module: string;\n func: string;\n type: CallType;\n}\n\nexport class BaseConfig {\n readonly module: string;\n\n readonly func: string;\n\n readonly type: CallType;\n\n constructor({ module, func, type }: BaseConfigConstructorParams) {\n this.module = module;\n this.func = func;\n this.type = type;\n }\n}\n","import { SetOptional } from '@moonbeam-network/xcm-types';\nimport { CallType } from '../../builder.interfaces';\nimport { BaseConfig, BaseConfigConstructorParams } from '../BaseConfig';\n\nexport interface QueryConfigConstructorParams\n extends SetOptional<BaseConfigConstructorParams, 'type'> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args?: any[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transform: (data: any) => Promise<bigint>;\n}\n\nexport class SubstrateQueryConfig extends BaseConfig {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly args: any[];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly transform: (data: any) => Promise<bigint>;\n\n constructor({\n args = [],\n transform,\n type = CallType.Substrate,\n ...other\n }: QueryConfigConstructorParams) {\n super({ ...other, type });\n\n this.args = args;\n this.transform = transform;\n }\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { Option } from '@polkadot/types';\nimport { PalletAssetsAssetDetails } from '@polkadot/types/lookup';\nimport { SubstrateQueryConfig } from '../types/substrate/SubstrateQueryConfig';\nimport { AssetMinConfigBuilder } from './AssetMinBuilder.interfaces';\n\nexport function AssetMinBuilder() {\n return {\n assetRegistry,\n assets,\n };\n}\n\nfunction assetRegistry() {\n const pallet = 'assetRegistry';\n return {\n assetMetadatas: (): AssetMinConfigBuilder => ({\n build: ({ asset }) =>\n new SubstrateQueryConfig({\n module: pallet,\n func: 'assetMetadatas',\n args: [asset],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transform: async (response: Option<any>): Promise<bigint> =>\n response.unwrapOrDefault().minimalBalance.toBigInt(),\n }),\n }),\n currencyMetadatas: (): AssetMinConfigBuilder => ({\n build: ({ asset }) =>\n new SubstrateQueryConfig({\n module: pallet,\n func: 'currencyMetadatas',\n args: [asset],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transform: async (response: Option<any>): Promise<bigint> =>\n response.unwrapOrDefault().minimalBalance.toBigInt(),\n }),\n }),\n };\n}\n\nfunction assets() {\n return {\n asset: (): AssetMinConfigBuilder => ({\n build: ({ asset }) =>\n new SubstrateQueryConfig({\n module: 'assets',\n func: 'asset',\n args: [asset],\n transform: async (\n response: Option<PalletAssetsAssetDetails>,\n ): Promise<bigint> =>\n response.unwrapOrDefault().minBalance.toBigInt(),\n }),\n }),\n };\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { Option } from '@polkadot/types';\nimport {\n FrameSystemAccountInfo,\n PalletAssetsAssetAccount,\n PalletBalancesAccountData,\n} from '@polkadot/types/lookup';\nimport { isString } from '@polkadot/util';\nimport { evmToAddress } from '@polkadot/util-crypto';\nimport { ContractConfig } from '../contract';\nimport { SubstrateQueryConfig } from '../types/substrate/SubstrateQueryConfig';\nimport {\n BalanceConfigBuilder,\n EquilibriumSystemBalanceData,\n PalletBalancesAccountDataOld,\n TokensPalletAccountData,\n} from './BalanceBuilder.interfaces';\n\nexport function BalanceBuilder() {\n return {\n evm,\n substrate,\n };\n}\n\nexport function evm() {\n return {\n erc20,\n };\n}\n\nexport function substrate() {\n return {\n assets,\n system,\n tokens,\n };\n}\n\nfunction erc20(): BalanceConfigBuilder {\n return {\n build: ({ address, asset }) => {\n if (!asset || !isString(asset)) {\n throw new Error(`Invalid contract address: ${asset}`);\n }\n\n return new ContractConfig({\n address: asset,\n args: [address],\n func: 'balanceOf',\n module: 'Erc20',\n });\n },\n };\n}\n\nfunction assets() {\n return {\n account: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) =>\n new SubstrateQueryConfig({\n module: 'assets',\n func: 'account',\n args: [asset, address],\n transform: async (\n response: Option<PalletAssetsAssetAccount>,\n ): Promise<bigint> => response.unwrapOrDefault().balance.toBigInt(),\n }),\n }),\n };\n}\n\nfunction system() {\n return {\n account: (): BalanceConfigBuilder => ({\n build: ({ address }) =>\n new SubstrateQueryConfig({\n module: 'system',\n func: 'account',\n args: [address],\n transform: async (\n response: FrameSystemAccountInfo,\n ): Promise<bigint> => {\n const balance = response.data as PalletBalancesAccountData &\n PalletBalancesAccountDataOld;\n const frozen = balance.miscFrozen ?? balance.frozen;\n\n return BigInt(balance.free.sub(frozen).toString());\n },\n }),\n }),\n accountEquilibrium: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) =>\n new SubstrateQueryConfig({\n module: 'system',\n func: 'account',\n args: [address],\n transform: async (response): Promise<bigint> => {\n if (response.data.isEmpty) {\n return 0n;\n }\n\n const res = response.data.toJSON() as unknown;\n let balances: EquilibriumSystemBalanceData | undefined;\n\n if (Array.isArray(res)) {\n balances = res;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (Array.isArray((res as any)?.v0?.balance)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n balances = (res as any).v0.balance;\n }\n\n if (!balances) {\n throw new Error(\"Can't get balance from Equilibrium chain\");\n }\n\n const balance = balances.find(([assetId]) => assetId === asset);\n\n if (!balance) {\n return 0n;\n }\n\n return BigInt(balance[1].positive);\n },\n }),\n }),\n accountEvmTo32: (): BalanceConfigBuilder => ({\n build: ({ address }) => {\n const substrateAddress = evmToAddress(address);\n\n return new SubstrateQueryConfig({\n module: 'system',\n func: 'account',\n args: [substrateAddress],\n transform: async (\n response: FrameSystemAccountInfo,\n ): Promise<bigint> => {\n const balance = response.data as PalletBalancesAccountData &\n PalletBalancesAccountDataOld;\n const frozen = balance.miscFrozen ?? balance.frozen;\n\n return BigInt(balance.free.sub(frozen).toString());\n },\n });\n },\n }),\n };\n}\n\nfunction tokens() {\n return {\n accounts: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) =>\n new SubstrateQueryConfig({\n module: 'tokens',\n func: 'accounts',\n args: [address, asset],\n transform: async ({\n free,\n frozen,\n }: TokensPalletAccountData): Promise<bigint> =>\n BigInt(free.sub(frozen).toString()),\n }),\n }),\n };\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { AnyChain } from '@moonbeam-network/xcm-types';\nimport { formatAssetIdToERC20 } from '@moonbeam-network/xcm-utils';\nimport { isString, u8aToHex } from '@polkadot/util';\nimport { decodeAddress, evmToAddress } from '@polkadot/util-crypto';\nimport { ContractConfigBuilder } from '../../ContractBuilder.interfaces';\nimport { ContractConfig } from '../../ContractConfig';\n\nconst U_64_MAX = 18446744073709551615n;\n\nexport function Xtokens() {\n return {\n transfer: (weight = U_64_MAX): ContractConfigBuilder => ({\n build: ({ address, amount, asset, destination }) =>\n new ContractConfig({\n args: [\n isString(asset) ? formatAssetIdToERC20(asset) : asset,\n amount,\n getDestinationMultilocation(address, destination),\n weight,\n ],\n func: 'transfer',\n module: 'Xtokens',\n }),\n }),\n transferMultiCurrencies: (weight = U_64_MAX): ContractConfigBuilder => ({\n build: ({ address, amount, asset, destination, fee, feeAsset }) =>\n new ContractConfig({\n args: [\n [\n [isString(asset) ? formatAssetIdToERC20(asset) : asset, amount],\n [\n isString(feeAsset) ? formatAssetIdToERC20(feeAsset) : feeAsset,\n fee,\n ],\n ],\n 1, // index of the fee asset\n getDestinationMultilocation(address, destination),\n weight,\n ],\n func: 'transferMultiCurrencies',\n module: 'Xtokens',\n }),\n }),\n transferWithEvmTo32: (weight = U_64_MAX): ContractConfigBuilder => ({\n build: ({ address, amount, asset, destination }) => {\n const multilocation =\n getDestinationMultilocationForPrecompileDestination(\n address,\n destination,\n );\n\n return new ContractConfig({\n args: [\n isString(asset) ? formatAssetIdToERC20(asset) : asset,\n amount,\n multilocation,\n weight,\n ],\n func: 'transfer',\n module: 'Xtokens',\n });\n },\n }),\n };\n}\n\ntype DestinationMultilocation = [\n /**\n * 1 - if transaction is going through a relay chain\n */\n 1,\n (\n | [\n /**\n * example '0x00000007DC'\n * 7DC - parachain id in hex\n * can be found here:\n * - https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fkusama-rpc.polkadot.io#/parachains\n * - https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/parachains\n */\n string,\n /**\n * example '0x01%account%00',\n * enum = 01 (AccountId32)\n * networkId = 00 (any)\n */\n string,\n ]\n | [\n /**\n * example '0x01%account%00',\n * enum = 01 (AccountId32)\n * networkId = 00 (any)\n */\n string,\n ]\n ),\n];\n\nfunction getDestinationMultilocationForPrecompileDestination(\n address: string,\n destination: AnyChain,\n): DestinationMultilocation {\n /* \n 01: AccountId32\n 03: AccountKey20\n https://docs.moonbeam.network/builders/interoperability/xcm/xc20/xtokens/#building-the-precompile-multilocation\n */\n const accountType = '01';\n const substrateAddress = evmToAddress(address);\n const acc = `0x${accountType}${u8aToHex(\n decodeAddress(substrateAddress),\n -1,\n false,\n )}00`;\n\n return [\n 1,\n destination.parachainId\n ? [`0x0000000${destination.parachainId.toString(16)}`, acc]\n : [acc],\n ];\n}\n\nfunction getDestinationMultilocation(\n address: string,\n destination: AnyChain,\n): DestinationMultilocation {\n /* \n 01: AccountId32\n 03: AccountKey20\n https://docs.moonbeam.network/builders/interoperability/xcm/xc20/xtokens/#building-the-precompile-multilocation\n */\n const accountType = destination.isEvmParachain() ? '03' : '01';\n const acc = `0x${accountType}${u8aToHex(\n decodeAddress(address),\n -1,\n false,\n )}00`;\n\n return [\n 1,\n destination.parachainId\n ? [`0x0000000${destination.parachainId.toString(16)}`, acc]\n : [acc],\n ];\n}\n","import { CallType } from '../builder.interfaces';\nimport { BaseConfig, BaseConfigConstructorParams } from '../types/BaseConfig';\n\nexport interface ContractConfigConstructorParams\n extends Omit<BaseConfigConstructorParams, 'type'> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args: any[];\n address?: string;\n}\n\nexport class ContractConfig extends BaseConfig {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly args: any[];\n\n readonly address?: string;\n\n constructor({ args, address, ...other }: ContractConfigConstructorParams) {\n super({ ...other, type: CallType.Evm });\n\n this.args = args;\n this.address = address;\n }\n}\n","import { Xtokens } from './contracts/Xtokens';\n\nexport function ContractBuilder() {\n return {\n Xtokens,\n };\n}\n","import { SubmittableExtrinsicFunction } from '@polkadot/api/types';\nimport { getTypeDef } from '@polkadot/types';\nimport { u8aToHex } from '@polkadot/util';\nimport { decodeAddress } from '@polkadot/util-crypto';\nimport { XcmVersion } from './ExtrinsicBuilder.interfaces';\n\nexport function getExtrinsicArgumentVersion(\n func?: SubmittableExtrinsicFunction<'promise'>,\n index: number = 0,\n): XcmVersion {\n if (!func) return XcmVersion.v1;\n\n const { type } = func.meta.args[index];\n const instance = func.meta.registry.createType(type.toString());\n const raw = getTypeDef(instance?.toRawType());\n\n if (!raw.sub) {\n return XcmVersion.v1;\n }\n\n const versions = Array.isArray(raw.sub)\n ? raw.sub.map((x) => x.name)\n : [raw.sub.name];\n\n if (versions.includes(XcmVersion.v1)) {\n return XcmVersion.v1;\n }\n\n if (versions.includes(XcmVersion.v2)) {\n return XcmVersion.v2;\n }\n\n if (versions.includes(XcmVersion.v3)) {\n return XcmVersion.v3;\n }\n\n throw new Error(\"Can't find Xcm version\");\n}\n\nexport function getExtrinsicAccount(address: string) {\n const isEthAddress = address.length === 42 && address.startsWith('0x');\n\n return isEthAddress\n ? {\n AccountKey20: {\n key: address,\n },\n }\n : {\n AccountId32: {\n id: u8aToHex(decodeAddress(address)),\n network: null,\n },\n };\n}\n","import { AnyChain, ChainAssetId } from '@moonbeam-network/xcm-types';\nimport { ExtrinsicConfig } from './ExtrinsicConfig';\n\nexport interface ExtrinsicConfigBuilder {\n build: (params: ExtrinsicConfigBuilderPrams) => ExtrinsicConfig;\n}\n\nexport interface ExtrinsicConfigBuilderPrams {\n address: string;\n amount: bigint;\n asset: ChainAssetId;\n destination: AnyChain;\n fee: bigint;\n feeAsset: ChainAssetId;\n palletInstance?: number;\n source: AnyChain;\n}\n\nexport enum XcmVersion {\n v1 = 'V1',\n v2 = 'V2',\n v3 = 'V3',\n}\n\nexport type Parents = 0 | 1;\n","import { SubmittableExtrinsicFunction } from '@polkadot/api/types';\nimport { CallType } from '../builder.interfaces';\nimport { BaseConfig, BaseConfigConstructorParams } from '../types/BaseConfig';\n\nexport interface ExtrinsicConfigConstructorParams\n extends Omit<BaseConfigConstructorParams, 'type'> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getArgs: (func?: SubmittableExtrinsicFunction<'promise'>) => any[];\n}\n\nexport class ExtrinsicConfig extends BaseConfig {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getArgs: (func?: SubmittableExtrinsicFunction<'promise'>) => any[];\n\n constructor({ getArgs, ...other }: ExtrinsicConfigConstructorParams) {\n super({ ...other, type: CallType.Substrate });\n\n this.getArgs = getArgs;\n }\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicAccount } from '../../ExtrinsicBuilder.utils';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\n\nexport enum EqBalancesFee {\n SovereignAccWillPay = 'SovereignAccWillPay',\n TargetChainAccWillPay = 'TargetChainAccWillPay',\n ThisAccWillPay = 'ThisAccWillPay',\n}\n\nconst pallet = 'eqBalances';\n\nexport function eqBalances() {\n return {\n xcmTransfer: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: 'xcmTransfer',\n getArgs: () => [\n asset,\n amount,\n {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n EqBalancesFee.ThisAccWillPay,\n ],\n }),\n }),\n transferXcm: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination, fee, feeAsset }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: 'transferXcm',\n getArgs: () => {\n const amountWithoutFee = amount - fee > 0n ? amount - fee : 0n;\n\n return [\n [asset, asset === feeAsset ? amountWithoutFee : amount],\n [feeAsset, fee],\n {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n ];\n },\n }),\n }),\n };\n}\n","/* eslint-disable sort-keys */\nimport { SubmittableExtrinsicFunction } from '@polkadot/api/types';\nimport {\n ExtrinsicConfigBuilderPrams,\n Parents,\n} from '../../ExtrinsicBuilder.interfaces';\nimport {\n getExtrinsicAccount,\n getExtrinsicArgumentVersion,\n} from '../../ExtrinsicBuilder.utils';\n\nexport interface GetExtrinsicParams extends ExtrinsicConfigBuilderPrams {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n asset: any;\n func?: SubmittableExtrinsicFunction<'promise'>;\n parents?: Parents;\n feeIndex?: number;\n}\n\nexport function getPolkadotXcmExtrinsicArgs({\n asset,\n address,\n destination,\n func,\n parents = 1,\n feeIndex = 0,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n}: GetExtrinsicParams): any[] {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const version = getExtrinsicArgumentVersion(func);\n\n return [\n {\n [version]: {\n parents,\n interior: {\n X1: {\n Parachain: destination.parachainId,\n },\n },\n },\n },\n {\n [version]: {\n parents: 0,\n interior: {\n X1: getExtrinsicAccount(address),\n },\n },\n },\n {\n [version]: asset,\n },\n feeIndex,\n 'Unlimited',\n ];\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport { getPolkadotXcmExtrinsicArgs } from './polkadotXcm.util';\n\nconst pallet = 'polkadotXcm';\n\nexport function polkadotXcm() {\n return {\n limitedReserveTransferAssets: () => {\n const func = 'limitedReserveTransferAssets';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n X1: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: {\n X1: {\n PalletInstance: params.palletInstance,\n },\n },\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n X2: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) => {\n const isAssetDifferent =\n !!params.feeAsset && params.asset !== params.feeAsset;\n const asset = [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: {\n X2: [\n {\n PalletInstance: params.palletInstance,\n },\n {\n GeneralIndex: params.asset,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ];\n\n if (isAssetDifferent) {\n asset.push({\n id: {\n Concrete: {\n parents: 0,\n interior: {\n X2: [\n {\n PalletInstance: params.palletInstance,\n },\n {\n GeneralIndex: params.feeAsset,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: params.fee,\n },\n });\n }\n\n return getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset,\n feeIndex: isAssetDifferent ? 1 : 0,\n });\n },\n }),\n }),\n };\n },\n limitedReserveWithdrawAssets: () => {\n const func = 'limitedReserveWithdrawAssets';\n\n return {\n X2: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: params.destination.parachainId,\n },\n {\n PalletInstance: params.palletInstance,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n };\n },\n };\n}\n","import { AnyChain } from '@moonbeam-network/xcm-types';\nimport { XcmVersion } from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicAccount } from '../../ExtrinsicBuilder.utils';\nimport { XTokensWeightLimit } from './xTokens.interfaces';\n\n/**\n * It is safer to always use unlimited\n */\nexport function getWeight(): XTokensWeightLimit {\n return 'Unlimited';\n}\n\nexport function getDestination(\n version: XcmVersion,\n address: string,\n destination: AnyChain,\n) {\n return {\n [version]: {\n parents: 1,\n // eslint-disable-next-line sort-keys\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n };\n}\n","/* eslint-disable sort-keys */\nimport {\n ExtrinsicConfigBuilder,\n XcmVersion,\n} from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicArgumentVersion } from '../../ExtrinsicBuilder.utils';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport { getDestination, getWeight } from './xTokens.utils';\n\nconst pallet = 'xTokens';\n\nexport function xTokens() {\n return {\n transfer: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: 'transfer',\n getArgs: (func) => {\n const version = getExtrinsicArgumentVersion(func, 2);\n\n return [\n asset,\n amount,\n getDestination(version, address, destination),\n getWeight(),\n ];\n },\n }),\n }),\n transferMultiAsset: (originParachainId: number) => {\n const funcName = 'transferMultiasset';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: funcName,\n getArgs: (func) => {\n const version = getExtrinsicArgumentVersion(func, 1);\n\n return [\n {\n [version]: {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: amount,\n },\n },\n },\n getDestination(version, address, destination),\n getWeight(),\n ];\n },\n }),\n }),\n X1: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: funcName,\n getArgs: (func) => {\n const version = getExtrinsicArgumentVersion(func, 1);\n\n return [\n {\n [version]: {\n id: {\n Concrete: {\n parents: 1,\n interior: {\n X1: {\n Parachain: originParachainId,\n },\n },\n },\n },\n fun: {\n Fungible: amount,\n },\n },\n },\n getDestination(version, address, destination),\n getWeight(),\n ];\n },\n }),\n }),\n X2: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: funcName,\n getArgs: (func) => {\n const version = getExtrinsicArgumentVersion(func, 1);\n\n return [\n {\n [version]: {\n id: {\n Concrete: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: originParachainId,\n },\n {\n GeneralKey: asset,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: amount,\n },\n },\n },\n getDestination(version, address, destination),\n getWeight(),\n ];\n },\n }),\n }),\n };\n },\n transferMultiCurrencies: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination, fee, feeAsset }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: 'transferMulticurrencies',\n getArgs: () => [\n [\n [asset, amount],\n [feeAsset, fee],\n ],\n 1,\n getDestination(XcmVersion.v3, address, destination),\n getWeight(),\n ],\n }),\n }),\n };\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicAccount } from '../../ExtrinsicBuilder.utils';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\n\nconst pallet = 'xTransfer';\n\nexport function xTransfer() {\n return {\n transfer: () => {\n const method = 'transfer';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: method,\n getArgs: () => [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: amount,\n },\n },\n {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n {\n refTime: 5_000_000_000,\n proofSize: 0,\n },\n ],\n }),\n }),\n X2: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, destination, palletInstance }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: method,\n getArgs: () => [\n {\n id: {\n Concrete: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n {\n PalletInstance: palletInstance,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: amount || 1n,\n },\n },\n {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n {\n refTime: 5_000_000_000,\n proofSize: 0,\n },\n ],\n }),\n }),\n };\n },\n };\n}\n","/* eslint-disable sort-keys */\nimport {\n ExtrinsicConfigBuilder,\n Parents,\n} from '../../ExtrinsicBuilder.interfaces';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport { getPolkadotXcmExtrinsicArgs } from '../polkadotXcm/polkadotXcm.util';\n\nconst pallet = 'xcmPallet';\n\nexport function xcmPallet() {\n return {\n limitedReserveTransferAssets: (parents: Parents = 1) => {\n const func = 'limitedReserveTransferAssets';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n parents,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n };\n },\n };\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { eqBalances } from './pallets/eqBalances';\nimport { polkadotXcm } from './pallets/polkadotXcm';\nimport { xTokens } from './pallets/xTokens';\nimport { xTransfer } from './pallets/xTransfer';\nimport { xcmPallet } from './pallets/xcmPallet';\n\nexport function ExtrinsicBuilder() {\n return {\n eqBalances,\n xTokens,\n xTransfer,\n polkadotXcm,\n xcmPallet,\n };\n}\n","import { ApiPromise } from '@polkadot/api';\nimport { CallType } from '../../builder.interfaces';\n\nexport interface SubstrateCallConfigConstructorParams {\n api: ApiPromise;\n call: () => Promise<bigint>;\n}\n\nexport class SubstrateCallConfig {\n readonly api: ApiPromise;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly call: () => Promise<any>;\n\n readonly type = CallType.Substrate;\n\n constructor({ api, call }: SubstrateCallConfigConstructorParams) {\n this.api = api;\n this.call = call;\n }\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { Option, u128 } from '@polkadot/types';\nimport { SubstrateCallConfig } from '../types/substrate/SubstrateCallConfig';\nimport { FeeConfigBuilder } from './FeeBuilder.interfaces';\n\nexport function FeeBuilder() {\n return {\n assetManager,\n };\n}\n\nfunction assetManager() {\n return {\n assetTypeUnitsPerSecond: (weight = 1_000_000_000): FeeConfigBuilder => ({\n build: ({ api, asset }) =>\n new SubstrateCallConfig({\n api,\n call: async (): Promise<bigint> => {\n const type = (await api.query.assetManager.assetIdType(\n asset,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n )) as unknown as Option<any>;\n\n if (type.isNone) {\n throw new Error(`No asset type found for asset ${asset}`);\n }\n\n const unwrappedType = type.unwrap();\n\n const res = (await api.query.assetManager.assetTypeUnitsPerSecond(\n unwrappedType,\n )) as unknown as Option<u128>;\n\n const unitsPerSecond = res.unwrapOrDefault().toBigInt();\n\n return (BigInt(weight) * unitsPerSecond) / BigInt(10 ** 12);\n },\n }),\n }),\n };\n}\n"],"mappings":"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H,EACH,KAAME,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,MACZ,CACF,EACA,IAAK,CACH,SAAUF,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAQA,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,KAAME,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,eAAgBF,EAAO,cACzB,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUA,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAQA,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GAAsB,CAC9B,IAAME,EACJ,CAAC,CAACJ,EAAO,UAAYA,EAAO,QAAUA,EAAO,SACzCK,EAAQ,CACZ,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,eAAgBL,EAAO,cACzB,EACA,CACE,aAAcA,EAAO,KACvB,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUA,EAAO,MACnB,CACF,CACF,EAEA,OAAII,GACFC,EAAM,KAAK,CACT,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,eAAgBL,EAAO,cACzB,EACA,CACE,aAAcA,EAAO,QACvB,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUA,EAAO,GACnB,CACF,CAAC,EAGIG,EAA4B,CACjC,GAAGH,EACH,KAAME,EACN,MAAAG,EACA,SAAUD,EAAmB,EAAI,CACnC,CAAC,CACH,CACF,CAAC,CACL,EACF,CACF,EACA,6BAA8B,IAAM,CAClC,IAAML,EAAO,+BAEb,MAAO,CACL,GAAI,KAA+B,CACjC,MAAQC,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GACRC,EAA4B,CAC1B,GA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AAC,CAAY,IACrC,IAAIC,EAAgB,CAClB,OAAQN,EACR,KAAME,EACN,QAAS,IAAM,CACb,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,MACZ,CACF,EACA,IAAK,CACH,SAAUE,CACZ,CACF,EACA,CACE,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWC,EAAY,WACzB,EACAE,EAAoBJ,CAAO,CAC7B,CACF,CACF,EACA,CACE,QAAS,IACT,UAAW,CACb,CACF,CACF,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAO,CAAC,CAAE,QAAAA,EAAS,OAAAC,EAAQ,YAAAC,EAAa,eAAAG,CAAe,IACrD,IAAIF,EAAgB,CAClB,OAAQN,EACR,KAAME,EACN,QAAS,IAAM,CACb,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWG,EAAY,WACzB,EACA,CACE,eAAgBG,CAClB,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUJ,GAAU,EACtB,CACF,EACA,CACE,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWC,EAAY,WACzB,EACAE,EAAoBJ,CAAO,CAC7B,CACF,CACF,EACA,CACE,QAAS,IACT,UAAW,CACb,CACF,CACF,CAAC,CACL,EACF,CACF,CACF,CACF,CCvFA,IAAMM,GAAS,YAER,SAASC,GAAY,CAC1B,MAAO,CACL,6BAA8B,CAACC,EAAmB,IAAM,CACtD,IAAMC,EAAO,+BAEb,MAAO,CACL,KAAM,KAA+B,CACnC,MAAQC,GACN,IAAIC,EAAgB,CAClB,OAAQL,GACR,KAAAG,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,QAAAF,EACA,KAAMI,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,MACZ,CACF,EACA,IAAK,CACH,SAAUF,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,EACF,CACF,CACF,CACF,CCpCO,SAASI,IAAmB,CACjC,MAAO,CACL,WAAAC,EACA,QAAAC,EACA,UAAAC,EACA,YAAAC,EACA,UAAAC,CACF,CACF,CCTO,IAAMC,EAAN,KAA0B,CACtB,IAGA,KAEA,iBAET,YAAY,CAAE,IAAAC,EAAK,KAAAC,CAAK,EAAyC,CAC/D,KAAK,IAAMD,EACX,KAAK,KAAOC,CACd,CACF,ECbO,SAASC,IAAa,CAC3B,MAAO,CACL,aAAAC,EACF,CACF,CAEA,SAASA,IAAe,CACtB,MAAO,CACL,wBAAyB,CAACC,EAAS,OAAqC,CACtE,MAAO,CAAC,CAAE,IAAAC,EAAK,MAAAC,CAAM,IACnB,IAAIC,EAAoB,CACtB,IAAAF,EACA,KAAM,SAA6B,CACjC,IAAMG,EAAQ,MAAMH,EAAI,MAAM,aAAa,YACzCC,CAEF,EAEA,GAAIE,EAAK,OACP,MAAM,IAAI,MAAM,iCAAiCF,CAAK,EAAE,EAG1D,IAAMG,EAAgBD,EAAK,OAAO,EAM5BE,GAJO,MAAML,EAAI,MAAM,aAAa,wBACxCI,CACF,GAE2B,gBAAgB,EAAE,SAAS,EAEtD,OAAQ,OAAOL,CAAM,EAAIM,EAAkB,OAAO,IAAM,EAAE,CAC5D,CACF,CAAC,CACL,EACF,CACF","names":["src_exports","__export","AssetMinBuilder","BalanceBuilder","BaseConfig","CallType","ContractBuilder","ContractConfig","ExtrinsicBuilder","ExtrinsicConfig","FeeBuilder","SubstrateQueryConfig","XcmVersion","evm","substrate","__toCommonJS","import_api_augment","CallType","BaseConfig","module","func","type","SubstrateQueryConfig","BaseConfig","args","transform","type","other","AssetMinBuilder","assetRegistry","assets","pallet","asset","SubstrateQueryConfig","response","import_util","import_util_crypto","import_xcm_utils","import_util","import_util_crypto","ContractConfig","BaseConfig","args","address","other","U_64_MAX","Xtokens","weight","address","amount","asset","destination","ContractConfig","getDestinationMultilocation","fee","feeAsset","multilocation","getDestinationMultilocationForPrecompileDestination","accountType","substrateAddress","acc","ContractBuilder","Xtokens","BalanceBuilder","evm","substrate","erc20","assets","system","tokens","address","asset","ContractConfig","SubstrateQueryConfig","response","balance","frozen","_a","res","balances","assetId","substrateAddress","free","import_types","import_util","import_util_crypto","XcmVersion","getExtrinsicArgumentVersion","func","index","type","instance","raw","versions","x","getExtrinsicAccount","address","ExtrinsicConfig","BaseConfig","getArgs","other","pallet","eqBalances","address","amount","asset","destination","ExtrinsicConfig","getExtrinsicAccount","fee","feeAsset","amountWithoutFee","getPolkadotXcmExtrinsicArgs","asset","address","destination","func","parents","feeIndex","version","getExtrinsicArgumentVersion","getExtrinsicAccount","pallet","polkadotXcm","func","params","ExtrinsicConfig","extrinsicFunction","getPolkadotXcmExtrinsicArgs","isAssetDifferent","asset","getWeight","getDestination","version","address","destination","getExtrinsicAccount","pallet","xTokens","address","amount","asset","destination","ExtrinsicConfig","func","version","getExtrinsicArgumentVersion","getDestination","getWeight","originParachainId","funcName","fee","feeAsset","pallet","xTransfer","method","address","amount","destination","ExtrinsicConfig","getExtrinsicAccount","palletInstance","pallet","xcmPallet","parents","func","params","ExtrinsicConfig","extrinsicFunction","getPolkadotXcmExtrinsicArgs","ExtrinsicBuilder","eqBalances","xTokens","xTransfer","polkadotXcm","xcmPallet","SubstrateCallConfig","api","call","FeeBuilder","assetManager","weight","api","asset","SubstrateCallConfig","type","unwrappedType","unitsPerSecond"]}
|
package/build/index.d.cts
CHANGED
|
@@ -74,6 +74,7 @@ interface ContractConfigBuilderPrams {
|
|
|
74
74
|
declare function Xtokens(): {
|
|
75
75
|
transfer: (weight?: bigint) => ContractConfigBuilder;
|
|
76
76
|
transferMultiCurrencies: (weight?: bigint) => ContractConfigBuilder;
|
|
77
|
+
transferWithEvmTo32: (weight?: bigint) => ContractConfigBuilder;
|
|
77
78
|
};
|
|
78
79
|
|
|
79
80
|
declare function ContractBuilder(): {
|
|
@@ -124,6 +125,7 @@ declare function assets(): {
|
|
|
124
125
|
declare function system(): {
|
|
125
126
|
account: () => BalanceConfigBuilder;
|
|
126
127
|
accountEquilibrium: () => BalanceConfigBuilder;
|
|
128
|
+
accountEvmTo32: () => BalanceConfigBuilder;
|
|
127
129
|
};
|
|
128
130
|
declare function tokens(): {
|
|
129
131
|
accounts: () => BalanceConfigBuilder;
|
package/build/index.d.ts
CHANGED
|
@@ -85,6 +85,7 @@ interface ContractConfigBuilderPrams {
|
|
|
85
85
|
declare function Xtokens(): {
|
|
86
86
|
transfer: (weight?: bigint) => ContractConfigBuilder;
|
|
87
87
|
transferMultiCurrencies: (weight?: bigint) => ContractConfigBuilder;
|
|
88
|
+
transferWithEvmTo32: (weight?: bigint) => ContractConfigBuilder;
|
|
88
89
|
};
|
|
89
90
|
|
|
90
91
|
declare function ContractBuilder(): {
|
|
@@ -139,6 +140,7 @@ declare function assets(): {
|
|
|
139
140
|
declare function system(): {
|
|
140
141
|
account: () => BalanceConfigBuilder;
|
|
141
142
|
accountEquilibrium: () => BalanceConfigBuilder;
|
|
143
|
+
accountEvmTo32: () => BalanceConfigBuilder;
|
|
142
144
|
};
|
|
143
145
|
declare function tokens(): {
|
|
144
146
|
accounts: () => BalanceConfigBuilder;
|
package/build/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"@polkadot/api-augment";var x=(t=>(t.Evm="Evm",t.Substrate="Substrate",t))(x||{});var
|
|
1
|
+
import"@polkadot/api-augment";var x=(t=>(t.Evm="Evm",t.Substrate="Substrate",t))(x||{});var l=class{module;func;type;constructor({module:r,func:t,type:n}){this.module=r,this.func=t,this.type=n}};var c=class extends l{args;transform;constructor({args:r=[],transform:t,type:n="Substrate",...i}){super({...i,type:n}),this.args=r,this.transform=t}};function sr(){return{assetRegistry:W,assets:_}}function W(){let e="assetRegistry";return{assetMetadatas:()=>({build:({asset:r})=>new c({module:e,func:"assetMetadatas",args:[r],transform:async t=>t.unwrapOrDefault().minimalBalance.toBigInt()})}),currencyMetadatas:()=>({build:({asset:r})=>new c({module:e,func:"currencyMetadatas",args:[r],transform:async t=>t.unwrapOrDefault().minimalBalance.toBigInt()})})}}function _(){return{asset:()=>({build:({asset:e})=>new c({module:"assets",func:"asset",args:[e],transform:async r=>r.unwrapOrDefault().minBalance.toBigInt()})})}}import{isString as V}from"@polkadot/util";import{evmToAddress as $}from"@polkadot/util-crypto";import{formatAssetIdToERC20 as b}from"@moonbeam-network/xcm-utils";import{isString as A,u8aToHex as I}from"@polkadot/util";import{decodeAddress as T,evmToAddress as R}from"@polkadot/util-crypto";var m=class extends l{args;address;constructor({args:r,address:t,...n}){super({...n,type:"Evm"}),this.args=r,this.address=t}};var h=18446744073709551615n;function v(){return{transfer:(e=h)=>({build:({address:r,amount:t,asset:n,destination:i})=>new m({args:[A(n)?b(n):n,t,w(r,i),e],func:"transfer",module:"Xtokens"})}),transferMultiCurrencies:(e=h)=>({build:({address:r,amount:t,asset:n,destination:i,fee:o,feeAsset:s})=>new m({args:[[[A(n)?b(n):n,t],[A(s)?b(s):s,o]],1,w(r,i),e],func:"transferMultiCurrencies",module:"Xtokens"})}),transferWithEvmTo32:(e=h)=>({build:({address:r,amount:t,asset:n,destination:i})=>{let o=z(r,i);return new m({args:[A(n)?b(n):n,t,o,e],func:"transfer",module:"Xtokens"})}})}}function z(e,r){let t="01",n=R(e),i=`0x${t}${I(T(n),-1,!1)}00`;return[1,r.parachainId?[`0x0000000${r.parachainId.toString(16)}`,i]:[i]]}function w(e,r){let n=`0x${r.isEvmParachain()?"03":"01"}${I(T(e),-1,!1)}00`;return[1,r.parachainId?[`0x0000000${r.parachainId.toString(16)}`,n]:[n]]}function hr(){return{Xtokens:v}}function kr(){return{evm:q,substrate:H}}function q(){return{erc20:G}}function H(){return{assets:U,system:N,tokens:Q}}function G(){return{build:({address:e,asset:r})=>{if(!r||!V(r))throw new Error(`Invalid contract address: ${r}`);return new m({address:r,args:[e],func:"balanceOf",module:"Erc20"})}}}function U(){return{account:()=>({build:({address:e,asset:r})=>new c({module:"assets",func:"account",args:[r,e],transform:async t=>t.unwrapOrDefault().balance.toBigInt()})})}}function N(){return{account:()=>({build:({address:e})=>new c({module:"system",func:"account",args:[e],transform:async r=>{let t=r.data,n=t.miscFrozen??t.frozen;return BigInt(t.free.sub(n).toString())}})}),accountEquilibrium:()=>({build:({address:e,asset:r})=>new c({module:"system",func:"account",args:[e],transform:async t=>{var s;if(t.data.isEmpty)return 0n;let n=t.data.toJSON(),i;if(Array.isArray(n)&&(i=n),Array.isArray((s=n==null?void 0:n.v0)==null?void 0:s.balance)&&(i=n.v0.balance),!i)throw new Error("Can't get balance from Equilibrium chain");let o=i.find(([y])=>y===r);return o?BigInt(o[1].positive):0n}})}),accountEvmTo32:()=>({build:({address:e})=>{let r=$(e);return new c({module:"system",func:"account",args:[r],transform:async t=>{let n=t.data,i=n.miscFrozen??n.frozen;return BigInt(n.free.sub(i).toString())}})}})}}function Q(){return{accounts:()=>({build:({address:e,asset:r})=>new c({module:"tokens",func:"accounts",args:[e,r],transform:async({free:t,frozen:n})=>BigInt(t.sub(n).toString())})})}}import{getTypeDef as K}from"@polkadot/types";import{u8aToHex as L}from"@polkadot/util";import{decodeAddress as J}from"@polkadot/util-crypto";var E=(n=>(n.v1="V1",n.v2="V2",n.v3="V3",n))(E||{});function f(e,r=0){if(!e)return"V1";let{type:t}=e.meta.args[r],n=e.meta.registry.createType(t.toString()),i=K(n==null?void 0:n.toRawType());if(!i.sub)return"V1";let o=Array.isArray(i.sub)?i.sub.map(s=>s.name):[i.sub.name];if(o.includes("V1"))return"V1";if(o.includes("V2"))return"V2";if(o.includes("V3"))return"V3";throw new Error("Can't find Xcm version")}function u(e){return e.length===42&&e.startsWith("0x")?{AccountKey20:{key:e}}:{AccountId32:{id:L(J(e)),network:null}}}var a=class extends l{getArgs;constructor({getArgs:r,...t}){super({...t,type:"Substrate"}),this.getArgs=r}};var X="eqBalances";function S(){return{xcmTransfer:()=>({build:({address:e,amount:r,asset:t,destination:n})=>new a({module:X,func:"xcmTransfer",getArgs:()=>[t,r,{parents:1,interior:{X2:[{Parachain:n.parachainId},u(e)]}},"ThisAccWillPay"]})}),transferXcm:()=>({build:({address:e,amount:r,asset:t,destination:n,fee:i,feeAsset:o})=>new a({module:X,func:"transferXcm",getArgs:()=>{let s=r-i>0n?r-i:0n;return[[t,t===o?s:r],[o,i],{parents:1,interior:{X2:[{Parachain:n.parachainId},u(e)]}}]}})})}}function p({asset:e,address:r,destination:t,func:n,parents:i=1,feeIndex:o=0}){let s=f(n);return[{[s]:{parents:i,interior:{X1:{Parachain:t.parachainId}}}},{[s]:{parents:0,interior:{X1:u(r)}}},{[s]:e},o,"Unlimited"]}var B="polkadotXcm";function D(){return{limitedReserveTransferAssets:()=>{let e="limitedReserveTransferAssets";return{here:()=>({build:r=>new a({module:B,func:e,getArgs:t=>p({...r,func:t,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:r.amount}}]})})}),X1:()=>({build:r=>new a({module:B,func:e,getArgs:t=>p({...r,func:t,asset:[{id:{Concrete:{parents:0,interior:{X1:{PalletInstance:r.palletInstance}}}},fun:{Fungible:r.amount}}]})})}),X2:()=>({build:r=>new a({module:B,func:e,getArgs:t=>{let n=!!r.feeAsset&&r.asset!==r.feeAsset,i=[{id:{Concrete:{parents:0,interior:{X2:[{PalletInstance:r.palletInstance},{GeneralIndex:r.asset}]}}},fun:{Fungible:r.amount}}];return n&&i.push({id:{Concrete:{parents:0,interior:{X2:[{PalletInstance:r.palletInstance},{GeneralIndex:r.feeAsset}]}}},fun:{Fungible:r.fee}}),p({...r,func:t,asset:i,feeIndex:n?1:0})}})})}},limitedReserveWithdrawAssets:()=>{let e="limitedReserveWithdrawAssets";return{X2:()=>({build:r=>new a({module:B,func:e,getArgs:t=>p({...r,func:t,asset:[{id:{Concrete:{parents:1,interior:{X2:[{Parachain:r.destination.parachainId},{PalletInstance:r.palletInstance}]}}},fun:{Fungible:r.amount}}]})})})}}}}function d(){return"Unlimited"}function g(e,r,t){return{[e]:{parents:1,interior:{X2:[{Parachain:t.parachainId},u(r)]}}}}var C="xTokens";function F(){return{transfer:()=>({build:({address:e,amount:r,asset:t,destination:n})=>new a({module:C,func:"transfer",getArgs:i=>{let o=f(i,2);return[t,r,g(o,e,n),d()]}})}),transferMultiAsset:e=>{let r="transferMultiasset";return{here:()=>({build:({address:t,amount:n,destination:i})=>new a({module:C,func:r,getArgs:o=>{let s=f(o,1);return[{[s]:{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:n}}},g(s,t,i),d()]}})}),X1:()=>({build:({address:t,amount:n,destination:i})=>new a({module:C,func:r,getArgs:o=>{let s=f(o,1);return[{[s]:{id:{Concrete:{parents:1,interior:{X1:{Parachain:e}}}},fun:{Fungible:n}}},g(s,t,i),d()]}})}),X2:()=>({build:({address:t,amount:n,asset:i,destination:o})=>new a({module:C,func:r,getArgs:s=>{let y=f(s,1);return[{[y]:{id:{Concrete:{parents:1,interior:{X2:[{Parachain:e},{GeneralKey:i}]}}},fun:{Fungible:n}}},g(y,t,o),d()]}})})}},transferMultiCurrencies:()=>({build:({address:e,amount:r,asset:t,destination:n,fee:i,feeAsset:o})=>new a({module:C,func:"transferMulticurrencies",getArgs:()=>[[[t,r],[o,i]],1,g("V3",e,n),d()]})})}}var k="xTransfer";function M(){return{transfer:()=>{let e="transfer";return{here:()=>({build:({address:r,amount:t,destination:n})=>new a({module:k,func:e,getArgs:()=>[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:t}},{parents:1,interior:{X2:[{Parachain:n.parachainId},u(r)]}},{refTime:5e9,proofSize:0}]})}),X2:()=>({build:({address:r,amount:t,destination:n,palletInstance:i})=>new a({module:k,func:e,getArgs:()=>[{id:{Concrete:{parents:1,interior:{X2:[{Parachain:n.parachainId},{PalletInstance:i}]}}},fun:{Fungible:t||1n}},{parents:1,interior:{X2:[{Parachain:n.parachainId},u(r)]}},{refTime:5e9,proofSize:0}]})})}}}}var j="xcmPallet";function O(){return{limitedReserveTransferAssets:(e=1)=>{let r="limitedReserveTransferAssets";return{here:()=>({build:t=>new a({module:j,func:r,getArgs:n=>p({...t,parents:e,func:n,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:t.amount}}]})})})}}}}function kt(){return{eqBalances:S,xTokens:F,xTransfer:M,polkadotXcm:D,xcmPallet:O}}var P=class{api;call;type="Substrate";constructor({api:r,call:t}){this.api=r,this.call=t}};function qt(){return{assetManager:Y}}function Y(){return{assetTypeUnitsPerSecond:(e=1e9)=>({build:({api:r,asset:t})=>new P({api:r,call:async()=>{let n=await r.query.assetManager.assetIdType(t);if(n.isNone)throw new Error(`No asset type found for asset ${t}`);let i=n.unwrap(),s=(await r.query.assetManager.assetTypeUnitsPerSecond(i)).unwrapOrDefault().toBigInt();return BigInt(e)*s/BigInt(10**12)}})})}}export{sr as AssetMinBuilder,kr as BalanceBuilder,l as BaseConfig,x as CallType,hr as ContractBuilder,m as ContractConfig,kt as ExtrinsicBuilder,a as ExtrinsicConfig,qt as FeeBuilder,c as SubstrateQueryConfig,E as XcmVersion,q as evm,H as substrate};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/build/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/builder.interfaces.ts","../src/types/BaseConfig.ts","../src/types/substrate/SubstrateQueryConfig.ts","../src/asset-min/AssetMinBuilder.ts","../src/balance/BalanceBuilder.ts","../src/contract/contracts/Xtokens/Xtokens.ts","../src/contract/ContractConfig.ts","../src/contract/ContractBuilder.ts","../src/extrinsic/ExtrinsicBuilder.utils.ts","../src/extrinsic/ExtrinsicBuilder.interfaces.ts","../src/extrinsic/ExtrinsicConfig.ts","../src/extrinsic/pallets/eqBalances/eqBalances.ts","../src/extrinsic/pallets/polkadotXcm/polkadotXcm.util.ts","../src/extrinsic/pallets/polkadotXcm/polkadotXcm.ts","../src/extrinsic/pallets/xTokens/xTokens.utils.ts","../src/extrinsic/pallets/xTokens/xTokens.ts","../src/extrinsic/pallets/xTransfer/xTransfer.ts","../src/extrinsic/pallets/xcmPallet/xcmPallet.ts","../src/extrinsic/ExtrinsicBuilder.ts","../src/types/substrate/SubstrateCallConfig.ts","../src/fee/FeeBuilder.ts"],"sourcesContent":["import '@polkadot/api-augment';\n\nexport * from './asset-min';\nexport * from './balance';\nexport * from './builder.interfaces';\nexport * from './contract';\nexport * from './extrinsic';\nexport * from './fee';\nexport * from './types/BaseConfig';\nexport * from './types/substrate/SubstrateQueryConfig';\n","export enum CallType {\n Evm = 'Evm',\n Substrate = 'Substrate',\n}\n","import { CallType } from '../builder.interfaces';\n\nexport interface BaseConfigConstructorParams {\n module: string;\n func: string;\n type: CallType;\n}\n\nexport class BaseConfig {\n readonly module: string;\n\n readonly func: string;\n\n readonly type: CallType;\n\n constructor({ module, func, type }: BaseConfigConstructorParams) {\n this.module = module;\n this.func = func;\n this.type = type;\n }\n}\n","import { SetOptional } from '@moonbeam-network/xcm-types';\nimport { CallType } from '../../builder.interfaces';\nimport { BaseConfig, BaseConfigConstructorParams } from '../BaseConfig';\n\nexport interface QueryConfigConstructorParams\n extends SetOptional<BaseConfigConstructorParams, 'type'> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args?: any[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transform: (data: any) => Promise<bigint>;\n}\n\nexport class SubstrateQueryConfig extends BaseConfig {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly args: any[];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly transform: (data: any) => Promise<bigint>;\n\n constructor({\n args = [],\n transform,\n type = CallType.Substrate,\n ...other\n }: QueryConfigConstructorParams) {\n super({ ...other, type });\n\n this.args = args;\n this.transform = transform;\n }\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { Option } from '@polkadot/types';\nimport { PalletAssetsAssetDetails } from '@polkadot/types/lookup';\nimport { SubstrateQueryConfig } from '../types/substrate/SubstrateQueryConfig';\nimport { AssetMinConfigBuilder } from './AssetMinBuilder.interfaces';\n\nexport function AssetMinBuilder() {\n return {\n assetRegistry,\n assets,\n };\n}\n\nfunction assetRegistry() {\n const pallet = 'assetRegistry';\n return {\n assetMetadatas: (): AssetMinConfigBuilder => ({\n build: ({ asset }) =>\n new SubstrateQueryConfig({\n module: pallet,\n func: 'assetMetadatas',\n args: [asset],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transform: async (response: Option<any>): Promise<bigint> =>\n response.unwrapOrDefault().minimalBalance.toBigInt(),\n }),\n }),\n currencyMetadatas: (): AssetMinConfigBuilder => ({\n build: ({ asset }) =>\n new SubstrateQueryConfig({\n module: pallet,\n func: 'currencyMetadatas',\n args: [asset],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transform: async (response: Option<any>): Promise<bigint> =>\n response.unwrapOrDefault().minimalBalance.toBigInt(),\n }),\n }),\n };\n}\n\nfunction assets() {\n return {\n asset: (): AssetMinConfigBuilder => ({\n build: ({ asset }) =>\n new SubstrateQueryConfig({\n module: 'assets',\n func: 'asset',\n args: [asset],\n transform: async (\n response: Option<PalletAssetsAssetDetails>,\n ): Promise<bigint> =>\n response.unwrapOrDefault().minBalance.toBigInt(),\n }),\n }),\n };\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { Option } from '@polkadot/types';\nimport {\n FrameSystemAccountInfo,\n PalletAssetsAssetAccount,\n PalletBalancesAccountData,\n} from '@polkadot/types/lookup';\nimport { isString } from '@polkadot/util';\nimport { ContractConfig } from '../contract';\nimport { SubstrateQueryConfig } from '../types/substrate/SubstrateQueryConfig';\nimport {\n BalanceConfigBuilder,\n EquilibriumSystemBalanceData,\n PalletBalancesAccountDataOld,\n TokensPalletAccountData,\n} from './BalanceBuilder.interfaces';\n\nexport function BalanceBuilder() {\n return {\n evm,\n substrate,\n };\n}\n\nexport function evm() {\n return {\n erc20,\n };\n}\n\nexport function substrate() {\n return {\n assets,\n system,\n tokens,\n };\n}\n\nfunction erc20(): BalanceConfigBuilder {\n return {\n build: ({ address, asset }) => {\n if (!asset || !isString(asset)) {\n throw new Error(`Invalid contract address: ${asset}`);\n }\n\n return new ContractConfig({\n address: asset,\n args: [address],\n func: 'balanceOf',\n module: 'Erc20',\n });\n },\n };\n}\n\nfunction assets() {\n return {\n account: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) =>\n new SubstrateQueryConfig({\n module: 'assets',\n func: 'account',\n args: [asset, address],\n transform: async (\n response: Option<PalletAssetsAssetAccount>,\n ): Promise<bigint> => response.unwrapOrDefault().balance.toBigInt(),\n }),\n }),\n };\n}\n\nfunction system() {\n return {\n account: (): BalanceConfigBuilder => ({\n build: ({ address }) =>\n new SubstrateQueryConfig({\n module: 'system',\n func: 'account',\n args: [address],\n transform: async (\n response: FrameSystemAccountInfo,\n ): Promise<bigint> => {\n const balance = response.data as PalletBalancesAccountData &\n PalletBalancesAccountDataOld;\n const frozen = balance.miscFrozen ?? balance.frozen;\n\n return BigInt(balance.free.sub(frozen).toString());\n },\n }),\n }),\n accountEquilibrium: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) =>\n new SubstrateQueryConfig({\n module: 'system',\n func: 'account',\n args: [address],\n transform: async (response): Promise<bigint> => {\n if (response.data.isEmpty) {\n return 0n;\n }\n\n const res = response.data.toJSON() as unknown;\n let balances: EquilibriumSystemBalanceData | undefined;\n\n if (Array.isArray(res)) {\n balances = res;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (Array.isArray((res as any)?.v0?.balance)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n balances = (res as any).v0.balance;\n }\n\n if (!balances) {\n throw new Error(\"Can't get balance from Equilibrium chain\");\n }\n\n const balance = balances.find(([assetId]) => assetId === asset);\n\n if (!balance) {\n return 0n;\n }\n\n return BigInt(balance[1].positive);\n },\n }),\n }),\n };\n}\n\nfunction tokens() {\n return {\n accounts: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) =>\n new SubstrateQueryConfig({\n module: 'tokens',\n func: 'accounts',\n args: [address, asset],\n transform: async ({\n free,\n frozen,\n }: TokensPalletAccountData): Promise<bigint> =>\n BigInt(free.sub(frozen).toString()),\n }),\n }),\n };\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { AnyChain } from '@moonbeam-network/xcm-types';\nimport { formatAssetIdToERC20 } from '@moonbeam-network/xcm-utils';\nimport { isString, u8aToHex } from '@polkadot/util';\nimport { decodeAddress } from '@polkadot/util-crypto';\nimport { ContractConfigBuilder } from '../../ContractBuilder.interfaces';\nimport { ContractConfig } from '../../ContractConfig';\n\nconst U_64_MAX = 18446744073709551615n;\n\nexport function Xtokens() {\n return {\n transfer: (weight = U_64_MAX): ContractConfigBuilder => ({\n build: ({ address, amount, asset, destination }) =>\n new ContractConfig({\n args: [\n isString(asset) ? formatAssetIdToERC20(asset) : asset,\n amount,\n getDestinationMultilocation(address, destination),\n weight,\n ],\n func: 'transfer',\n module: 'Xtokens',\n }),\n }),\n transferMultiCurrencies: (weight = U_64_MAX): ContractConfigBuilder => ({\n build: ({ address, amount, asset, destination, fee, feeAsset }) =>\n new ContractConfig({\n args: [\n [\n [isString(asset) ? formatAssetIdToERC20(asset) : asset, amount],\n [\n isString(feeAsset) ? formatAssetIdToERC20(feeAsset) : feeAsset,\n fee,\n ],\n ],\n 1, // index of the fee asset\n getDestinationMultilocation(address, destination),\n weight,\n ],\n func: 'transferMultiCurrencies',\n module: 'Xtokens',\n }),\n }),\n };\n}\n\ntype DestinationMultilocation = [\n /**\n * 1 - if transaction is going through a relay chain\n */\n 1,\n (\n | [\n /**\n * example '0x00000007DC'\n * 7DC - parachain id in hex\n * can be found here:\n * - https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fkusama-rpc.polkadot.io#/parachains\n * - https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/parachains\n */\n string,\n /**\n * example '0x01%account%00',\n * enum = 01 (AccountId32)\n * networkId = 00 (any)\n */\n string,\n ]\n | [\n /**\n * example '0x01%account%00',\n * enum = 01 (AccountId32)\n * networkId = 00 (any)\n */\n string,\n ]\n ),\n];\n\nfunction getDestinationMultilocation(\n address: string,\n destination: AnyChain,\n): DestinationMultilocation {\n /* \n 01: AccountId32\n 03: AccountKey20\n https://docs.moonbeam.network/builders/interoperability/xcm/xc20/xtokens/#building-the-precompile-multilocation\n */\n const accountType = destination.isEvmParachain() ? '03' : '01';\n const acc = `0x${accountType}${u8aToHex(\n decodeAddress(address),\n -1,\n false,\n )}00`;\n\n return [\n 1,\n destination.parachainId\n ? [`0x0000000${destination.parachainId.toString(16)}`, acc]\n : [acc],\n ];\n}\n","import { CallType } from '../builder.interfaces';\nimport { BaseConfig, BaseConfigConstructorParams } from '../types/BaseConfig';\n\nexport interface ContractConfigConstructorParams\n extends Omit<BaseConfigConstructorParams, 'type'> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args: any[];\n address?: string;\n}\n\nexport class ContractConfig extends BaseConfig {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly args: any[];\n\n readonly address?: string;\n\n constructor({ args, address, ...other }: ContractConfigConstructorParams) {\n super({ ...other, type: CallType.Evm });\n\n this.args = args;\n this.address = address;\n }\n}\n","import { Xtokens } from './contracts/Xtokens';\n\nexport function ContractBuilder() {\n return {\n Xtokens,\n };\n}\n","import { SubmittableExtrinsicFunction } from '@polkadot/api/types';\nimport { getTypeDef } from '@polkadot/types';\nimport { u8aToHex } from '@polkadot/util';\nimport { decodeAddress } from '@polkadot/util-crypto';\nimport { XcmVersion } from './ExtrinsicBuilder.interfaces';\n\nexport function getExtrinsicArgumentVersion(\n func?: SubmittableExtrinsicFunction<'promise'>,\n index: number = 0,\n): XcmVersion {\n if (!func) return XcmVersion.v1;\n\n const { type } = func.meta.args[index];\n const instance = func.meta.registry.createType(type.toString());\n const raw = getTypeDef(instance?.toRawType());\n\n if (!raw.sub) {\n return XcmVersion.v1;\n }\n\n const versions = Array.isArray(raw.sub)\n ? raw.sub.map((x) => x.name)\n : [raw.sub.name];\n\n if (versions.includes(XcmVersion.v1)) {\n return XcmVersion.v1;\n }\n\n if (versions.includes(XcmVersion.v2)) {\n return XcmVersion.v2;\n }\n\n if (versions.includes(XcmVersion.v3)) {\n return XcmVersion.v3;\n }\n\n throw new Error(\"Can't find Xcm version\");\n}\n\nexport function getExtrinsicAccount(address: string) {\n const isEthAddress = address.length === 42 && address.startsWith('0x');\n\n return isEthAddress\n ? {\n AccountKey20: {\n key: address,\n },\n }\n : {\n AccountId32: {\n id: u8aToHex(decodeAddress(address)),\n network: null,\n },\n };\n}\n","import { AnyChain, ChainAssetId } from '@moonbeam-network/xcm-types';\nimport { ExtrinsicConfig } from './ExtrinsicConfig';\n\nexport interface ExtrinsicConfigBuilder {\n build: (params: ExtrinsicConfigBuilderPrams) => ExtrinsicConfig;\n}\n\nexport interface ExtrinsicConfigBuilderPrams {\n address: string;\n amount: bigint;\n asset: ChainAssetId;\n destination: AnyChain;\n fee: bigint;\n feeAsset: ChainAssetId;\n palletInstance?: number;\n source: AnyChain;\n}\n\nexport enum XcmVersion {\n v1 = 'V1',\n v2 = 'V2',\n v3 = 'V3',\n}\n\nexport type Parents = 0 | 1;\n","import { SubmittableExtrinsicFunction } from '@polkadot/api/types';\nimport { CallType } from '../builder.interfaces';\nimport { BaseConfig, BaseConfigConstructorParams } from '../types/BaseConfig';\n\nexport interface ExtrinsicConfigConstructorParams\n extends Omit<BaseConfigConstructorParams, 'type'> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getArgs: (func?: SubmittableExtrinsicFunction<'promise'>) => any[];\n}\n\nexport class ExtrinsicConfig extends BaseConfig {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getArgs: (func?: SubmittableExtrinsicFunction<'promise'>) => any[];\n\n constructor({ getArgs, ...other }: ExtrinsicConfigConstructorParams) {\n super({ ...other, type: CallType.Substrate });\n\n this.getArgs = getArgs;\n }\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicAccount } from '../../ExtrinsicBuilder.utils';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\n\nexport enum EqBalancesFee {\n SovereignAccWillPay = 'SovereignAccWillPay',\n TargetChainAccWillPay = 'TargetChainAccWillPay',\n ThisAccWillPay = 'ThisAccWillPay',\n}\n\nconst pallet = 'eqBalances';\n\nexport function eqBalances() {\n return {\n xcmTransfer: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: 'xcmTransfer',\n getArgs: () => [\n asset,\n amount,\n {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n EqBalancesFee.ThisAccWillPay,\n ],\n }),\n }),\n transferXcm: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination, fee, feeAsset }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: 'transferXcm',\n getArgs: () => {\n const amountWithoutFee = amount - fee > 0n ? amount - fee : 0n;\n\n return [\n [asset, asset === feeAsset ? amountWithoutFee : amount],\n [feeAsset, fee],\n {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n ];\n },\n }),\n }),\n };\n}\n","/* eslint-disable sort-keys */\nimport { SubmittableExtrinsicFunction } from '@polkadot/api/types';\nimport {\n ExtrinsicConfigBuilderPrams,\n Parents,\n} from '../../ExtrinsicBuilder.interfaces';\nimport {\n getExtrinsicAccount,\n getExtrinsicArgumentVersion,\n} from '../../ExtrinsicBuilder.utils';\n\nexport interface GetExtrinsicParams extends ExtrinsicConfigBuilderPrams {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n asset: any;\n func?: SubmittableExtrinsicFunction<'promise'>;\n parents?: Parents;\n feeIndex?: number;\n}\n\nexport function getPolkadotXcmExtrinsicArgs({\n asset,\n address,\n destination,\n func,\n parents = 1,\n feeIndex = 0,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n}: GetExtrinsicParams): any[] {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const version = getExtrinsicArgumentVersion(func);\n\n return [\n {\n [version]: {\n parents,\n interior: {\n X1: {\n Parachain: destination.parachainId,\n },\n },\n },\n },\n {\n [version]: {\n parents: 0,\n interior: {\n X1: getExtrinsicAccount(address),\n },\n },\n },\n {\n [version]: asset,\n },\n feeIndex,\n 'Unlimited',\n ];\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport { getPolkadotXcmExtrinsicArgs } from './polkadotXcm.util';\n\nconst pallet = 'polkadotXcm';\n\nexport function polkadotXcm() {\n return {\n limitedReserveTransferAssets: () => {\n const func = 'limitedReserveTransferAssets';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n X1: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: {\n X1: {\n PalletInstance: params.palletInstance,\n },\n },\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n X2: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) => {\n const isAssetDifferent =\n !!params.feeAsset && params.asset !== params.feeAsset;\n const asset = [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: {\n X2: [\n {\n PalletInstance: params.palletInstance,\n },\n {\n GeneralIndex: params.asset,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ];\n\n if (isAssetDifferent) {\n asset.push({\n id: {\n Concrete: {\n parents: 0,\n interior: {\n X2: [\n {\n PalletInstance: params.palletInstance,\n },\n {\n GeneralIndex: params.feeAsset,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: params.fee,\n },\n });\n }\n\n return getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset,\n feeIndex: isAssetDifferent ? 1 : 0,\n });\n },\n }),\n }),\n };\n },\n limitedReserveWithdrawAssets: () => {\n const func = 'limitedReserveWithdrawAssets';\n\n return {\n X2: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: params.destination.parachainId,\n },\n {\n PalletInstance: params.palletInstance,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n };\n },\n };\n}\n","import { AnyChain } from '@moonbeam-network/xcm-types';\nimport { XcmVersion } from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicAccount } from '../../ExtrinsicBuilder.utils';\nimport { XTokensWeightLimit } from './xTokens.interfaces';\n\n/**\n * It is safer to always use unlimited\n */\nexport function getWeight(): XTokensWeightLimit {\n return 'Unlimited';\n}\n\nexport function getDestination(\n version: XcmVersion,\n address: string,\n destination: AnyChain,\n) {\n return {\n [version]: {\n parents: 1,\n // eslint-disable-next-line sort-keys\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n };\n}\n","/* eslint-disable sort-keys */\nimport {\n ExtrinsicConfigBuilder,\n XcmVersion,\n} from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicArgumentVersion } from '../../ExtrinsicBuilder.utils';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport { getDestination, getWeight } from './xTokens.utils';\n\nconst pallet = 'xTokens';\n\nexport function xTokens() {\n return {\n transfer: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: 'transfer',\n getArgs: (func) => {\n const version = getExtrinsicArgumentVersion(func, 2);\n\n return [\n asset,\n amount,\n getDestination(version, address, destination),\n getWeight(),\n ];\n },\n }),\n }),\n transferMultiAsset: (originParachainId: number) => {\n const funcName = 'transferMultiasset';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: funcName,\n getArgs: (func) => {\n const version = getExtrinsicArgumentVersion(func, 1);\n\n return [\n {\n [version]: {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: amount,\n },\n },\n },\n getDestination(version, address, destination),\n getWeight(),\n ];\n },\n }),\n }),\n X1: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: funcName,\n getArgs: (func) => {\n const version = getExtrinsicArgumentVersion(func, 1);\n\n return [\n {\n [version]: {\n id: {\n Concrete: {\n parents: 1,\n interior: {\n X1: {\n Parachain: originParachainId,\n },\n },\n },\n },\n fun: {\n Fungible: amount,\n },\n },\n },\n getDestination(version, address, destination),\n getWeight(),\n ];\n },\n }),\n }),\n X2: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: funcName,\n getArgs: (func) => {\n const version = getExtrinsicArgumentVersion(func, 1);\n\n return [\n {\n [version]: {\n id: {\n Concrete: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: originParachainId,\n },\n {\n GeneralKey: asset,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: amount,\n },\n },\n },\n getDestination(version, address, destination),\n getWeight(),\n ];\n },\n }),\n }),\n };\n },\n transferMultiCurrencies: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination, fee, feeAsset }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: 'transferMulticurrencies',\n getArgs: () => [\n [\n [asset, amount],\n [feeAsset, fee],\n ],\n 1,\n getDestination(XcmVersion.v3, address, destination),\n getWeight(),\n ],\n }),\n }),\n };\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicAccount } from '../../ExtrinsicBuilder.utils';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\n\nconst pallet = 'xTransfer';\n\nexport function xTransfer() {\n return {\n transfer: () => {\n const method = 'transfer';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: method,\n getArgs: () => [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: amount,\n },\n },\n {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n {\n refTime: 5_000_000_000,\n proofSize: 0,\n },\n ],\n }),\n }),\n X2: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, destination, palletInstance }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: method,\n getArgs: () => [\n {\n id: {\n Concrete: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n {\n PalletInstance: palletInstance,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: amount || 1n,\n },\n },\n {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n {\n refTime: 5_000_000_000,\n proofSize: 0,\n },\n ],\n }),\n }),\n };\n },\n };\n}\n","/* eslint-disable sort-keys */\nimport {\n ExtrinsicConfigBuilder,\n Parents,\n} from '../../ExtrinsicBuilder.interfaces';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport { getPolkadotXcmExtrinsicArgs } from '../polkadotXcm/polkadotXcm.util';\n\nconst pallet = 'xcmPallet';\n\nexport function xcmPallet() {\n return {\n limitedReserveTransferAssets: (parents: Parents = 1) => {\n const func = 'limitedReserveTransferAssets';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n parents,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n };\n },\n };\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { eqBalances } from './pallets/eqBalances';\nimport { polkadotXcm } from './pallets/polkadotXcm';\nimport { xTokens } from './pallets/xTokens';\nimport { xTransfer } from './pallets/xTransfer';\nimport { xcmPallet } from './pallets/xcmPallet';\n\nexport function ExtrinsicBuilder() {\n return {\n eqBalances,\n xTokens,\n xTransfer,\n polkadotXcm,\n xcmPallet,\n };\n}\n","import { ApiPromise } from '@polkadot/api';\nimport { CallType } from '../../builder.interfaces';\n\nexport interface SubstrateCallConfigConstructorParams {\n api: ApiPromise;\n call: () => Promise<bigint>;\n}\n\nexport class SubstrateCallConfig {\n readonly api: ApiPromise;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly call: () => Promise<any>;\n\n readonly type = CallType.Substrate;\n\n constructor({ api, call }: SubstrateCallConfigConstructorParams) {\n this.api = api;\n this.call = call;\n }\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { Option, u128 } from '@polkadot/types';\nimport { SubstrateCallConfig } from '../types/substrate/SubstrateCallConfig';\nimport { FeeConfigBuilder } from './FeeBuilder.interfaces';\n\nexport function FeeBuilder() {\n return {\n assetManager,\n };\n}\n\nfunction assetManager() {\n return {\n assetTypeUnitsPerSecond: (weight = 1_000_000_000): FeeConfigBuilder => ({\n build: ({ api, asset }) =>\n new SubstrateCallConfig({\n api,\n call: async (): Promise<bigint> => {\n const type = (await api.query.assetManager.assetIdType(\n asset,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n )) as unknown as Option<any>;\n\n if (type.isNone) {\n throw new Error(`No asset type found for asset ${asset}`);\n }\n\n const unwrappedType = type.unwrap();\n\n const res = (await api.query.assetManager.assetTypeUnitsPerSecond(\n unwrappedType,\n )) as unknown as Option<u128>;\n\n const unitsPerSecond = res.unwrapOrDefault().toBigInt();\n\n return (BigInt(weight) * unitsPerSecond) / BigInt(10 ** 12);\n },\n }),\n }),\n };\n}\n"],"mappings":"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","names":["CallType","BaseConfig","module","func","type","SubstrateQueryConfig","BaseConfig","args","transform","type","other","AssetMinBuilder","assetRegistry","assets","pallet","asset","SubstrateQueryConfig","response","isString","formatAssetIdToERC20","isString","u8aToHex","decodeAddress","ContractConfig","BaseConfig","args","address","other","U_64_MAX","Xtokens","weight","address","amount","asset","destination","ContractConfig","isString","formatAssetIdToERC20","getDestinationMultilocation","fee","feeAsset","acc","u8aToHex","decodeAddress","ContractBuilder","Xtokens","BalanceBuilder","evm","substrate","erc20","assets","system","tokens","address","asset","isString","ContractConfig","SubstrateQueryConfig","response","balance","frozen","_a","res","balances","assetId","free","getTypeDef","u8aToHex","decodeAddress","XcmVersion","getExtrinsicArgumentVersion","func","index","type","instance","raw","getTypeDef","versions","x","getExtrinsicAccount","address","u8aToHex","decodeAddress","ExtrinsicConfig","BaseConfig","getArgs","other","pallet","eqBalances","address","amount","asset","destination","ExtrinsicConfig","getExtrinsicAccount","fee","feeAsset","amountWithoutFee","getPolkadotXcmExtrinsicArgs","asset","address","destination","func","parents","feeIndex","version","getExtrinsicArgumentVersion","getExtrinsicAccount","pallet","polkadotXcm","func","params","ExtrinsicConfig","extrinsicFunction","getPolkadotXcmExtrinsicArgs","isAssetDifferent","asset","getWeight","getDestination","version","address","destination","getExtrinsicAccount","pallet","xTokens","address","amount","asset","destination","ExtrinsicConfig","func","version","getExtrinsicArgumentVersion","getDestination","getWeight","originParachainId","funcName","fee","feeAsset","pallet","xTransfer","method","address","amount","destination","ExtrinsicConfig","getExtrinsicAccount","palletInstance","pallet","xcmPallet","parents","func","params","ExtrinsicConfig","extrinsicFunction","getPolkadotXcmExtrinsicArgs","ExtrinsicBuilder","eqBalances","xTokens","xTransfer","polkadotXcm","xcmPallet","SubstrateCallConfig","api","call","FeeBuilder","assetManager","weight","api","asset","SubstrateCallConfig","type","unwrappedType","unitsPerSecond"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/builder.interfaces.ts","../src/types/BaseConfig.ts","../src/types/substrate/SubstrateQueryConfig.ts","../src/asset-min/AssetMinBuilder.ts","../src/balance/BalanceBuilder.ts","../src/contract/contracts/Xtokens/Xtokens.ts","../src/contract/ContractConfig.ts","../src/contract/ContractBuilder.ts","../src/extrinsic/ExtrinsicBuilder.utils.ts","../src/extrinsic/ExtrinsicBuilder.interfaces.ts","../src/extrinsic/ExtrinsicConfig.ts","../src/extrinsic/pallets/eqBalances/eqBalances.ts","../src/extrinsic/pallets/polkadotXcm/polkadotXcm.util.ts","../src/extrinsic/pallets/polkadotXcm/polkadotXcm.ts","../src/extrinsic/pallets/xTokens/xTokens.utils.ts","../src/extrinsic/pallets/xTokens/xTokens.ts","../src/extrinsic/pallets/xTransfer/xTransfer.ts","../src/extrinsic/pallets/xcmPallet/xcmPallet.ts","../src/extrinsic/ExtrinsicBuilder.ts","../src/types/substrate/SubstrateCallConfig.ts","../src/fee/FeeBuilder.ts"],"sourcesContent":["import '@polkadot/api-augment';\n\nexport * from './asset-min';\nexport * from './balance';\nexport * from './builder.interfaces';\nexport * from './contract';\nexport * from './extrinsic';\nexport * from './fee';\nexport * from './types/BaseConfig';\nexport * from './types/substrate/SubstrateQueryConfig';\n","export enum CallType {\n Evm = 'Evm',\n Substrate = 'Substrate',\n}\n","import { CallType } from '../builder.interfaces';\n\nexport interface BaseConfigConstructorParams {\n module: string;\n func: string;\n type: CallType;\n}\n\nexport class BaseConfig {\n readonly module: string;\n\n readonly func: string;\n\n readonly type: CallType;\n\n constructor({ module, func, type }: BaseConfigConstructorParams) {\n this.module = module;\n this.func = func;\n this.type = type;\n }\n}\n","import { SetOptional } from '@moonbeam-network/xcm-types';\nimport { CallType } from '../../builder.interfaces';\nimport { BaseConfig, BaseConfigConstructorParams } from '../BaseConfig';\n\nexport interface QueryConfigConstructorParams\n extends SetOptional<BaseConfigConstructorParams, 'type'> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args?: any[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transform: (data: any) => Promise<bigint>;\n}\n\nexport class SubstrateQueryConfig extends BaseConfig {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly args: any[];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly transform: (data: any) => Promise<bigint>;\n\n constructor({\n args = [],\n transform,\n type = CallType.Substrate,\n ...other\n }: QueryConfigConstructorParams) {\n super({ ...other, type });\n\n this.args = args;\n this.transform = transform;\n }\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { Option } from '@polkadot/types';\nimport { PalletAssetsAssetDetails } from '@polkadot/types/lookup';\nimport { SubstrateQueryConfig } from '../types/substrate/SubstrateQueryConfig';\nimport { AssetMinConfigBuilder } from './AssetMinBuilder.interfaces';\n\nexport function AssetMinBuilder() {\n return {\n assetRegistry,\n assets,\n };\n}\n\nfunction assetRegistry() {\n const pallet = 'assetRegistry';\n return {\n assetMetadatas: (): AssetMinConfigBuilder => ({\n build: ({ asset }) =>\n new SubstrateQueryConfig({\n module: pallet,\n func: 'assetMetadatas',\n args: [asset],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transform: async (response: Option<any>): Promise<bigint> =>\n response.unwrapOrDefault().minimalBalance.toBigInt(),\n }),\n }),\n currencyMetadatas: (): AssetMinConfigBuilder => ({\n build: ({ asset }) =>\n new SubstrateQueryConfig({\n module: pallet,\n func: 'currencyMetadatas',\n args: [asset],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transform: async (response: Option<any>): Promise<bigint> =>\n response.unwrapOrDefault().minimalBalance.toBigInt(),\n }),\n }),\n };\n}\n\nfunction assets() {\n return {\n asset: (): AssetMinConfigBuilder => ({\n build: ({ asset }) =>\n new SubstrateQueryConfig({\n module: 'assets',\n func: 'asset',\n args: [asset],\n transform: async (\n response: Option<PalletAssetsAssetDetails>,\n ): Promise<bigint> =>\n response.unwrapOrDefault().minBalance.toBigInt(),\n }),\n }),\n };\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { Option } from '@polkadot/types';\nimport {\n FrameSystemAccountInfo,\n PalletAssetsAssetAccount,\n PalletBalancesAccountData,\n} from '@polkadot/types/lookup';\nimport { isString } from '@polkadot/util';\nimport { evmToAddress } from '@polkadot/util-crypto';\nimport { ContractConfig } from '../contract';\nimport { SubstrateQueryConfig } from '../types/substrate/SubstrateQueryConfig';\nimport {\n BalanceConfigBuilder,\n EquilibriumSystemBalanceData,\n PalletBalancesAccountDataOld,\n TokensPalletAccountData,\n} from './BalanceBuilder.interfaces';\n\nexport function BalanceBuilder() {\n return {\n evm,\n substrate,\n };\n}\n\nexport function evm() {\n return {\n erc20,\n };\n}\n\nexport function substrate() {\n return {\n assets,\n system,\n tokens,\n };\n}\n\nfunction erc20(): BalanceConfigBuilder {\n return {\n build: ({ address, asset }) => {\n if (!asset || !isString(asset)) {\n throw new Error(`Invalid contract address: ${asset}`);\n }\n\n return new ContractConfig({\n address: asset,\n args: [address],\n func: 'balanceOf',\n module: 'Erc20',\n });\n },\n };\n}\n\nfunction assets() {\n return {\n account: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) =>\n new SubstrateQueryConfig({\n module: 'assets',\n func: 'account',\n args: [asset, address],\n transform: async (\n response: Option<PalletAssetsAssetAccount>,\n ): Promise<bigint> => response.unwrapOrDefault().balance.toBigInt(),\n }),\n }),\n };\n}\n\nfunction system() {\n return {\n account: (): BalanceConfigBuilder => ({\n build: ({ address }) =>\n new SubstrateQueryConfig({\n module: 'system',\n func: 'account',\n args: [address],\n transform: async (\n response: FrameSystemAccountInfo,\n ): Promise<bigint> => {\n const balance = response.data as PalletBalancesAccountData &\n PalletBalancesAccountDataOld;\n const frozen = balance.miscFrozen ?? balance.frozen;\n\n return BigInt(balance.free.sub(frozen).toString());\n },\n }),\n }),\n accountEquilibrium: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) =>\n new SubstrateQueryConfig({\n module: 'system',\n func: 'account',\n args: [address],\n transform: async (response): Promise<bigint> => {\n if (response.data.isEmpty) {\n return 0n;\n }\n\n const res = response.data.toJSON() as unknown;\n let balances: EquilibriumSystemBalanceData | undefined;\n\n if (Array.isArray(res)) {\n balances = res;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (Array.isArray((res as any)?.v0?.balance)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n balances = (res as any).v0.balance;\n }\n\n if (!balances) {\n throw new Error(\"Can't get balance from Equilibrium chain\");\n }\n\n const balance = balances.find(([assetId]) => assetId === asset);\n\n if (!balance) {\n return 0n;\n }\n\n return BigInt(balance[1].positive);\n },\n }),\n }),\n accountEvmTo32: (): BalanceConfigBuilder => ({\n build: ({ address }) => {\n const substrateAddress = evmToAddress(address);\n\n return new SubstrateQueryConfig({\n module: 'system',\n func: 'account',\n args: [substrateAddress],\n transform: async (\n response: FrameSystemAccountInfo,\n ): Promise<bigint> => {\n const balance = response.data as PalletBalancesAccountData &\n PalletBalancesAccountDataOld;\n const frozen = balance.miscFrozen ?? balance.frozen;\n\n return BigInt(balance.free.sub(frozen).toString());\n },\n });\n },\n }),\n };\n}\n\nfunction tokens() {\n return {\n accounts: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) =>\n new SubstrateQueryConfig({\n module: 'tokens',\n func: 'accounts',\n args: [address, asset],\n transform: async ({\n free,\n frozen,\n }: TokensPalletAccountData): Promise<bigint> =>\n BigInt(free.sub(frozen).toString()),\n }),\n }),\n };\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { AnyChain } from '@moonbeam-network/xcm-types';\nimport { formatAssetIdToERC20 } from '@moonbeam-network/xcm-utils';\nimport { isString, u8aToHex } from '@polkadot/util';\nimport { decodeAddress, evmToAddress } from '@polkadot/util-crypto';\nimport { ContractConfigBuilder } from '../../ContractBuilder.interfaces';\nimport { ContractConfig } from '../../ContractConfig';\n\nconst U_64_MAX = 18446744073709551615n;\n\nexport function Xtokens() {\n return {\n transfer: (weight = U_64_MAX): ContractConfigBuilder => ({\n build: ({ address, amount, asset, destination }) =>\n new ContractConfig({\n args: [\n isString(asset) ? formatAssetIdToERC20(asset) : asset,\n amount,\n getDestinationMultilocation(address, destination),\n weight,\n ],\n func: 'transfer',\n module: 'Xtokens',\n }),\n }),\n transferMultiCurrencies: (weight = U_64_MAX): ContractConfigBuilder => ({\n build: ({ address, amount, asset, destination, fee, feeAsset }) =>\n new ContractConfig({\n args: [\n [\n [isString(asset) ? formatAssetIdToERC20(asset) : asset, amount],\n [\n isString(feeAsset) ? formatAssetIdToERC20(feeAsset) : feeAsset,\n fee,\n ],\n ],\n 1, // index of the fee asset\n getDestinationMultilocation(address, destination),\n weight,\n ],\n func: 'transferMultiCurrencies',\n module: 'Xtokens',\n }),\n }),\n transferWithEvmTo32: (weight = U_64_MAX): ContractConfigBuilder => ({\n build: ({ address, amount, asset, destination }) => {\n const multilocation =\n getDestinationMultilocationForPrecompileDestination(\n address,\n destination,\n );\n\n return new ContractConfig({\n args: [\n isString(asset) ? formatAssetIdToERC20(asset) : asset,\n amount,\n multilocation,\n weight,\n ],\n func: 'transfer',\n module: 'Xtokens',\n });\n },\n }),\n };\n}\n\ntype DestinationMultilocation = [\n /**\n * 1 - if transaction is going through a relay chain\n */\n 1,\n (\n | [\n /**\n * example '0x00000007DC'\n * 7DC - parachain id in hex\n * can be found here:\n * - https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fkusama-rpc.polkadot.io#/parachains\n * - https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/parachains\n */\n string,\n /**\n * example '0x01%account%00',\n * enum = 01 (AccountId32)\n * networkId = 00 (any)\n */\n string,\n ]\n | [\n /**\n * example '0x01%account%00',\n * enum = 01 (AccountId32)\n * networkId = 00 (any)\n */\n string,\n ]\n ),\n];\n\nfunction getDestinationMultilocationForPrecompileDestination(\n address: string,\n destination: AnyChain,\n): DestinationMultilocation {\n /* \n 01: AccountId32\n 03: AccountKey20\n https://docs.moonbeam.network/builders/interoperability/xcm/xc20/xtokens/#building-the-precompile-multilocation\n */\n const accountType = '01';\n const substrateAddress = evmToAddress(address);\n const acc = `0x${accountType}${u8aToHex(\n decodeAddress(substrateAddress),\n -1,\n false,\n )}00`;\n\n return [\n 1,\n destination.parachainId\n ? [`0x0000000${destination.parachainId.toString(16)}`, acc]\n : [acc],\n ];\n}\n\nfunction getDestinationMultilocation(\n address: string,\n destination: AnyChain,\n): DestinationMultilocation {\n /* \n 01: AccountId32\n 03: AccountKey20\n https://docs.moonbeam.network/builders/interoperability/xcm/xc20/xtokens/#building-the-precompile-multilocation\n */\n const accountType = destination.isEvmParachain() ? '03' : '01';\n const acc = `0x${accountType}${u8aToHex(\n decodeAddress(address),\n -1,\n false,\n )}00`;\n\n return [\n 1,\n destination.parachainId\n ? [`0x0000000${destination.parachainId.toString(16)}`, acc]\n : [acc],\n ];\n}\n","import { CallType } from '../builder.interfaces';\nimport { BaseConfig, BaseConfigConstructorParams } from '../types/BaseConfig';\n\nexport interface ContractConfigConstructorParams\n extends Omit<BaseConfigConstructorParams, 'type'> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args: any[];\n address?: string;\n}\n\nexport class ContractConfig extends BaseConfig {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly args: any[];\n\n readonly address?: string;\n\n constructor({ args, address, ...other }: ContractConfigConstructorParams) {\n super({ ...other, type: CallType.Evm });\n\n this.args = args;\n this.address = address;\n }\n}\n","import { Xtokens } from './contracts/Xtokens';\n\nexport function ContractBuilder() {\n return {\n Xtokens,\n };\n}\n","import { SubmittableExtrinsicFunction } from '@polkadot/api/types';\nimport { getTypeDef } from '@polkadot/types';\nimport { u8aToHex } from '@polkadot/util';\nimport { decodeAddress } from '@polkadot/util-crypto';\nimport { XcmVersion } from './ExtrinsicBuilder.interfaces';\n\nexport function getExtrinsicArgumentVersion(\n func?: SubmittableExtrinsicFunction<'promise'>,\n index: number = 0,\n): XcmVersion {\n if (!func) return XcmVersion.v1;\n\n const { type } = func.meta.args[index];\n const instance = func.meta.registry.createType(type.toString());\n const raw = getTypeDef(instance?.toRawType());\n\n if (!raw.sub) {\n return XcmVersion.v1;\n }\n\n const versions = Array.isArray(raw.sub)\n ? raw.sub.map((x) => x.name)\n : [raw.sub.name];\n\n if (versions.includes(XcmVersion.v1)) {\n return XcmVersion.v1;\n }\n\n if (versions.includes(XcmVersion.v2)) {\n return XcmVersion.v2;\n }\n\n if (versions.includes(XcmVersion.v3)) {\n return XcmVersion.v3;\n }\n\n throw new Error(\"Can't find Xcm version\");\n}\n\nexport function getExtrinsicAccount(address: string) {\n const isEthAddress = address.length === 42 && address.startsWith('0x');\n\n return isEthAddress\n ? {\n AccountKey20: {\n key: address,\n },\n }\n : {\n AccountId32: {\n id: u8aToHex(decodeAddress(address)),\n network: null,\n },\n };\n}\n","import { AnyChain, ChainAssetId } from '@moonbeam-network/xcm-types';\nimport { ExtrinsicConfig } from './ExtrinsicConfig';\n\nexport interface ExtrinsicConfigBuilder {\n build: (params: ExtrinsicConfigBuilderPrams) => ExtrinsicConfig;\n}\n\nexport interface ExtrinsicConfigBuilderPrams {\n address: string;\n amount: bigint;\n asset: ChainAssetId;\n destination: AnyChain;\n fee: bigint;\n feeAsset: ChainAssetId;\n palletInstance?: number;\n source: AnyChain;\n}\n\nexport enum XcmVersion {\n v1 = 'V1',\n v2 = 'V2',\n v3 = 'V3',\n}\n\nexport type Parents = 0 | 1;\n","import { SubmittableExtrinsicFunction } from '@polkadot/api/types';\nimport { CallType } from '../builder.interfaces';\nimport { BaseConfig, BaseConfigConstructorParams } from '../types/BaseConfig';\n\nexport interface ExtrinsicConfigConstructorParams\n extends Omit<BaseConfigConstructorParams, 'type'> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getArgs: (func?: SubmittableExtrinsicFunction<'promise'>) => any[];\n}\n\nexport class ExtrinsicConfig extends BaseConfig {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getArgs: (func?: SubmittableExtrinsicFunction<'promise'>) => any[];\n\n constructor({ getArgs, ...other }: ExtrinsicConfigConstructorParams) {\n super({ ...other, type: CallType.Substrate });\n\n this.getArgs = getArgs;\n }\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicAccount } from '../../ExtrinsicBuilder.utils';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\n\nexport enum EqBalancesFee {\n SovereignAccWillPay = 'SovereignAccWillPay',\n TargetChainAccWillPay = 'TargetChainAccWillPay',\n ThisAccWillPay = 'ThisAccWillPay',\n}\n\nconst pallet = 'eqBalances';\n\nexport function eqBalances() {\n return {\n xcmTransfer: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: 'xcmTransfer',\n getArgs: () => [\n asset,\n amount,\n {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n EqBalancesFee.ThisAccWillPay,\n ],\n }),\n }),\n transferXcm: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination, fee, feeAsset }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: 'transferXcm',\n getArgs: () => {\n const amountWithoutFee = amount - fee > 0n ? amount - fee : 0n;\n\n return [\n [asset, asset === feeAsset ? amountWithoutFee : amount],\n [feeAsset, fee],\n {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n ];\n },\n }),\n }),\n };\n}\n","/* eslint-disable sort-keys */\nimport { SubmittableExtrinsicFunction } from '@polkadot/api/types';\nimport {\n ExtrinsicConfigBuilderPrams,\n Parents,\n} from '../../ExtrinsicBuilder.interfaces';\nimport {\n getExtrinsicAccount,\n getExtrinsicArgumentVersion,\n} from '../../ExtrinsicBuilder.utils';\n\nexport interface GetExtrinsicParams extends ExtrinsicConfigBuilderPrams {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n asset: any;\n func?: SubmittableExtrinsicFunction<'promise'>;\n parents?: Parents;\n feeIndex?: number;\n}\n\nexport function getPolkadotXcmExtrinsicArgs({\n asset,\n address,\n destination,\n func,\n parents = 1,\n feeIndex = 0,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n}: GetExtrinsicParams): any[] {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const version = getExtrinsicArgumentVersion(func);\n\n return [\n {\n [version]: {\n parents,\n interior: {\n X1: {\n Parachain: destination.parachainId,\n },\n },\n },\n },\n {\n [version]: {\n parents: 0,\n interior: {\n X1: getExtrinsicAccount(address),\n },\n },\n },\n {\n [version]: asset,\n },\n feeIndex,\n 'Unlimited',\n ];\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport { getPolkadotXcmExtrinsicArgs } from './polkadotXcm.util';\n\nconst pallet = 'polkadotXcm';\n\nexport function polkadotXcm() {\n return {\n limitedReserveTransferAssets: () => {\n const func = 'limitedReserveTransferAssets';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n X1: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: {\n X1: {\n PalletInstance: params.palletInstance,\n },\n },\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n X2: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) => {\n const isAssetDifferent =\n !!params.feeAsset && params.asset !== params.feeAsset;\n const asset = [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: {\n X2: [\n {\n PalletInstance: params.palletInstance,\n },\n {\n GeneralIndex: params.asset,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ];\n\n if (isAssetDifferent) {\n asset.push({\n id: {\n Concrete: {\n parents: 0,\n interior: {\n X2: [\n {\n PalletInstance: params.palletInstance,\n },\n {\n GeneralIndex: params.feeAsset,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: params.fee,\n },\n });\n }\n\n return getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset,\n feeIndex: isAssetDifferent ? 1 : 0,\n });\n },\n }),\n }),\n };\n },\n limitedReserveWithdrawAssets: () => {\n const func = 'limitedReserveWithdrawAssets';\n\n return {\n X2: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: params.destination.parachainId,\n },\n {\n PalletInstance: params.palletInstance,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n };\n },\n };\n}\n","import { AnyChain } from '@moonbeam-network/xcm-types';\nimport { XcmVersion } from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicAccount } from '../../ExtrinsicBuilder.utils';\nimport { XTokensWeightLimit } from './xTokens.interfaces';\n\n/**\n * It is safer to always use unlimited\n */\nexport function getWeight(): XTokensWeightLimit {\n return 'Unlimited';\n}\n\nexport function getDestination(\n version: XcmVersion,\n address: string,\n destination: AnyChain,\n) {\n return {\n [version]: {\n parents: 1,\n // eslint-disable-next-line sort-keys\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n };\n}\n","/* eslint-disable sort-keys */\nimport {\n ExtrinsicConfigBuilder,\n XcmVersion,\n} from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicArgumentVersion } from '../../ExtrinsicBuilder.utils';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport { getDestination, getWeight } from './xTokens.utils';\n\nconst pallet = 'xTokens';\n\nexport function xTokens() {\n return {\n transfer: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: 'transfer',\n getArgs: (func) => {\n const version = getExtrinsicArgumentVersion(func, 2);\n\n return [\n asset,\n amount,\n getDestination(version, address, destination),\n getWeight(),\n ];\n },\n }),\n }),\n transferMultiAsset: (originParachainId: number) => {\n const funcName = 'transferMultiasset';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: funcName,\n getArgs: (func) => {\n const version = getExtrinsicArgumentVersion(func, 1);\n\n return [\n {\n [version]: {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: amount,\n },\n },\n },\n getDestination(version, address, destination),\n getWeight(),\n ];\n },\n }),\n }),\n X1: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: funcName,\n getArgs: (func) => {\n const version = getExtrinsicArgumentVersion(func, 1);\n\n return [\n {\n [version]: {\n id: {\n Concrete: {\n parents: 1,\n interior: {\n X1: {\n Parachain: originParachainId,\n },\n },\n },\n },\n fun: {\n Fungible: amount,\n },\n },\n },\n getDestination(version, address, destination),\n getWeight(),\n ];\n },\n }),\n }),\n X2: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: funcName,\n getArgs: (func) => {\n const version = getExtrinsicArgumentVersion(func, 1);\n\n return [\n {\n [version]: {\n id: {\n Concrete: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: originParachainId,\n },\n {\n GeneralKey: asset,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: amount,\n },\n },\n },\n getDestination(version, address, destination),\n getWeight(),\n ];\n },\n }),\n }),\n };\n },\n transferMultiCurrencies: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination, fee, feeAsset }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: 'transferMulticurrencies',\n getArgs: () => [\n [\n [asset, amount],\n [feeAsset, fee],\n ],\n 1,\n getDestination(XcmVersion.v3, address, destination),\n getWeight(),\n ],\n }),\n }),\n };\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicAccount } from '../../ExtrinsicBuilder.utils';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\n\nconst pallet = 'xTransfer';\n\nexport function xTransfer() {\n return {\n transfer: () => {\n const method = 'transfer';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, destination }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: method,\n getArgs: () => [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: amount,\n },\n },\n {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n {\n refTime: 5_000_000_000,\n proofSize: 0,\n },\n ],\n }),\n }),\n X2: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, destination, palletInstance }) =>\n new ExtrinsicConfig({\n module: pallet,\n func: method,\n getArgs: () => [\n {\n id: {\n Concrete: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n {\n PalletInstance: palletInstance,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: amount || 1n,\n },\n },\n {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n getExtrinsicAccount(address),\n ],\n },\n },\n {\n refTime: 5_000_000_000,\n proofSize: 0,\n },\n ],\n }),\n }),\n };\n },\n };\n}\n","/* eslint-disable sort-keys */\nimport {\n ExtrinsicConfigBuilder,\n Parents,\n} from '../../ExtrinsicBuilder.interfaces';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport { getPolkadotXcmExtrinsicArgs } from '../polkadotXcm/polkadotXcm.util';\n\nconst pallet = 'xcmPallet';\n\nexport function xcmPallet() {\n return {\n limitedReserveTransferAssets: (parents: Parents = 1) => {\n const func = 'limitedReserveTransferAssets';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n parents,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n };\n },\n };\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { eqBalances } from './pallets/eqBalances';\nimport { polkadotXcm } from './pallets/polkadotXcm';\nimport { xTokens } from './pallets/xTokens';\nimport { xTransfer } from './pallets/xTransfer';\nimport { xcmPallet } from './pallets/xcmPallet';\n\nexport function ExtrinsicBuilder() {\n return {\n eqBalances,\n xTokens,\n xTransfer,\n polkadotXcm,\n xcmPallet,\n };\n}\n","import { ApiPromise } from '@polkadot/api';\nimport { CallType } from '../../builder.interfaces';\n\nexport interface SubstrateCallConfigConstructorParams {\n api: ApiPromise;\n call: () => Promise<bigint>;\n}\n\nexport class SubstrateCallConfig {\n readonly api: ApiPromise;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly call: () => Promise<any>;\n\n readonly type = CallType.Substrate;\n\n constructor({ api, call }: SubstrateCallConfigConstructorParams) {\n this.api = api;\n this.call = call;\n }\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { Option, u128 } from '@polkadot/types';\nimport { SubstrateCallConfig } from '../types/substrate/SubstrateCallConfig';\nimport { FeeConfigBuilder } from './FeeBuilder.interfaces';\n\nexport function FeeBuilder() {\n return {\n assetManager,\n };\n}\n\nfunction assetManager() {\n return {\n assetTypeUnitsPerSecond: (weight = 1_000_000_000): FeeConfigBuilder => ({\n build: ({ api, asset }) =>\n new SubstrateCallConfig({\n api,\n call: async (): Promise<bigint> => {\n const type = (await api.query.assetManager.assetIdType(\n asset,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n )) as unknown as Option<any>;\n\n if (type.isNone) {\n throw new Error(`No asset type found for asset ${asset}`);\n }\n\n const unwrappedType = type.unwrap();\n\n const res = (await api.query.assetManager.assetTypeUnitsPerSecond(\n unwrappedType,\n )) as unknown as Option<u128>;\n\n const unitsPerSecond = res.unwrapOrDefault().toBigInt();\n\n return (BigInt(weight) * unitsPerSecond) / BigInt(10 ** 12);\n },\n }),\n }),\n };\n}\n"],"mappings":"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AO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAQA,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,KAAME,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,eAAgBF,EAAO,cACzB,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUA,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAQA,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GAAsB,CAC9B,IAAME,EACJ,CAAC,CAACJ,EAAO,UAAYA,EAAO,QAAUA,EAAO,SACzCK,EAAQ,CACZ,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,eAAgBL,EAAO,cACzB,EACA,CACE,aAAcA,EAAO,KACvB,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUA,EAAO,MACnB,CACF,CACF,EAEA,OAAII,GACFC,EAAM,KAAK,CACT,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,eAAgBL,EAAO,cACzB,EACA,CACE,aAAcA,EAAO,QACvB,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUA,EAAO,GACnB,CACF,CAAC,EAGIG,EAA4B,CACjC,GAAGH,EACH,KAAME,EACN,MAAAG,EACA,SAAUD,EAAmB,EAAI,CACnC,CAAC,CACH,CACF,CAAC,CACL,EACF,CACF,EACA,6BAA8B,IAAM,CAClC,IAAML,EAAO,+BAEb,MAAO,CACL,GAAI,KAA+B,CACjC,MAAQC,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,KAAME,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWF,EAAO,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","names":["CallType","BaseConfig","module","func","type","SubstrateQueryConfig","BaseConfig","args","transform","type","other","AssetMinBuilder","assetRegistry","assets","pallet","asset","SubstrateQueryConfig","response","isString","evmToAddress","formatAssetIdToERC20","isString","u8aToHex","decodeAddress","evmToAddress","ContractConfig","BaseConfig","args","address","other","U_64_MAX","Xtokens","weight","address","amount","asset","destination","ContractConfig","isString","formatAssetIdToERC20","getDestinationMultilocation","fee","feeAsset","multilocation","getDestinationMultilocationForPrecompileDestination","accountType","substrateAddress","evmToAddress","acc","u8aToHex","decodeAddress","ContractBuilder","Xtokens","BalanceBuilder","evm","substrate","erc20","assets","system","tokens","address","asset","isString","ContractConfig","SubstrateQueryConfig","response","balance","frozen","_a","res","balances","assetId","substrateAddress","evmToAddress","free","getTypeDef","u8aToHex","decodeAddress","XcmVersion","getExtrinsicArgumentVersion","func","index","type","instance","raw","getTypeDef","versions","x","getExtrinsicAccount","address","u8aToHex","decodeAddress","ExtrinsicConfig","BaseConfig","getArgs","other","pallet","eqBalances","address","amount","asset","destination","ExtrinsicConfig","getExtrinsicAccount","fee","feeAsset","amountWithoutFee","getPolkadotXcmExtrinsicArgs","asset","address","destination","func","parents","feeIndex","version","getExtrinsicArgumentVersion","getExtrinsicAccount","pallet","polkadotXcm","func","params","ExtrinsicConfig","extrinsicFunction","getPolkadotXcmExtrinsicArgs","isAssetDifferent","asset","getWeight","getDestination","version","address","destination","getExtrinsicAccount","pallet","xTokens","address","amount","asset","destination","ExtrinsicConfig","func","version","getExtrinsicArgumentVersion","getDestination","getWeight","originParachainId","funcName","fee","feeAsset","pallet","xTransfer","method","address","amount","destination","ExtrinsicConfig","getExtrinsicAccount","palletInstance","pallet","xcmPallet","parents","func","params","ExtrinsicConfig","extrinsicFunction","getPolkadotXcmExtrinsicArgs","ExtrinsicBuilder","eqBalances","xTokens","xTransfer","polkadotXcm","xcmPallet","SubstrateCallConfig","api","call","FeeBuilder","assetManager","weight","api","asset","SubstrateCallConfig","type","unwrappedType","unitsPerSecond"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@moonbeam-network/xcm-builder",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "Moonbeam XCM builder",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "tsup",
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
"types": "./build/index.d.ts",
|
|
51
51
|
"main": "./build/index.cjs",
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@moonbeam-network/xcm-types": "2.
|
|
54
|
-
"@moonbeam-network/xcm-utils": "2.0.
|
|
53
|
+
"@moonbeam-network/xcm-types": "2.2.0",
|
|
54
|
+
"@moonbeam-network/xcm-utils": "2.0.7",
|
|
55
55
|
"big.js": "^6.2.1"
|
|
56
56
|
},
|
|
57
57
|
"peerDependencies": {
|