@moonbeam-network/xcm-builder 2.4.6 → 2.4.7

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 CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var w=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var Q=Object.prototype.hasOwnProperty;var K=(n,r)=>{for(var t in r)w(n,t,{get:r[t],enumerable:!0})},L=(n,r,t,e)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of U(r))!Q.call(n,i)&&i!==t&&w(n,i,{get:()=>r[i],enumerable:!(e=G(r,i))||e.enumerable});return n};var J=n=>L(w({},"__esModule",{value:!0}),n);var fr={};K(fr,{AssetMinBuilder:()=>j,BalanceBuilder:()=>nr,BaseConfig:()=>m,CallType:()=>g,ContractBuilder:()=>tr,ContractConfig:()=>f,ExtrinsicBuilder:()=>cr,ExtrinsicConfig:()=>a,FeeBuilder:()=>ur,SubstrateQueryConfig:()=>c,XcmVersion:()=>B,calculateSystemAccountBalance:()=>T,evm:()=>k,substrate:()=>D});module.exports=J(fr);var Kt=require("@polkadot/api-augment");var g=(t=>(t.Evm="Evm",t.Substrate="Substrate",t))(g||{});var m=class{module;func;type;constructor({module:r,func:t,type:e}){this.module=r,this.func=t,this.type=e}};var c=class extends m{args;transform;constructor({args:r=[],transform:t,type:e="Substrate",...i}){super({...i,type:e}),this.args=r,this.transform=t}};function j(){return{assetRegistry:Y,assets:Z}}function Y(){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 Z(){return{asset:()=>({build:({asset:n})=>new c({module:"assets",func:"asset",args:[n],transform:async r=>r.unwrapOrDefault().minBalance.toBigInt()})})}}var X=require("@polkadot/util"),F=require("@polkadot/util-crypto");var y=require("@moonbeam-network/xcm-utils"),l=require("@polkadot/util"),A=require("@polkadot/util-crypto");var f=class extends m{args;address;constructor({args:r,address:t,...e}){super({...e,type:"Evm"}),this.args=r,this.address=t}};var I=18446744073709551615n;function S(){return{transfer:(n=I)=>({build:({address:r,amount:t,asset:e,destination:i})=>new f({args:[(0,l.isString)(e)?(0,y.formatAssetIdToERC20)(e):e,t,v(r,i),n],func:"transfer",module:"Xtokens"})}),transferMultiCurrencies:(n=I)=>({build:({address:r,amount:t,asset:e,destination:i,fee:o,feeAsset:s})=>new f({args:[[[(0,l.isString)(e)?(0,y.formatAssetIdToERC20)(e):e,t],[(0,l.isString)(s)?(0,y.formatAssetIdToERC20)(s):s,o]],1,v(r,i),n],func:"transferMultiCurrencies",module:"Xtokens"})}),transferWithEvmTo32:(n=I)=>({build:({address:r,amount:t,asset:e,destination:i})=>{let o=rr(r,i);return new f({args:[(0,l.isString)(e)?(0,y.formatAssetIdToERC20)(e):e,t,o,n],func:"transfer",module:"Xtokens"})}})}}function rr(n,r){let t="01",e=(0,A.evmToAddress)(n),i=`0x${t}${(0,l.u8aToHex)((0,A.decodeAddress)(e),-1,!1)}00`;return[1,r.parachainId?[`0x0000000${r.parachainId.toString(16)}`,i]:[i]]}function v(n,r){let e=`0x${r.isEvmParachain()?"03":"01"}${(0,l.u8aToHex)((0,A.decodeAddress)(n),-1,!1)}00`;return[1,r.parachainId?[`0x0000000${r.parachainId.toString(16)}`,e]:[e]]}function tr(){return{Xtokens:S}}function nr(){return{evm:k,substrate:D}}function k(){return{erc20:er}}function D(){return{assets:ir,system:or,tokens:sr}}function er(){return{build:({address:n,asset:r})=>{if(!r||!(0,X.isString)(r))throw new Error(`Invalid contract address: ${r}`);return new f({address:r,args:[n],func:"balanceOf",module:"Erc20"})}}}function ir(){return{account:()=>({build:({address:n,asset:r})=>new c({module:"assets",func:"account",args:[r,n],transform:async t=>t.unwrapOrDefault().balance.toBigInt()})})}}function or(){return{account:()=>({build:({address:n})=>new c({module:"system",func:"account",args:[n],transform:async r=>T(r)})}),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(([P])=>P===r);return o?BigInt(o[1].positive):0n}})}),accountEvmTo32:()=>({build:({address:n})=>{let r=(0,F.evmToAddress)(n);return new c({module:"system",func:"account",args:[r],transform:async t=>T(t)})}})}}function sr(){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())})})}}async function T(n){let r=n.data,t=BigInt(r.free.toString()),e=r.miscFrozen??r.frozen,i=BigInt(e.sub(r.reserved).toString()),o=i<0n?0n:i;return t-o}var M=require("@polkadot/types"),O=require("@polkadot/util"),W=require("@polkadot/util-crypto");var B=(e=>(e.v1="V1",e.v2="V2",e.v3="V3",e))(B||{});function d(n,r=0){if(!n)return"V1";let{type:t}=n.meta.args[r],e=n.meta.registry.createType(t.toString()),i=(0,M.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,O.u8aToHex)((0,W.decodeAddress)(n)),network:null}}}var a=class extends m{getArgs;constructor({getArgs:r,...t}){super({...t,type:"Substrate"}),this.getArgs=r}};var N="eqBalances";function R(){return{xcmTransfer:()=>({build:({address:n,amount:r,asset:t,destination:e})=>new a({module:N,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:N,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=d(e);return[{[s]:{parents:i,interior:{X1:{Parachain:t.parachainId}}}},{[s]:{parents:0,interior:{X1:u(r)}}},{[s]:n},o,"Unlimited"]}function _({asset:n,feeAsset:r}){let t=Number(n),e=Number(r);return Number.isNaN(t)||Number.isNaN(e)?!1:t>e}var h="polkadotXcm";function V(){return{limitedReserveTransferAssets:()=>{let n="limitedReserveTransferAssets";return{here:()=>({build:r=>new a({module:h,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:h,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:h,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}}],o=_(r);if(e){let s={id:{Concrete:{parents:0,interior:{X2:[{PalletInstance:r.palletInstance},{GeneralIndex:r.feeAsset}]}}},fun:{Fungible:r.fee}};o?i.unshift(s):i.push(s)}return p({...r,func:t,asset:i,feeIndex:e&&!o?1:0})}})})}},limitedReserveWithdrawAssets:()=>{let n="limitedReserveWithdrawAssets";return{X2:()=>({build:r=>new a({module:h,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 b="xTokens";function $(){return{transfer:()=>({build:({address:n,amount:r,asset:t,destination:e})=>new a({module:b,func:"transfer",getArgs:i=>{let o=d(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:b,func:r,getArgs:o=>{let s=d(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:b,func:r,getArgs:o=>{let s=d(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:b,func:r,getArgs:s=>{let P=d(s,1);return[{[P]:{id:{Concrete:{parents:1,interior:{X2:[{Parachain:n},{GeneralKey:i}]}}},fun:{Fungible:e}}},C(P,t,o),x()]}})})}},transferMultiCurrencies:()=>({build:({address:n,amount:r,asset:t,destination:e,fee:i,feeAsset:o})=>new a({module:b,func:"transferMulticurrencies",getArgs:()=>[[[t,r],[o,i]],1,C("V3",n,e),x()]})})}}var q="xTransfer";function z(){return{transfer:()=>{let n="transfer";return{here:()=>({build:({address:r,amount:t,destination:e})=>new a({module:q,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:q,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 ar="xcmPallet";function H(){return{limitedReserveTransferAssets:(n=1)=>{let r="limitedReserveTransferAssets";return{here:()=>({build:t=>new a({module:ar,func:r,getArgs:e=>p({...t,parents:n,func:e,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:t.amount}}]})})})}}}}function cr(){return{eqBalances:R,xTokens:$,xTransfer:z,polkadotXcm:V,xcmPallet:H}}var E=class{api;call;type="Substrate";constructor({api:r,call:t}){this.api=r,this.call=t}};function ur(){return{assetManager:mr}}function mr(){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,calculateSystemAccountBalance,evm,substrate});
1
+ "use strict";var w=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var Q=Object.prototype.hasOwnProperty;var K=(e,r)=>{for(var t in r)w(e,t,{get:r[t],enumerable:!0})},J=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of L(r))!Q.call(e,i)&&i!==t&&w(e,i,{get:()=>r[i],enumerable:!(n=G(r,i))||n.enumerable});return e};var j=e=>J(w({},"__esModule",{value:!0}),e);var lr={};K(lr,{AssetMinBuilder:()=>Y,BalanceBuilder:()=>nr,BaseConfig:()=>f,CallType:()=>g,ContractBuilder:()=>er,ContractConfig:()=>l,ExtrinsicBuilder:()=>cr,ExtrinsicConfig:()=>a,FeeBuilder:()=>ur,SubstrateQueryConfig:()=>c,XcmVersion:()=>b,calculateSystemAccountBalance:()=>T,evm:()=>k,substrate:()=>D});module.exports=j(lr);var Yt=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:n}){this.module=r,this.func=t,this.type=n}};var c=class extends f{args;transform;constructor({args:r=[],transform:t,type:n="Substrate",...i}){super({...i,type:n}),this.args=r,this.transform=t}};function Y(){return{assetRegistry:Z,assets:rr}}function Z(){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 rr(){return{asset:()=>({build:({asset:e})=>new c({module:"assets",func:"asset",args:[e],transform:async r=>r.unwrapOrDefault().minBalance.toBigInt()})})}}var S=require("@polkadot/util"),F=require("@polkadot/util-crypto");var A=require("@moonbeam-network/xcm-utils"),m=require("@polkadot/util"),y=require("@polkadot/util-crypto");var l=class extends f{args;address;constructor({args:r,address:t,...n}){super({...n,type:"Evm"}),this.args=r,this.address=t}};var I=18446744073709551615n;function X(){return{transfer:(e=I)=>({build:({address:r,amount:t,asset:n,destination:i})=>new l({args:[(0,m.isString)(n)?(0,A.formatAssetIdToERC20)(n):n,t,v(r,i),e],func:"transfer",module:"Xtokens"})}),transferMultiCurrencies:(e=I)=>({build:({address:r,amount:t,asset:n,destination:i,fee:o,feeAsset:s})=>new l({args:[[[(0,m.isString)(n)?(0,A.formatAssetIdToERC20)(n):n,t],[(0,m.isString)(s)?(0,A.formatAssetIdToERC20)(s):s,o]],1,v(r,i),e],func:"transferMultiCurrencies",module:"Xtokens"})}),transferWithEvmTo32:(e=I)=>({build:({address:r,amount:t,asset:n,destination:i})=>{let o=tr(r,i);return new l({args:[(0,m.isString)(n)?(0,A.formatAssetIdToERC20)(n):n,t,o,e],func:"transfer",module:"Xtokens"})}})}}function tr(e,r){let t="01",n=(0,y.evmToAddress)(e),i=`0x${t}${(0,m.u8aToHex)((0,y.decodeAddress)(n),-1,!1)}00`;return[1,r.parachainId?[`0x0000000${r.parachainId.toString(16)}`,i]:[i]]}function v(e,r){let n=`0x${r.isEvmParachain()?"03":"01"}${(0,m.u8aToHex)((0,y.decodeAddress)(e),-1,!1)}00`;return[1,r.parachainId?[`0x0000000${r.parachainId.toString(16)}`,n]:[n]]}function er(){return{Xtokens:X}}function nr(){return{evm:k,substrate:D}}function k(){return{erc20:ir}}function D(){return{assets:or,system:sr,tokens:ar}}function ir(){return{build:({address:e,asset:r})=>{if(!r||!(0,S.isString)(r))throw new Error(`Invalid contract address: ${r}`);return new l({address:r,args:[e],func:"balanceOf",module:"Erc20"})}}}function or(){return{account:()=>({build:({address:e,asset:r})=>new c({module:"assets",func:"account",args:[r,e],transform:async t=>t.unwrapOrDefault().balance.toBigInt()})})}}function sr(){return{account:()=>({build:({address:e})=>new c({module:"system",func:"account",args:[e],transform:async r=>T(r)})}),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,F.evmToAddress)(e);return new c({module:"system",func:"account",args:[r],transform:async t=>T(t)})}})}}function ar(){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())})})}}async function T(e){let r=e.data,t=BigInt(r.free.toString()),n=r.miscFrozen??r.frozen,i=BigInt(n.sub(r.reserved).toString()),o=i<0n?0n:i;return t-o}var M=require("@polkadot/types"),O=require("@polkadot/util"),W=require("@polkadot/util-crypto");var b=(i=>(i.v1="V1",i.v2="V2",i.v3="V3",i.v4="V4",i))(b||{});function d(e,r=0){if(!e)return"V1";let{type:t}=e.meta.args[r],n=e.meta.registry.createType(t.toString()),i=(0,M.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,O.u8aToHex)((0,W.decodeAddress)(e)),network:null}}}var a=class extends f{getArgs;constructor({getArgs:r,...t}){super({...t,type:"Substrate"}),this.getArgs=r}};var N="eqBalances";function R(){return{xcmTransfer:()=>({build:({address:e,amount:r,asset:t,destination:n})=>new a({module:N,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:N,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=d(n);return[{[s]:{parents:i,interior:{X1:{Parachain:t.parachainId}}}},{[s]:{parents:0,interior:{X1:u(r)}}},{[s]:e},o,"Unlimited"]}function _({asset:e,feeAsset:r}){let t=Number(e),n=Number(r);return Number.isNaN(t)||Number.isNaN(n)?!1:t>n}var h="polkadotXcm";function V(){return{limitedReserveTransferAssets:()=>{let e="limitedReserveTransferAssets";return{here:()=>({build:r=>new a({module:h,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:h,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: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}}],o=_(r);if(n){let s={id:{Concrete:{parents:0,interior:{X2:[{PalletInstance:r.palletInstance},{GeneralIndex:r.feeAsset}]}}},fun:{Fungible:r.fee}};o?i.unshift(s):i.push(s)}return p({...r,func:t,asset:i,feeIndex:n&&!o?1:0})}})})}},limitedReserveWithdrawAssets:()=>{let e="limitedReserveWithdrawAssets";return{X2:()=>({build:r=>new a({module:h,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 x(){return"Unlimited"}function C(e,r,t){return{[e]:{parents:1,interior:{X2:[{Parachain:t.parachainId},u(r)]}}}}var P="xTokens";function H(){return{transfer:()=>({build:({address:e,amount:r,asset:t,destination:n})=>new a({module:P,func:"transfer",getArgs:i=>{let o=d(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:P,func:r,getArgs:o=>{let s=d(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:P,func:r,getArgs:o=>{let s=d(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:P,func:r,getArgs:s=>{let B=d(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:P,func:"transferMulticurrencies",getArgs:()=>[[[t,r],[o,i]],1,C("V3",e,n),x()]})})}}var U="xTransfer";function $(){return{transfer:()=>{let e="transfer";return{here:()=>({build:({address:r,amount:t,destination:n})=>new a({module:U,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:U,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 q="xcmPallet";function z(){return{limitedReserveTransferAssets:(e=1)=>{let r="limitedReserveTransferAssets";return{here:()=>({build:t=>new a({module:q,func:r,getArgs:n=>p({...t,parents:e,func:n,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:t.amount}}]})})})}},transferAssetsUsingTypeAndThen:()=>{let e="transferAssetsUsingTypeAndThen";return{here:()=>({build:r=>new a({module:q,func:e,getArgs:()=>{let t="V4";return[{[t]:{parents:0,interior:{X1:[{Parachain:r.destination.parachainId}]}}},{[t]:[{id:{parents:0,interior:"Here"},fun:{Fungible:r.amount}}]},"LocalReserve",{[t]:{parents:0,interior:"Here"}},"LocalReserve",{[t]:[{DepositAsset:{assets:{Wild:{AllCounted:1}},beneficiary:{parents:0,interior:{X1:[u(r.address)]}}}}]},"Unlimited"]}})})}}}}function cr(){return{eqBalances:R,xTokens:H,xTransfer:$,polkadotXcm:V,xcmPallet:z}}var E=class{api;call;type="Substrate";constructor({api:r,call:t}){this.api=r,this.call=t}};function ur(){return{assetManager:fr}}function fr(){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,calculateSystemAccountBalance,evm,substrate});
2
2
  //# sourceMappingURL=index.cjs.map
@@ -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 { 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> => calculateSystemAccountBalance(response),\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> => calculateSystemAccountBalance(response),\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\nexport async function calculateSystemAccountBalance(\n response: FrameSystemAccountInfo,\n): Promise<bigint> {\n const balance = response.data as PalletBalancesAccountData &\n PalletBalancesAccountDataOld;\n\n const free = BigInt(balance.free.toString());\n const frozen = balance.miscFrozen ?? balance.frozen;\n const frozenMinusReserved = BigInt(frozen.sub(balance.reserved).toString());\n const locked = frozenMinusReserved < 0n ? 0n : frozenMinusReserved;\n\n return free - locked;\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\nexport function shouldFeeAssetPrecedeAsset({\n asset,\n feeAsset,\n}: ExtrinsicConfigBuilderPrams): boolean {\n const assetIdNumber = Number(asset);\n const feeAssetIdNumber = Number(feeAsset);\n\n if (Number.isNaN(assetIdNumber) || Number.isNaN(feeAssetIdNumber)) {\n return false;\n }\n\n return assetIdNumber > feeAssetIdNumber;\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport {\n getPolkadotXcmExtrinsicArgs,\n shouldFeeAssetPrecedeAsset,\n} 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 assets = [\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 const shouldFeeAssetPrecede =\n shouldFeeAssetPrecedeAsset(params);\n\n if (isAssetDifferent) {\n const feeAsset = {\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 if (shouldFeeAssetPrecede) {\n assets.unshift(feeAsset);\n } else {\n assets.push(feeAsset);\n }\n }\n\n return getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: assets,\n feeIndex: isAssetDifferent && !shouldFeeAssetPrecede ? 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":["src_exports","__export","AssetMinBuilder","BalanceBuilder","BaseConfig","CallType","ContractBuilder","ContractConfig","ExtrinsicBuilder","ExtrinsicConfig","FeeBuilder","SubstrateQueryConfig","XcmVersion","calculateSystemAccountBalance","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","calculateSystemAccountBalance","_a","res","balances","balance","assetId","substrateAddress","free","frozen","frozenMinusReserved","locked","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","shouldFeeAssetPrecedeAsset","feeAsset","assetIdNumber","feeAssetIdNumber","pallet","polkadotXcm","func","params","ExtrinsicConfig","extrinsicFunction","getPolkadotXcmExtrinsicArgs","isAssetDifferent","assets","shouldFeeAssetPrecede","shouldFeeAssetPrecedeAsset","feeAsset","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> => calculateSystemAccountBalance(response),\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> => calculateSystemAccountBalance(response),\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\nexport async function calculateSystemAccountBalance(\n response: FrameSystemAccountInfo,\n): Promise<bigint> {\n const balance = response.data as PalletBalancesAccountData &\n PalletBalancesAccountDataOld;\n\n const free = BigInt(balance.free.toString());\n const frozen = balance.miscFrozen ?? balance.frozen;\n const frozenMinusReserved = BigInt(frozen.sub(balance.reserved).toString());\n const locked = frozenMinusReserved < 0n ? 0n : frozenMinusReserved;\n\n return free - locked;\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 v4 = 'V4',\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\nexport function shouldFeeAssetPrecedeAsset({\n asset,\n feeAsset,\n}: ExtrinsicConfigBuilderPrams): boolean {\n const assetIdNumber = Number(asset);\n const feeAssetIdNumber = Number(feeAsset);\n\n if (Number.isNaN(assetIdNumber) || Number.isNaN(feeAssetIdNumber)) {\n return false;\n }\n\n return assetIdNumber > feeAssetIdNumber;\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport {\n getPolkadotXcmExtrinsicArgs,\n shouldFeeAssetPrecedeAsset,\n} 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 assets = [\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 const shouldFeeAssetPrecede =\n shouldFeeAssetPrecedeAsset(params);\n\n if (isAssetDifferent) {\n const feeAsset = {\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 if (shouldFeeAssetPrecede) {\n assets.unshift(feeAsset);\n } else {\n assets.push(feeAsset);\n }\n }\n\n return getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: assets,\n feeIndex: isAssetDifferent && !shouldFeeAssetPrecede ? 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 XcmVersion,\n} from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicAccount } from '../../ExtrinsicBuilder.utils';\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 transferAssetsUsingTypeAndThen: () => {\n const func = 'transferAssetsUsingTypeAndThen';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: () => {\n const version = XcmVersion.v4;\n return [\n {\n [version]: {\n parents: 0,\n interior: {\n X1: [\n {\n Parachain: params.destination.parachainId,\n },\n ],\n },\n },\n },\n {\n [version]: [\n {\n id: {\n parents: 0,\n interior: 'Here',\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n },\n 'LocalReserve',\n {\n [version]: {\n parents: 0,\n interior: 'Here',\n },\n },\n 'LocalReserve',\n {\n [version]: [\n {\n DepositAsset: {\n assets: {\n Wild: { AllCounted: 1 },\n },\n beneficiary: {\n parents: 0,\n interior: {\n X1: [getExtrinsicAccount(params.address)],\n },\n },\n },\n },\n ],\n },\n 'Unlimited',\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":["src_exports","__export","AssetMinBuilder","BalanceBuilder","BaseConfig","CallType","ContractBuilder","ContractConfig","ExtrinsicBuilder","ExtrinsicConfig","FeeBuilder","SubstrateQueryConfig","XcmVersion","calculateSystemAccountBalance","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","calculateSystemAccountBalance","_a","res","balances","balance","assetId","substrateAddress","free","frozen","frozenMinusReserved","locked","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","shouldFeeAssetPrecedeAsset","feeAsset","assetIdNumber","feeAssetIdNumber","pallet","polkadotXcm","func","params","ExtrinsicConfig","extrinsicFunction","getPolkadotXcmExtrinsicArgs","isAssetDifferent","assets","shouldFeeAssetPrecede","shouldFeeAssetPrecedeAsset","feeAsset","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","version","getExtrinsicAccount","ExtrinsicBuilder","eqBalances","xTokens","xTransfer","polkadotXcm","xcmPallet","SubstrateCallConfig","api","call","FeeBuilder","assetManager","weight","api","asset","SubstrateCallConfig","type","unwrappedType","unitsPerSecond"]}
package/build/index.d.cts CHANGED
@@ -157,7 +157,8 @@ interface ExtrinsicConfigBuilderPrams {
157
157
  declare enum XcmVersion {
158
158
  v1 = "V1",
159
159
  v2 = "V2",
160
- v3 = "V3"
160
+ v3 = "V3",
161
+ v4 = "V4"
161
162
  }
162
163
  type Parents = 0 | 1;
163
164
 
@@ -198,6 +199,9 @@ declare function xcmPallet(): {
198
199
  limitedReserveTransferAssets: (parents?: Parents) => {
199
200
  here: () => ExtrinsicConfigBuilder;
200
201
  };
202
+ transferAssetsUsingTypeAndThen: () => {
203
+ here: () => ExtrinsicConfigBuilder;
204
+ };
201
205
  };
202
206
 
203
207
  declare function ExtrinsicBuilder(): {
package/build/index.d.ts CHANGED
@@ -176,6 +176,7 @@ declare enum XcmVersion {
176
176
  v1 = 'V1',
177
177
  v2 = 'V2',
178
178
  v3 = 'V3',
179
+ v4 = 'V4',
179
180
  }
180
181
  type Parents = 0 | 1;
181
182
 
@@ -216,6 +217,9 @@ declare function xcmPallet(): {
216
217
  limitedReserveTransferAssets: (parents?: Parents) => {
217
218
  here: () => ExtrinsicConfigBuilder;
218
219
  };
220
+ transferAssetsUsingTypeAndThen: () => {
221
+ here: () => ExtrinsicConfigBuilder;
222
+ };
219
223
  };
220
224
 
221
225
  declare function ExtrinsicBuilder(): {
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 m=class{module;func;type;constructor({module:r,func:t,type:n}){this.module=r,this.func=t,this.type=n}};var c=class extends m{args;transform;constructor({args:r=[],transform:t,type:n="Substrate",...i}){super({...i,type:n}),this.args=r,this.transform=t}};function cr(){return{assetRegistry:R,assets:_}}function R(){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 q}from"@polkadot/util";import{evmToAddress as z}from"@polkadot/util-crypto";import{formatAssetIdToERC20 as A}from"@moonbeam-network/xcm-utils";import{isString as b,u8aToHex as I}from"@polkadot/util";import{decodeAddress as T,evmToAddress as V}from"@polkadot/util-crypto";var f=class extends m{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 f({args:[b(n)?A(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 f({args:[[[b(n)?A(n):n,t],[b(s)?A(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=$(r,i);return new f({args:[b(n)?A(n):n,t,o,e],func:"transfer",module:"Xtokens"})}})}}function $(e,r){let t="01",n=V(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 wr(){return{Xtokens:v}}function Or(){return{evm:H,substrate:G}}function H(){return{erc20:U}}function G(){return{assets:Q,system:K,tokens:L}}function U(){return{build:({address:e,asset:r})=>{if(!r||!q(r))throw new Error(`Invalid contract address: ${r}`);return new f({address:r,args:[e],func:"balanceOf",module:"Erc20"})}}}function Q(){return{account:()=>({build:({address:e,asset:r})=>new c({module:"assets",func:"account",args:[r,e],transform:async t=>t.unwrapOrDefault().balance.toBigInt()})})}}function K(){return{account:()=>({build:({address:e})=>new c({module:"system",func:"account",args:[e],transform:async r=>S(r)})}),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=z(e);return new c({module:"system",func:"account",args:[r],transform:async t=>S(t)})}})}}function L(){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())})})}}async function S(e){let r=e.data,t=BigInt(r.free.toString()),n=r.miscFrozen??r.frozen,i=BigInt(n.sub(r.reserved).toString()),o=i<0n?0n:i;return t-o}import{getTypeDef as J}from"@polkadot/types";import{u8aToHex as j}from"@polkadot/util";import{decodeAddress as Y}from"@polkadot/util-crypto";var E=(n=>(n.v1="V1",n.v2="V2",n.v3="V3",n))(E||{});function l(e,r=0){if(!e)return"V1";let{type:t}=e.meta.args[r],n=e.meta.registry.createType(t.toString()),i=J(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:j(Y(e)),network:null}}}var a=class extends m{getArgs;constructor({getArgs:r,...t}){super({...t,type:"Substrate"}),this.getArgs=r}};var X="eqBalances";function F(){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 d({asset:e,address:r,destination:t,func:n,parents:i=1,feeIndex:o=0}){let s=l(n);return[{[s]:{parents:i,interior:{X1:{Parachain:t.parachainId}}}},{[s]:{parents:0,interior:{X1:u(r)}}},{[s]:e},o,"Unlimited"]}function k({asset:e,feeAsset:r}){let t=Number(e),n=Number(r);return Number.isNaN(t)||Number.isNaN(n)?!1:t>n}var P="polkadotXcm";function D(){return{limitedReserveTransferAssets:()=>{let e="limitedReserveTransferAssets";return{here:()=>({build:r=>new a({module:P,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:P,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:P,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}}],o=k(r);if(n){let s={id:{Concrete:{parents:0,interior:{X2:[{PalletInstance:r.palletInstance},{GeneralIndex:r.feeAsset}]}}},fun:{Fungible:r.fee}};o?i.unshift(s):i.push(s)}return d({...r,func:t,asset:i,feeIndex:n&&!o?1:0})}})})}},limitedReserveWithdrawAssets:()=>{let e="limitedReserveWithdrawAssets";return{X2:()=>({build:r=>new a({module:P,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 p(){return"Unlimited"}function g(e,r,t){return{[e]:{parents:1,interior:{X2:[{Parachain:t.parachainId},u(r)]}}}}var C="xTokens";function M(){return{transfer:()=>({build:({address:e,amount:r,asset:t,destination:n})=>new a({module:C,func:"transfer",getArgs:i=>{let o=l(i,2);return[t,r,g(o,e,n),p()]}})}),transferMultiAsset:e=>{let r="transferMultiasset";return{here:()=>({build:({address:t,amount:n,destination:i})=>new a({module:C,func:r,getArgs:o=>{let s=l(o,1);return[{[s]:{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:n}}},g(s,t,i),p()]}})}),X1:()=>({build:({address:t,amount:n,destination:i})=>new a({module:C,func:r,getArgs:o=>{let s=l(o,1);return[{[s]:{id:{Concrete:{parents:1,interior:{X1:{Parachain:e}}}},fun:{Fungible:n}}},g(s,t,i),p()]}})}),X2:()=>({build:({address:t,amount:n,asset:i,destination:o})=>new a({module:C,func:r,getArgs:s=>{let y=l(s,1);return[{[y]:{id:{Concrete:{parents:1,interior:{X2:[{Parachain:e},{GeneralKey:i}]}}},fun:{Fungible:n}}},g(y,t,o),p()]}})})}},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),p()]})})}}var O="xTransfer";function W(){return{transfer:()=>{let e="transfer";return{here:()=>({build:({address:r,amount:t,destination:n})=>new a({module:O,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:O,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 Z="xcmPallet";function N(){return{limitedReserveTransferAssets:(e=1)=>{let r="limitedReserveTransferAssets";return{here:()=>({build:t=>new a({module:Z,func:r,getArgs:n=>d({...t,parents:e,func:n,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:t.amount}}]})})})}}}}function Ot(){return{eqBalances:F,xTokens:M,xTransfer:W,polkadotXcm:D,xcmPallet:N}}var B=class{api;call;type="Substrate";constructor({api:r,call:t}){this.api=r,this.call=t}};function Ht(){return{assetManager:rr}}function rr(){return{assetTypeUnitsPerSecond:(e=1e9)=>({build:({api:r,asset:t})=>new B({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{cr as AssetMinBuilder,Or as BalanceBuilder,m as BaseConfig,x as CallType,wr as ContractBuilder,f as ContractConfig,Ot as ExtrinsicBuilder,a as ExtrinsicConfig,Ht as FeeBuilder,c as SubstrateQueryConfig,E as XcmVersion,S as calculateSystemAccountBalance,H as evm,G as substrate};
1
+ import"@polkadot/api-augment";var x=(t=>(t.Evm="Evm",t.Substrate="Substrate",t))(x||{});var f=class{module;func;type;constructor({module:r,func:t,type:n}){this.module=r,this.func=t,this.type=n}};var c=class extends f{args;transform;constructor({args:r=[],transform:t,type:n="Substrate",...i}){super({...i,type:n}),this.args=r,this.transform=t}};function cr(){return{assetRegistry:_,assets:V}}function _(){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 V(){return{asset:()=>({build:({asset:e})=>new c({module:"assets",func:"asset",args:[e],transform:async r=>r.unwrapOrDefault().minBalance.toBigInt()})})}}import{isString as $}from"@polkadot/util";import{evmToAddress as q}from"@polkadot/util-crypto";import{formatAssetIdToERC20 as y}from"@moonbeam-network/xcm-utils";import{isString as b,u8aToHex as I}from"@polkadot/util";import{decodeAddress as T,evmToAddress as H}from"@polkadot/util-crypto";var l=class extends f{args;address;constructor({args:r,address:t,...n}){super({...n,type:"Evm"}),this.args=r,this.address=t}};var E=18446744073709551615n;function v(){return{transfer:(e=E)=>({build:({address:r,amount:t,asset:n,destination:i})=>new l({args:[b(n)?y(n):n,t,w(r,i),e],func:"transfer",module:"Xtokens"})}),transferMultiCurrencies:(e=E)=>({build:({address:r,amount:t,asset:n,destination:i,fee:o,feeAsset:s})=>new l({args:[[[b(n)?y(n):n,t],[b(s)?y(s):s,o]],1,w(r,i),e],func:"transferMultiCurrencies",module:"Xtokens"})}),transferWithEvmTo32:(e=E)=>({build:({address:r,amount:t,asset:n,destination:i})=>{let o=U(r,i);return new l({args:[b(n)?y(n):n,t,o,e],func:"transfer",module:"Xtokens"})}})}}function U(e,r){let t="01",n=H(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 wr(){return{Xtokens:v}}function Or(){return{evm:z,substrate:G}}function z(){return{erc20:L}}function G(){return{assets:Q,system:K,tokens:J}}function L(){return{build:({address:e,asset:r})=>{if(!r||!$(r))throw new Error(`Invalid contract address: ${r}`);return new l({address:r,args:[e],func:"balanceOf",module:"Erc20"})}}}function Q(){return{account:()=>({build:({address:e,asset:r})=>new c({module:"assets",func:"account",args:[r,e],transform:async t=>t.unwrapOrDefault().balance.toBigInt()})})}}function K(){return{account:()=>({build:({address:e})=>new c({module:"system",func:"account",args:[e],transform:async r=>X(r)})}),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(([A])=>A===r);return o?BigInt(o[1].positive):0n}})}),accountEvmTo32:()=>({build:({address:e})=>{let r=q(e);return new c({module:"system",func:"account",args:[r],transform:async t=>X(t)})}})}}function J(){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())})})}}async function X(e){let r=e.data,t=BigInt(r.free.toString()),n=r.miscFrozen??r.frozen,i=BigInt(n.sub(r.reserved).toString()),o=i<0n?0n:i;return t-o}import{getTypeDef as j}from"@polkadot/types";import{u8aToHex as Y}from"@polkadot/util";import{decodeAddress as Z}from"@polkadot/util-crypto";var P=(i=>(i.v1="V1",i.v2="V2",i.v3="V3",i.v4="V4",i))(P||{});function m(e,r=0){if(!e)return"V1";let{type:t}=e.meta.args[r],n=e.meta.registry.createType(t.toString()),i=j(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:Y(Z(e)),network:null}}}var a=class extends f{getArgs;constructor({getArgs:r,...t}){super({...t,type:"Substrate"}),this.getArgs=r}};var S="eqBalances";function F(){return{xcmTransfer:()=>({build:({address:e,amount:r,asset:t,destination:n})=>new a({module:S,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:S,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=m(n);return[{[s]:{parents:i,interior:{X1:{Parachain:t.parachainId}}}},{[s]:{parents:0,interior:{X1:u(r)}}},{[s]:e},o,"Unlimited"]}function k({asset:e,feeAsset:r}){let t=Number(e),n=Number(r);return Number.isNaN(t)||Number.isNaN(n)?!1:t>n}var B="polkadotXcm";function D(){return{limitedReserveTransferAssets:()=>{let e="limitedReserveTransferAssets";return{here:()=>({build:r=>new a({module:B,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:B,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: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}}],o=k(r);if(n){let s={id:{Concrete:{parents:0,interior:{X2:[{PalletInstance:r.palletInstance},{GeneralIndex:r.feeAsset}]}}},fun:{Fungible:r.fee}};o?i.unshift(s):i.push(s)}return d({...r,func:t,asset:i,feeIndex:n&&!o?1:0})}})})}},limitedReserveWithdrawAssets:()=>{let e="limitedReserveWithdrawAssets";return{X2:()=>({build:r=>new a({module:B,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 p(){return"Unlimited"}function g(e,r,t){return{[e]:{parents:1,interior:{X2:[{Parachain:t.parachainId},u(r)]}}}}var C="xTokens";function M(){return{transfer:()=>({build:({address:e,amount:r,asset:t,destination:n})=>new a({module:C,func:"transfer",getArgs:i=>{let o=m(i,2);return[t,r,g(o,e,n),p()]}})}),transferMultiAsset:e=>{let r="transferMultiasset";return{here:()=>({build:({address:t,amount:n,destination:i})=>new a({module:C,func:r,getArgs:o=>{let s=m(o,1);return[{[s]:{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:n}}},g(s,t,i),p()]}})}),X1:()=>({build:({address:t,amount:n,destination:i})=>new a({module:C,func:r,getArgs:o=>{let s=m(o,1);return[{[s]:{id:{Concrete:{parents:1,interior:{X1:{Parachain:e}}}},fun:{Fungible:n}}},g(s,t,i),p()]}})}),X2:()=>({build:({address:t,amount:n,asset:i,destination:o})=>new a({module:C,func:r,getArgs:s=>{let A=m(s,1);return[{[A]:{id:{Concrete:{parents:1,interior:{X2:[{Parachain:e},{GeneralKey:i}]}}},fun:{Fungible:n}}},g(A,t,o),p()]}})})}},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),p()]})})}}var O="xTransfer";function W(){return{transfer:()=>{let e="transfer";return{here:()=>({build:({address:r,amount:t,destination:n})=>new a({module:O,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:O,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 N="xcmPallet";function R(){return{limitedReserveTransferAssets:(e=1)=>{let r="limitedReserveTransferAssets";return{here:()=>({build:t=>new a({module:N,func:r,getArgs:n=>d({...t,parents:e,func:n,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:t.amount}}]})})})}},transferAssetsUsingTypeAndThen:()=>{let e="transferAssetsUsingTypeAndThen";return{here:()=>({build:r=>new a({module:N,func:e,getArgs:()=>{let t="V4";return[{[t]:{parents:0,interior:{X1:[{Parachain:r.destination.parachainId}]}}},{[t]:[{id:{parents:0,interior:"Here"},fun:{Fungible:r.amount}}]},"LocalReserve",{[t]:{parents:0,interior:"Here"}},"LocalReserve",{[t]:[{DepositAsset:{assets:{Wild:{AllCounted:1}},beneficiary:{parents:0,interior:{X1:[u(r.address)]}}}}]},"Unlimited"]}})})}}}}function _t(){return{eqBalances:F,xTokens:M,xTransfer:W,polkadotXcm:D,xcmPallet:R}}var h=class{api;call;type="Substrate";constructor({api:r,call:t}){this.api=r,this.call=t}};function Qt(){return{assetManager:rr}}function rr(){return{assetTypeUnitsPerSecond:(e=1e9)=>({build:({api:r,asset:t})=>new h({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{cr as AssetMinBuilder,Or as BalanceBuilder,f as BaseConfig,x as CallType,wr as ContractBuilder,l as ContractConfig,_t as ExtrinsicBuilder,a as ExtrinsicConfig,Qt as FeeBuilder,c as SubstrateQueryConfig,P as XcmVersion,X as calculateSystemAccountBalance,z as evm,G as substrate};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -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 { 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> => calculateSystemAccountBalance(response),\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> => calculateSystemAccountBalance(response),\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\nexport async function calculateSystemAccountBalance(\n response: FrameSystemAccountInfo,\n): Promise<bigint> {\n const balance = response.data as PalletBalancesAccountData &\n PalletBalancesAccountDataOld;\n\n const free = BigInt(balance.free.toString());\n const frozen = balance.miscFrozen ?? balance.frozen;\n const frozenMinusReserved = BigInt(frozen.sub(balance.reserved).toString());\n const locked = frozenMinusReserved < 0n ? 0n : frozenMinusReserved;\n\n return free - locked;\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\nexport function shouldFeeAssetPrecedeAsset({\n asset,\n feeAsset,\n}: ExtrinsicConfigBuilderPrams): boolean {\n const assetIdNumber = Number(asset);\n const feeAssetIdNumber = Number(feeAsset);\n\n if (Number.isNaN(assetIdNumber) || Number.isNaN(feeAssetIdNumber)) {\n return false;\n }\n\n return assetIdNumber > feeAssetIdNumber;\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport {\n getPolkadotXcmExtrinsicArgs,\n shouldFeeAssetPrecedeAsset,\n} 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 assets = [\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 const shouldFeeAssetPrecede =\n shouldFeeAssetPrecedeAsset(params);\n\n if (isAssetDifferent) {\n const feeAsset = {\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 if (shouldFeeAssetPrecede) {\n assets.unshift(feeAsset);\n } else {\n assets.push(feeAsset);\n }\n }\n\n return getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: assets,\n feeIndex: isAssetDifferent && !shouldFeeAssetPrecede ? 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","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","calculateSystemAccountBalance","_a","res","balances","balance","assetId","substrateAddress","evmToAddress","free","frozen","frozenMinusReserved","locked","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","shouldFeeAssetPrecedeAsset","feeAsset","assetIdNumber","feeAssetIdNumber","pallet","polkadotXcm","func","params","ExtrinsicConfig","extrinsicFunction","getPolkadotXcmExtrinsicArgs","isAssetDifferent","assets","shouldFeeAssetPrecede","shouldFeeAssetPrecedeAsset","feeAsset","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> => calculateSystemAccountBalance(response),\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> => calculateSystemAccountBalance(response),\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\nexport async function calculateSystemAccountBalance(\n response: FrameSystemAccountInfo,\n): Promise<bigint> {\n const balance = response.data as PalletBalancesAccountData &\n PalletBalancesAccountDataOld;\n\n const free = BigInt(balance.free.toString());\n const frozen = balance.miscFrozen ?? balance.frozen;\n const frozenMinusReserved = BigInt(frozen.sub(balance.reserved).toString());\n const locked = frozenMinusReserved < 0n ? 0n : frozenMinusReserved;\n\n return free - locked;\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 v4 = 'V4',\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\nexport function shouldFeeAssetPrecedeAsset({\n asset,\n feeAsset,\n}: ExtrinsicConfigBuilderPrams): boolean {\n const assetIdNumber = Number(asset);\n const feeAssetIdNumber = Number(feeAsset);\n\n if (Number.isNaN(assetIdNumber) || Number.isNaN(feeAssetIdNumber)) {\n return false;\n }\n\n return assetIdNumber > feeAssetIdNumber;\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport {\n getPolkadotXcmExtrinsicArgs,\n shouldFeeAssetPrecedeAsset,\n} 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 assets = [\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 const shouldFeeAssetPrecede =\n shouldFeeAssetPrecedeAsset(params);\n\n if (isAssetDifferent) {\n const feeAsset = {\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 if (shouldFeeAssetPrecede) {\n assets.unshift(feeAsset);\n } else {\n assets.push(feeAsset);\n }\n }\n\n return getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: assets,\n feeIndex: isAssetDifferent && !shouldFeeAssetPrecede ? 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 XcmVersion,\n} from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicAccount } from '../../ExtrinsicBuilder.utils';\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 transferAssetsUsingTypeAndThen: () => {\n const func = 'transferAssetsUsingTypeAndThen';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: () => {\n const version = XcmVersion.v4;\n return [\n {\n [version]: {\n parents: 0,\n interior: {\n X1: [\n {\n Parachain: params.destination.parachainId,\n },\n ],\n },\n },\n },\n {\n [version]: [\n {\n id: {\n parents: 0,\n interior: 'Here',\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n },\n 'LocalReserve',\n {\n [version]: {\n parents: 0,\n interior: 'Here',\n },\n },\n 'LocalReserve',\n {\n [version]: [\n {\n DepositAsset: {\n assets: {\n Wild: { AllCounted: 1 },\n },\n beneficiary: {\n parents: 0,\n interior: {\n X1: [getExtrinsicAccount(params.address)],\n },\n },\n },\n },\n ],\n },\n 'Unlimited',\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":"AAAA,MAAO,wBCAA,IAAKA,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,IAAkB,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,OAAS,YAAAC,MAAgB,iBACzB,OAAS,gBAAAC,MAAoB,wBCR7B,OAAS,wBAAAC,MAA4B,8BACrC,OAAS,YAAAC,EAAU,YAAAC,MAAgB,iBACnC,OAAS,iBAAAC,EAAe,gBAAAC,MAAoB,wBCMrC,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,CACJC,EAASH,CAAK,EAAII,EAAqBJ,CAAK,EAAIA,EAChDD,EACAM,EAA4BP,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,IAAAK,EAAK,SAAAC,CAAS,IAC3D,IAAIL,EAAe,CACjB,KAAM,CACJ,CACE,CAACC,EAASH,CAAK,EAAII,EAAqBJ,CAAK,EAAIA,EAAOD,CAAM,EAC9D,CACEI,EAASI,CAAQ,EAAIH,EAAqBG,CAAQ,EAAIA,EACtDD,CACF,CACF,EACA,EACAD,EAA4BP,EAASG,CAAW,EAChDJ,CACF,EACA,KAAM,0BACN,OAAQ,SACV,CAAC,CACL,GACA,oBAAqB,CAACA,EAASF,KAAqC,CAClE,MAAO,CAAC,CAAE,QAAAG,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,CAAY,IAAM,CAClD,IAAMO,EACJC,EACEX,EACAG,CACF,EAEF,OAAO,IAAIC,EAAe,CACxB,KAAM,CACJC,EAASH,CAAK,EAAII,EAAqBJ,CAAK,EAAIA,EAChDD,EACAS,EACAX,CACF,EACA,KAAM,WACN,OAAQ,SACV,CAAC,CACH,CACF,EACF,CACF,CAmCA,SAASY,EACPX,EACAG,EAC0B,CAM1B,IAAMS,EAAc,KACdC,EAAmBC,EAAad,CAAO,EACvCe,EAAM,KAAKH,CAAW,GAAGI,EAC7BC,EAAcJ,CAAgB,EAC9B,GACA,EACF,CAAC,KAED,MAAO,CACL,EACAV,EAAY,YACR,CAAC,YAAYA,EAAY,YAAY,SAAS,EAAE,CAAC,GAAIY,CAAG,EACxD,CAACA,CAAG,CACV,CACF,CAEA,SAASR,EACPP,EACAG,EAC0B,CAO1B,IAAMY,EAAM,KADQZ,EAAY,eAAe,EAAI,KAAO,IAC9B,GAAGa,EAC7BC,EAAcjB,CAAO,EACrB,GACA,EACF,CAAC,KAED,MAAO,CACL,EACAG,EAAY,YACR,CAAC,YAAYA,EAAY,YAAY,SAAS,EAAE,CAAC,GAAIY,CAAG,EACxD,CAACA,CAAG,CACV,CACF,CEjJO,SAASG,IAAkB,CAChC,MAAO,CACL,QAAAC,CACF,CACF,CHcO,SAASC,IAAiB,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,EACA,OAAAC,EACA,OAAAC,CACF,CACF,CAEA,SAASH,GAA8B,CACrC,MAAO,CACL,MAAO,CAAC,CAAE,QAAAI,EAAS,MAAAC,CAAM,IAAM,CAC7B,GAAI,CAACA,GAAS,CAACC,EAASD,CAAK,EAC3B,MAAM,IAAI,MAAM,6BAA6BA,CAAK,EAAE,EAGtD,OAAO,IAAIE,EAAe,CACxB,QAASF,EACT,KAAM,CAACD,CAAO,EACd,KAAM,YACN,OAAQ,OACV,CAAC,CACH,CACF,CACF,CAEA,SAASH,GAAS,CAChB,MAAO,CACL,QAAS,KAA6B,CACpC,MAAO,CAAC,CAAE,QAAAG,EAAS,MAAAC,CAAM,IACvB,IAAIG,EAAqB,CACvB,OAAQ,SACR,KAAM,UACN,KAAM,CAACH,EAAOD,CAAO,EACrB,UAAW,MACTK,GACoBA,EAAS,gBAAgB,EAAE,QAAQ,SAAS,CACpE,CAAC,CACL,EACF,CACF,CAEA,SAASP,GAAS,CAChB,MAAO,CACL,QAAS,KAA6B,CACpC,MAAO,CAAC,CAAE,QAAAE,CAAQ,IAChB,IAAII,EAAqB,CACvB,OAAQ,SACR,KAAM,UACN,KAAM,CAACJ,CAAO,EACd,UAAW,MACTK,GACoBC,EAA8BD,CAAQ,CAC9D,CAAC,CACL,GACA,mBAAoB,KAA6B,CAC/C,MAAO,CAAC,CAAE,QAAAL,EAAS,MAAAC,CAAM,IACvB,IAAIG,EAAqB,CACvB,OAAQ,SACR,KAAM,UACN,KAAM,CAACJ,CAAO,EACd,UAAW,MAAOK,GAA8B,CA7F1D,IAAAE,EA8FY,GAAIF,EAAS,KAAK,QAChB,OAAO,GAGT,IAAMG,EAAMH,EAAS,KAAK,OAAO,EAC7BI,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,IAAMC,EAAUD,EAAS,KAAK,CAAC,CAACE,CAAO,IAAMA,IAAYV,CAAK,EAE9D,OAAKS,EAIE,OAAOA,EAAQ,CAAC,EAAE,QAAQ,EAHxB,EAIX,CACF,CAAC,CACL,GACA,eAAgB,KAA6B,CAC3C,MAAO,CAAC,CAAE,QAAAV,CAAQ,IAAM,CACtB,IAAMY,EAAmBC,EAAab,CAAO,EAE7C,OAAO,IAAII,EAAqB,CAC9B,OAAQ,SACR,KAAM,UACN,KAAM,CAACQ,CAAgB,EACvB,UAAW,MACTP,GACoBC,EAA8BD,CAAQ,CAC9D,CAAC,CACH,CACF,EACF,CACF,CAEA,SAASN,GAAS,CAChB,MAAO,CACL,SAAU,KAA6B,CACrC,MAAO,CAAC,CAAE,QAAAC,EAAS,MAAAC,CAAM,IACvB,IAAIG,EAAqB,CACvB,OAAQ,SACR,KAAM,WACN,KAAM,CAACJ,EAASC,CAAK,EACrB,UAAW,MAAO,CAChB,KAAAa,EACA,OAAAC,CACF,IACE,OAAOD,EAAK,IAAIC,CAAM,EAAE,SAAS,CAAC,CACtC,CAAC,CACL,EACF,CACF,CAEA,eAAsBT,EACpBD,EACiB,CACjB,IAAMK,EAAUL,EAAS,KAGnBS,EAAO,OAAOJ,EAAQ,KAAK,SAAS,CAAC,EACrCK,EAASL,EAAQ,YAAcA,EAAQ,OACvCM,EAAsB,OAAOD,EAAO,IAAIL,EAAQ,QAAQ,EAAE,SAAS,CAAC,EACpEO,EAASD,EAAsB,GAAK,GAAKA,EAE/C,OAAOF,EAAOG,CAChB,CI3KA,OAAS,cAAAC,MAAkB,kBAC3B,OAAS,YAAAC,MAAgB,iBACzB,OAAS,iBAAAC,MAAqB,wBCevB,IAAKC,OACVA,EAAA,GAAK,KACLA,EAAA,GAAK,KACLA,EAAA,GAAK,KACLA,EAAA,GAAK,KAJKA,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,EAAMC,EAAWF,GAAA,YAAAA,EAAU,WAAW,EAE5C,GAAI,CAACC,EAAI,IACP,WAGF,IAAME,EAAW,MAAM,QAAQF,EAAI,GAAG,EAClCA,EAAI,IAAI,IAAKG,GAAMA,EAAE,IAAI,EACzB,CAACH,EAAI,IAAI,IAAI,EAEjB,GAAIE,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,GAAIC,EAASC,EAAcF,CAAO,CAAC,EACnC,QAAS,IACX,CACF,CACN,CE5CO,IAAMG,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,CAEO,SAASI,EAA2B,CACzC,MAAAT,EACA,SAAAU,CACF,EAAyC,CACvC,IAAMC,EAAgB,OAAOX,CAAK,EAC5BY,EAAmB,OAAOF,CAAQ,EAExC,OAAI,OAAO,MAAMC,CAAa,GAAK,OAAO,MAAMC,CAAgB,EACvD,GAGFD,EAAgBC,CACzB,CC9DA,IAAMC,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,EAAS,CACb,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,EAEMM,EACJC,EAA2BP,CAAM,EAEnC,GAAII,EAAkB,CACpB,IAAMI,EAAW,CACf,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,eAAgBR,EAAO,cACzB,EACA,CACE,aAAcA,EAAO,QACvB,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUA,EAAO,GACnB,CACF,EAEIM,EACFD,EAAO,QAAQG,CAAQ,EAEvBH,EAAO,KAAKG,CAAQ,CAExB,CAEA,OAAOL,EAA4B,CACjC,GAAGH,EACH,KAAME,EACN,MAAOG,EACP,SAAUD,GAAoB,CAACE,EAAwB,EAAI,CAC7D,CAAC,CACH,CACF,CAAC,CACL,EACF,CACF,EACA,6BAA8B,IAAM,CAClC,IAAMP,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,YAAY,WAChC,EACA,CACE,eAAgBA,EAAO,cACzB,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUA,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,EACF,CACF,CACF,CACF,CCjLO,SAASS,GAAgC,CAC9C,MAAO,WACT,CAEO,SAASC,EACdC,EACAC,EACAC,EACA,CACA,MAAO,CACL,CAACF,CAAO,EAAG,CACT,QAAS,EAET,SAAU,CACR,GAAI,CACF,CACE,UAAWE,EAAY,WACzB,EACAC,EAAoBF,CAAO,CAC7B,CACF,CACF,CACF,CACF,CCtBA,IAAMG,EAAS,UAER,SAASC,GAAU,CACxB,MAAO,CACL,SAAU,KAA+B,CACvC,MAAO,CAAC,CAAE,QAAAC,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,CAAY,IAC5C,IAAIC,EAAgB,CAClB,OAAQN,EACR,KAAM,WACN,QAAUO,GAAS,CACjB,IAAMC,EAAUC,EAA4BF,EAAM,CAAC,EAEnD,MAAO,CACLH,EACAD,EACAO,EAAeF,EAASN,EAASG,CAAW,EAC5CM,EAAU,CACZ,CACF,CACF,CAAC,CACL,GACA,mBAAqBC,GAA8B,CACjD,IAAMC,EAAW,qBAEjB,MAAO,CACL,KAAM,KAA+B,CACnC,MAAO,CAAC,CAAE,QAAAX,EAAS,OAAAC,EAAQ,YAAAE,CAAY,IACrC,IAAIC,EAAgB,CAClB,OAAQN,EACR,KAAMa,EACN,QAAUN,GAAS,CACjB,IAAMC,EAAUC,EAA4BF,EAAM,CAAC,EAEnD,MAAO,CACL,CACE,CAACC,CAAO,EAAG,CACT,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,MACZ,CACF,EACA,IAAK,CACH,SAAUL,CACZ,CACF,CACF,EACAO,EAAeF,EAASN,EAASG,CAAW,EAC5CM,EAAU,CACZ,CACF,CACF,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAO,CAAC,CAAE,QAAAT,EAAS,OAAAC,EAAQ,YAAAE,CAAY,IACrC,IAAIC,EAAgB,CAClB,OAAQN,EACR,KAAMa,EACN,QAAUN,GAAS,CACjB,IAAMC,EAAUC,EAA4BF,EAAM,CAAC,EAEnD,MAAO,CACL,CACE,CAACC,CAAO,EAAG,CACT,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,UAAWI,CACb,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUT,CACZ,CACF,CACF,EACAO,EAAeF,EAASN,EAASG,CAAW,EAC5CM,EAAU,CACZ,CACF,CACF,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAO,CAAC,CAAE,QAAAT,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,CAAY,IAC5C,IAAIC,EAAgB,CAClB,OAAQN,EACR,KAAMa,EACN,QAAUN,GAAS,CACjB,IAAMC,EAAUC,EAA4BF,EAAM,CAAC,EAEnD,MAAO,CACL,CACE,CAACC,CAAO,EAAG,CACT,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWI,CACb,EACA,CACE,WAAYR,CACd,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUD,CACZ,CACF,CACF,EACAO,EAAeF,EAASN,EAASG,CAAW,EAC5CM,EAAU,CACZ,CACF,CACF,CAAC,CACL,EACF,CACF,EACA,wBAAyB,KAA+B,CACtD,MAAO,CAAC,CAAE,QAAAT,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,EAAa,IAAAS,EAAK,SAAAC,CAAS,IAC3D,IAAIT,EAAgB,CAClB,OAAQN,EACR,KAAM,0BACN,QAAS,IAAM,CACb,CACE,CAACI,EAAOD,CAAM,EACd,CAACY,EAAUD,CAAG,CAChB,EACA,EACAJ,OAA8BR,EAASG,CAAW,EAClDM,EAAU,CACZ,CACF,CAAC,CACL,EACF,CACF,CCjJA,IAAMK,EAAS,YAER,SAASC,GAAY,CAC1B,MAAO,CACL,SAAU,IAAM,CACd,IAAMC,EAAS,WAEf,MAAO,CACL,KAAM,KAA+B,CACnC,MAAO,CAAC,CAAE,QAAAC,EAAS,OAAAC,EAAQ,YAAAC,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,CCrFA,IAAMM,EAAS,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,EACR,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,EACA,+BAAgC,IAAM,CACpC,IAAMD,EAAO,iCAEb,MAAO,CACL,KAAM,KAA+B,CACnC,MAAQC,GACN,IAAIC,EAAgB,CAClB,OAAQL,EACR,KAAAG,EACA,QAAS,IAAM,CACb,IAAMK,OACN,MAAO,CACL,CACE,CAACA,CAAO,EAAG,CACT,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWJ,EAAO,YAAY,WAChC,CACF,CACF,CACF,CACF,EACA,CACE,CAACI,CAAO,EAAG,CACT,CACE,GAAI,CACF,QAAS,EACT,SAAU,MACZ,EACA,IAAK,CACH,SAAUJ,EAAO,MACnB,CACF,CACF,CACF,EACA,eACA,CACE,CAACI,CAAO,EAAG,CACT,QAAS,EACT,SAAU,MACZ,CACF,EACA,eACA,CACE,CAACA,CAAO,EAAG,CACT,CACE,aAAc,CACZ,OAAQ,CACN,KAAM,CAAE,WAAY,CAAE,CACxB,EACA,YAAa,CACX,QAAS,EACT,SAAU,CACR,GAAI,CAACC,EAAoBL,EAAO,OAAO,CAAC,CAC1C,CACF,CACF,CACF,CACF,CACF,EACA,WACF,CACF,CACF,CAAC,CACL,EACF,CACF,CACF,CACF,CC3GO,SAASM,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":["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","calculateSystemAccountBalance","_a","res","balances","balance","assetId","substrateAddress","evmToAddress","free","frozen","frozenMinusReserved","locked","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","shouldFeeAssetPrecedeAsset","feeAsset","assetIdNumber","feeAssetIdNumber","pallet","polkadotXcm","func","params","ExtrinsicConfig","extrinsicFunction","getPolkadotXcmExtrinsicArgs","isAssetDifferent","assets","shouldFeeAssetPrecede","shouldFeeAssetPrecedeAsset","feeAsset","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","version","getExtrinsicAccount","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.4.6",
3
+ "version": "2.4.7",
4
4
  "description": "Moonbeam XCM builder",
5
5
  "scripts": {
6
6
  "build": "tsup",