@moonbeam-network/xcm-builder 1.0.0-dev.14 → 1.0.0-dev.140

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 P=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var q=Object.prototype.hasOwnProperty;var V=(n,r)=>{for(var t in r)P(n,t,{get:r[t],enumerable:!0})},U=(n,r,t,e)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of R(r))!q.call(n,i)&&i!==t&&P(n,i,{get:()=>r[i],enumerable:!(e=K(r,i))||e.enumerable});return n};var z=n=>U(P({},"__esModule",{value:!0}),n);var er={};V(er,{AssetMinBuilder:()=>L,BalanceBuilder:()=>N,BaseConfig:()=>u,CallType:()=>f,ContractBuilder:()=>H,ContractConfig:()=>m,ExtrinsicBuilder:()=>rr,ExtrinsicConfig:()=>a,FeeBuilder:()=>tr,SubstrateQueryConfig:()=>c,XcmVersion:()=>y,evm:()=>I,substrate:()=>k});module.exports=z(er);var _t=require("@polkadot/api-augment");var f=(t=>(t.Evm="Evm",t.Substrate="Substrate",t))(f||{});var u=class{module;func;type;constructor({module:r,func:t,type:e}){this.module=r,this.func=t,this.type=e}};var c=class extends u{args;transform;constructor({args:r=[],transform:t,type:e="Substrate",...i}){super({...i,type:e}),this.args=r,this.transform=t}};function L(){return{assetRegistry:$,assets:G}}function $(){let n="assetRegistry";return{assetMetadatas:()=>({build:({asset:r})=>new c({module:n,func:"assetMetadatas",args:[r],transform:async t=>t.unwrapOrDefault().minimalBalance.toBigInt()})}),currencyMetadatas:()=>({build:({asset:r})=>new c({module:n,func:"currencyMetadatas",args:[r],transform:async t=>t.unwrapOrDefault().minimalBalance.toBigInt()})})}}function G(){return{asset:()=>({build:({asset:n})=>new c({module:"assets",func:"asset",args:[n],transform:async r=>r.unwrapOrDefault().minBalance.toBigInt()})})}}var X=require("@polkadot/util");var x=require("@moonbeam-network/xcm-utils"),p=require("@polkadot/util"),w=require("@polkadot/util-crypto");var m=class extends u{args;address;constructor({args:r,address:t,...e}){super({...e,type:"Evm"}),this.args=r,this.address=t}};function T(){return{transfer:(n=4e9)=>({build:({address:r,amount:t,asset:e,destination:i})=>new m({args:[(0,p.isString)(e)?(0,x.formatAssetIdToERC20)(e):e,t,E(r,i),n],func:"transfer",module:"Xtokens"})}),transferMultiCurrencies:(n=4e9)=>({build:({address:r,amount:t,asset:e,destination:i,fee:o,feeAsset:s})=>new m({args:[[[(0,p.isString)(e)?(0,x.formatAssetIdToERC20)(e):e,t],[(0,p.isString)(s)?(0,x.formatAssetIdToERC20)(s):s,o]],1,E(r,i),n],func:"transferMultiCurrencies",module:"Xtokens"})})}}function E(n,r){let e=`0x${r.isEvmParachain()?"03":"01"}${(0,p.u8aToHex)((0,w.decodeAddress)(n),-1,!1)}00`;return[1,r.parachainId?[`0x0000000${r.parachainId.toString(16)}`,e]:[e]]}function H(){return{Xtokens:T}}function N(){return{evm:I,substrate:k}}function I(){return{erc20:Q}}function k(){return{assets:J,system:j,tokens:Y}}function Q(){return{build:({address:n,asset:r})=>{if(!r||!(0,X.isString)(r))throw new Error(`Invalid contract address: ${r}`);return new m({address:r,args:[n],func:"balanceOf",module:"Erc20"})}}}function J(){return{account:()=>({build:({address:n,asset:r})=>new c({module:"assets",func:"account",args:[r,n],transform:async t=>t.unwrapOrDefault().balance.toBigInt()})})}}function j(){return{account:()=>({build:({address:n})=>new c({module:"system",func:"account",args:[n],transform:async r=>{let t=r.data,e=t.miscFrozen??t.frozen;return BigInt(t.free.sub(e).toString())}})}),accountEquilibrium:()=>({build:({address:n,asset:r})=>new c({module:"system",func:"account",args:[n],transform:async t=>{var s;if(t.data.isEmpty)return 0n;let e=t.data.toJSON(),i;if(Array.isArray(e)&&(i=e),Array.isArray((s=e==null?void 0:e.v0)==null?void 0:s.balance)&&(i=e.v0.balance),!i)throw new Error("Can't get balance from Equilibrium chain");let o=i.find(([g])=>g===r);return o?BigInt(o[1].positive):0n}})})}}function Y(){return{accounts:()=>({build:({address:n,asset:r})=>new c({module:"tokens",func:"accounts",args:[n,r],transform:async({free:t,frozen:e})=>BigInt(t.sub(e).toString())})})}}var a=class extends u{getArgs;constructor({getArgs:r,...t}){super({...t,type:"Substrate"}),this.getArgs=r}};var S="eqBalances";function v(){return{xcmTransfer:()=>({build:({address:n,amount:r,asset:t,destination:e})=>new a({module:S,func:"xcmTransfer",getArgs:()=>[t,r,{parents:1,interior:{X2:[{Parachain:e.parachainId},{AccountKey20:{network:"Any",key:n}}]}},"ThisAccWillPay"]})}),transferXcm:()=>({build:({address:n,amount:r,asset:t,destination:e,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:e.parachainId},{AccountKey20:{network:"Any",key:n}}]}}]}})})}}var F=require("@polkadot/types");var y=(e=>(e.v1="V1",e.v2="V2",e.v3="V3",e))(y||{});function d(n,r=0){if(!n)return"V1";let{type:t}=n.meta.args[r],e=n.meta.registry.createType(t.toString()),i=(0,F.getTypeDef)(e==null?void 0:e.toRawType());if(!i.sub)return"V1";let o=Array.isArray(i.sub)?i.sub.map(s=>s.name):[i.sub.name];if(o.includes("V1"))return"V1";if(o.includes("V2"))return"V2";if(o.includes("V3"))return"V3";throw new Error("Can't find Xcm version")}function l({asset:n,address:r,destination:t,func:e,parents:i=1}){let o=d(e);return[{[o]:{parents:i,interior:{X1:{Parachain:t.parachainId}}}},{[o]:{parents:0,interior:{X1:{AccountKey20:{network:"Any",key:r}}}}},{[o]:n},0,"Unlimited"]}var C="polkadotXcm";function O(){return{limitedReserveTransferAssets:()=>{let n="limitedReserveTransferAssets";return{here:()=>({build:r=>new a({module:C,func:n,getArgs:t=>l({...r,func:t,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:r.amount}}]})})}),X1:()=>({build:r=>new a({module:C,func:n,getArgs:t=>l({...r,func:t,asset:[{id:{Concrete:{parents:0,interior:{X1:{PalletInstance:5}}}},fun:{Fungible:r.amount}}]})})}),X2:()=>({build:r=>new a({module:C,func:n,getArgs:t=>l({...r,func:t,asset:[{id:{Concrete:{parents:0,interior:{X2:[{PalletInstance:r.palletInstance},{GeneralIndex:r.asset}]}}},fun:{Fungible:r.amount}}]})})})}},limitedReserveWithdrawAssets:()=>{let n="limitedReserveWithdrawAssets";return{X2:()=>({build:r=>new a({module:C,func:n,getArgs:t=>l({...r,func:t,asset:[{id:{Concrete:{parents:1,interior:{X2:[{Parachain:r.destination.parachainId},{PalletInstance:r.palletInstance}]}}},fun:{Fungible:r.amount}}]})})})}}}}function B(n,r){var e;let t=(e=r==null?void 0:r.meta.args.at(-1))==null?void 0:e.type;return t?t.eq("XcmV2WeightLimit")?{Limited:n}:t.eq("XcmV3WeightLimit")?"Unlimited":n:n}var b="xTokens";function M(){return{transfer:()=>({build:({address:n,amount:r,asset:t,destination:e,source:i})=>new a({module:b,func:"transfer",getArgs:o=>{let s=d(o,2);return[t,r,{[s]:{parents:1,interior:{X2:[{Parachain:e.parachainId},{AccountKey20:{network:"Any",key:n}}]}}},B(i.weight,o)]}})}),transferMultiAsset:n=>{let r="transferMultiasset";return{X1:()=>({build:({address:t,amount:e,destination:i})=>new a({module:b,func:r,getArgs:o=>{let s=d(o,1);return[{[s]:{id:{Concrete:{parents:1,interior:{X1:{Parachain:n}}}},fun:{Fungible:e}}},{[s]:{parents:1,interior:{X2:[{Parachain:i.parachainId},{AccountKey20:{network:"Any",key:t}}]}}},"Unlimited"]}})}),X2:()=>({build:({address:t,amount:e,asset:i,destination:o,source:s})=>new a({module:b,func:r,getArgs:g=>{let h=d(g,1);return[{[h]:{id:{Concrete:{parents:1,interior:{X2:[{Parachain:n},{GeneralKey:i}]}}},fun:{Fungible:e}}},{[h]:{parents:1,interior:{X2:[{Parachain:o.parachainId},{AccountKey20:{network:"Any",key:t}}]}}},B(s.weight,g)]}})})}},transferMultiCurrencies:()=>({build:({address:n,amount:r,asset:t,destination:e,fee:i,feeAsset:o})=>new a({module:b,func:"transferMulticurrencies",getArgs:()=>[[[t,r],[o,i]],1,{["V3"]:{parents:1,interior:{X2:[{Parachain:e.parachainId},{AccountKey20:{key:n}}]}}},"Unlimited"]})})}}var D="xTransfer";function W(){return{transfer:()=>{let n="transfer";return{here:()=>({build:({address:r,amount:t,destination:e})=>new a({module:D,func:n,getArgs:()=>[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:t}},{parents:1,interior:{X2:[{Parachain:e.parachainId},{AccountKey20:{key:r}}]}},{refTime:5e9,proofSize:0}]})}),X2:()=>({build:({address:r,amount:t,destination:e,palletInstance:i})=>new a({module:D,func:n,getArgs:()=>[{id:{Concrete:{parents:1,interior:{X2:[{Parachain:e.parachainId},{PalletInstance:i}]}}},fun:{Fungible:t||1n}},{parents:1,interior:{X2:[{Parachain:e.parachainId},{AccountKey20:{key:r}}]}},{refTime:5e9,proofSize:0}]})})}}}}var Z="xcmPallet";function _(){return{limitedReserveTransferAssets:(n=1)=>{let r="limitedReserveTransferAssets";return{here:()=>({build:t=>new a({module:Z,func:r,getArgs:e=>l({...t,parents:n,func:e,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:t.amount}}]})})})}}}}function rr(){return{eqBalances:v,xTokens:M,xTransfer:W,polkadotXcm:O,xcmPallet:_}}var A=class{api;call;type="Substrate";constructor({api:r,call:t}){this.api=r,this.call=t}};function tr(){return{assetManager:nr}}function nr(){return{assetTypeUnitsPerSecond:(n=1e9)=>({build:({api:r,asset:t})=>new A({api:r,call:async()=>{let e=await r.query.assetManager.assetIdType(t);if(e.isNone)throw new Error(`No asset type found for asset ${t}`);let i=e.unwrap(),s=(await r.query.assetManager.assetTypeUnitsPerSecond(i)).unwrapOrDefault().toBigInt();return BigInt(n)*s/BigInt(10**12)}})})}}0&&(module.exports={AssetMinBuilder,BalanceBuilder,BaseConfig,CallType,ContractBuilder,ContractConfig,ExtrinsicBuilder,ExtrinsicConfig,FeeBuilder,SubstrateQueryConfig,XcmVersion,evm,substrate});
1
+ "use strict";var w=Object.defineProperty;var 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:()=>gt,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 gt(){return{assetRegistry:pt,assets:At}}function pt(){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 E="polkadotXcm";function $(){return{limitedReserveTransferAssets:()=>{let e="limitedReserveTransferAssets";return{here:()=>({build:t=>new a({module:E,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:E,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:E,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:E,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}}]})})})}},trasferAssets:()=>{let e="transferAssets";return{here:()=>({build:t=>new a({module:E,func:e,getArgs:r=>g({...t,func:r,asset:[{id:{Concrete:{parents:1,interior:"Here"}},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 B="xTokens";function G(){return{transfer:()=>({build:({address:e,amount:t,asset:r,destination:n})=>new a({module:B,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:B,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:B,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:B,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:B,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/ExtrinsicConfig.ts","../src/extrinsic/pallets/eqBalances/eqBalances.ts","../src/extrinsic/ExtrinsicBuilder.utils.ts","../src/extrinsic/ExtrinsicBuilder.interfaces.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 'type-fest';\nimport { CallType } from '../../builder.interfaces';\nimport { BaseConfig, BaseConfigConstructorParams } from '../BaseConfig';\n\nexport interface QueryConfigConstructorParams\n extends SetOptional<BaseConfigConstructorParams, 'type'> {\n args?: any[];\n transform: (data: any) => Promise<bigint>;\n}\n\nexport class SubstrateQueryConfig extends BaseConfig {\n readonly args: any[];\n\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 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 transform: async (response: Option<any>): Promise<bigint> =>\n response.unwrapOrDefault().minimalBalance.toBigInt(),\n }),\n }),\n };\n}\n\nfunction assets() {\n return {\n asset: (): AssetMinConfigBuilder => ({\n build: ({ asset }) =>\n new SubstrateQueryConfig({\n module: 'assets',\n func: 'asset',\n args: [asset],\n transform: async (\n response: Option<PalletAssetsAssetDetails>,\n ): Promise<bigint> =>\n response.unwrapOrDefault().minBalance.toBigInt(),\n }),\n }),\n };\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { Option } from '@polkadot/types';\nimport {\n FrameSystemAccountInfo,\n PalletAssetsAssetAccount,\n PalletBalancesAccountData,\n} from '@polkadot/types/lookup';\nimport { isString } from '@polkadot/util';\nimport { ContractConfig } from '../contract';\nimport { SubstrateQueryConfig } from '../types/substrate/SubstrateQueryConfig';\nimport {\n BalanceConfigBuilder,\n EquilibriumSystemBalanceData,\n PalletBalancesAccountDataOld,\n TokensPalletAccountData,\n} from './BalanceBuilder.interfaces';\n\nexport function BalanceBuilder() {\n return {\n evm,\n substrate,\n };\n}\n\nexport function evm() {\n return {\n erc20,\n };\n}\n\nexport function substrate() {\n return {\n assets,\n system,\n tokens,\n };\n}\n\nfunction erc20(): BalanceConfigBuilder {\n return {\n build: ({ address, asset }) => {\n if (!asset || !isString(asset)) {\n throw new Error(`Invalid contract address: ${asset}`);\n }\n\n return new ContractConfig({\n address: asset,\n args: [address],\n func: 'balanceOf',\n module: 'Erc20',\n });\n },\n };\n}\n\nfunction assets() {\n return {\n account: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) =>\n new SubstrateQueryConfig({\n module: 'assets',\n func: 'account',\n args: [asset, address],\n transform: async (\n response: Option<PalletAssetsAssetAccount>,\n ): Promise<bigint> => response.unwrapOrDefault().balance.toBigInt(),\n }),\n }),\n };\n}\n\nfunction system() {\n return {\n account: (): BalanceConfigBuilder => ({\n build: ({ address }) =>\n new SubstrateQueryConfig({\n module: 'system',\n func: 'account',\n args: [address],\n transform: async (\n response: FrameSystemAccountInfo,\n ): Promise<bigint> => {\n const balance = response.data as PalletBalancesAccountData &\n PalletBalancesAccountDataOld;\n const frozen = balance.miscFrozen ?? balance.frozen;\n\n return BigInt(balance.free.sub(frozen).toString());\n },\n }),\n }),\n accountEquilibrium: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) =>\n new SubstrateQueryConfig({\n module: 'system',\n func: 'account',\n args: [address],\n transform: async (response): Promise<bigint> => {\n if (response.data.isEmpty) {\n return 0n;\n }\n\n const res = response.data.toJSON() as unknown;\n let balances: EquilibriumSystemBalanceData | undefined;\n\n if (Array.isArray(res)) {\n balances = res;\n }\n\n if (Array.isArray((res as any)?.v0?.balance)) {\n balances = (res as any).v0.balance;\n }\n\n if (!balances) {\n throw new Error(\"Can't get balance from Equilibrium chain\");\n }\n\n const balance = balances.find(([assetId]) => assetId === asset);\n\n if (!balance) {\n return 0n;\n }\n\n return BigInt(balance[1].positive);\n },\n }),\n }),\n };\n}\n\nfunction tokens() {\n return {\n accounts: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) =>\n new SubstrateQueryConfig({\n module: 'tokens',\n func: 'accounts',\n args: [address, asset],\n transform: async ({\n free,\n frozen,\n }: TokensPalletAccountData): Promise<bigint> =>\n BigInt(free.sub(frozen).toString()),\n }),\n }),\n };\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { AnyChain } from '@moonbeam-network/xcm-types';\nimport { formatAssetIdToERC20 } from '@moonbeam-network/xcm-utils';\nimport { isString, u8aToHex } from '@polkadot/util';\nimport { decodeAddress } from '@polkadot/util-crypto';\nimport { ContractConfigBuilder } from '../../ContractBuilder.interfaces';\nimport { ContractConfig } from '../../ContractConfig';\n\nexport function Xtokens() {\n return {\n transfer: (weight = 4_000_000_000): 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: (\n weight = 4_000_000_000,\n ): ContractConfigBuilder => ({\n build: ({ address, amount, asset, destination, fee, feeAsset }) =>\n new ContractConfig({\n args: [\n [\n [isString(asset) ? formatAssetIdToERC20(asset) : asset, amount],\n [\n isString(feeAsset) ? formatAssetIdToERC20(feeAsset) : feeAsset,\n fee,\n ],\n ],\n 1, // index of the fee asset\n getDestinationMultilocation(address, destination),\n weight,\n ],\n func: 'transferMultiCurrencies',\n module: 'Xtokens',\n }),\n }),\n };\n}\n\ntype DestinationMultilocation = [\n /**\n * 1 - if transaction is going through a relay chain\n */\n 1,\n (\n | [\n /**\n * example '0x00000007DC'\n * 7DC - parachain id in hex\n * can be found here:\n * - https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fkusama-rpc.polkadot.io#/parachains\n * - https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/parachains\n */\n string,\n /**\n * example '0x01%account%00',\n * enum = 01 (AccountId32)\n * networkId = 00 (any)\n */\n string,\n ]\n | [\n /**\n * example '0x01%account%00',\n * enum = 01 (AccountId32)\n * networkId = 00 (any)\n */\n string,\n ]\n ),\n];\n\nfunction getDestinationMultilocation(\n address: string,\n destination: AnyChain,\n): DestinationMultilocation {\n /* \n 01: AccountId32\n 03: AccountKey20\n https://docs.moonbeam.network/builders/interoperability/xcm/xc20/xtokens/#building-the-precompile-multilocation\n */\n const accountType = destination.isEvmParachain() ? '03' : '01';\n const acc = `0x${accountType}${u8aToHex(\n decodeAddress(address),\n -1,\n false,\n )}00`;\n\n return [\n 1,\n destination.parachainId\n ? [`0x0000000${destination.parachainId.toString(16)}`, acc]\n : [acc],\n ];\n}\n","import { CallType } from '../builder.interfaces';\nimport { BaseConfig, BaseConfigConstructorParams } from '../types/BaseConfig';\n\nexport interface ContractConfigConstructorParams\n extends Omit<BaseConfigConstructorParams, 'type'> {\n args: any[];\n address?: string;\n}\n\nexport class ContractConfig extends BaseConfig {\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 { CallType } from '../builder.interfaces';\nimport { BaseConfig, BaseConfigConstructorParams } from '../types/BaseConfig';\n\nexport interface ExtrinsicConfigConstructorParams\n extends Omit<BaseConfigConstructorParams, 'type'> {\n getArgs: (func?: SubmittableExtrinsicFunction<'promise'>) => any[];\n}\n\nexport class ExtrinsicConfig extends BaseConfig {\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 { 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 {\n AccountKey20: {\n network: 'Any',\n key: address,\n },\n },\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 {\n AccountKey20: {\n network: 'Any',\n key: address,\n },\n },\n ],\n },\n },\n ];\n },\n }),\n }),\n };\n}\n","import { SubmittableExtrinsicFunction } from '@polkadot/api/types';\nimport { getTypeDef } from '@polkadot/types';\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","import { AnyChain, ChainAssetId } from '@moonbeam-network/xcm-types';\nimport { ExtrinsicConfig } from './ExtrinsicConfig';\n\nexport interface ExtrinsicConfigBuilder {\n build: (params: ExtrinsicConfigBuilderPrams) => ExtrinsicConfig;\n}\n\nexport interface ExtrinsicConfigBuilderPrams {\n address: string;\n amount: bigint;\n asset: ChainAssetId;\n destination: AnyChain;\n fee: bigint;\n feeAsset: ChainAssetId;\n palletInstance?: number;\n source: AnyChain;\n}\n\nexport enum XcmVersion {\n v1 = 'V1',\n v2 = 'V2',\n v3 = 'V3',\n}\n\nexport type Parents = 0 | 1;\n","/* eslint-disable sort-keys */\nimport { SubmittableExtrinsicFunction } from '@polkadot/api/types';\nimport {\n ExtrinsicConfigBuilderPrams,\n Parents,\n} from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicArgumentVersion } from '../../ExtrinsicBuilder.utils';\n\nexport interface GetExtrinsicParams extends ExtrinsicConfigBuilderPrams {\n asset: any;\n func?: SubmittableExtrinsicFunction<'promise'>;\n parents?: Parents;\n}\n\nexport function getPolkadotXcmExtrinsicArgs({\n asset,\n address,\n destination,\n func,\n parents = 1,\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: {\n AccountKey20: {\n network: 'Any',\n key: address,\n },\n },\n },\n },\n },\n {\n [version]: asset,\n },\n 0,\n 'Unlimited',\n ];\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport { getPolkadotXcmExtrinsicArgs } from './polkadotXcm.util';\n\nconst pallet = 'polkadotXcm';\n\nexport function polkadotXcm() {\n return {\n limitedReserveTransferAssets: () => {\n const func = 'limitedReserveTransferAssets';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n X1: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: {\n X1: {\n PalletInstance: 5,\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 getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: {\n X2: [\n {\n PalletInstance: params.palletInstance,\n },\n {\n GeneralIndex: params.asset,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\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 { SubmittableExtrinsicFunction } from '@polkadot/api/types';\nimport { XTokensWeightLimit } from './xTokens.interfaces';\n\n/**\n * Workaround for weight parameter type change in xTokens pallet\n * https://github.com/open-web3-stack/open-runtime-module-library/pull/841\n */\nexport function getWeight(\n weight: number,\n func?: SubmittableExtrinsicFunction<'promise'>,\n): XTokensWeightLimit {\n const type = func?.meta.args.at(-1)?.type;\n\n if (!type) {\n return weight;\n }\n\n if (type.eq('XcmV2WeightLimit')) {\n return {\n Limited: weight,\n };\n }\n\n if (type.eq('XcmV3WeightLimit')) {\n return 'Unlimited';\n }\n\n return weight;\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 { getWeight } from './xTokens.utils';\n\nconst pallet = 'xTokens';\n\nexport function xTokens() {\n return {\n transfer: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination, source }) =>\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 {\n [version]: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n {\n AccountKey20: {\n network: 'Any',\n key: address,\n },\n },\n ],\n },\n },\n },\n getWeight(source.weight, func),\n ];\n },\n }),\n }),\n transferMultiAsset: (originParachainId: number) => {\n const funcName = 'transferMultiasset';\n\n return {\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 {\n [version]: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n {\n AccountKey20: {\n network: 'Any',\n key: address,\n },\n },\n ],\n },\n },\n },\n 'Unlimited',\n ];\n },\n }),\n }),\n X2: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination, source }) =>\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 {\n [version]: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n {\n AccountKey20: {\n network: 'Any',\n key: address,\n },\n },\n ],\n },\n },\n },\n getWeight(source.weight, func),\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 {\n [XcmVersion.v3]: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n {\n AccountKey20: {\n key: address,\n },\n },\n ],\n },\n },\n },\n 'Unlimited',\n ],\n }),\n }),\n };\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\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 {\n AccountKey20: {\n key: address,\n },\n },\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 {\n AccountKey20: {\n key: address,\n },\n },\n ],\n },\n },\n {\n refTime: 5_000_000_000,\n proofSize: 0,\n },\n ],\n }),\n }),\n };\n },\n };\n}\n","/* eslint-disable sort-keys */\nimport {\n ExtrinsicConfigBuilder,\n Parents,\n} from '../../ExtrinsicBuilder.interfaces';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport { getPolkadotXcmExtrinsicArgs } from '../polkadotXcm/polkadotXcm.util';\n\nconst pallet = 'xcmPallet';\n\nexport function xcmPallet() {\n return {\n limitedReserveTransferAssets: (parents: Parents = 1) => {\n const func = 'limitedReserveTransferAssets';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n parents,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n };\n },\n };\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { eqBalances } from './pallets/eqBalances';\nimport { polkadotXcm } from './pallets/polkadotXcm';\nimport { xTokens } from './pallets/xTokens';\nimport { xTransfer } from './pallets/xTransfer';\nimport { xcmPallet } from './pallets/xcmPallet';\n\nexport function ExtrinsicBuilder() {\n return {\n eqBalances,\n xTokens,\n xTransfer,\n polkadotXcm,\n xcmPallet,\n };\n}\n","import { ApiPromise } from '@polkadot/api';\nimport { CallType } from '../../builder.interfaces';\n\nexport interface SubstrateCallConfigConstructorParams {\n api: ApiPromise;\n call: () => Promise<bigint>;\n}\n\nexport class SubstrateCallConfig {\n readonly api: ApiPromise;\n\n 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 )) as unknown as Option<any>;\n\n if (type.isNone) {\n throw new Error(`No asset type found for asset ${asset}`);\n }\n\n const unwrappedType = type.unwrap();\n\n const res = (await api.query.assetManager.assetTypeUnitsPerSecond(\n unwrappedType,\n )) as unknown as Option<u128>;\n\n const unitsPerSecond = res.unwrapOrDefault().toBigInt();\n\n return (BigInt(weight) * unitsPerSecond) / BigInt(10 ** 12);\n },\n }),\n }),\n };\n}\n"],"mappings":"yaAAA,IAAAA,GAAA,GAAAC,EAAAD,GAAA,qBAAAE,EAAA,mBAAAC,EAAA,eAAAC,EAAA,aAAAC,EAAA,oBAAAC,EAAA,mBAAAC,EAAA,qBAAAC,GAAA,oBAAAC,EAAA,eAAAC,GAAA,yBAAAC,EAAA,eAAAC,EAAA,QAAAC,EAAA,cAAAC,IAAA,eAAAC,EAAAf,IAAA,IAAAgB,GAAO,iCCAA,IAAKC,OACVA,EAAA,IAAM,MACNA,EAAA,UAAY,YAFFA,OAAA,ICQL,IAAMC,EAAN,KAAiB,CACb,OAEA,KAEA,KAET,YAAY,CAAE,OAAAC,EAAQ,KAAAC,EAAM,KAAAC,CAAK,EAAgC,CAC/D,KAAK,OAASF,EACd,KAAK,KAAOC,EACZ,KAAK,KAAOC,CACd,CACF,ECVO,IAAMC,EAAN,cAAmCC,CAAW,CAC1C,KAEA,UAET,YAAY,CACV,KAAAC,EAAO,CAAC,EACR,UAAAC,EACA,KAAAC,cACA,GAAGC,CACL,EAAiC,CAC/B,MAAM,CAAE,GAAGA,EAAO,KAAAD,CAAK,CAAC,EAExB,KAAK,KAAOF,EACZ,KAAK,UAAYC,CACnB,CACF,EClBO,SAASG,GAAkB,CAChC,MAAO,CACL,cAAAC,EACA,OAAAC,CACF,CACF,CAEA,SAASD,GAAgB,CACvB,IAAME,EAAS,gBACf,MAAO,CACL,eAAgB,KAA8B,CAC5C,MAAO,CAAC,CAAE,MAAAC,CAAM,IACd,IAAIC,EAAqB,CACvB,OAAQF,EACR,KAAM,iBACN,KAAM,CAACC,CAAK,EACZ,UAAW,MAAOE,GAChBA,EAAS,gBAAgB,EAAE,eAAe,SAAS,CACvD,CAAC,CACL,GACA,kBAAmB,KAA8B,CAC/C,MAAO,CAAC,CAAE,MAAAF,CAAM,IACd,IAAIC,EAAqB,CACvB,OAAQF,EACR,KAAM,oBACN,KAAM,CAACC,CAAK,EACZ,UAAW,MAAOE,GAChBA,EAAS,gBAAgB,EAAE,eAAe,SAAS,CACvD,CAAC,CACL,EACF,CACF,CAEA,SAASJ,GAAS,CAChB,MAAO,CACL,MAAO,KAA8B,CACnC,MAAO,CAAC,CAAE,MAAAE,CAAM,IACd,IAAIC,EAAqB,CACvB,OAAQ,SACR,KAAM,QACN,KAAM,CAACD,CAAK,EACZ,UAAW,MACTE,GAEAA,EAAS,gBAAgB,EAAE,WAAW,SAAS,CACnD,CAAC,CACL,EACF,CACF,CC/CA,IAAAC,EAAyB,0BCPzB,IAAAC,EAAqC,uCACrCC,EAAmC,0BACnCC,EAA8B,iCCKvB,IAAMC,EAAN,cAA6BC,CAAW,CACpC,KAEA,QAET,YAAY,CAAE,KAAAC,EAAM,QAAAC,EAAS,GAAGC,CAAM,EAAoC,CACxE,MAAM,CAAE,GAAGA,EAAO,UAAmB,CAAC,EAEtC,KAAK,KAAOF,EACZ,KAAK,QAAUC,CACjB,CACF,EDZO,SAASE,GAAU,CACxB,MAAO,CACL,SAAU,CAACC,EAAS,OAA0C,CAC5D,MAAO,CAAC,CAAE,QAAAC,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,CAAY,IAC5C,IAAIC,EAAe,CACjB,KAAM,IACJ,YAASF,CAAK,KAAI,wBAAqBA,CAAK,EAAIA,EAChDD,EACAI,EAA4BL,EAASG,CAAW,EAChDJ,CACF,EACA,KAAM,WACN,OAAQ,SACV,CAAC,CACL,GACA,wBAAyB,CACvBA,EAAS,OACkB,CAC3B,MAAO,CAAC,CAAE,QAAAC,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,EAAa,IAAAG,EAAK,SAAAC,CAAS,IAC3D,IAAIH,EAAe,CACjB,KAAM,CACJ,CACE,IAAC,YAASF,CAAK,KAAI,wBAAqBA,CAAK,EAAIA,EAAOD,CAAM,EAC9D,IACE,YAASM,CAAQ,KAAI,wBAAqBA,CAAQ,EAAIA,EACtDD,CACF,CACF,EACA,EACAD,EAA4BL,EAASG,CAAW,EAChDJ,CACF,EACA,KAAM,0BACN,OAAQ,SACV,CAAC,CACL,EACF,CACF,CAmCA,SAASM,EACPL,EACAG,EAC0B,CAO1B,IAAMK,EAAM,KADQL,EAAY,eAAe,EAAI,KAAO,UAC3B,eAC7B,iBAAcH,CAAO,EACrB,GACA,EACF,MAEA,MAAO,CACL,EACAG,EAAY,YACR,CAAC,YAAYA,EAAY,YAAY,SAAS,EAAE,IAAKK,CAAG,EACxD,CAACA,CAAG,CACV,CACF,CEpGO,SAASC,GAAkB,CAChC,MAAO,CACL,QAAAC,CACF,CACF,CHaO,SAASC,GAAiB,CAC/B,MAAO,CACL,IAAAC,EACA,UAAAC,CACF,CACF,CAEO,SAASD,GAAM,CACpB,MAAO,CACL,MAAAE,CACF,CACF,CAEO,SAASD,GAAY,CAC1B,MAAO,CACL,OAAAE,EACA,OAAAC,EACA,OAAAC,CACF,CACF,CAEA,SAASH,GAA8B,CACrC,MAAO,CACL,MAAO,CAAC,CAAE,QAAAI,EAAS,MAAAC,CAAM,IAAM,CAC7B,GAAI,CAACA,GAAS,IAAC,YAASA,CAAK,EAC3B,MAAM,IAAI,MAAM,6BAA6BA,GAAO,EAGtD,OAAO,IAAIC,EAAe,CACxB,QAASD,EACT,KAAM,CAACD,CAAO,EACd,KAAM,YACN,OAAQ,OACV,CAAC,CACH,CACF,CACF,CAEA,SAASH,GAAS,CAChB,MAAO,CACL,QAAS,KAA6B,CACpC,MAAO,CAAC,CAAE,QAAAG,EAAS,MAAAC,CAAM,IACvB,IAAIE,EAAqB,CACvB,OAAQ,SACR,KAAM,UACN,KAAM,CAACF,EAAOD,CAAO,EACrB,UAAW,MACTI,GACoBA,EAAS,gBAAgB,EAAE,QAAQ,SAAS,CACpE,CAAC,CACL,EACF,CACF,CAEA,SAASN,GAAS,CAChB,MAAO,CACL,QAAS,KAA6B,CACpC,MAAO,CAAC,CAAE,QAAAE,CAAQ,IAChB,IAAIG,EAAqB,CACvB,OAAQ,SACR,KAAM,UACN,KAAM,CAACH,CAAO,EACd,UAAW,MACTI,GACoB,CACpB,IAAMC,EAAUD,EAAS,KAEnBE,EAASD,EAAQ,YAAcA,EAAQ,OAE7C,OAAO,OAAOA,EAAQ,KAAK,IAAIC,CAAM,EAAE,SAAS,CAAC,CACnD,CACF,CAAC,CACL,GACA,mBAAoB,KAA6B,CAC/C,MAAO,CAAC,CAAE,QAAAN,EAAS,MAAAC,CAAM,IACvB,IAAIE,EAAqB,CACvB,OAAQ,SACR,KAAM,UACN,KAAM,CAACH,CAAO,EACd,UAAW,MAAOI,GAA8B,CAlG1D,IAAAG,EAmGY,GAAIH,EAAS,KAAK,QAChB,OAAO,GAGT,IAAMI,EAAMJ,EAAS,KAAK,OAAO,EAC7BK,EAUJ,GARI,MAAM,QAAQD,CAAG,IACnBC,EAAWD,GAGT,MAAM,SAASD,EAAAC,GAAA,YAAAA,EAAa,KAAb,YAAAD,EAAiB,OAAO,IACzCE,EAAYD,EAAY,GAAG,SAGzB,CAACC,EACH,MAAM,IAAI,MAAM,0CAA0C,EAG5D,IAAMJ,EAAUI,EAAS,KAAK,CAAC,CAACC,CAAO,IAAMA,IAAYT,CAAK,EAE9D,OAAKI,EAIE,OAAOA,EAAQ,CAAC,EAAE,QAAQ,EAHxB,EAIX,CACF,CAAC,CACL,EACF,CACF,CAEA,SAASN,GAAS,CAChB,MAAO,CACL,SAAU,KAA6B,CACrC,MAAO,CAAC,CAAE,QAAAC,EAAS,MAAAC,CAAM,IACvB,IAAIE,EAAqB,CACvB,OAAQ,SACR,KAAM,WACN,KAAM,CAACH,EAASC,CAAK,EACrB,UAAW,MAAO,CAChB,KAAAU,EACA,OAAAL,CACF,IACE,OAAOK,EAAK,IAAIL,CAAM,EAAE,SAAS,CAAC,CACtC,CAAC,CACL,EACF,CACF,CI1IO,IAAMM,EAAN,cAA8BC,CAAW,CAC9C,QAEA,YAAY,CAAE,QAAAC,EAAS,GAAGC,CAAM,EAAqC,CACnE,MAAM,CAAE,GAAGA,EAAO,gBAAyB,CAAC,EAE5C,KAAK,QAAUD,CACjB,CACF,ECPA,IAAME,EAAS,aAER,SAASC,GAAa,CAC3B,MAAO,CACL,YAAa,KAA+B,CAC1C,MAAO,CAAC,CAAE,QAAAC,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,CAAY,IAC5C,IAAIC,EAAgB,CAClB,OAAQN,EACR,KAAM,cACN,QAAS,IAAM,CACbI,EACAD,EACA,CACE,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWE,EAAY,WACzB,EACA,CACE,aAAc,CACZ,QAAS,MACT,IAAKH,CACP,CACF,CACF,CACF,CACF,EACA,gBACF,CACF,CAAC,CACL,GACA,YAAa,KAA+B,CAC1C,MAAO,CAAC,CAAE,QAAAA,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,EAAa,IAAAE,EAAK,SAAAC,CAAS,IAC3D,IAAIF,EAAgB,CAClB,OAAQN,EACR,KAAM,cACN,QAAS,IAAM,CACb,IAAMS,EAAmBN,EAASI,EAAM,GAAKJ,EAASI,EAAM,GAE5D,MAAO,CACL,CAACH,EAAOA,IAAUI,EAAWC,EAAmBN,CAAM,EACtD,CAACK,EAAUD,CAAG,EACd,CACE,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWF,EAAY,WACzB,EACA,CACE,aAAc,CACZ,QAAS,MACT,IAAKH,CACP,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CAAC,CACL,EACF,CACF,CCzEA,IAAAQ,EAA2B,2BCiBpB,IAAKC,OACVA,EAAA,GAAK,KACLA,EAAA,GAAK,KACLA,EAAA,GAAK,KAHKA,OAAA,IDdL,SAASC,EACdC,EACAC,EAAgB,EACJ,CACZ,GAAI,CAACD,EAAM,WAEX,GAAM,CAAE,KAAAE,CAAK,EAAIF,EAAK,KAAK,KAAKC,CAAK,EAC/BE,EAAWH,EAAK,KAAK,SAAS,WAAWE,EAAK,SAAS,CAAC,EACxDE,KAAM,cAAWD,GAAA,YAAAA,EAAU,WAAW,EAE5C,GAAI,CAACC,EAAI,IACP,WAGF,IAAMC,EAAW,MAAM,QAAQD,EAAI,GAAG,EAClCA,EAAI,IAAI,IAAKE,GAAMA,EAAE,IAAI,EACzB,CAACF,EAAI,IAAI,IAAI,EAEjB,GAAIC,EAAS,aAAsB,EACjC,WAGF,GAAIA,EAAS,aAAsB,EACjC,WAGF,GAAIA,EAAS,aAAsB,EACjC,WAGF,MAAM,IAAI,MAAM,wBAAwB,CAC1C,CErBO,SAASE,EAA4B,CAC1C,MAAAC,EACA,QAAAC,EACA,YAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,CACZ,EAA8B,CAE5B,IAAMC,EAAUC,EAA4BH,CAAI,EAEhD,MAAO,CACL,CACE,CAACE,CAAO,EAAG,CACT,QAAAD,EACA,SAAU,CACR,GAAI,CACF,UAAWF,EAAY,WACzB,CACF,CACF,CACF,EACA,CACE,CAACG,CAAO,EAAG,CACT,QAAS,EACT,SAAU,CACR,GAAI,CACF,aAAc,CACZ,QAAS,MACT,IAAKJ,CACP,CACF,CACF,CACF,CACF,EACA,CACE,CAACI,CAAO,EAAGL,CACb,EACA,EACA,WACF,CACF,CCjDA,IAAMO,EAAS,cAER,SAASC,GAAc,CAC5B,MAAO,CACL,6BAA8B,IAAM,CAClC,IAAMC,EAAO,+BAEb,MAAO,CACL,KAAM,KAA+B,CACnC,MAAQC,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,KAAME,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,MACZ,CACF,EACA,IAAK,CACH,SAAUF,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAQA,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,KAAME,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,eAAgB,CAClB,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUF,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAQA,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,KAAME,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,eAAgBF,EAAO,cACzB,EACA,CACE,aAAcA,EAAO,KACvB,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUA,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,EACF,CACF,EACA,6BAA8B,IAAM,CAClC,IAAMD,EAAO,+BAEb,MAAO,CACL,GAAI,KAA+B,CACjC,MAAQC,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,KAAME,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWF,EAAO,YAAY,WAChC,E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AO,CACL,KAAM,KAA+B,CACnC,MAAO,CAAC,CAAE,QAAAC,EAAS,OAAAC,EAAQ,YAAAC,CAAY,IACrC,IAAIC,EAAgB,CAClB,OAAQN,EACR,KAAME,EACN,QAAS,IAAM,CACb,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,MACZ,CACF,EACA,IAAK,CACH,SAAUE,CACZ,CACF,EACA,CACE,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWC,EAAY,WACzB,EACA,CACE,aAAc,CACZ,IAAKF,CACP,CACF,CACF,CACF,CACF,EACA,CACE,QAAS,IACT,UAAW,CACb,CACF,CACF,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAO,CAAC,CAAE,QAAAA,EAAS,OAAAC,EAAQ,YAAAC,EAAa,eAAAE,CAAe,IACrD,IAAID,EAAgB,CAClB,OAAQN,EACR,KAAME,EACN,QAAS,IAAM,CACb,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWG,EAAY,WACzB,EACA,CACE,eAAgBE,CAClB,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUH,GAAU,EACtB,CACF,EACA,CACE,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWC,EAAY,WACzB,EACA,CACE,aAAc,CACZ,IAAKF,CACP,CACF,CACF,CACF,CACF,EACA,CACE,QAAS,IACT,UAAW,CACb,CACF,CACF,CAAC,CACL,EACF,CACF,CACF,CACF,CC9FA,IAAMK,EAAS,YAER,SAASC,GAAY,CAC1B,MAAO,CACL,6BAA8B,CAACC,EAAmB,IAAM,CACtD,IAAMC,EAAO,+BAEb,MAAO,CACL,KAAM,KAA+B,CACnC,MAAQC,GACN,IAAIC,EAAgB,CAClB,OAAQL,EACR,KAAAG,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,QAAAF,EACA,KAAMI,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,MACZ,CACF,EACA,IAAK,CACH,SAAUF,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,EACF,CACF,CACF,CACF,CCpCO,SAASI,IAAmB,CACjC,MAAO,CACL,WAAAC,EACA,QAAAC,EACA,UAAAC,EACA,YAAAC,EACA,UAAAC,CACF,CACF,CCTO,IAAMC,EAAN,KAA0B,CACtB,IAEA,KAEA,iBAET,YAAY,CAAE,IAAAC,EAAK,KAAAC,CAAK,EAAyC,CAC/D,KAAK,IAAMD,EACX,KAAK,KAAOC,CACd,CACF,ECZO,SAASC,IAAa,CAC3B,MAAO,CACL,aAAAC,EACF,CACF,CAEA,SAASA,IAAe,CACtB,MAAO,CACL,wBAAyB,CAACC,EAAS,OAAqC,CACtE,MAAO,CAAC,CAAE,IAAAC,EAAK,MAAAC,CAAM,IACnB,IAAIC,EAAoB,CACtB,IAAAF,EACA,KAAM,SAA6B,CACjC,IAAMG,EAAQ,MAAMH,EAAI,MAAM,aAAa,YACzCC,CACF,EAEA,GAAIE,EAAK,OACP,MAAM,IAAI,MAAM,iCAAiCF,GAAO,EAG1D,IAAMG,EAAgBD,EAAK,OAAO,EAM5BE,GAJO,MAAML,EAAI,MAAM,aAAa,wBACxCI,CACF,GAE2B,gBAAgB,EAAE,SAAS,EAEtD,OAAQ,OAAOL,CAAM,EAAIM,EAAkB,OAAO,IAAM,EAAE,CAC5D,CACF,CAAC,CACL,EACF,CACF","names":["src_exports","__export","AssetMinBuilder","BalanceBuilder","BaseConfig","CallType","ContractBuilder","ContractConfig","ExtrinsicBuilder","ExtrinsicConfig","FeeBuilder","SubstrateQueryConfig","XcmVersion","evm","substrate","__toCommonJS","import_api_augment","CallType","BaseConfig","module","func","type","SubstrateQueryConfig","BaseConfig","args","transform","type","other","AssetMinBuilder","assetRegistry","assets","pallet","asset","SubstrateQueryConfig","response","import_util","import_xcm_utils","import_util","import_util_crypto","ContractConfig","BaseConfig","args","address","other","Xtokens","weight","address","amount","asset","destination","ContractConfig","getDestinationMultilocation","fee","feeAsset","acc","ContractBuilder","Xtokens","BalanceBuilder","evm","substrate","erc20","assets","system","tokens","address","asset","ContractConfig","SubstrateQueryConfig","response","balance","frozen","_a","res","balances","assetId","free","ExtrinsicConfig","BaseConfig","getArgs","other","pallet","eqBalances","address","amount","asset","destination","ExtrinsicConfig","fee","feeAsset","amountWithoutFee","import_types","XcmVersion","getExtrinsicArgumentVersion","func","index","type","instance","raw","versions","x","getPolkadotXcmExtrinsicArgs","asset","address","destination","func","parents","version","getExtrinsicArgumentVersion","pallet","polkadotXcm","func","params","ExtrinsicConfig","extrinsicFunction","getPolkadotXcmExtrinsicArgs","getWeight","weight","func","_a","type","pallet","xTokens","address","amount","asset","destination","source","ExtrinsicConfig","func","version","getExtrinsicArgumentVersion","getWeight","originParachainId","funcName","fee","feeAsset","pallet","xTransfer","method","address","amount","destination","ExtrinsicConfig","palletInstance","pallet","xcmPallet","parents","func","params","ExtrinsicConfig","extrinsicFunction","getPolkadotXcmExtrinsicArgs","ExtrinsicBuilder","eqBalances","xTokens","xTransfer","polkadotXcm","xcmPallet","SubstrateCallConfig","api","call","FeeBuilder","assetManager","weight","api","asset","SubstrateCallConfig","type","unwrappedType","unitsPerSecond"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/builder.interfaces.ts","../src/types/BaseConfig.ts","../src/types/substrate/SubstrateQueryConfig.ts","../src/asset-min/AssetMinBuilder.ts","../src/balance/BalanceBuilder.ts","../src/contract/contracts/Xtokens/Xtokens.ts","../src/contract/ContractConfig.ts","../src/contract/ContractBuilder.ts","../src/extrinsic/ExtrinsicBuilder.utils.ts","../src/extrinsic/ExtrinsicBuilder.interfaces.ts","../src/extrinsic/ExtrinsicConfig.ts","../src/extrinsic/pallets/eqBalances/eqBalances.ts","../src/extrinsic/pallets/polkadotXcm/polkadotXcm.util.ts","../src/extrinsic/pallets/polkadotXcm/polkadotXcm.ts","../src/extrinsic/pallets/xTokens/xTokens.utils.ts","../src/extrinsic/pallets/xTokens/xTokens.ts","../src/extrinsic/pallets/xTransfer/xTransfer.ts","../src/extrinsic/pallets/xcmPallet/xcmPallet.ts","../src/extrinsic/ExtrinsicBuilder.ts","../src/types/substrate/SubstrateCallConfig.ts","../src/fee/FeeBuilder.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 trasferAssets: () => {\n const func = 'transferAssets';\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: 1,\n interior: 'Here',\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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,IAAK,CACH,SAAUJ,GAAU,EACtB,CACF,EACA,CACE,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWC,EAAY,WACzB,EACAE,EAAoBJ,CAAO,CAC7B,CACF,CACF,EACA,CACE,QAAS,IACT,UAAW,CACb,CACF,CACF,CAAC,CACL,EACF,CACF,CACF,CACF,CCrFA,IAAMM,EAAS,YAER,SAASC,GAAY,CAC1B,MAAO,CACL,6BAA8B,CAACC,EAAmB,IAAM,CACtD,IAAMC,EAAO,+BAEb,MAAO,CACL,KAAM,KAA+B,CACnC,MAAQC,GACN,IAAIC,EAAgB,CAClB,OAAQL,EACR,KAAAG,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,QAAAF,EACA,KAAMI,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,MACZ,CACF,EACA,IAAK,CACH,SAAUF,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,EACF,CACF,EACA,+BAAgC,IAAM,CACpC,IAAMD,EAAO,iCAEb,MAAO,CACL,KAAM,KAA+B,CACnC,MAAQC,GACN,IAAIC,EAAgB,CAClB,OAAQL,EACR,KAAAG,EACA,QAAS,IAAM,CACb,IAAMK,OACN,MAAO,CACL,CACE,CAACA,CAAO,EAAG,CACT,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWJ,EAAO,YAAY,WAChC,CACF,CACF,CACF,CACF,EACA,CACE,CAACI,CAAO,EAAG,CACT,CACE,GAAI,CACF,QAAS,EACT,SAAU,MACZ,EACA,IAAK,CACH,SAAUJ,EAAO,MACnB,CACF,CACF,CACF,EACA,eACA,CACE,CAACI,CAAO,EAAG,CACT,QAAS,EACT,SAAU,MACZ,CACF,EACA,eACA,CACE,CAACA,CAAO,EAAG,CACT,CACE,aAAc,CACZ,OAAQ,CACN,KAAM,CAAE,WAAY,CAAE,CACxB,EACA,YAAa,CACX,QAAS,EACT,SAAU,CACR,GAAI,CAACC,EAAoBL,EAAO,OAAO,CAAC,CAC1C,CACF,CACF,CACF,CACF,CACF,EACA,WACF,CACF,C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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"]}
@@ -0,0 +1,256 @@
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
+ import { SubmittableExtrinsicFunction } from '@polkadot/api/types';
5
+ import { ApiPromise } from '@polkadot/api';
6
+
7
+ declare enum CallType {
8
+ Evm = "Evm",
9
+ Substrate = "Substrate"
10
+ }
11
+
12
+ interface BaseConfigConstructorParams {
13
+ module: string;
14
+ func: string;
15
+ type: CallType;
16
+ }
17
+ declare class BaseConfig {
18
+ readonly module: string;
19
+ readonly func: string;
20
+ readonly type: CallType;
21
+ constructor({ module, func, type }: BaseConfigConstructorParams);
22
+ }
23
+
24
+ interface QueryConfigConstructorParams extends SetOptional<BaseConfigConstructorParams, 'type'> {
25
+ args?: any[];
26
+ transform: (data: any) => Promise<bigint>;
27
+ }
28
+ declare class SubstrateQueryConfig extends BaseConfig {
29
+ readonly args: any[];
30
+ readonly transform: (data: any) => Promise<bigint>;
31
+ constructor({ args, transform, type, ...other }: QueryConfigConstructorParams);
32
+ }
33
+
34
+ interface AssetMinConfigBuilder {
35
+ build: (params: AssetMinConfigBuilderPrams) => SubstrateQueryConfig;
36
+ }
37
+ interface AssetMinConfigBuilderPrams {
38
+ asset: ChainAssetId;
39
+ }
40
+
41
+ declare function AssetMinBuilder(): {
42
+ assetRegistry: typeof assetRegistry;
43
+ assets: typeof assets$1;
44
+ };
45
+ declare function assetRegistry(): {
46
+ assetMetadatas: () => AssetMinConfigBuilder;
47
+ currencyMetadatas: () => AssetMinConfigBuilder;
48
+ };
49
+ declare function assets$1(): {
50
+ asset: () => AssetMinConfigBuilder;
51
+ };
52
+
53
+ interface ContractConfigConstructorParams extends Omit<BaseConfigConstructorParams, 'type'> {
54
+ args: any[];
55
+ address?: string;
56
+ }
57
+ declare class ContractConfig extends BaseConfig {
58
+ readonly args: any[];
59
+ readonly address?: string;
60
+ constructor({ args, address, ...other }: ContractConfigConstructorParams);
61
+ }
62
+
63
+ interface ContractConfigBuilder {
64
+ build: (params: ContractConfigBuilderPrams) => ContractConfig;
65
+ }
66
+ interface ContractConfigBuilderPrams {
67
+ address: string;
68
+ amount: bigint;
69
+ asset: ChainAssetId;
70
+ destination: AnyChain;
71
+ fee: bigint;
72
+ feeAsset: ChainAssetId;
73
+ }
74
+
75
+ declare function Xtokens(): {
76
+ transfer: (weight?: bigint) => ContractConfigBuilder;
77
+ transferMultiCurrencies: (weight?: bigint) => ContractConfigBuilder;
78
+ transferWithEvmTo32: (weight?: bigint) => ContractConfigBuilder;
79
+ };
80
+
81
+ declare function ContractBuilder(): {
82
+ Xtokens: typeof Xtokens;
83
+ };
84
+
85
+ interface BalanceConfigBuilder {
86
+ build: (params: BalanceConfigBuilderPrams) => SubstrateQueryConfig | ContractConfig;
87
+ }
88
+ interface BalanceConfigBuilderPrams {
89
+ address: string;
90
+ asset: ChainAssetId;
91
+ }
92
+ interface PalletBalancesAccountDataOld extends Struct {
93
+ readonly free: u128;
94
+ readonly reserved: u128;
95
+ readonly miscFrozen: u128;
96
+ readonly feeFrozen: u128;
97
+ }
98
+ interface TokensPalletAccountData {
99
+ free: u128;
100
+ reserved: u128;
101
+ frozen: u128;
102
+ }
103
+ type EquilibriumSystemBalanceData = Array<[
104
+ number,
105
+ {
106
+ positive: number;
107
+ }
108
+ ]>;
109
+
110
+ declare function BalanceBuilder(): {
111
+ evm: typeof evm;
112
+ substrate: typeof substrate;
113
+ };
114
+ declare function evm(): {
115
+ erc20: typeof erc20;
116
+ };
117
+ declare function substrate(): {
118
+ assets: typeof assets;
119
+ system: typeof system;
120
+ tokens: typeof tokens;
121
+ };
122
+ declare function erc20(): BalanceConfigBuilder;
123
+ declare function assets(): {
124
+ account: () => BalanceConfigBuilder;
125
+ };
126
+ declare function system(): {
127
+ account: () => BalanceConfigBuilder;
128
+ accountEquilibrium: () => BalanceConfigBuilder;
129
+ accountEvmTo32: () => BalanceConfigBuilder;
130
+ };
131
+ declare function tokens(): {
132
+ accounts: () => BalanceConfigBuilder;
133
+ };
134
+ declare function calculateSystemAccountBalance(response: FrameSystemAccountInfo): Promise<bigint>;
135
+
136
+ interface ExtrinsicConfigConstructorParams extends Omit<BaseConfigConstructorParams, 'type'> {
137
+ getArgs: (func?: SubmittableExtrinsicFunction<'promise'>) => any[];
138
+ }
139
+ declare class ExtrinsicConfig extends BaseConfig {
140
+ getArgs: (func?: SubmittableExtrinsicFunction<'promise'>) => any[];
141
+ constructor({ getArgs, ...other }: ExtrinsicConfigConstructorParams);
142
+ }
143
+
144
+ interface ExtrinsicConfigBuilder {
145
+ build: (params: ExtrinsicConfigBuilderPrams) => ExtrinsicConfig;
146
+ }
147
+ interface ExtrinsicConfigBuilderPrams {
148
+ address: string;
149
+ amount: bigint;
150
+ asset: ChainAssetId;
151
+ destination: AnyChain;
152
+ fee: bigint;
153
+ feeAsset: ChainAssetId;
154
+ palletInstance?: number;
155
+ source: AnyChain;
156
+ }
157
+ declare enum XcmVersion {
158
+ v1 = "V1",
159
+ v2 = "V2",
160
+ v3 = "V3",
161
+ v4 = "V4"
162
+ }
163
+ type Parents = 0 | 1;
164
+
165
+ declare function eqBalances(): {
166
+ xcmTransfer: () => ExtrinsicConfigBuilder;
167
+ transferXcm: () => ExtrinsicConfigBuilder;
168
+ };
169
+
170
+ declare function polkadotXcm(): {
171
+ limitedReserveTransferAssets: () => {
172
+ here: () => ExtrinsicConfigBuilder;
173
+ X1: () => ExtrinsicConfigBuilder;
174
+ X2: () => ExtrinsicConfigBuilder;
175
+ };
176
+ limitedReserveWithdrawAssets: () => {
177
+ X2: () => ExtrinsicConfigBuilder;
178
+ };
179
+ trasferAssets: () => {
180
+ here: () => ExtrinsicConfigBuilder;
181
+ };
182
+ };
183
+
184
+ declare function xTokens(): {
185
+ transfer: () => ExtrinsicConfigBuilder;
186
+ transferMultiAsset: (originParachainId: number) => {
187
+ here: () => ExtrinsicConfigBuilder;
188
+ X1: () => ExtrinsicConfigBuilder;
189
+ X2: () => ExtrinsicConfigBuilder;
190
+ };
191
+ transferMultiCurrencies: () => ExtrinsicConfigBuilder;
192
+ };
193
+
194
+ declare function xTransfer(): {
195
+ transfer: () => {
196
+ here: () => ExtrinsicConfigBuilder;
197
+ X2: () => ExtrinsicConfigBuilder;
198
+ };
199
+ };
200
+
201
+ declare function xcmPallet(): {
202
+ limitedReserveTransferAssets: (parents?: Parents) => {
203
+ here: () => ExtrinsicConfigBuilder;
204
+ };
205
+ transferAssetsUsingTypeAndThen: () => {
206
+ here: () => ExtrinsicConfigBuilder;
207
+ };
208
+ };
209
+
210
+ declare function ExtrinsicBuilder(): {
211
+ eqBalances: typeof eqBalances;
212
+ xTokens: typeof xTokens;
213
+ xTransfer: typeof xTransfer;
214
+ polkadotXcm: typeof polkadotXcm;
215
+ xcmPallet: typeof xcmPallet;
216
+ };
217
+
218
+ interface SubstrateCallConfigConstructorParams {
219
+ api: ApiPromise;
220
+ call: () => Promise<bigint>;
221
+ }
222
+ declare class SubstrateCallConfig {
223
+ readonly api: ApiPromise;
224
+ readonly call: () => Promise<any>;
225
+ readonly type = CallType.Substrate;
226
+ constructor({ api, call }: SubstrateCallConfigConstructorParams);
227
+ }
228
+
229
+ interface FeeConfigBuilder {
230
+ build: (params: FeeConfigBuilderPrams) => SubstrateCallConfig;
231
+ }
232
+ interface FeeConfigBuilderPrams {
233
+ address: string;
234
+ api: ApiPromise;
235
+ feeAsset: ChainAssetId;
236
+ transferAsset: ChainAssetId;
237
+ chain: AnyParachain;
238
+ }
239
+ interface XcmPaymentFeeProps {
240
+ isAssetReserveChain: boolean;
241
+ shouldTransferAssetPrecedeAsset?: boolean;
242
+ }
243
+ interface MoonbeamRuntimeXcmConfigAssetType extends Enum {
244
+ readonly isXcm: boolean;
245
+ readonly asXcm: StagingXcmV3MultiLocation;
246
+ readonly type: 'Xcm';
247
+ }
248
+
249
+ declare function FeeBuilder(): {
250
+ xcmPaymentApi: typeof xcmPaymentApi;
251
+ };
252
+ declare function xcmPaymentApi(): {
253
+ xcmPaymentFee: ({ isAssetReserveChain, shouldTransferAssetPrecedeAsset, }: XcmPaymentFeeProps) => FeeConfigBuilder;
254
+ };
255
+
256
+ 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
@@ -1,6 +1,14 @@
1
- import { ChainAssetId, AnyChain } from '@moonbeam-network/xcm-types';
2
- import { SetOptional } from 'type-fest';
3
- import { Struct, u128 } from '@polkadot/types';
1
+ import {
2
+ SetOptional,
3
+ ChainAssetId,
4
+ AnyChain,
5
+ AnyParachain,
6
+ } from '@moonbeam-network/xcm-types';
7
+ import {
8
+ FrameSystemAccountInfo,
9
+ StagingXcmV3MultiLocation,
10
+ } from '@polkadot/types/lookup';
11
+ import { Struct, u128, Enum } from '@polkadot/types';
4
12
  import { SubmittableExtrinsicFunction } from '@polkadot/api/types';
5
13
  import { ApiPromise } from '@polkadot/api';
6
14
 
@@ -80,8 +88,9 @@ interface ContractConfigBuilderPrams {
80
88
  }
81
89
 
82
90
  declare function Xtokens(): {
83
- transfer: (weight?: number) => ContractConfigBuilder;
84
- transferMultiCurrencies: (weight?: number) => ContractConfigBuilder;
91
+ transfer: (weight?: bigint) => ContractConfigBuilder;
92
+ transferMultiCurrencies: (weight?: bigint) => ContractConfigBuilder;
93
+ transferWithEvmTo32: (weight?: bigint) => ContractConfigBuilder;
85
94
  };
86
95
 
87
96
  declare function ContractBuilder(): {
@@ -136,10 +145,14 @@ declare function assets(): {
136
145
  declare function system(): {
137
146
  account: () => BalanceConfigBuilder;
138
147
  accountEquilibrium: () => BalanceConfigBuilder;
148
+ accountEvmTo32: () => BalanceConfigBuilder;
139
149
  };
140
150
  declare function tokens(): {
141
151
  accounts: () => BalanceConfigBuilder;
142
152
  };
153
+ declare function calculateSystemAccountBalance(
154
+ response: FrameSystemAccountInfo,
155
+ ): Promise<bigint>;
143
156
 
144
157
  interface ExtrinsicConfigConstructorParams
145
158
  extends Omit<BaseConfigConstructorParams, 'type'> {
@@ -167,6 +180,7 @@ declare enum XcmVersion {
167
180
  v1 = 'V1',
168
181
  v2 = 'V2',
169
182
  v3 = 'V3',
183
+ v4 = 'V4',
170
184
  }
171
185
  type Parents = 0 | 1;
172
186
 
@@ -184,11 +198,15 @@ declare function polkadotXcm(): {
184
198
  limitedReserveWithdrawAssets: () => {
185
199
  X2: () => ExtrinsicConfigBuilder;
186
200
  };
201
+ trasferAssets: () => {
202
+ here: () => ExtrinsicConfigBuilder;
203
+ };
187
204
  };
188
205
 
189
206
  declare function xTokens(): {
190
207
  transfer: () => ExtrinsicConfigBuilder;
191
208
  transferMultiAsset: (originParachainId: number) => {
209
+ here: () => ExtrinsicConfigBuilder;
192
210
  X1: () => ExtrinsicConfigBuilder;
193
211
  X2: () => ExtrinsicConfigBuilder;
194
212
  };
@@ -206,6 +224,9 @@ declare function xcmPallet(): {
206
224
  limitedReserveTransferAssets: (parents?: Parents) => {
207
225
  here: () => ExtrinsicConfigBuilder;
208
226
  };
227
+ transferAssetsUsingTypeAndThen: () => {
228
+ here: () => ExtrinsicConfigBuilder;
229
+ };
209
230
  };
210
231
 
211
232
  declare function ExtrinsicBuilder(): {
@@ -231,47 +252,65 @@ interface FeeConfigBuilder {
231
252
  build: (params: FeeConfigBuilderPrams) => SubstrateCallConfig;
232
253
  }
233
254
  interface FeeConfigBuilderPrams {
234
- asset: ChainAssetId;
255
+ address: string;
235
256
  api: ApiPromise;
257
+ feeAsset: ChainAssetId;
258
+ transferAsset: ChainAssetId;
259
+ chain: AnyParachain;
260
+ }
261
+ interface XcmPaymentFeeProps {
262
+ isAssetReserveChain: boolean;
263
+ shouldTransferAssetPrecedeAsset?: boolean;
264
+ }
265
+ interface MoonbeamRuntimeXcmConfigAssetType extends Enum {
266
+ readonly isXcm: boolean;
267
+ readonly asXcm: StagingXcmV3MultiLocation;
268
+ readonly type: 'Xcm';
236
269
  }
237
270
 
238
271
  declare function FeeBuilder(): {
239
- assetManager: typeof assetManager;
272
+ xcmPaymentApi: typeof xcmPaymentApi;
240
273
  };
241
- declare function assetManager(): {
242
- assetTypeUnitsPerSecond: (weight?: number) => FeeConfigBuilder;
274
+ declare function xcmPaymentApi(): {
275
+ xcmPaymentFee: ({
276
+ isAssetReserveChain,
277
+ shouldTransferAssetPrecedeAsset,
278
+ }: XcmPaymentFeeProps) => FeeConfigBuilder;
243
279
  };
244
280
 
245
281
  export {
246
282
  AssetMinBuilder,
247
- AssetMinConfigBuilder,
248
- AssetMinConfigBuilderPrams,
283
+ type AssetMinConfigBuilder,
284
+ type AssetMinConfigBuilderPrams,
249
285
  BalanceBuilder,
250
- BalanceConfigBuilder,
251
- BalanceConfigBuilderPrams,
286
+ type BalanceConfigBuilder,
287
+ type BalanceConfigBuilderPrams,
252
288
  BaseConfig,
253
- BaseConfigConstructorParams,
289
+ type BaseConfigConstructorParams,
254
290
  CallType,
255
291
  ContractBuilder,
256
292
  ContractConfig,
257
- ContractConfigBuilder,
258
- ContractConfigBuilderPrams,
259
- ContractConfigConstructorParams,
260
- EquilibriumSystemBalanceData,
293
+ type ContractConfigBuilder,
294
+ type ContractConfigBuilderPrams,
295
+ type ContractConfigConstructorParams,
296
+ type EquilibriumSystemBalanceData,
261
297
  ExtrinsicBuilder,
262
298
  ExtrinsicConfig,
263
- ExtrinsicConfigBuilder,
264
- ExtrinsicConfigBuilderPrams,
265
- ExtrinsicConfigConstructorParams,
299
+ type ExtrinsicConfigBuilder,
300
+ type ExtrinsicConfigBuilderPrams,
301
+ type ExtrinsicConfigConstructorParams,
266
302
  FeeBuilder,
267
- FeeConfigBuilder,
268
- FeeConfigBuilderPrams,
269
- PalletBalancesAccountDataOld,
270
- Parents,
271
- QueryConfigConstructorParams,
303
+ type FeeConfigBuilder,
304
+ type FeeConfigBuilderPrams,
305
+ type MoonbeamRuntimeXcmConfigAssetType,
306
+ type PalletBalancesAccountDataOld,
307
+ type Parents,
308
+ type QueryConfigConstructorParams,
272
309
  SubstrateQueryConfig,
273
- TokensPalletAccountData,
310
+ type TokensPalletAccountData,
311
+ type XcmPaymentFeeProps,
274
312
  XcmVersion,
313
+ calculateSystemAccountBalance,
275
314
  evm,
276
315
  substrate,
277
316
  };
package/build/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import"@polkadot/api-augment";var p=(t=>(t.Evm="Evm",t.Substrate="Substrate",t))(p||{});var u=class{module;func;type;constructor({module:r,func:t,type:n}){this.module=r,this.func=t,this.type=n}};var c=class extends u{args;transform;constructor({args:r=[],transform:t,type:n="Substrate",...i}){super({...i,type:n}),this.args=r,this.transform=t}};function Z(){return{assetRegistry:F,assets:O}}function F(){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 O(){return{asset:()=>({build:({asset:e})=>new c({module:"assets",func:"asset",args:[e],transform:async r=>r.unwrapOrDefault().minBalance.toBigInt()})})}}import{isString as W}from"@polkadot/util";import{formatAssetIdToERC20 as C}from"@moonbeam-network/xcm-utils";import{isString as b,u8aToHex as M}from"@polkadot/util";import{decodeAddress as D}from"@polkadot/util-crypto";var m=class extends u{args;address;constructor({args:r,address:t,...n}){super({...n,type:"Evm"}),this.args=r,this.address=t}};function E(){return{transfer:(e=4e9)=>({build:({address:r,amount:t,asset:n,destination:i})=>new m({args:[b(n)?C(n):n,t,h(r,i),e],func:"transfer",module:"Xtokens"})}),transferMultiCurrencies:(e=4e9)=>({build:({address:r,amount:t,asset:n,destination:i,fee:o,feeAsset:s})=>new m({args:[[[b(n)?C(n):n,t],[b(s)?C(s):s,o]],1,h(r,i),e],func:"transferMultiCurrencies",module:"Xtokens"})})}}function h(e,r){let n=`0x${r.isEvmParachain()?"03":"01"}${M(D(e),-1,!1)}00`;return[1,r.parachainId?[`0x0000000${r.parachainId.toString(16)}`,n]:[n]]}function xr(){return{Xtokens:E}}function wr(){return{evm:_,substrate:K}}function _(){return{erc20:R}}function K(){return{assets:q,system:V,tokens:U}}function R(){return{build:({address:e,asset:r})=>{if(!r||!W(r))throw new Error(`Invalid contract address: ${r}`);return new m({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 V(){return{account:()=>({build:({address:e})=>new c({module:"system",func:"account",args:[e],transform:async r=>{let t=r.data,n=t.miscFrozen??t.frozen;return BigInt(t.free.sub(n).toString())}})}),accountEquilibrium:()=>({build:({address:e,asset:r})=>new c({module:"system",func:"account",args:[e],transform:async t=>{var s;if(t.data.isEmpty)return 0n;let n=t.data.toJSON(),i;if(Array.isArray(n)&&(i=n),Array.isArray((s=n==null?void 0:n.v0)==null?void 0:s.balance)&&(i=n.v0.balance),!i)throw new Error("Can't get balance from Equilibrium chain");let o=i.find(([d])=>d===r);return o?BigInt(o[1].positive):0n}})})}}function U(){return{accounts:()=>({build:({address:e,asset:r})=>new c({module:"tokens",func:"accounts",args:[e,r],transform:async({free:t,frozen:n})=>BigInt(t.sub(n).toString())})})}}var a=class extends u{getArgs;constructor({getArgs:r,...t}){super({...t,type:"Substrate"}),this.getArgs=r}};var w="eqBalances";function T(){return{xcmTransfer:()=>({build:({address:e,amount:r,asset:t,destination:n})=>new a({module:w,func:"xcmTransfer",getArgs:()=>[t,r,{parents:1,interior:{X2:[{Parachain:n.parachainId},{AccountKey20:{network:"Any",key:e}}]}},"ThisAccWillPay"]})}),transferXcm:()=>({build:({address:e,amount:r,asset:t,destination:n,fee:i,feeAsset:o})=>new a({module:w,func:"transferXcm",getArgs:()=>{let s=r-i>0n?r-i:0n;return[[t,t===o?s:r],[o,i],{parents:1,interior:{X2:[{Parachain:n.parachainId},{AccountKey20:{network:"Any",key:e}}]}}]}})})}}import{getTypeDef as z}from"@polkadot/types";var A=(n=>(n.v1="V1",n.v2="V2",n.v3="V3",n))(A||{});function f(e,r=0){if(!e)return"V1";let{type:t}=e.meta.args[r],n=e.meta.registry.createType(t.toString()),i=z(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 l({asset:e,address:r,destination:t,func:n,parents:i=1}){let o=f(n);return[{[o]:{parents:i,interior:{X1:{Parachain:t.parachainId}}}},{[o]:{parents:0,interior:{X1:{AccountKey20:{network:"Any",key:r}}}}},{[o]:e},0,"Unlimited"]}var g="polkadotXcm";function X(){return{limitedReserveTransferAssets:()=>{let e="limitedReserveTransferAssets";return{here:()=>({build:r=>new a({module:g,func:e,getArgs:t=>l({...r,func:t,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:r.amount}}]})})}),X1:()=>({build:r=>new a({module:g,func:e,getArgs:t=>l({...r,func:t,asset:[{id:{Concrete:{parents:0,interior:{X1:{PalletInstance:5}}}},fun:{Fungible:r.amount}}]})})}),X2:()=>({build:r=>new a({module:g,func:e,getArgs:t=>l({...r,func:t,asset:[{id:{Concrete:{parents:0,interior:{X2:[{PalletInstance:r.palletInstance},{GeneralIndex:r.asset}]}}},fun:{Fungible:r.amount}}]})})})}},limitedReserveWithdrawAssets:()=>{let e="limitedReserveWithdrawAssets";return{X2:()=>({build:r=>new a({module:g,func:e,getArgs:t=>l({...r,func:t,asset:[{id:{Concrete:{parents:1,interior:{X2:[{Parachain:r.destination.parachainId},{PalletInstance:r.palletInstance}]}}},fun:{Fungible:r.amount}}]})})})}}}}function P(e,r){var n;let t=(n=r==null?void 0:r.meta.args.at(-1))==null?void 0:n.type;return t?t.eq("XcmV2WeightLimit")?{Limited:e}:t.eq("XcmV3WeightLimit")?"Unlimited":e:e}var x="xTokens";function I(){return{transfer:()=>({build:({address:e,amount:r,asset:t,destination:n,source:i})=>new a({module:x,func:"transfer",getArgs:o=>{let s=f(o,2);return[t,r,{[s]:{parents:1,interior:{X2:[{Parachain:n.parachainId},{AccountKey20:{network:"Any",key:e}}]}}},P(i.weight,o)]}})}),transferMultiAsset:e=>{let r="transferMultiasset";return{X1:()=>({build:({address:t,amount:n,destination:i})=>new a({module:x,func:r,getArgs:o=>{let s=f(o,1);return[{[s]:{id:{Concrete:{parents:1,interior:{X1:{Parachain:e}}}},fun:{Fungible:n}}},{[s]:{parents:1,interior:{X2:[{Parachain:i.parachainId},{AccountKey20:{network:"Any",key:t}}]}}},"Unlimited"]}})}),X2:()=>({build:({address:t,amount:n,asset:i,destination:o,source:s})=>new a({module:x,func:r,getArgs:d=>{let B=f(d,1);return[{[B]:{id:{Concrete:{parents:1,interior:{X2:[{Parachain:e},{GeneralKey:i}]}}},fun:{Fungible:n}}},{[B]:{parents:1,interior:{X2:[{Parachain:o.parachainId},{AccountKey20:{network:"Any",key:t}}]}}},P(s.weight,d)]}})})}},transferMultiCurrencies:()=>({build:({address:e,amount:r,asset:t,destination:n,fee:i,feeAsset:o})=>new a({module:x,func:"transferMulticurrencies",getArgs:()=>[[[t,r],[o,i]],1,{["V3"]:{parents:1,interior:{X2:[{Parachain:n.parachainId},{AccountKey20:{key:e}}]}}},"Unlimited"]})})}}var k="xTransfer";function S(){return{transfer:()=>{let e="transfer";return{here:()=>({build:({address:r,amount:t,destination:n})=>new a({module:k,func:e,getArgs:()=>[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:t}},{parents:1,interior:{X2:[{Parachain:n.parachainId},{AccountKey20:{key:r}}]}},{refTime:5e9,proofSize:0}]})}),X2:()=>({build:({address:r,amount:t,destination:n,palletInstance:i})=>new a({module:k,func:e,getArgs:()=>[{id:{Concrete:{parents:1,interior:{X2:[{Parachain:n.parachainId},{PalletInstance:i}]}}},fun:{Fungible:t||1n}},{parents:1,interior:{X2:[{Parachain:n.parachainId},{AccountKey20:{key:r}}]}},{refTime:5e9,proofSize:0}]})})}}}}var L="xcmPallet";function v(){return{limitedReserveTransferAssets:(e=1)=>{let r="limitedReserveTransferAssets";return{here:()=>({build:t=>new a({module:L,func:r,getArgs:n=>l({...t,parents:e,func:n,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:t.amount}}]})})})}}}}function At(){return{eqBalances:T,xTokens:I,xTransfer:S,polkadotXcm:X,xcmPallet:v}}var y=class{api;call;type="Substrate";constructor({api:r,call:t}){this.api=r,this.call=t}};function kt(){return{assetManager:$}}function $(){return{assetTypeUnitsPerSecond:(e=1e9)=>({build:({api:r,asset:t})=>new y({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{Z as AssetMinBuilder,wr as BalanceBuilder,u as BaseConfig,p as CallType,xr as ContractBuilder,m as ContractConfig,At as ExtrinsicBuilder,a as ExtrinsicConfig,kt as FeeBuilder,c as SubstrateQueryConfig,A as XcmVersion,_ as evm,K 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 P}from"@moonbeam-network/xcm-utils";import{isString as E,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:[E(n)?P(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:[[[E(n)?P(n):n,e],[E(s)?P(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:[E(n)?P(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 gt}from"@polkadot/util-crypto";var y=(i=>(i.v1="V1",i.v2="V2",i.v3="V3",i.v4="V4",i))(y||{});function g(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(gt(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 d({asset:r,address:t,destination:e,func:n,parents:i=1,feeIndex:o=0}){let s=g(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 b="polkadotXcm";function V(){return{limitedReserveTransferAssets:()=>{let r="limitedReserveTransferAssets";return{here:()=>({build:t=>new a({module:b,func:r,getArgs:e=>d({...t,func:e,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:t.amount}}]})})}),X1:()=>({build:t=>new a({module:b,func:r,getArgs:e=>d({...t,func:e,asset:[{id:{Concrete:{parents:0,interior:{X1:{PalletInstance:t.palletInstance}}}},fun:{Fungible:t.amount}}]})})}),X2:()=>({build:t=>new a({module:b,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 d({...t,func:e,asset:i,feeIndex:n&&!o?1:0})}})})}},limitedReserveWithdrawAssets:()=>{let r="limitedReserveWithdrawAssets";return{X2:()=>({build:t=>new a({module:b,func:r,getArgs:e=>d({...t,func:e,asset:[{id:{Concrete:{parents:1,interior:{X2:[{Parachain:t.destination.parachainId},{PalletInstance:t.palletInstance}]}}},fun:{Fungible:t.amount}}]})})})}},trasferAssets:()=>{let r="transferAssets";return{here:()=>({build:t=>new a({module:b,func:r,getArgs:e=>d({...t,func:e,asset:[{id:{Concrete:{parents:1,interior:"Here"}},fun:{Fungible:t.amount}}]})})})}}}}function p(){return"Unlimited"}function A(r,t,e){return{[r]:{parents:1,interior:{X2:[{Parachain:e.parachainId},u(t)]}}}}var h="xTokens";function L(){return{transfer:()=>({build:({address:r,amount:t,asset:e,destination:n})=>new a({module:h,func:"transfer",getArgs:i=>{let o=g(i,2);return[e,t,A(o,r,n),p()]}})}),transferMultiAsset:r=>{let t="transferMultiasset";return{here:()=>({build:({address:e,amount:n,destination:i})=>new a({module:h,func:t,getArgs:o=>{let s=g(o,1);return[{[s]:{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:n}}},A(s,e,i),p()]}})}),X1:()=>({build:({address:e,amount:n,destination:i})=>new a({module:h,func:t,getArgs:o=>{let s=g(o,1);return[{[s]:{id:{Concrete:{parents:1,interior:{X1:{Parachain:r}}}},fun:{Fungible:n}}},A(s,e,i),p()]}})}),X2:()=>({build:({address:e,amount:n,asset:i,destination:o})=>new a({module:h,func:t,getArgs:s=>{let m=g(s,1);return[{[m]:{id:{Concrete:{parents:1,interior:{X2:[{Parachain:r},{GeneralKey:i}]}}},fun:{Fungible:n}}},A(m,e,o),p()]}})})}},transferMultiCurrencies:()=>({build:({address:r,amount:t,asset:e,destination:n,fee:i,feeAsset:o})=>new a({module:h,func:"transferMulticurrencies",getArgs:()=>[[[e,t],[o,i]],1,A("V3",r,n),p()]})})}}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=>d({...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 pt}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(pt(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/ExtrinsicConfig.ts","../src/extrinsic/pallets/eqBalances/eqBalances.ts","../src/extrinsic/ExtrinsicBuilder.utils.ts","../src/extrinsic/ExtrinsicBuilder.interfaces.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 'type-fest';\nimport { CallType } from '../../builder.interfaces';\nimport { BaseConfig, BaseConfigConstructorParams } from '../BaseConfig';\n\nexport interface QueryConfigConstructorParams\n extends SetOptional<BaseConfigConstructorParams, 'type'> {\n args?: any[];\n transform: (data: any) => Promise<bigint>;\n}\n\nexport class SubstrateQueryConfig extends BaseConfig {\n readonly args: any[];\n\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 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 transform: async (response: Option<any>): Promise<bigint> =>\n response.unwrapOrDefault().minimalBalance.toBigInt(),\n }),\n }),\n };\n}\n\nfunction assets() {\n return {\n asset: (): AssetMinConfigBuilder => ({\n build: ({ asset }) =>\n new SubstrateQueryConfig({\n module: 'assets',\n func: 'asset',\n args: [asset],\n transform: async (\n response: Option<PalletAssetsAssetDetails>,\n ): Promise<bigint> =>\n response.unwrapOrDefault().minBalance.toBigInt(),\n }),\n }),\n };\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { Option } from '@polkadot/types';\nimport {\n FrameSystemAccountInfo,\n PalletAssetsAssetAccount,\n PalletBalancesAccountData,\n} from '@polkadot/types/lookup';\nimport { isString } from '@polkadot/util';\nimport { ContractConfig } from '../contract';\nimport { SubstrateQueryConfig } from '../types/substrate/SubstrateQueryConfig';\nimport {\n BalanceConfigBuilder,\n EquilibriumSystemBalanceData,\n PalletBalancesAccountDataOld,\n TokensPalletAccountData,\n} from './BalanceBuilder.interfaces';\n\nexport function BalanceBuilder() {\n return {\n evm,\n substrate,\n };\n}\n\nexport function evm() {\n return {\n erc20,\n };\n}\n\nexport function substrate() {\n return {\n assets,\n system,\n tokens,\n };\n}\n\nfunction erc20(): BalanceConfigBuilder {\n return {\n build: ({ address, asset }) => {\n if (!asset || !isString(asset)) {\n throw new Error(`Invalid contract address: ${asset}`);\n }\n\n return new ContractConfig({\n address: asset,\n args: [address],\n func: 'balanceOf',\n module: 'Erc20',\n });\n },\n };\n}\n\nfunction assets() {\n return {\n account: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) =>\n new SubstrateQueryConfig({\n module: 'assets',\n func: 'account',\n args: [asset, address],\n transform: async (\n response: Option<PalletAssetsAssetAccount>,\n ): Promise<bigint> => response.unwrapOrDefault().balance.toBigInt(),\n }),\n }),\n };\n}\n\nfunction system() {\n return {\n account: (): BalanceConfigBuilder => ({\n build: ({ address }) =>\n new SubstrateQueryConfig({\n module: 'system',\n func: 'account',\n args: [address],\n transform: async (\n response: FrameSystemAccountInfo,\n ): Promise<bigint> => {\n const balance = response.data as PalletBalancesAccountData &\n PalletBalancesAccountDataOld;\n const frozen = balance.miscFrozen ?? balance.frozen;\n\n return BigInt(balance.free.sub(frozen).toString());\n },\n }),\n }),\n accountEquilibrium: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) =>\n new SubstrateQueryConfig({\n module: 'system',\n func: 'account',\n args: [address],\n transform: async (response): Promise<bigint> => {\n if (response.data.isEmpty) {\n return 0n;\n }\n\n const res = response.data.toJSON() as unknown;\n let balances: EquilibriumSystemBalanceData | undefined;\n\n if (Array.isArray(res)) {\n balances = res;\n }\n\n if (Array.isArray((res as any)?.v0?.balance)) {\n balances = (res as any).v0.balance;\n }\n\n if (!balances) {\n throw new Error(\"Can't get balance from Equilibrium chain\");\n }\n\n const balance = balances.find(([assetId]) => assetId === asset);\n\n if (!balance) {\n return 0n;\n }\n\n return BigInt(balance[1].positive);\n },\n }),\n }),\n };\n}\n\nfunction tokens() {\n return {\n accounts: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) =>\n new SubstrateQueryConfig({\n module: 'tokens',\n func: 'accounts',\n args: [address, asset],\n transform: async ({\n free,\n frozen,\n }: TokensPalletAccountData): Promise<bigint> =>\n BigInt(free.sub(frozen).toString()),\n }),\n }),\n };\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { AnyChain } from '@moonbeam-network/xcm-types';\nimport { formatAssetIdToERC20 } from '@moonbeam-network/xcm-utils';\nimport { isString, u8aToHex } from '@polkadot/util';\nimport { decodeAddress } from '@polkadot/util-crypto';\nimport { ContractConfigBuilder } from '../../ContractBuilder.interfaces';\nimport { ContractConfig } from '../../ContractConfig';\n\nexport function Xtokens() {\n return {\n transfer: (weight = 4_000_000_000): 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: (\n weight = 4_000_000_000,\n ): ContractConfigBuilder => ({\n build: ({ address, amount, asset, destination, fee, feeAsset }) =>\n new ContractConfig({\n args: [\n [\n [isString(asset) ? formatAssetIdToERC20(asset) : asset, amount],\n [\n isString(feeAsset) ? formatAssetIdToERC20(feeAsset) : feeAsset,\n fee,\n ],\n ],\n 1, // index of the fee asset\n getDestinationMultilocation(address, destination),\n weight,\n ],\n func: 'transferMultiCurrencies',\n module: 'Xtokens',\n }),\n }),\n };\n}\n\ntype DestinationMultilocation = [\n /**\n * 1 - if transaction is going through a relay chain\n */\n 1,\n (\n | [\n /**\n * example '0x00000007DC'\n * 7DC - parachain id in hex\n * can be found here:\n * - https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fkusama-rpc.polkadot.io#/parachains\n * - https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/parachains\n */\n string,\n /**\n * example '0x01%account%00',\n * enum = 01 (AccountId32)\n * networkId = 00 (any)\n */\n string,\n ]\n | [\n /**\n * example '0x01%account%00',\n * enum = 01 (AccountId32)\n * networkId = 00 (any)\n */\n string,\n ]\n ),\n];\n\nfunction getDestinationMultilocation(\n address: string,\n destination: AnyChain,\n): DestinationMultilocation {\n /* \n 01: AccountId32\n 03: AccountKey20\n https://docs.moonbeam.network/builders/interoperability/xcm/xc20/xtokens/#building-the-precompile-multilocation\n */\n const accountType = destination.isEvmParachain() ? '03' : '01';\n const acc = `0x${accountType}${u8aToHex(\n decodeAddress(address),\n -1,\n false,\n )}00`;\n\n return [\n 1,\n destination.parachainId\n ? [`0x0000000${destination.parachainId.toString(16)}`, acc]\n : [acc],\n ];\n}\n","import { CallType } from '../builder.interfaces';\nimport { BaseConfig, BaseConfigConstructorParams } from '../types/BaseConfig';\n\nexport interface ContractConfigConstructorParams\n extends Omit<BaseConfigConstructorParams, 'type'> {\n args: any[];\n address?: string;\n}\n\nexport class ContractConfig extends BaseConfig {\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 { CallType } from '../builder.interfaces';\nimport { BaseConfig, BaseConfigConstructorParams } from '../types/BaseConfig';\n\nexport interface ExtrinsicConfigConstructorParams\n extends Omit<BaseConfigConstructorParams, 'type'> {\n getArgs: (func?: SubmittableExtrinsicFunction<'promise'>) => any[];\n}\n\nexport class ExtrinsicConfig extends BaseConfig {\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 { 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 {\n AccountKey20: {\n network: 'Any',\n key: address,\n },\n },\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 {\n AccountKey20: {\n network: 'Any',\n key: address,\n },\n },\n ],\n },\n },\n ];\n },\n }),\n }),\n };\n}\n","import { SubmittableExtrinsicFunction } from '@polkadot/api/types';\nimport { getTypeDef } from '@polkadot/types';\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","import { AnyChain, ChainAssetId } from '@moonbeam-network/xcm-types';\nimport { ExtrinsicConfig } from './ExtrinsicConfig';\n\nexport interface ExtrinsicConfigBuilder {\n build: (params: ExtrinsicConfigBuilderPrams) => ExtrinsicConfig;\n}\n\nexport interface ExtrinsicConfigBuilderPrams {\n address: string;\n amount: bigint;\n asset: ChainAssetId;\n destination: AnyChain;\n fee: bigint;\n feeAsset: ChainAssetId;\n palletInstance?: number;\n source: AnyChain;\n}\n\nexport enum XcmVersion {\n v1 = 'V1',\n v2 = 'V2',\n v3 = 'V3',\n}\n\nexport type Parents = 0 | 1;\n","/* eslint-disable sort-keys */\nimport { SubmittableExtrinsicFunction } from '@polkadot/api/types';\nimport {\n ExtrinsicConfigBuilderPrams,\n Parents,\n} from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicArgumentVersion } from '../../ExtrinsicBuilder.utils';\n\nexport interface GetExtrinsicParams extends ExtrinsicConfigBuilderPrams {\n asset: any;\n func?: SubmittableExtrinsicFunction<'promise'>;\n parents?: Parents;\n}\n\nexport function getPolkadotXcmExtrinsicArgs({\n asset,\n address,\n destination,\n func,\n parents = 1,\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: {\n AccountKey20: {\n network: 'Any',\n key: address,\n },\n },\n },\n },\n },\n {\n [version]: asset,\n },\n 0,\n 'Unlimited',\n ];\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport { getPolkadotXcmExtrinsicArgs } from './polkadotXcm.util';\n\nconst pallet = 'polkadotXcm';\n\nexport function polkadotXcm() {\n return {\n limitedReserveTransferAssets: () => {\n const func = 'limitedReserveTransferAssets';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n X1: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: {\n X1: {\n PalletInstance: 5,\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 getPolkadotXcmExtrinsicArgs({\n ...params,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: {\n X2: [\n {\n PalletInstance: params.palletInstance,\n },\n {\n GeneralIndex: params.asset,\n },\n ],\n },\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\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 { SubmittableExtrinsicFunction } from '@polkadot/api/types';\nimport { XTokensWeightLimit } from './xTokens.interfaces';\n\n/**\n * Workaround for weight parameter type change in xTokens pallet\n * https://github.com/open-web3-stack/open-runtime-module-library/pull/841\n */\nexport function getWeight(\n weight: number,\n func?: SubmittableExtrinsicFunction<'promise'>,\n): XTokensWeightLimit {\n const type = func?.meta.args.at(-1)?.type;\n\n if (!type) {\n return weight;\n }\n\n if (type.eq('XcmV2WeightLimit')) {\n return {\n Limited: weight,\n };\n }\n\n if (type.eq('XcmV3WeightLimit')) {\n return 'Unlimited';\n }\n\n return weight;\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 { getWeight } from './xTokens.utils';\n\nconst pallet = 'xTokens';\n\nexport function xTokens() {\n return {\n transfer: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination, source }) =>\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 {\n [version]: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n {\n AccountKey20: {\n network: 'Any',\n key: address,\n },\n },\n ],\n },\n },\n },\n getWeight(source.weight, func),\n ];\n },\n }),\n }),\n transferMultiAsset: (originParachainId: number) => {\n const funcName = 'transferMultiasset';\n\n return {\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 {\n [version]: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n {\n AccountKey20: {\n network: 'Any',\n key: address,\n },\n },\n ],\n },\n },\n },\n 'Unlimited',\n ];\n },\n }),\n }),\n X2: (): ExtrinsicConfigBuilder => ({\n build: ({ address, amount, asset, destination, source }) =>\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 {\n [version]: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n {\n AccountKey20: {\n network: 'Any',\n key: address,\n },\n },\n ],\n },\n },\n },\n getWeight(source.weight, func),\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 {\n [XcmVersion.v3]: {\n parents: 1,\n interior: {\n X2: [\n {\n Parachain: destination.parachainId,\n },\n {\n AccountKey20: {\n key: address,\n },\n },\n ],\n },\n },\n },\n 'Unlimited',\n ],\n }),\n }),\n };\n}\n","/* eslint-disable sort-keys */\nimport { ExtrinsicConfigBuilder } from '../../ExtrinsicBuilder.interfaces';\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 {\n AccountKey20: {\n key: address,\n },\n },\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 {\n AccountKey20: {\n key: address,\n },\n },\n ],\n },\n },\n {\n refTime: 5_000_000_000,\n proofSize: 0,\n },\n ],\n }),\n }),\n };\n },\n };\n}\n","/* eslint-disable sort-keys */\nimport {\n ExtrinsicConfigBuilder,\n Parents,\n} from '../../ExtrinsicBuilder.interfaces';\nimport { ExtrinsicConfig } from '../../ExtrinsicConfig';\nimport { getPolkadotXcmExtrinsicArgs } from '../polkadotXcm/polkadotXcm.util';\n\nconst pallet = 'xcmPallet';\n\nexport function xcmPallet() {\n return {\n limitedReserveTransferAssets: (parents: Parents = 1) => {\n const func = 'limitedReserveTransferAssets';\n\n return {\n here: (): ExtrinsicConfigBuilder => ({\n build: (params) =>\n new ExtrinsicConfig({\n module: pallet,\n func,\n getArgs: (extrinsicFunction) =>\n getPolkadotXcmExtrinsicArgs({\n ...params,\n parents,\n func: extrinsicFunction,\n asset: [\n {\n id: {\n Concrete: {\n parents: 0,\n interior: 'Here',\n },\n },\n fun: {\n Fungible: params.amount,\n },\n },\n ],\n }),\n }),\n }),\n };\n },\n };\n}\n","/* eslint-disable sort-keys */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport { eqBalances } from './pallets/eqBalances';\nimport { polkadotXcm } from './pallets/polkadotXcm';\nimport { xTokens } from './pallets/xTokens';\nimport { xTransfer } from './pallets/xTransfer';\nimport { xcmPallet } from './pallets/xcmPallet';\n\nexport function ExtrinsicBuilder() {\n return {\n eqBalances,\n xTokens,\n xTransfer,\n polkadotXcm,\n xcmPallet,\n };\n}\n","import { ApiPromise } from '@polkadot/api';\nimport { CallType } from '../../builder.interfaces';\n\nexport interface SubstrateCallConfigConstructorParams {\n api: ApiPromise;\n call: () => Promise<bigint>;\n}\n\nexport class SubstrateCallConfig {\n readonly api: ApiPromise;\n\n 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 )) 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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,KAAAE,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,KAAME,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,MACZ,CACF,EACA,IAAK,CACH,SAAUF,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAQA,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,KAAME,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,eAAgB,CAClB,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUF,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAQA,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,KAAME,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,eAAgBF,EAAO,cACzB,EACA,CACE,aAAcA,EAAO,KACvB,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUA,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,EACF,CACF,EACA,6BAA8B,IAAM,CAClC,IAAMD,EAAO,+BAEb,MAAO,CACL,GAAI,KAA+B,CACjC,MAAQC,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,KAAME,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWF,EAAO,YAAY,WAChC,EACA,CACE,eAAgBA,EAAO,cACzB,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUA,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,EACF,CACF,CACF,CACF,CCzIO,SAASI,EAC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","names":["CallType","BaseConfig","module","func","type","SubstrateQueryConfig","BaseConfig","args","transform","type","other","AssetMinBuilder","assetRegistry","assets","pallet","asset","SubstrateQueryConfig","response","isString","formatAssetIdToERC20","isString","u8aToHex","decodeAddress","ContractConfig","BaseConfig","args","address","other","Xtokens","weight","address","amount","asset","destination","ContractConfig","isString","formatAssetIdToERC20","getDestinationMultilocation","fee","feeAsset","acc","u8aToHex","decodeAddress","ContractBuilder","Xtokens","BalanceBuilder","evm","substrate","erc20","assets","system","tokens","address","asset","isString","ContractConfig","SubstrateQueryConfig","response","balance","frozen","_a","res","balances","assetId","free","ExtrinsicConfig","BaseConfig","getArgs","other","pallet","eqBalances","address","amount","asset","destination","ExtrinsicConfig","fee","feeAsset","amountWithoutFee","getTypeDef","XcmVersion","getExtrinsicArgumentVersion","func","index","type","instance","raw","getTypeDef","versions","x","getPolkadotXcmExtrinsicArgs","asset","address","destination","func","parents","version","getExtrinsicArgumentVersion","pallet","polkadotXcm","func","params","ExtrinsicConfig","extrinsicFunction","getPolkadotXcmExtrinsicArgs","getWeight","weight","func","_a","type","pallet","xTokens","address","amount","asset","destination","source","ExtrinsicConfig","func","version","getExtrinsicArgumentVersion","getWeight","originParachainId","funcName","fee","feeAsset","pallet","xTransfer","method","address","amount","destination","ExtrinsicConfig","palletInstance","pallet","xcmPallet","parents","func","params","ExtrinsicConfig","extrinsicFunction","getPolkadotXcmExtrinsicArgs","ExtrinsicBuilder","eqBalances","xTokens","xTransfer","polkadotXcm","xcmPallet","SubstrateCallConfig","api","call","FeeBuilder","assetManager","weight","api","asset","SubstrateCallConfig","type","unwrappedType","unitsPerSecond"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/builder.interfaces.ts","../src/types/BaseConfig.ts","../src/types/substrate/SubstrateQueryConfig.ts","../src/asset-min/AssetMinBuilder.ts","../src/balance/BalanceBuilder.ts","../src/contract/contracts/Xtokens/Xtokens.ts","../src/contract/ContractConfig.ts","../src/contract/ContractBuilder.ts","../src/extrinsic/ExtrinsicBuilder.utils.ts","../src/extrinsic/ExtrinsicBuilder.interfaces.ts","../src/extrinsic/ExtrinsicConfig.ts","../src/extrinsic/pallets/eqBalances/eqBalances.ts","../src/extrinsic/pallets/polkadotXcm/polkadotXcm.util.ts","../src/extrinsic/pallets/polkadotXcm/polkadotXcm.ts","../src/extrinsic/pallets/xTokens/xTokens.utils.ts","../src/extrinsic/pallets/xTokens/xTokens.ts","../src/extrinsic/pallets/xTransfer/xTransfer.ts","../src/extrinsic/pallets/xcmPallet/xcmPallet.ts","../src/extrinsic/ExtrinsicBuilder.ts","../src/types/substrate/SubstrateCallConfig.ts","../src/fee/FeeBuilder.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 trasferAssets: () => {\n const func = 'transferAssets';\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: 1,\n interior: 'Here',\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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AC7B,CACF,CACF,EACA,CACE,QAAS,IACT,UAAW,CACb,CACF,CACF,CAAC,CACL,EACF,CACF,CACF,CACF,CCrFA,IAAMM,EAAS,YAER,SAASC,GAAY,CAC1B,MAAO,CACL,6BAA8B,CAACC,EAAmB,IAAM,CACtD,IAAMC,EAAO,+BAEb,MAAO,CACL,KAAM,KAA+B,CACnC,MAAQC,GACN,IAAIC,EAAgB,CAClB,OAAQL,EACR,KAAAG,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,QAAAF,EACA,KAAMI,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,MACZ,CACF,EACA,IAAK,CACH,SAAUF,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,EACF,CACF,EACA,+BAAgC,IAAM,CACpC,IAAMD,EAAO,iCAEb,MAAO,CACL,KAAM,KAA+B,CACnC,MAAQC,GACN,IAAIC,EAAgB,CAClB,OAAQL,EACR,KAAAG,EACA,QAAS,IAAM,CACb,IAAMK,OACN,MAAO,CACL,CACE,CAACA,CAAO,EAAG,CACT,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWJ,EAAO,YAAY,WAChC,CACF,CACF,CACF,CACF,EACA,CACE,CAACI,CAAO,EAAG,CACT,CACE,GAAI,CACF,QAAS,EACT,SAAU,MACZ,EACA,IAAK,CACH,SAAUJ,EAAO,MACnB,CACF,CACF,CACF,EACA,eACA,CACE,CAACI,CAAO,EAAG,CACT,QAAS,EACT,SAAU,MACZ,CACF,EACA,eACA,CACE,CAACA,CAAO,EAAG,CACT,CACE,aAAc,CACZ,OAAQ,CACN,KAAM,CAAE,WAAY,CAAE,CACxB,EACA,YAAa,CACX,QAAS,EACT,SAAU,CACR,GAAI,CAACC,EAAoBL,EAAO,OAAO,CAAC,CAC1C,CACF,CACF,CACF,CACF,CACF,EACA,WACF,CACF,CACF,CAAC,CACL,EACF,CACF,CACF,CACF,CC3GO,SAASM,IAAmB,CACjC,MAAO,CACL,WAAAC,EACA,QAAAC,EACA,UAAAC,EACA,YAAAC,EACA,UA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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": "1.0.0-dev.14",
3
+ "version": "1.0.0-dev.140",
4
4
  "description": "Moonbeam XCM builder",
5
5
  "scripts": {
6
6
  "build": "tsup",
@@ -9,28 +9,27 @@
9
9
  "lint": "eslint ./src --ext .js,.ts",
10
10
  "lint:fix": "npm run lint -- --fix",
11
11
  "typecheck": "tsc --noEmit",
12
- "test": "jest /src",
13
- "test:watch": "npm test -- --watch",
14
- "test:update": "npm test -- -u",
15
- "test:ci": "npm test -- --ci",
12
+ "test": "vitest --run",
13
+ "test:watch": "vitest",
14
+ "test:update": "vitest -u",
16
15
  "prepack": "prettier --write build/index.d.ts"
17
16
  },
18
17
  "repository": {
19
18
  "directory": "packages/builder",
20
19
  "type": "git",
21
- "url": "git+https://github.com/PureStake/xcm-sdk.git"
20
+ "url": "git+https://github.com/moonbeam-foundation/xcm-sdk.git"
22
21
  },
23
22
  "keywords": [
24
23
  "moonbeam",
25
24
  "moonriver",
26
25
  "xcm"
27
26
  ],
28
- "author": "PureStake",
27
+ "author": "moonbeam-foundation",
29
28
  "license": "MIT",
30
29
  "bugs": {
31
- "url": "https://github.com/PureStake/xcm-sdk/issues"
30
+ "url": "https://github.com/moonbeam-foundation/xcm-sdk/issues"
32
31
  },
33
- "homepage": "https://docs.moonbeam.network/builders/xcm/xcm-sdk/xcm-sdk/",
32
+ "homepage": "https://moonbeam-foundation.github.io/xcm-sdk/latest",
34
33
  "files": [
35
34
  "build"
36
35
  ],
@@ -50,17 +49,15 @@
50
49
  "types": "./build/index.d.ts",
51
50
  "main": "./build/index.cjs",
52
51
  "dependencies": {
53
- "@moonbeam-network/xcm-types": "1.0.0-dev.14",
54
- "@moonbeam-network/xcm-utils": "1.0.0-dev.14",
55
- "big.js": "^6.2.1",
56
- "ethers": "^5.7.2",
57
- "type-fest": "^3.8.0"
52
+ "@moonbeam-network/xcm-types": "1.0.0-dev.140",
53
+ "@moonbeam-network/xcm-utils": "1.0.0-dev.140",
54
+ "big.js": "^6.2.1"
58
55
  },
59
56
  "peerDependencies": {
60
- "@polkadot/api": "^10.9.1",
61
- "@polkadot/api-augment": "^10.9.1",
62
- "@polkadot/types": "^10.9.1",
63
- "@polkadot/util": "^12.3.2",
64
- "@polkadot/util-crypto": "^12.3.2"
57
+ "@polkadot/api": "^12.4.2",
58
+ "@polkadot/api-augment": "^12.4.2",
59
+ "@polkadot/types": "^12.4.2",
60
+ "@polkadot/util": "^13.1.1",
61
+ "@polkadot/util-crypto": "^13.1.1"
65
62
  }
66
63
  }