@moonbeam-network/xcm-builder 2.4.7 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/index.cjs CHANGED
@@ -1,2 +1,2 @@
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});
1
+ "use strict";var w=Object.defineProperty;var ct=Object.getOwnPropertyDescriptor;var ut=Object.getOwnPropertyNames;var mt=Object.prototype.hasOwnProperty;var ft=(e,t)=>{for(var r in t)w(e,r,{get:t[r],enumerable:!0})},lt=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ut(t))!mt.call(e,i)&&i!==r&&w(e,i,{get:()=>t[i],enumerable:!(n=ct(t,i))||n.enumerable});return e};var dt=e=>lt(w({},"__esModule",{value:!0}),e);var Nt={};ft(Nt,{AssetMinBuilder:()=>pt,BalanceBuilder:()=>yt,BaseConfig:()=>f,CallType:()=>A,ContractBuilder:()=>Ct,ContractConfig:()=>l,ExtrinsicBuilder:()=>Bt,ExtrinsicConfig:()=>a,FeeBuilder:()=>kt,SubstrateQueryConfig:()=>c,XcmVersion:()=>x,calculateSystemAccountBalance:()=>v,evm:()=>_,substrate:()=>V});module.exports=dt(Nt);var Tr=require("@polkadot/api-augment");var A=(r=>(r.Evm="Evm",r.Substrate="Substrate",r))(A||{});var f=class{module;func;type;constructor({module:t,func:r,type:n}){this.module=t,this.func=r,this.type=n}};var c=class extends f{args;transform;constructor({args:t=[],transform:r,type:n="Substrate",...i}){super({...i,type:n}),this.args=t,this.transform=r}};function pt(){return{assetRegistry:gt,assets:At}}function gt(){let e="assetRegistry";return{assetMetadatas:()=>({build:({asset:t})=>new c({module:e,func:"assetMetadatas",args:[t],transform:async r=>r.unwrapOrDefault().minimalBalance.toBigInt()})}),currencyMetadatas:()=>({build:({asset:t})=>new c({module:e,func:"currencyMetadatas",args:[t],transform:async r=>r.unwrapOrDefault().minimalBalance.toBigInt()})})}}function At(){return{asset:()=>({build:({asset:e})=>new c({module:"assets",func:"asset",args:[e],transform:async t=>t.unwrapOrDefault().minBalance.toBigInt()})})}}var W=require("@polkadot/util"),R=require("@polkadot/util-crypto");var h=require("@moonbeam-network/xcm-utils"),d=require("@polkadot/util"),P=require("@polkadot/util-crypto");var l=class extends f{args;address;constructor({args:t,address:r,...n}){super({...n,type:"Evm"}),this.args=t,this.address=r}};var X=18446744073709551615n;function M(){return{transfer:(e=X)=>({build:({address:t,amount:r,asset:n,destination:i})=>new l({args:[(0,d.isString)(n)?(0,h.formatAssetIdToERC20)(n):n,r,N(t,i),e],func:"transfer",module:"Xtokens"})}),transferMultiCurrencies:(e=X)=>({build:({address:t,amount:r,asset:n,destination:i,fee:o,feeAsset:s})=>new l({args:[[[(0,d.isString)(n)?(0,h.formatAssetIdToERC20)(n):n,r],[(0,d.isString)(s)?(0,h.formatAssetIdToERC20)(s):s,o]],1,N(t,i),e],func:"transferMultiCurrencies",module:"Xtokens"})}),transferWithEvmTo32:(e=X)=>({build:({address:t,amount:r,asset:n,destination:i})=>{let o=xt(t,i);return new l({args:[(0,d.isString)(n)?(0,h.formatAssetIdToERC20)(n):n,r,o,e],func:"transfer",module:"Xtokens"})}})}}function xt(e,t){let r="01",n=(0,P.evmToAddress)(e),i=`0x${r}${(0,d.u8aToHex)((0,P.decodeAddress)(n),-1,!1)}00`;return[1,t.parachainId?[`0x0000000${t.parachainId.toString(16)}`,i]:[i]]}function N(e,t){let n=`0x${t.isEvmParachain()?"03":"01"}${(0,d.u8aToHex)((0,P.decodeAddress)(e),-1,!1)}00`;return[1,t.parachainId?[`0x0000000${t.parachainId.toString(16)}`,n]:[n]]}function Ct(){return{Xtokens:M}}function yt(){return{evm:_,substrate:V}}function _(){return{erc20:bt}}function V(){return{assets:ht,system:Pt,tokens:Et}}function bt(){return{build:({address:e,asset:t})=>{if(!t||!(0,W.isString)(t))throw new Error(`Invalid contract address: ${t}`);return new l({address:t,args:[e],func:"balanceOf",module:"Erc20"})}}}function ht(){return{account:()=>({build:({address:e,asset:t})=>new c({module:"assets",func:"account",args:[t,e],transform:async r=>r.unwrapOrDefault().balance.toBigInt()})})}}function Pt(){return{account:()=>({build:({address:e})=>new c({module:"system",func:"account",args:[e],transform:async t=>v(t)})}),accountEquilibrium:()=>({build:({address:e,asset:t})=>new c({module:"system",func:"account",args:[e],transform:async r=>{var s;if(r.data.isEmpty)return 0n;let n=r.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(([m])=>m===t);return o?BigInt(o[1].positive):0n}})}),accountEvmTo32:()=>({build:({address:e})=>{let t=(0,R.evmToAddress)(e);return new c({module:"system",func:"account",args:[t],transform:async r=>v(r)})}})}}function Et(){return{accounts:()=>({build:({address:e,asset:t})=>new c({module:"tokens",func:"accounts",args:[e,t],transform:async({free:r,frozen:n})=>BigInt(r.sub(n).toString())})})}}async function v(e){let t=e.data,r=BigInt(t.free.toString()),n=t.miscFrozen??t.frozen,i=BigInt(n.sub(t.reserved).toString()),o=i<0n?0n:i;return r-o}var L=require("@polkadot/types"),H=require("@polkadot/util"),j=require("@polkadot/util-crypto");var x=(i=>(i.v1="V1",i.v2="V2",i.v3="V3",i.v4="V4",i))(x||{});function p(e,t=0){if(!e)return"V1";let{type:r}=e.meta.args[t],n=e.meta.registry.createType(r.toString()),i=(0,L.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,H.u8aToHex)((0,j.decodeAddress)(e)),network:null}}}var a=class extends f{getArgs;constructor({getArgs:t,...r}){super({...r,type:"Substrate"}),this.getArgs=t}};var U="eqBalances";function q(){return{xcmTransfer:()=>({build:({address:e,amount:t,asset:r,destination:n})=>new a({module:U,func:"xcmTransfer",getArgs:()=>[r,t,{parents:1,interior:{X2:[{Parachain:n.parachainId},u(e)]}},"ThisAccWillPay"]})}),transferXcm:()=>({build:({address:e,amount:t,asset:r,destination:n,fee:i,feeAsset:o})=>new a({module:U,func:"transferXcm",getArgs:()=>{let s=t-i>0n?t-i:0n;return[[r,r===o?s:t],[o,i],{parents:1,interior:{X2:[{Parachain:n.parachainId},u(e)]}}]}})})}}function g({asset:e,address:t,destination:r,func:n,parents:i=1,feeIndex:o=0}){let s=p(n);return[{[s]:{parents:i,interior:{X1:{Parachain:r.parachainId}}}},{[s]:{parents:0,interior:{X1:u(t)}}},{[s]:e},o,"Unlimited"]}function z({asset:e,feeAsset:t}){let r=Number(e),n=Number(t);return Number.isNaN(r)||Number.isNaN(n)?!1:r>n}var B="polkadotXcm";function $(){return{limitedReserveTransferAssets:()=>{let e="limitedReserveTransferAssets";return{here:()=>({build:t=>new a({module:B,func:e,getArgs:r=>g({...t,func:r,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:t.amount}}]})})}),X1:()=>({build:t=>new a({module:B,func:e,getArgs:r=>g({...t,func:r,asset:[{id:{Concrete:{parents:0,interior:{X1:{PalletInstance:t.palletInstance}}}},fun:{Fungible:t.amount}}]})})}),X2:()=>({build:t=>new a({module:B,func:e,getArgs:r=>{let n=!!t.feeAsset&&t.asset!==t.feeAsset,i=[{id:{Concrete:{parents:0,interior:{X2:[{PalletInstance:t.palletInstance},{GeneralIndex:t.asset}]}}},fun:{Fungible:t.amount}}],o=z(t);if(n){let s={id:{Concrete:{parents:0,interior:{X2:[{PalletInstance:t.palletInstance},{GeneralIndex:t.feeAsset}]}}},fun:{Fungible:t.fee}};o?i.unshift(s):i.push(s)}return g({...t,func:r,asset:i,feeIndex:n&&!o?1:0})}})})}},limitedReserveWithdrawAssets:()=>{let e="limitedReserveWithdrawAssets";return{X2:()=>({build:t=>new a({module:B,func:e,getArgs:r=>g({...t,func:r,asset:[{id:{Concrete:{parents:1,interior:{X2:[{Parachain:t.destination.parachainId},{PalletInstance:t.palletInstance}]}}},fun:{Fungible:t.amount}}]})})})}}}}function C(){return"Unlimited"}function y(e,t,r){return{[e]:{parents:1,interior:{X2:[{Parachain:r.parachainId},u(t)]}}}}var E="xTokens";function G(){return{transfer:()=>({build:({address:e,amount:t,asset:r,destination:n})=>new a({module:E,func:"transfer",getArgs:i=>{let o=p(i,2);return[r,t,y(o,e,n),C()]}})}),transferMultiAsset:e=>{let t="transferMultiasset";return{here:()=>({build:({address:r,amount:n,destination:i})=>new a({module:E,func:t,getArgs:o=>{let s=p(o,1);return[{[s]:{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:n}}},y(s,r,i),C()]}})}),X1:()=>({build:({address:r,amount:n,destination:i})=>new a({module:E,func:t,getArgs:o=>{let s=p(o,1);return[{[s]:{id:{Concrete:{parents:1,interior:{X1:{Parachain:e}}}},fun:{Fungible:n}}},y(s,r,i),C()]}})}),X2:()=>({build:({address:r,amount:n,asset:i,destination:o})=>new a({module:E,func:t,getArgs:s=>{let m=p(s,1);return[{[m]:{id:{Concrete:{parents:1,interior:{X2:[{Parachain:e},{GeneralKey:i}]}}},fun:{Fungible:n}}},y(m,r,o),C()]}})})}},transferMultiCurrencies:()=>({build:({address:e,amount:t,asset:r,destination:n,fee:i,feeAsset:o})=>new a({module:E,func:"transferMulticurrencies",getArgs:()=>[[[r,t],[o,i]],1,y("V3",e,n),C()]})})}}var K="xTransfer";function J(){return{transfer:()=>{let e="transfer";return{here:()=>({build:({address:t,amount:r,destination:n})=>new a({module:K,func:e,getArgs:()=>[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:r}},{parents:1,interior:{X2:[{Parachain:n.parachainId},u(t)]}},{refTime:5e9,proofSize:0}]})}),X2:()=>({build:({address:t,amount:r,destination:n,palletInstance:i})=>new a({module:K,func:e,getArgs:()=>[{id:{Concrete:{parents:1,interior:{X2:[{Parachain:n.parachainId},{PalletInstance:i}]}}},fun:{Fungible:r||1n}},{parents:1,interior:{X2:[{Parachain:n.parachainId},u(t)]}},{refTime:5e9,proofSize:0}]})})}}}}var Q="xcmPallet";function Y(){return{limitedReserveTransferAssets:(e=1)=>{let t="limitedReserveTransferAssets";return{here:()=>({build:r=>new a({module:Q,func:t,getArgs:n=>g({...r,parents:e,func:n,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:r.amount}}]})})})}},transferAssetsUsingTypeAndThen:()=>{let e="transferAssetsUsingTypeAndThen";return{here:()=>({build:t=>new a({module:Q,func:e,getArgs:()=>{let r="V4";return[{[r]:{parents:0,interior:{X1:[{Parachain:t.destination.parachainId}]}}},{[r]:[{id:{parents:0,interior:"Here"},fun:{Fungible:t.amount}}]},"LocalReserve",{[r]:{parents:0,interior:"Here"}},"LocalReserve",{[r]:[{DepositAsset:{assets:{Wild:{AllCounted:1}},beneficiary:{parents:0,interior:{X1:[u(t.address)]}}}}]},"Unlimited"]}})})}}}}function Bt(){return{eqBalances:q,xTokens:G,xTransfer:J,polkadotXcm:$,xcmPallet:Y}}var I=class{api;call;type="Substrate";constructor({api:t,call:r}){this.api=t,this.call=r}};var Z=require("@moonbeam-network/xcm-utils");var F=10**6,It="0xabcdef1234567890fedcba0987654321abcdef1234567890fedcba0987654321",Tt="0x0000000000000000000000000000000000000802",wt={moonbeam:"10",moonriver:"10","moonbase-alpha":"3"},Xt={moonbeam:"110",moonriver:"110","moonbase-alpha":"48"},S="V4";function b(){return S==="V4"}function vt(e){if(!b())return e;let t={...e};return t.interior&&typeof t.interior=="object"&&"x1"in t.interior&&(Array.isArray(t.interior.x1)||(t.interior.x1=[t.interior.x1])),t}function tt(e){return{WithdrawAsset:e.map(t=>({id:{...t},fun:{Fungible:F}}))}}function et(e){return{ReserveAssetDeposited:e.map(t=>({id:{...t},fun:{Fungible:F}}))}}function rt(){return{ClearOrigin:"NULL"}}function nt(e){return{BuyExecution:{fees:{id:{...e},fun:{Fungible:F}},weight_limit:{Unlimited:"NULL"}}}}function it(e,t){let r={AccountKey20:{key:e,network:null}};return{DepositAsset:{assets:{Wild:{AllCounted:t.length}},beneficiary:{interior:{X1:b()?[r]:r},parents:0},max_assets:0}}}function ot(){return{SetTopic:It}}function O(e){return{Concrete:{...e}}}function St(e){let t={PalletInstance:wt[e]},r={interior:{X1:b()?[t]:t},parents:"0"};return b()?r:O(r)}function Ft(e,t){let r={interior:{X2:[{PalletInstance:Xt[t]},{AccountKey20:{key:e,network:null}}]},parents:"0"};return b()?r:O(r)}async function Ot(e,t){let r=await e.query.assetManager.assetIdType(t);if(r.isNone||!r.unwrap().isXcm)throw new Error(`No asset type found for asset ${t}`);return r}async function k(e,t,r){if(t===Tt)return St(r.key);if((0,Z.isHexString)(t))return Ft(t,r.key);let i=(await Ot(e,t)).unwrap().asXcm.toJSON(),o=vt(i);return b()?o:O(o)}async function st(e,t,r){let n=await e.call.xcmPaymentApi.queryXcmWeight({[S]:t});if(!n.isOk)throw new Error("There was an error trying to get the weight for the xcm instructions (queryXcmWeight)");let i=n.asOk,o=await e.call.xcmPaymentApi.queryWeightToAssetFee(i,{[S]:{...r}});if(!o.isOk)throw new Error("There was an error trying to get the fee with the weight and asset (weightToForeingAssets)");return o.asOk.toBigInt()}function kt(){return{xcmPaymentApi:Dt}}function Dt(){return{xcmPaymentFee:({isAssetReserveChain:e,shouldTransferAssetPrecedeAsset:t=!1})=>({build:({address:r,api:n,feeAsset:i,chain:o,transferAsset:s})=>new I({api:n,call:async()=>{let m=await k(n,i,o),D=await k(n,s,o),T=i===s?[m]:t?[D,m]:[m,D],at=[e?tt(T):et(T),rt(),nt(m),it(r,T),ot()];return st(n,at,m)}})})}}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 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"]}
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.utils.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 */\nimport { AnyParachain, ChainAssetId } from '@moonbeam-network/xcm-types';\nimport { isHexString } from '@moonbeam-network/xcm-utils';\nimport { ApiPromise } from '@polkadot/api';\nimport { Option, Result, u128 } from '@polkadot/types';\nimport { Error as PolkadotError, Weight } from '@polkadot/types/interfaces';\nimport { AnyJson } from '@polkadot/types/types';\nimport { XcmVersion } from '../extrinsic';\nimport { MoonbeamRuntimeXcmConfigAssetType } from './FeeBuilder.interfaces';\n\nconst DEFAULT_AMOUNT = 10 ** 6;\nconst DEFALUT_HEX_STRING =\n '0xabcdef1234567890fedcba0987654321abcdef1234567890fedcba0987654321';\n\nconst MOON_CHAIN_NATIVE_ASSET_ID = '0x0000000000000000000000000000000000000802';\n\nconst MOON_CHAIN_BALANCES_PALLET_INSTANCE: Record<string, string> = {\n moonbeam: '10',\n moonriver: '10',\n 'moonbase-alpha': '3',\n};\nconst MOON_CHIAN_ERC20_PALLET_INSTANCE: Record<string, string> = {\n moonbeam: '110',\n moonriver: '110',\n 'moonbase-alpha': '48',\n};\n\nconst XCM_VERSION: XcmVersion = XcmVersion.v4; // TODO\n\nfunction isXcmV4() {\n return XCM_VERSION === XcmVersion.v4;\n}\n\nfunction normalizeX1(assetType: Record<string, AnyJson>) {\n if (!isXcmV4()) {\n return assetType;\n }\n const normalizedAssetType = { ...assetType };\n if (\n normalizedAssetType.interior &&\n typeof normalizedAssetType.interior === 'object' &&\n 'x1' in normalizedAssetType.interior\n ) {\n if (!Array.isArray(normalizedAssetType.interior.x1)) {\n normalizedAssetType.interior.x1 = [normalizedAssetType.interior.x1];\n }\n }\n return normalizedAssetType;\n}\n\nexport function getWithdrawAssetInstruction(assetTypes: object[]) {\n return {\n WithdrawAsset: assetTypes.map((assetType) => ({\n id: { ...assetType },\n fun: {\n Fungible: DEFAULT_AMOUNT,\n },\n })),\n };\n}\n\nexport function getReserveAssetDepositedInstruction(assetTypes: object[]) {\n return {\n ReserveAssetDeposited: assetTypes.map((assetType) => ({\n id: { ...assetType },\n fun: {\n Fungible: DEFAULT_AMOUNT,\n },\n })),\n };\n}\n\nexport function getClearOriginInstruction() {\n return {\n ClearOrigin: 'NULL',\n };\n}\n\nexport function getBuyExecutionInstruction(assetType: object) {\n // TODO should verify that asset is in acceptable payment assets\n // api.call.xcmPaymentApi.queryAcceptablePaymentAssets(xcmVersion)\n return {\n BuyExecution: {\n fees: {\n id: {\n ...assetType,\n },\n fun: {\n Fungible: DEFAULT_AMOUNT,\n },\n },\n weight_limit: {\n Unlimited: 'NULL',\n },\n },\n };\n}\n\nexport function getDepositAssetInstruction(address: string, assets: object[]) {\n const accountKey = {\n AccountKey20: {\n key: address,\n network: null,\n },\n };\n\n return {\n DepositAsset: {\n assets: {\n Wild: {\n AllCounted: assets.length,\n },\n },\n beneficiary: {\n interior: {\n X1: isXcmV4() ? [accountKey] : accountKey,\n },\n parents: 0,\n },\n max_assets: 0,\n },\n };\n}\n\nexport function getSetTopicInstruction() {\n return {\n SetTopic: DEFALUT_HEX_STRING,\n };\n}\n\nfunction applyConcreteWrapper(id: object) {\n return {\n Concrete: { ...id },\n };\n}\n\n// TODO this is for Moonbeam\nfunction getNativeAssetId(chainKey: string): object {\n const palletInstance = {\n PalletInstance: MOON_CHAIN_BALANCES_PALLET_INSTANCE[chainKey],\n };\n const id = {\n interior: {\n X1: isXcmV4() ? [palletInstance] : palletInstance,\n },\n parents: '0',\n };\n\n return isXcmV4() ? id : applyConcreteWrapper(id);\n}\n\nfunction getConcreteAssetIdWithAccountKey20(\n asset: ChainAssetId,\n chainKey: string,\n): object {\n const id = {\n interior: {\n X2: [\n {\n PalletInstance: MOON_CHIAN_ERC20_PALLET_INSTANCE[chainKey],\n },\n {\n AccountKey20: {\n key: asset,\n network: null,\n },\n },\n ],\n },\n parents: '0',\n };\n return isXcmV4() ? id : applyConcreteWrapper(id);\n}\n\nexport async function getAssetIdType(\n api: ApiPromise,\n asset: ChainAssetId,\n): Promise<Option<MoonbeamRuntimeXcmConfigAssetType>> {\n const type =\n await api.query.assetManager.assetIdType<\n Option<MoonbeamRuntimeXcmConfigAssetType>\n >(asset);\n\n if (type.isNone || !type.unwrap().isXcm) {\n throw new Error(`No asset type found for asset ${asset}`);\n }\n return type;\n}\n\nexport async function getVersionedAssetId(\n api: ApiPromise,\n asset: ChainAssetId,\n chain: AnyParachain,\n): Promise<object> {\n if (asset === MOON_CHAIN_NATIVE_ASSET_ID) {\n return getNativeAssetId(chain.key);\n }\n\n if (isHexString(asset)) {\n return getConcreteAssetIdWithAccountKey20(asset, chain.key);\n }\n\n const assetType = await getAssetIdType(api, asset);\n const assetTypeObject = assetType.unwrap().asXcm.toJSON();\n\n const normalizedAssetTypeObject = normalizeX1(assetTypeObject);\n\n return isXcmV4()\n ? normalizedAssetTypeObject\n : applyConcreteWrapper(normalizedAssetTypeObject);\n}\n\nexport async function getFeeForXcmInstructionsAndAsset(\n api: ApiPromise,\n instructions: AnyJson,\n versionedAssetId: object,\n) {\n const xcmToWeightResult = await api.call.xcmPaymentApi.queryXcmWeight<\n Result<Weight, PolkadotError>\n >({\n [XCM_VERSION]: instructions,\n });\n if (!xcmToWeightResult.isOk) {\n throw new Error(\n 'There was an error trying to get the weight for the xcm instructions (queryXcmWeight)',\n );\n }\n const xcmToWeight = xcmToWeightResult.asOk;\n\n const weightToForeingAssets =\n await api.call.xcmPaymentApi.queryWeightToAssetFee<\n Result<u128, PolkadotError>\n >(xcmToWeight, {\n [XCM_VERSION]: {\n ...versionedAssetId,\n },\n });\n if (!weightToForeingAssets.isOk) {\n throw new Error(\n 'There was an error trying to get the fee with the weight and asset (weightToForeingAssets)',\n );\n }\n return weightToForeingAssets.asOk.toBigInt();\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { SubstrateCallConfig } from '../types/substrate/SubstrateCallConfig';\nimport { FeeConfigBuilder, XcmPaymentFeeProps } from './FeeBuilder.interfaces';\nimport {\n getBuyExecutionInstruction,\n getClearOriginInstruction,\n getDepositAssetInstruction,\n getFeeForXcmInstructionsAndAsset,\n getReserveAssetDepositedInstruction,\n getSetTopicInstruction,\n getVersionedAssetId,\n getWithdrawAssetInstruction,\n} from './FeeBuilder.utils';\n\nexport function FeeBuilder() {\n return {\n xcmPaymentApi,\n };\n}\n\nfunction xcmPaymentApi() {\n return {\n xcmPaymentFee: ({\n isAssetReserveChain,\n shouldTransferAssetPrecedeAsset = false,\n }: XcmPaymentFeeProps): FeeConfigBuilder => ({\n build: ({ address, api, feeAsset, chain, transferAsset }) =>\n new SubstrateCallConfig({\n api,\n call: async (): Promise<bigint> => {\n const versionedAssetId = await getVersionedAssetId(\n api,\n feeAsset,\n chain,\n );\n const versionedTransferAssetId = await getVersionedAssetId(\n api,\n transferAsset,\n chain,\n );\n const versionedAssets = shouldTransferAssetPrecedeAsset\n ? [versionedTransferAssetId, versionedAssetId]\n : [versionedAssetId, versionedTransferAssetId];\n\n const assets =\n feeAsset === transferAsset ? [versionedAssetId] : versionedAssets;\n\n const instructions = [\n isAssetReserveChain\n ? getWithdrawAssetInstruction(assets)\n : getReserveAssetDepositedInstruction(assets),\n getClearOriginInstruction(),\n getBuyExecutionInstruction(versionedAssetId),\n getDepositAssetInstruction(address, assets),\n getSetTopicInstruction(),\n ];\n\n return getFeeForXcmInstructionsAndAsset(\n api,\n instructions,\n versionedAssetId,\n );\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","import_xcm_utils","DEFAULT_AMOUNT","DEFALUT_HEX_STRING","MOON_CHAIN_NATIVE_ASSET_ID","MOON_CHAIN_BALANCES_PALLET_INSTANCE","MOON_CHIAN_ERC20_PALLET_INSTANCE","XCM_VERSION","isXcmV4","normalizeX1","assetType","normalizedAssetType","getWithdrawAssetInstruction","assetTypes","getReserveAssetDepositedInstruction","getClearOriginInstruction","getBuyExecutionInstruction","getDepositAssetInstruction","address","assets","accountKey","getSetTopicInstruction","applyConcreteWrapper","id","getNativeAssetId","chainKey","palletInstance","getConcreteAssetIdWithAccountKey20","asset","getAssetIdType","api","type","getVersionedAssetId","chain","assetTypeObject","normalizedAssetTypeObject","getFeeForXcmInstructionsAndAsset","instructions","versionedAssetId","xcmToWeightResult","xcmToWeight","weightToForeingAssets","FeeBuilder","xcmPaymentApi","isAssetReserveChain","shouldTransferAssetPrecedeAsset","address","api","feeAsset","chain","transferAsset","SubstrateCallConfig","versionedAssetId","getVersionedAssetId","versionedTransferAssetId","assets","instructions","getWithdrawAssetInstruction","getReserveAssetDepositedInstruction","getClearOriginInstruction","getBuyExecutionInstruction","getDepositAssetInstruction","getSetTopicInstruction","getFeeForXcmInstructionsAndAsset"]}
package/build/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
- import { SetOptional, ChainAssetId, AnyChain } from '@moonbeam-network/xcm-types';
2
- import { FrameSystemAccountInfo } from '@polkadot/types/lookup';
3
- import { Struct, u128 } from '@polkadot/types';
1
+ import { SetOptional, ChainAssetId, AnyChain, AnyParachain } from '@moonbeam-network/xcm-types';
2
+ import { FrameSystemAccountInfo, StagingXcmV3MultiLocation } from '@polkadot/types/lookup';
3
+ import { Struct, u128, Enum } from '@polkadot/types';
4
4
  import { SubmittableExtrinsicFunction } from '@polkadot/api/types';
5
5
  import { ApiPromise } from '@polkadot/api';
6
6
 
@@ -227,15 +227,27 @@ interface FeeConfigBuilder {
227
227
  build: (params: FeeConfigBuilderPrams) => SubstrateCallConfig;
228
228
  }
229
229
  interface FeeConfigBuilderPrams {
230
- asset: ChainAssetId;
230
+ address: string;
231
231
  api: ApiPromise;
232
+ feeAsset: ChainAssetId;
233
+ transferAsset: ChainAssetId;
234
+ chain: AnyParachain;
235
+ }
236
+ interface XcmPaymentFeeProps {
237
+ isAssetReserveChain: boolean;
238
+ shouldTransferAssetPrecedeAsset?: boolean;
239
+ }
240
+ interface MoonbeamRuntimeXcmConfigAssetType extends Enum {
241
+ readonly isXcm: boolean;
242
+ readonly asXcm: StagingXcmV3MultiLocation;
243
+ readonly type: 'Xcm';
232
244
  }
233
245
 
234
246
  declare function FeeBuilder(): {
235
- assetManager: typeof assetManager;
247
+ xcmPaymentApi: typeof xcmPaymentApi;
236
248
  };
237
- declare function assetManager(): {
238
- assetTypeUnitsPerSecond: (weight?: number) => FeeConfigBuilder;
249
+ declare function xcmPaymentApi(): {
250
+ xcmPaymentFee: ({ isAssetReserveChain, shouldTransferAssetPrecedeAsset, }: XcmPaymentFeeProps) => FeeConfigBuilder;
239
251
  };
240
252
 
241
- export { AssetMinBuilder, type AssetMinConfigBuilder, type AssetMinConfigBuilderPrams, BalanceBuilder, type BalanceConfigBuilder, type BalanceConfigBuilderPrams, BaseConfig, type BaseConfigConstructorParams, CallType, ContractBuilder, ContractConfig, type ContractConfigBuilder, type ContractConfigBuilderPrams, type ContractConfigConstructorParams, type EquilibriumSystemBalanceData, ExtrinsicBuilder, ExtrinsicConfig, type ExtrinsicConfigBuilder, type ExtrinsicConfigBuilderPrams, type ExtrinsicConfigConstructorParams, FeeBuilder, type FeeConfigBuilder, type FeeConfigBuilderPrams, type PalletBalancesAccountDataOld, type Parents, type QueryConfigConstructorParams, SubstrateQueryConfig, type TokensPalletAccountData, XcmVersion, calculateSystemAccountBalance, evm, substrate };
253
+ export { AssetMinBuilder, type AssetMinConfigBuilder, type AssetMinConfigBuilderPrams, BalanceBuilder, type BalanceConfigBuilder, type BalanceConfigBuilderPrams, BaseConfig, type BaseConfigConstructorParams, CallType, ContractBuilder, ContractConfig, type ContractConfigBuilder, type ContractConfigBuilderPrams, type ContractConfigConstructorParams, type EquilibriumSystemBalanceData, ExtrinsicBuilder, ExtrinsicConfig, type ExtrinsicConfigBuilder, type ExtrinsicConfigBuilderPrams, type ExtrinsicConfigConstructorParams, FeeBuilder, type FeeConfigBuilder, type FeeConfigBuilderPrams, type MoonbeamRuntimeXcmConfigAssetType, type PalletBalancesAccountDataOld, type Parents, type QueryConfigConstructorParams, SubstrateQueryConfig, type TokensPalletAccountData, type XcmPaymentFeeProps, XcmVersion, calculateSystemAccountBalance, evm, substrate };
package/build/index.d.ts CHANGED
@@ -2,9 +2,13 @@ import {
2
2
  SetOptional,
3
3
  ChainAssetId,
4
4
  AnyChain,
5
+ AnyParachain,
5
6
  } from '@moonbeam-network/xcm-types';
6
- import { FrameSystemAccountInfo } from '@polkadot/types/lookup';
7
- import { Struct, u128 } from '@polkadot/types';
7
+ import {
8
+ FrameSystemAccountInfo,
9
+ StagingXcmV3MultiLocation,
10
+ } from '@polkadot/types/lookup';
11
+ import { Struct, u128, Enum } from '@polkadot/types';
8
12
  import { SubmittableExtrinsicFunction } from '@polkadot/api/types';
9
13
  import { ApiPromise } from '@polkadot/api';
10
14
 
@@ -245,15 +249,30 @@ interface FeeConfigBuilder {
245
249
  build: (params: FeeConfigBuilderPrams) => SubstrateCallConfig;
246
250
  }
247
251
  interface FeeConfigBuilderPrams {
248
- asset: ChainAssetId;
252
+ address: string;
249
253
  api: ApiPromise;
254
+ feeAsset: ChainAssetId;
255
+ transferAsset: ChainAssetId;
256
+ chain: AnyParachain;
257
+ }
258
+ interface XcmPaymentFeeProps {
259
+ isAssetReserveChain: boolean;
260
+ shouldTransferAssetPrecedeAsset?: boolean;
261
+ }
262
+ interface MoonbeamRuntimeXcmConfigAssetType extends Enum {
263
+ readonly isXcm: boolean;
264
+ readonly asXcm: StagingXcmV3MultiLocation;
265
+ readonly type: 'Xcm';
250
266
  }
251
267
 
252
268
  declare function FeeBuilder(): {
253
- assetManager: typeof assetManager;
269
+ xcmPaymentApi: typeof xcmPaymentApi;
254
270
  };
255
- declare function assetManager(): {
256
- assetTypeUnitsPerSecond: (weight?: number) => FeeConfigBuilder;
271
+ declare function xcmPaymentApi(): {
272
+ xcmPaymentFee: ({
273
+ isAssetReserveChain,
274
+ shouldTransferAssetPrecedeAsset,
275
+ }: XcmPaymentFeeProps) => FeeConfigBuilder;
257
276
  };
258
277
 
259
278
  export {
@@ -280,11 +299,13 @@ export {
280
299
  FeeBuilder,
281
300
  type FeeConfigBuilder,
282
301
  type FeeConfigBuilderPrams,
302
+ type MoonbeamRuntimeXcmConfigAssetType,
283
303
  type PalletBalancesAccountDataOld,
284
304
  type Parents,
285
305
  type QueryConfigConstructorParams,
286
306
  SubstrateQueryConfig,
287
307
  type TokensPalletAccountData,
308
+ type XcmPaymentFeeProps,
288
309
  XcmVersion,
289
310
  calculateSystemAccountBalance,
290
311
  evm,
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 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};
1
+ import"@polkadot/api-augment";var C=(e=>(e.Evm="Evm",e.Substrate="Substrate",e))(C||{});var f=class{module;func;type;constructor({module:t,func:e,type:n}){this.module=t,this.func=e,this.type=n}};var c=class extends f{args;transform;constructor({args:t=[],transform:e,type:n="Substrate",...i}){super({...i,type:n}),this.args=t,this.transform=e}};function kt(){return{assetRegistry:tt,assets:et}}function tt(){let r="assetRegistry";return{assetMetadatas:()=>({build:({asset:t})=>new c({module:r,func:"assetMetadatas",args:[t],transform:async e=>e.unwrapOrDefault().minimalBalance.toBigInt()})}),currencyMetadatas:()=>({build:({asset:t})=>new c({module:r,func:"currencyMetadatas",args:[t],transform:async e=>e.unwrapOrDefault().minimalBalance.toBigInt()})})}}function et(){return{asset:()=>({build:({asset:r})=>new c({module:"assets",func:"asset",args:[r],transform:async t=>t.unwrapOrDefault().minBalance.toBigInt()})})}}import{isString as it}from"@polkadot/util";import{evmToAddress as ot}from"@polkadot/util-crypto";import{formatAssetIdToERC20 as h}from"@moonbeam-network/xcm-utils";import{isString as P,u8aToHex as k}from"@polkadot/util";import{decodeAddress as D,evmToAddress as rt}from"@polkadot/util-crypto";var l=class extends f{args;address;constructor({args:t,address:e,...n}){super({...n,type:"Evm"}),this.args=t,this.address=e}};var T=18446744073709551615n;function N(){return{transfer:(r=T)=>({build:({address:t,amount:e,asset:n,destination:i})=>new l({args:[P(n)?h(n):n,e,O(t,i),r],func:"transfer",module:"Xtokens"})}),transferMultiCurrencies:(r=T)=>({build:({address:t,amount:e,asset:n,destination:i,fee:o,feeAsset:s})=>new l({args:[[[P(n)?h(n):n,e],[P(s)?h(s):s,o]],1,O(t,i),r],func:"transferMultiCurrencies",module:"Xtokens"})}),transferWithEvmTo32:(r=T)=>({build:({address:t,amount:e,asset:n,destination:i})=>{let o=nt(t,i);return new l({args:[P(n)?h(n):n,e,o,r],func:"transfer",module:"Xtokens"})}})}}function nt(r,t){let e="01",n=rt(r),i=`0x${e}${k(D(n),-1,!1)}00`;return[1,t.parachainId?[`0x0000000${t.parachainId.toString(16)}`,i]:[i]]}function O(r,t){let n=`0x${t.isEvmParachain()?"03":"01"}${k(D(r),-1,!1)}00`;return[1,t.parachainId?[`0x0000000${t.parachainId.toString(16)}`,n]:[n]]}function Jt(){return{Xtokens:N}}function se(){return{evm:st,substrate:at}}function st(){return{erc20:ct}}function at(){return{assets:ut,system:mt,tokens:ft}}function ct(){return{build:({address:r,asset:t})=>{if(!t||!it(t))throw new Error(`Invalid contract address: ${t}`);return new l({address:t,args:[r],func:"balanceOf",module:"Erc20"})}}}function ut(){return{account:()=>({build:({address:r,asset:t})=>new c({module:"assets",func:"account",args:[t,r],transform:async e=>e.unwrapOrDefault().balance.toBigInt()})})}}function mt(){return{account:()=>({build:({address:r})=>new c({module:"system",func:"account",args:[r],transform:async t=>M(t)})}),accountEquilibrium:()=>({build:({address:r,asset:t})=>new c({module:"system",func:"account",args:[r],transform:async e=>{var s;if(e.data.isEmpty)return 0n;let n=e.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(([m])=>m===t);return o?BigInt(o[1].positive):0n}})}),accountEvmTo32:()=>({build:({address:r})=>{let t=ot(r);return new c({module:"system",func:"account",args:[t],transform:async e=>M(e)})}})}}function ft(){return{accounts:()=>({build:({address:r,asset:t})=>new c({module:"tokens",func:"accounts",args:[r,t],transform:async({free:e,frozen:n})=>BigInt(e.sub(n).toString())})})}}async function M(r){let t=r.data,e=BigInt(t.free.toString()),n=t.miscFrozen??t.frozen,i=BigInt(n.sub(t.reserved).toString()),o=i<0n?0n:i;return e-o}import{getTypeDef as lt}from"@polkadot/types";import{u8aToHex as dt}from"@polkadot/util";import{decodeAddress as pt}from"@polkadot/util-crypto";var y=(i=>(i.v1="V1",i.v2="V2",i.v3="V3",i.v4="V4",i))(y||{});function d(r,t=0){if(!r)return"V1";let{type:e}=r.meta.args[t],n=r.meta.registry.createType(e.toString()),i=lt(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(r){return r.length===42&&r.startsWith("0x")?{AccountKey20:{key:r}}:{AccountId32:{id:dt(pt(r)),network:null}}}var a=class extends f{getArgs;constructor({getArgs:t,...e}){super({...e,type:"Substrate"}),this.getArgs=t}};var W="eqBalances";function R(){return{xcmTransfer:()=>({build:({address:r,amount:t,asset:e,destination:n})=>new a({module:W,func:"xcmTransfer",getArgs:()=>[e,t,{parents:1,interior:{X2:[{Parachain:n.parachainId},u(r)]}},"ThisAccWillPay"]})}),transferXcm:()=>({build:({address:r,amount:t,asset:e,destination:n,fee:i,feeAsset:o})=>new a({module:W,func:"transferXcm",getArgs:()=>{let s=t-i>0n?t-i:0n;return[[e,e===o?s:t],[o,i],{parents:1,interior:{X2:[{Parachain:n.parachainId},u(r)]}}]}})})}}function p({asset:r,address:t,destination:e,func:n,parents:i=1,feeIndex:o=0}){let s=d(n);return[{[s]:{parents:i,interior:{X1:{Parachain:e.parachainId}}}},{[s]:{parents:0,interior:{X1:u(t)}}},{[s]:r},o,"Unlimited"]}function _({asset:r,feeAsset:t}){let e=Number(r),n=Number(t);return Number.isNaN(e)||Number.isNaN(n)?!1:e>n}var E="polkadotXcm";function V(){return{limitedReserveTransferAssets:()=>{let r="limitedReserveTransferAssets";return{here:()=>({build:t=>new a({module:E,func:r,getArgs:e=>p({...t,func:e,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:t.amount}}]})})}),X1:()=>({build:t=>new a({module:E,func:r,getArgs:e=>p({...t,func:e,asset:[{id:{Concrete:{parents:0,interior:{X1:{PalletInstance:t.palletInstance}}}},fun:{Fungible:t.amount}}]})})}),X2:()=>({build:t=>new a({module:E,func:r,getArgs:e=>{let n=!!t.feeAsset&&t.asset!==t.feeAsset,i=[{id:{Concrete:{parents:0,interior:{X2:[{PalletInstance:t.palletInstance},{GeneralIndex:t.asset}]}}},fun:{Fungible:t.amount}}],o=_(t);if(n){let s={id:{Concrete:{parents:0,interior:{X2:[{PalletInstance:t.palletInstance},{GeneralIndex:t.feeAsset}]}}},fun:{Fungible:t.fee}};o?i.unshift(s):i.push(s)}return p({...t,func:e,asset:i,feeIndex:n&&!o?1:0})}})})}},limitedReserveWithdrawAssets:()=>{let r="limitedReserveWithdrawAssets";return{X2:()=>({build:t=>new a({module:E,func:r,getArgs:e=>p({...t,func:e,asset:[{id:{Concrete:{parents:1,interior:{X2:[{Parachain:t.destination.parachainId},{PalletInstance:t.palletInstance}]}}},fun:{Fungible:t.amount}}]})})})}}}}function g(){return"Unlimited"}function A(r,t,e){return{[r]:{parents:1,interior:{X2:[{Parachain:e.parachainId},u(t)]}}}}var b="xTokens";function L(){return{transfer:()=>({build:({address:r,amount:t,asset:e,destination:n})=>new a({module:b,func:"transfer",getArgs:i=>{let o=d(i,2);return[e,t,A(o,r,n),g()]}})}),transferMultiAsset:r=>{let t="transferMultiasset";return{here:()=>({build:({address:e,amount:n,destination:i})=>new a({module:b,func:t,getArgs:o=>{let s=d(o,1);return[{[s]:{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:n}}},A(s,e,i),g()]}})}),X1:()=>({build:({address:e,amount:n,destination:i})=>new a({module:b,func:t,getArgs:o=>{let s=d(o,1);return[{[s]:{id:{Concrete:{parents:1,interior:{X1:{Parachain:r}}}},fun:{Fungible:n}}},A(s,e,i),g()]}})}),X2:()=>({build:({address:e,amount:n,asset:i,destination:o})=>new a({module:b,func:t,getArgs:s=>{let m=d(s,1);return[{[m]:{id:{Concrete:{parents:1,interior:{X2:[{Parachain:r},{GeneralKey:i}]}}},fun:{Fungible:n}}},A(m,e,o),g()]}})})}},transferMultiCurrencies:()=>({build:({address:r,amount:t,asset:e,destination:n,fee:i,feeAsset:o})=>new a({module:b,func:"transferMulticurrencies",getArgs:()=>[[[e,t],[o,i]],1,A("V3",r,n),g()]})})}}var H="xTransfer";function j(){return{transfer:()=>{let r="transfer";return{here:()=>({build:({address:t,amount:e,destination:n})=>new a({module:H,func:r,getArgs:()=>[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:e}},{parents:1,interior:{X2:[{Parachain:n.parachainId},u(t)]}},{refTime:5e9,proofSize:0}]})}),X2:()=>({build:({address:t,amount:e,destination:n,palletInstance:i})=>new a({module:H,func:r,getArgs:()=>[{id:{Concrete:{parents:1,interior:{X2:[{Parachain:n.parachainId},{PalletInstance:i}]}}},fun:{Fungible:e||1n}},{parents:1,interior:{X2:[{Parachain:n.parachainId},u(t)]}},{refTime:5e9,proofSize:0}]})})}}}}var U="xcmPallet";function q(){return{limitedReserveTransferAssets:(r=1)=>{let t="limitedReserveTransferAssets";return{here:()=>({build:e=>new a({module:U,func:t,getArgs:n=>p({...e,parents:r,func:n,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:e.amount}}]})})})}},transferAssetsUsingTypeAndThen:()=>{let r="transferAssetsUsingTypeAndThen";return{here:()=>({build:t=>new a({module:U,func:r,getArgs:()=>{let e="V4";return[{[e]:{parents:0,interior:{X1:[{Parachain:t.destination.parachainId}]}}},{[e]:[{id:{parents:0,interior:"Here"},fun:{Fungible:t.amount}}]},"LocalReserve",{[e]:{parents:0,interior:"Here"}},"LocalReserve",{[e]:[{DepositAsset:{assets:{Wild:{AllCounted:1}},beneficiary:{parents:0,interior:{X1:[u(t.address)]}}}}]},"Unlimited"]}})})}}}}function mr(){return{eqBalances:R,xTokens:L,xTransfer:j,polkadotXcm:V,xcmPallet:q}}var B=class{api;call;type="Substrate";constructor({api:t,call:e}){this.api=t,this.call=e}};import{isHexString as gt}from"@moonbeam-network/xcm-utils";var X=10**6,At="0xabcdef1234567890fedcba0987654321abcdef1234567890fedcba0987654321",xt="0x0000000000000000000000000000000000000802",Ct={moonbeam:"10",moonriver:"10","moonbase-alpha":"3"},yt={moonbeam:"110",moonriver:"110","moonbase-alpha":"48"},w="V4";function x(){return w==="V4"}function bt(r){if(!x())return r;let t={...r};return t.interior&&typeof t.interior=="object"&&"x1"in t.interior&&(Array.isArray(t.interior.x1)||(t.interior.x1=[t.interior.x1])),t}function z(r){return{WithdrawAsset:r.map(t=>({id:{...t},fun:{Fungible:X}}))}}function $(r){return{ReserveAssetDeposited:r.map(t=>({id:{...t},fun:{Fungible:X}}))}}function G(){return{ClearOrigin:"NULL"}}function K(r){return{BuyExecution:{fees:{id:{...r},fun:{Fungible:X}},weight_limit:{Unlimited:"NULL"}}}}function J(r,t){let e={AccountKey20:{key:r,network:null}};return{DepositAsset:{assets:{Wild:{AllCounted:t.length}},beneficiary:{interior:{X1:x()?[e]:e},parents:0},max_assets:0}}}function Q(){return{SetTopic:At}}function v(r){return{Concrete:{...r}}}function ht(r){let t={PalletInstance:Ct[r]},e={interior:{X1:x()?[t]:t},parents:"0"};return x()?e:v(e)}function Pt(r,t){let e={interior:{X2:[{PalletInstance:yt[t]},{AccountKey20:{key:r,network:null}}]},parents:"0"};return x()?e:v(e)}async function Et(r,t){let e=await r.query.assetManager.assetIdType(t);if(e.isNone||!e.unwrap().isXcm)throw new Error(`No asset type found for asset ${t}`);return e}async function S(r,t,e){if(t===xt)return ht(e.key);if(gt(t))return Pt(t,e.key);let i=(await Et(r,t)).unwrap().asXcm.toJSON(),o=bt(i);return x()?o:v(o)}async function Y(r,t,e){let n=await r.call.xcmPaymentApi.queryXcmWeight({[w]:t});if(!n.isOk)throw new Error("There was an error trying to get the weight for the xcm instructions (queryXcmWeight)");let i=n.asOk,o=await r.call.xcmPaymentApi.queryWeightToAssetFee(i,{[w]:{...e}});if(!o.isOk)throw new Error("There was an error trying to get the fee with the weight and asset (weightToForeingAssets)");return o.asOk.toBigInt()}function Er(){return{xcmPaymentApi:Bt}}function Bt(){return{xcmPaymentFee:({isAssetReserveChain:r,shouldTransferAssetPrecedeAsset:t=!1})=>({build:({address:e,api:n,feeAsset:i,chain:o,transferAsset:s})=>new B({api:n,call:async()=>{let m=await S(n,i,o),F=await S(n,s,o),I=i===s?[m]:t?[F,m]:[m,F],Z=[r?z(I):$(I),G(),K(m),J(e,I),Q()];return Y(n,Z,m)}})})}}export{kt as AssetMinBuilder,se as BalanceBuilder,f as BaseConfig,C as CallType,Jt as ContractBuilder,l as ContractConfig,mr as ExtrinsicBuilder,a as ExtrinsicConfig,Er as FeeBuilder,c as SubstrateQueryConfig,y as XcmVersion,M as calculateSystemAccountBalance,st as evm,at 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 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":["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"]}
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.utils.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 */\nimport { AnyParachain, ChainAssetId } from '@moonbeam-network/xcm-types';\nimport { isHexString } from '@moonbeam-network/xcm-utils';\nimport { ApiPromise } from '@polkadot/api';\nimport { Option, Result, u128 } from '@polkadot/types';\nimport { Error as PolkadotError, Weight } from '@polkadot/types/interfaces';\nimport { AnyJson } from '@polkadot/types/types';\nimport { XcmVersion } from '../extrinsic';\nimport { MoonbeamRuntimeXcmConfigAssetType } from './FeeBuilder.interfaces';\n\nconst DEFAULT_AMOUNT = 10 ** 6;\nconst DEFALUT_HEX_STRING =\n '0xabcdef1234567890fedcba0987654321abcdef1234567890fedcba0987654321';\n\nconst MOON_CHAIN_NATIVE_ASSET_ID = '0x0000000000000000000000000000000000000802';\n\nconst MOON_CHAIN_BALANCES_PALLET_INSTANCE: Record<string, string> = {\n moonbeam: '10',\n moonriver: '10',\n 'moonbase-alpha': '3',\n};\nconst MOON_CHIAN_ERC20_PALLET_INSTANCE: Record<string, string> = {\n moonbeam: '110',\n moonriver: '110',\n 'moonbase-alpha': '48',\n};\n\nconst XCM_VERSION: XcmVersion = XcmVersion.v4; // TODO\n\nfunction isXcmV4() {\n return XCM_VERSION === XcmVersion.v4;\n}\n\nfunction normalizeX1(assetType: Record<string, AnyJson>) {\n if (!isXcmV4()) {\n return assetType;\n }\n const normalizedAssetType = { ...assetType };\n if (\n normalizedAssetType.interior &&\n typeof normalizedAssetType.interior === 'object' &&\n 'x1' in normalizedAssetType.interior\n ) {\n if (!Array.isArray(normalizedAssetType.interior.x1)) {\n normalizedAssetType.interior.x1 = [normalizedAssetType.interior.x1];\n }\n }\n return normalizedAssetType;\n}\n\nexport function getWithdrawAssetInstruction(assetTypes: object[]) {\n return {\n WithdrawAsset: assetTypes.map((assetType) => ({\n id: { ...assetType },\n fun: {\n Fungible: DEFAULT_AMOUNT,\n },\n })),\n };\n}\n\nexport function getReserveAssetDepositedInstruction(assetTypes: object[]) {\n return {\n ReserveAssetDeposited: assetTypes.map((assetType) => ({\n id: { ...assetType },\n fun: {\n Fungible: DEFAULT_AMOUNT,\n },\n })),\n };\n}\n\nexport function getClearOriginInstruction() {\n return {\n ClearOrigin: 'NULL',\n };\n}\n\nexport function getBuyExecutionInstruction(assetType: object) {\n // TODO should verify that asset is in acceptable payment assets\n // api.call.xcmPaymentApi.queryAcceptablePaymentAssets(xcmVersion)\n return {\n BuyExecution: {\n fees: {\n id: {\n ...assetType,\n },\n fun: {\n Fungible: DEFAULT_AMOUNT,\n },\n },\n weight_limit: {\n Unlimited: 'NULL',\n },\n },\n };\n}\n\nexport function getDepositAssetInstruction(address: string, assets: object[]) {\n const accountKey = {\n AccountKey20: {\n key: address,\n network: null,\n },\n };\n\n return {\n DepositAsset: {\n assets: {\n Wild: {\n AllCounted: assets.length,\n },\n },\n beneficiary: {\n interior: {\n X1: isXcmV4() ? [accountKey] : accountKey,\n },\n parents: 0,\n },\n max_assets: 0,\n },\n };\n}\n\nexport function getSetTopicInstruction() {\n return {\n SetTopic: DEFALUT_HEX_STRING,\n };\n}\n\nfunction applyConcreteWrapper(id: object) {\n return {\n Concrete: { ...id },\n };\n}\n\n// TODO this is for Moonbeam\nfunction getNativeAssetId(chainKey: string): object {\n const palletInstance = {\n PalletInstance: MOON_CHAIN_BALANCES_PALLET_INSTANCE[chainKey],\n };\n const id = {\n interior: {\n X1: isXcmV4() ? [palletInstance] : palletInstance,\n },\n parents: '0',\n };\n\n return isXcmV4() ? id : applyConcreteWrapper(id);\n}\n\nfunction getConcreteAssetIdWithAccountKey20(\n asset: ChainAssetId,\n chainKey: string,\n): object {\n const id = {\n interior: {\n X2: [\n {\n PalletInstance: MOON_CHIAN_ERC20_PALLET_INSTANCE[chainKey],\n },\n {\n AccountKey20: {\n key: asset,\n network: null,\n },\n },\n ],\n },\n parents: '0',\n };\n return isXcmV4() ? id : applyConcreteWrapper(id);\n}\n\nexport async function getAssetIdType(\n api: ApiPromise,\n asset: ChainAssetId,\n): Promise<Option<MoonbeamRuntimeXcmConfigAssetType>> {\n const type =\n await api.query.assetManager.assetIdType<\n Option<MoonbeamRuntimeXcmConfigAssetType>\n >(asset);\n\n if (type.isNone || !type.unwrap().isXcm) {\n throw new Error(`No asset type found for asset ${asset}`);\n }\n return type;\n}\n\nexport async function getVersionedAssetId(\n api: ApiPromise,\n asset: ChainAssetId,\n chain: AnyParachain,\n): Promise<object> {\n if (asset === MOON_CHAIN_NATIVE_ASSET_ID) {\n return getNativeAssetId(chain.key);\n }\n\n if (isHexString(asset)) {\n return getConcreteAssetIdWithAccountKey20(asset, chain.key);\n }\n\n const assetType = await getAssetIdType(api, asset);\n const assetTypeObject = assetType.unwrap().asXcm.toJSON();\n\n const normalizedAssetTypeObject = normalizeX1(assetTypeObject);\n\n return isXcmV4()\n ? normalizedAssetTypeObject\n : applyConcreteWrapper(normalizedAssetTypeObject);\n}\n\nexport async function getFeeForXcmInstructionsAndAsset(\n api: ApiPromise,\n instructions: AnyJson,\n versionedAssetId: object,\n) {\n const xcmToWeightResult = await api.call.xcmPaymentApi.queryXcmWeight<\n Result<Weight, PolkadotError>\n >({\n [XCM_VERSION]: instructions,\n });\n if (!xcmToWeightResult.isOk) {\n throw new Error(\n 'There was an error trying to get the weight for the xcm instructions (queryXcmWeight)',\n );\n }\n const xcmToWeight = xcmToWeightResult.asOk;\n\n const weightToForeingAssets =\n await api.call.xcmPaymentApi.queryWeightToAssetFee<\n Result<u128, PolkadotError>\n >(xcmToWeight, {\n [XCM_VERSION]: {\n ...versionedAssetId,\n },\n });\n if (!weightToForeingAssets.isOk) {\n throw new Error(\n 'There was an error trying to get the fee with the weight and asset (weightToForeingAssets)',\n );\n }\n return weightToForeingAssets.asOk.toBigInt();\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { SubstrateCallConfig } from '../types/substrate/SubstrateCallConfig';\nimport { FeeConfigBuilder, XcmPaymentFeeProps } from './FeeBuilder.interfaces';\nimport {\n getBuyExecutionInstruction,\n getClearOriginInstruction,\n getDepositAssetInstruction,\n getFeeForXcmInstructionsAndAsset,\n getReserveAssetDepositedInstruction,\n getSetTopicInstruction,\n getVersionedAssetId,\n getWithdrawAssetInstruction,\n} from './FeeBuilder.utils';\n\nexport function FeeBuilder() {\n return {\n xcmPaymentApi,\n };\n}\n\nfunction xcmPaymentApi() {\n return {\n xcmPaymentFee: ({\n isAssetReserveChain,\n shouldTransferAssetPrecedeAsset = false,\n }: XcmPaymentFeeProps): FeeConfigBuilder => ({\n build: ({ address, api, feeAsset, chain, transferAsset }) =>\n new SubstrateCallConfig({\n api,\n call: async (): Promise<bigint> => {\n const versionedAssetId = await getVersionedAssetId(\n api,\n feeAsset,\n chain,\n );\n const versionedTransferAssetId = await getVersionedAssetId(\n api,\n transferAsset,\n chain,\n );\n const versionedAssets = shouldTransferAssetPrecedeAsset\n ? [versionedTransferAssetId, versionedAssetId]\n : [versionedAssetId, versionedTransferAssetId];\n\n const assets =\n feeAsset === transferAsset ? [versionedAssetId] : versionedAssets;\n\n const instructions = [\n isAssetReserveChain\n ? getWithdrawAssetInstruction(assets)\n : getReserveAssetDepositedInstruction(assets),\n getClearOriginInstruction(),\n getBuyExecutionInstruction(versionedAssetId),\n getDepositAssetInstruction(address, assets),\n getSetTopicInstruction(),\n ];\n\n return getFeeForXcmInstructionsAndAsset(\n api,\n instructions,\n versionedAssetId,\n );\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","version","getExtrinsicAccount","ExtrinsicBuilder","eqBalances","xTokens","xTransfer","polkadotXcm","xcmPallet","SubstrateCallConfig","api","call","isHexString","DEFAULT_AMOUNT","DEFALUT_HEX_STRING","MOON_CHAIN_NATIVE_ASSET_ID","MOON_CHAIN_BALANCES_PALLET_INSTANCE","MOON_CHIAN_ERC20_PALLET_INSTANCE","XCM_VERSION","isXcmV4","normalizeX1","assetType","normalizedAssetType","getWithdrawAssetInstruction","assetTypes","getReserveAssetDepositedInstruction","getClearOriginInstruction","getBuyExecutionInstruction","getDepositAssetInstruction","address","assets","accountKey","getSetTopicInstruction","applyConcreteWrapper","id","getNativeAssetId","chainKey","palletInstance","getConcreteAssetIdWithAccountKey20","asset","getAssetIdType","api","type","getVersionedAssetId","chain","isHexString","assetTypeObject","normalizedAssetTypeObject","getFeeForXcmInstructionsAndAsset","instructions","versionedAssetId","xcmToWeightResult","xcmToWeight","weightToForeingAssets","FeeBuilder","xcmPaymentApi","isAssetReserveChain","shouldTransferAssetPrecedeAsset","address","api","feeAsset","chain","transferAsset","SubstrateCallConfig","versionedAssetId","getVersionedAssetId","versionedTransferAssetId","assets","instructions","getWithdrawAssetInstruction","getReserveAssetDepositedInstruction","getClearOriginInstruction","getBuyExecutionInstruction","getDepositAssetInstruction","getSetTopicInstruction","getFeeForXcmInstructionsAndAsset"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moonbeam-network/xcm-builder",
3
- "version": "2.4.7",
3
+ "version": "2.5.0",
4
4
  "description": "Moonbeam XCM builder",
5
5
  "scripts": {
6
6
  "build": "tsup",
@@ -49,7 +49,7 @@
49
49
  "types": "./build/index.d.ts",
50
50
  "main": "./build/index.cjs",
51
51
  "dependencies": {
52
- "@moonbeam-network/xcm-types": "2.3.4",
52
+ "@moonbeam-network/xcm-types": "2.4.0",
53
53
  "@moonbeam-network/xcm-utils": "2.1.7",
54
54
  "big.js": "^6.2.1"
55
55
  },