@moonbeam-network/xcm-builder 2.6.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,63 +1,50 @@
1
1
  {
2
2
  "name": "@moonbeam-network/xcm-builder",
3
- "version": "2.6.2",
3
+ "version": "3.0.0",
4
4
  "description": "Moonbeam XCM builder",
5
5
  "scripts": {
6
6
  "build": "tsup",
7
- "dev": "npm run build -- --watch",
8
- "link": "npm ln",
9
- "lint": "eslint ./src --ext .js,.ts",
10
- "lint:fix": "npm run lint -- --fix",
7
+ "dev": "tsup --watch",
8
+ "link": "pnpm ln --global",
11
9
  "typecheck": "tsc --noEmit",
12
10
  "test": "vitest --run",
13
11
  "test:watch": "vitest",
14
- "test:update": "vitest -u",
15
- "prepack": "prettier --write build/index.d.ts"
12
+ "test:update": "vitest -u"
16
13
  },
17
14
  "repository": {
18
15
  "directory": "packages/builder",
19
16
  "type": "git",
20
17
  "url": "git+https://github.com/moonbeam-foundation/xcm-sdk.git"
21
18
  },
22
- "keywords": [
23
- "moonbeam",
24
- "moonriver",
25
- "xcm"
26
- ],
19
+ "keywords": ["moonbeam", "moonriver", "xcm"],
27
20
  "author": "moonbeam-foundation",
28
21
  "license": "MIT",
29
22
  "bugs": {
30
23
  "url": "https://github.com/moonbeam-foundation/xcm-sdk/issues"
31
24
  },
32
25
  "homepage": "https://moonbeam-foundation.github.io/xcm-sdk/latest",
33
- "files": [
34
- "build"
35
- ],
26
+ "files": ["build"],
36
27
  "type": "module",
37
28
  "exports": {
38
- ".": {
39
- "import": {
40
- "types": "./build/index.d.ts",
41
- "default": "./build/index.mjs"
42
- },
43
- "require": {
44
- "types": "./build/index.d.ts",
45
- "default": "./build/index.cjs"
46
- }
47
- }
29
+ "import": "./build/index.mjs",
30
+ "types": "./build/index.d.ts",
31
+ "default": "./build/index.mjs"
48
32
  },
49
33
  "types": "./build/index.d.ts",
50
- "main": "./build/index.cjs",
34
+ "main": "./build/index.mjs",
51
35
  "dependencies": {
52
- "@moonbeam-network/xcm-types": "2.5.5",
53
- "@moonbeam-network/xcm-utils": "2.2.5",
36
+ "@moonbeam-network/xcm-types": "3.0.0",
37
+ "@moonbeam-network/xcm-utils": "3.0.0",
54
38
  "big.js": "^6.2.1"
55
39
  },
56
40
  "peerDependencies": {
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"
41
+ "@polkadot/api": "14.3.1",
42
+ "@polkadot/api-augment": "14.3.1",
43
+ "@polkadot/types": "14.3.1",
44
+ "@polkadot/util": "13.2.3",
45
+ "@polkadot/util-crypto": "13.2.3",
46
+ "@wormhole-foundation/sdk-connect": "^0.10.7",
47
+ "@wormhole-foundation/sdk-evm": "^0.10.7",
48
+ "viem": "^2.21.7"
62
49
  }
63
50
  }
package/build/index.cjs DELETED
@@ -1,2 +0,0 @@
1
- "use strict";var w=Object.defineProperty;var ct=Object.getOwnPropertyDescriptor;var ut=Object.getOwnPropertyNames;var mt=Object.prototype.hasOwnProperty;var lt=(e,t)=>{for(var r in t)w(e,r,{get:t[r],enumerable:!0})},ft=(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 gt=e=>ft(w({},"__esModule",{value:!0}),e);var Rt={};lt(Rt,{AssetMinBuilder:()=>dt,BalanceBuilder:()=>bt,BaseConfig:()=>l,CallType:()=>x,ContractBuilder:()=>yt,ContractConfig:()=>f,ExtrinsicBuilder:()=>Tt,ExtrinsicConfig:()=>a,FeeBuilder:()=>Nt,SubstrateQueryConfig:()=>u,XcmVersion:()=>p,calculateSystemAccountBalance:()=>v,evm:()=>U,substrate:()=>H});module.exports=gt(Rt);var Dr=require("@polkadot/api-augment");var N=require("@polkadot/types"),M=require("@polkadot/util"),R=require("@polkadot/util-crypto");var p=(i=>(i.v1="V1",i.v2="V2",i.v3="V3",i.v4="V4",i))(p||{});function A(e,t=0){if(!e)return"V1";let{type:r}=e.meta.args[t],n=e.meta.registry.createType(r.toString()),i=(0,N.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 c(e){return e.length===42&&e.startsWith("0x")?{AccountKey20:{key:e}}:{AccountId32:{id:(0,M.u8aToHex)((0,R.decodeAddress)(e)),network:null}}}var x=(r=>(r.Evm="Evm",r.Substrate="Substrate",r))(x||{});var l=class{module;func;type;constructor({module:t,func:r,type:n}){this.module=t,this.func=r,this.type=n}};var u=class extends l{args;transform;constructor({args:t=[],transform:r,type:n="Substrate",...i}){super({...i,type:n}),this.args=t,this.transform=r}};function dt(){return{assetRegistry:pt,assets:At,foreignAssets:xt}}function pt(){let e="assetRegistry";return{assetMetadatas:()=>({build:({asset:t})=>new u({module:e,func:"assetMetadatas",args:[t],transform:async r=>r.unwrapOrDefault().minimalBalance.toBigInt()})}),currencyMetadatas:()=>({build:({asset:t})=>new u({module:e,func:"currencyMetadatas",args:[t],transform:async r=>r.unwrapOrDefault().minimalBalance.toBigInt()})})}}function At(){return{asset:()=>({build:({asset:e})=>new u({module:"assets",func:"asset",args:[e],transform:async t=>t.unwrapOrDefault().minBalance.toBigInt()})})}}function xt(){return{asset:()=>({build:({asset:e})=>{let t={parents:2,interior:{X2:[{globalconsensus:{ethereum:{chainId:1}}},c(e)]}};return new u({module:"foreignAssets",func:"asset",args:[t],transform:async r=>r.unwrapOrDefault().minBalance.toBigInt()})}})}}var L=require("@polkadot/util"),V=require("@polkadot/util-crypto");var P=require("@moonbeam-network/xcm-utils"),g=require("@polkadot/util"),E=require("@polkadot/util-crypto");var f=class extends l{args;address;constructor({args:t,address:r,...n}){super({...n,type:"Evm"}),this.args=t,this.address=r}};var X=18446744073709551615n;function _(){return{transfer:(e=X)=>({build:({address:t,amount:r,asset:n,destination:i})=>new f({args:[(0,g.isString)(n)?(0,P.formatAssetIdToERC20)(n):n,r,W(t,i),e],func:"transfer",module:"Xtokens"})}),transferMultiCurrencies:(e=X)=>({build:({address:t,amount:r,asset:n,destination:i,fee:o,feeAsset:s})=>new f({args:[[[(0,g.isString)(n)?(0,P.formatAssetIdToERC20)(n):n,r],[(0,g.isString)(s)?(0,P.formatAssetIdToERC20)(s):s,o]],1,W(t,i),e],func:"transferMultiCurrencies",module:"Xtokens"})}),transferWithEvmTo32:(e=X)=>({build:({address:t,amount:r,asset:n,destination:i})=>{let o=Ct(t,i);return new f({args:[(0,g.isString)(n)?(0,P.formatAssetIdToERC20)(n):n,r,o,e],func:"transfer",module:"Xtokens"})}})}}function Ct(e,t){let r="01",n=(0,E.evmToAddress)(e),i=`0x${r}${(0,g.u8aToHex)((0,E.decodeAddress)(n),-1,!1)}00`;return[1,t.parachainId?[`0x0000000${t.parachainId.toString(16)}`,i]:[i]]}function W(e,t){let n=`0x${t.isEvmParachain()?"03":"01"}${(0,g.u8aToHex)((0,E.decodeAddress)(e),-1,!1)}00`;return[1,t.parachainId?[`0x0000000${t.parachainId.toString(16)}`,n]:[n]]}function yt(){return{Xtokens:_}}function bt(){return{evm:U,substrate:H}}function U(){return{erc20:ht}}function H(){return{assets:Pt,foreignAssets:Et,system:Bt,tokens:It}}function ht(){return{build:({address:e,asset:t})=>{if(!t||!(0,L.isString)(t))throw new Error(`Invalid contract address: ${t}`);return new f({address:t,args:[e],func:"balanceOf",module:"Erc20"})}}}function Pt(){return{account:()=>({build:({address:e,asset:t})=>new u({module:"assets",func:"account",args:[t,e],transform:async r=>r.unwrapOrDefault().balance.toBigInt()})})}}function Et(){return{account:()=>({build:({address:e,asset:t})=>{let r={parents:2,interior:{X2:[{GlobalConsensus:{ethereum:{chainId:1}}},c(t)]}};return new u({module:"foreignAssets",func:"account",args:[r,e],transform:async n=>n.unwrapOrDefault().balance.toBigInt()})}})}}function Bt(){return{account:()=>({build:({address:e})=>new u({module:"system",func:"account",args:[e],transform:async t=>v(t)})}),accountEquilibrium:()=>({build:({address:e,asset:t})=>new u({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,V.evmToAddress)(e);return new u({module:"system",func:"account",args:[t],transform:async r=>v(r)})}})}}function It(){return{accounts:()=>({build:({address:e,asset:t})=>new u({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 a=class extends l{getArgs;constructor({getArgs:t,...r}){super({...r,type:"Substrate"}),this.getArgs=t}};var j="eqBalances";function q(){return{xcmTransfer:()=>({build:({address:e,amount:t,asset:r,destination:n})=>new a({module:j,func:"xcmTransfer",getArgs:()=>[r,t,{parents:1,interior:{X2:[{Parachain:n.parachainId},c(e)]}},"ThisAccWillPay"]})}),transferXcm:()=>({build:({address:e,amount:t,asset:r,destination:n,fee:i,feeAsset:o})=>new a({module:j,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},c(e)]}}]}})})}}function d({asset:e,address:t,destination:r,func:n,parents:i=1,feeIndex:o=0}){let s=A(n);return[{[s]:{parents:i,interior:{X1:{Parachain:r.parachainId}}}},{[s]:{parents:0,interior:{X1:c(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 C="polkadotXcm";function $(){return{limitedReserveTransferAssets:()=>{let e="limitedReserveTransferAssets";return{here:()=>({build:t=>new a({module:C,func:e,getArgs:r=>d({...t,func:r,asset:[{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:t.amount}}]})})}),X1:()=>({build:t=>new a({module:C,func:e,getArgs:r=>d({...t,func:r,asset:[{id:{Concrete:{parents:0,interior:{X1:{PalletInstance:t.palletInstance}}}},fun:{Fungible:t.amount}}]})})}),X2:()=>({build:t=>new a({module:C,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 d({...t,func:r,asset:i,feeIndex:n&&!o?1:0})}})})}},limitedReserveWithdrawAssets:()=>{let e="limitedReserveWithdrawAssets";return{X2:()=>({build:t=>new a({module:C,func:e,getArgs:r=>d({...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:C,func:e,getArgs:r=>d({...t,func:r,asset:[{id:{Concrete:{parents:1,interior:"Here"}},fun:{Fungible:t.amount}}]})})})}},transferAssetsUsingTypeAndThen:()=>{let e="transferAssetsUsingTypeAndThen";return{globalConcensusEthereum:()=>({build:({destination:t,address:r,amount:n,asset:i})=>{let o="V4";return new a({module:C,func:e,getArgs:()=>[{[o]:{parents:1,interior:{X1:[{Parachain:t.parachainId}]}}},{[o]:[{id:{parents:2,interior:{X2:[{globalConsensus:{Ethereum:{ChainId:1}}},c(i)]}},fun:{fungible:n}}]},"LocalReserve",{[o]:{parents:2,interior:{X2:[{globalConsensus:{Ethereum:{ChainId:1}}},c(i)]}}},"LocalReserve",{[o]:[{DepositAsset:{assets:{Wild:{AllCounted:1}},beneficiary:{parents:0,interior:{X1:[c(r)]}}}}]},"Unlimited"]})}})}}}}function y(){return"Unlimited"}function b(e,t,r){return{[e]:{parents:1,interior:{X2:[{Parachain:r.parachainId},c(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=A(i,2);return[r,t,b(o,e,n),y()]}})}),transferMultiAsset:e=>{let t="transferMultiasset";return{here:()=>({build:({address:r,amount:n,destination:i})=>new a({module:B,func:t,getArgs:o=>{let s=A(o,1);return[{[s]:{id:{Concrete:{parents:0,interior:"Here"}},fun:{Fungible:n}}},b(s,r,i),y()]}})}),X1:()=>({build:({address:r,amount:n,destination:i})=>new a({module:B,func:t,getArgs:o=>{let s=A(o,1);return[{[s]:{id:{Concrete:{parents:1,interior:{X1:{Parachain:e}}}},fun:{Fungible:n}}},b(s,r,i),y()]}})}),X2:()=>({build:({address:r,amount:n,asset:i,destination:o})=>new a({module:B,func:t,getArgs:s=>{let m=A(s,1);return[{[m]:{id:{Concrete:{parents:1,interior:{X2:[{Parachain:e},{GeneralKey:i}]}}},fun:{Fungible:n}}},b(m,r,o),y()]}})})}},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,b("V3",e,n),y()]})})}}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},c(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},c(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=>d({...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:[c(t.address)]}}}}]},"Unlimited"]}})})}}}}function Tt(){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,wt="0xabcdef1234567890fedcba0987654321abcdef1234567890fedcba0987654321",Xt="0x0000000000000000000000000000000000000802",vt={moonbeam:"10",moonriver:"10","moonbase-alpha":"3"},St={moonbeam:"110",moonriver:"110","moonbase-alpha":"48"},S="V4";function h(){return S==="V4"}function Ft(e){if(!h())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:h()?[r]:r},parents:0},max_assets:0}}}function ot(){return{SetTopic:wt}}function O(e){return{Concrete:{...e}}}function Ot(e){let t={PalletInstance:vt[e]},r={interior:{X1:h()?[t]:t},parents:"0"};return h()?r:O(r)}function Dt(e,t){let r={interior:{X2:[{PalletInstance:St[t]},{AccountKey20:{key:e,network:null}}]},parents:"0"};return h()?r:O(r)}async function kt(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 D(e,t,r){if(t===Xt)return Ot(r.key);if((0,Z.isHexString)(t))return Dt(t,r.key);let i=(await kt(e,t)).unwrap().asXcm.toJSON(),o=Ft(i);return h()?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 Nt(){return{xcmPaymentApi:Mt}}function Mt(){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 D(n,i,o),k=await D(n,s,o),T=i===s?[m]:t?[k,m]:[m,k],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
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts","../src/extrinsic/ExtrinsicBuilder.utils.ts","../src/extrinsic/ExtrinsicBuilder.interfaces.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/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","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","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 { getExtrinsicAccount } from '../extrinsic/ExtrinsicBuilder.utils';\nimport { SubstrateQueryConfig } from '../types/substrate/SubstrateQueryConfig';\nimport { AssetMinConfigBuilder } from './AssetMinBuilder.interfaces';\n\nexport function AssetMinBuilder() {\n return {\n assetRegistry,\n assets,\n foreignAssets,\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\nfunction foreignAssets() {\n return {\n asset: (): AssetMinConfigBuilder => ({\n build: ({ asset }) => {\n const multilocation = {\n parents: 2,\n interior: {\n X2: [\n {\n globalconsensus: {\n ethereum: {\n chainId: 1,\n },\n },\n },\n getExtrinsicAccount(asset as string),\n ],\n },\n };\n return new SubstrateQueryConfig({\n module: 'foreignAssets',\n func: 'asset',\n args: [multilocation],\n transform: async (\n response: Option<PalletAssetsAssetDetails>,\n ): Promise<bigint> =>\n response.unwrapOrDefault().minBalance.toBigInt(),\n });\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 { getExtrinsicAccount } from '../extrinsic/ExtrinsicBuilder.utils';\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 foreignAssets,\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 foreignAssets() {\n return {\n account: (): BalanceConfigBuilder => ({\n build: ({ address, asset }) => {\n const multilocation = {\n parents: 2,\n interior: {\n X2: [\n { GlobalConsensus: { ethereum: { chainId: 1 } } },\n getExtrinsicAccount(asset as string),\n ],\n },\n };\n\n return new SubstrateQueryConfig({\n module: 'foreignAssets',\n func: 'account',\n args: [multilocation, address],\n transform: async (\n response: Option<PalletAssetsAssetAccount>,\n ): Promise<bigint> => response.unwrapOrDefault().balance.toBigInt(),\n });\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 { 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 {\n ExtrinsicConfigBuilder,\n XcmVersion,\n} from '../../ExtrinsicBuilder.interfaces';\nimport { getExtrinsicAccount } from '../../ExtrinsicBuilder.utils';\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 transferAssetsUsingTypeAndThen: () => {\n const func = 'transferAssetsUsingTypeAndThen';\n return {\n // TODO we could pass a parameter globalConcensus in the chain asset\n // but we can do it in V3\n globalConcensusEthereum: (): ExtrinsicConfigBuilder => ({\n build: ({ destination, address, amount, asset }) => {\n const version = XcmVersion.v4;\n return new ExtrinsicConfig({\n module: pallet,\n func,\n\n getArgs: () => [\n {\n [version]: {\n parents: 1,\n interior: {\n X1: [\n {\n Parachain: destination.parachainId,\n },\n ],\n },\n },\n },\n {\n [version]: [\n {\n id: {\n parents: 2,\n interior: {\n X2: [\n { globalConsensus: { Ethereum: { ChainId: 1 } } },\n getExtrinsicAccount(asset as string),\n ],\n },\n },\n fun: { fungible: amount },\n },\n ],\n },\n 'LocalReserve',\n {\n [version]: {\n parents: 2,\n interior: {\n X2: [\n { globalConsensus: { Ethereum: { ChainId: 1 } } },\n getExtrinsicAccount(asset as string),\n ],\n },\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(address)],\n },\n },\n },\n },\n ],\n },\n 'Unlimited',\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":"mbAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,qBAAAE,GAAA,mBAAAC,GAAA,eAAAC,EAAA,aAAAC,EAAA,oBAAAC,GAAA,mBAAAC,EAAA,qBAAAC,GAAA,oBAAAC,EAAA,eAAAC,GAAA,yBAAAC,EAAA,eAAAC,EAAA,kCAAAC,EAAA,QAAAC,EAAA,cAAAC,IAAA,eAAAC,GAAAhB,IAAA,IAAAiB,GAAO,iCCCP,IAAAC,EAA2B,2BAC3BC,EAAyB,0BACzBC,EAA8B,iCCevB,IAAKC,OACVA,EAAA,GAAK,KACLA,EAAA,GAAK,KACLA,EAAA,GAAK,KACLA,EAAA,GAAK,KAJKA,OAAA,IDZL,SAASC,EACdC,EACAC,EAAgB,EACJ,CACZ,GAAI,CAACD,EAAM,WAEX,GAAM,CAAE,KAAAE,CAAK,EAAIF,EAAK,KAAK,KAAKC,CAAK,EAC/BE,EAAWH,EAAK,KAAK,SAAS,WAAWE,EAAK,SAAS,CAAC,EACxDE,KAAM,cAAWD,GAAA,YAAAA,EAAU,WAAW,EAE5C,GAAI,CAACC,EAAI,IACP,WAGF,IAAMC,EAAW,MAAM,QAAQD,EAAI,GAAG,EAClCA,EAAI,IAAI,IAAKE,GAAMA,EAAE,IAAI,EACzB,CAACF,EAAI,IAAI,IAAI,EAEjB,GAAIC,EAAS,aAAsB,EACjC,WAGF,GAAIA,EAAS,aAAsB,EACjC,WAGF,GAAIA,EAAS,aAAsB,EACjC,WAGF,MAAM,IAAI,MAAM,wBAAwB,CAC1C,CAEO,SAASE,EAAoBC,EAAiB,CAGnD,OAFqBA,EAAQ,SAAW,IAAMA,EAAQ,WAAW,IAAI,EAGjE,CACE,aAAc,CACZ,IAAKA,CACP,CACF,EACA,CACE,YAAa,CACX,MAAI,eAAS,iBAAcA,CAAO,CAAC,EACnC,QAAS,IACX,CACF,CACN,CEtDO,IAAKC,OACVA,EAAA,IAAM,MACNA,EAAA,UAAY,YAFFA,OAAA,ICQL,IAAMC,EAAN,KAAiB,CACb,OAEA,KAEA,KAET,YAAY,CAAE,OAAAC,EAAQ,KAAAC,EAAM,KAAAC,CAAK,EAAgC,CAC/D,KAAK,OAASF,EACd,KAAK,KAAOC,EACZ,KAAK,KAAOC,CACd,CACF,ECRO,IAAMC,EAAN,cAAmCC,CAAW,CAE1C,KAGA,UAET,YAAY,CACV,KAAAC,EAAO,CAAC,EACR,UAAAC,EACA,KAAAC,cACA,GAAGC,CACL,EAAiC,CAC/B,MAAM,CAAE,GAAGA,EAAO,KAAAD,CAAK,CAAC,EAExB,KAAK,KAAOF,EACZ,KAAK,UAAYC,CACnB,CACF,ECrBO,SAASG,IAAkB,CAChC,MAAO,CACL,cAAAC,GACA,OAAAC,GACA,cAAAC,EACF,CACF,CAEA,SAASF,IAAgB,CACvB,IAAMG,EAAS,gBACf,MAAO,CACL,eAAgB,KAA8B,CAC5C,MAAO,CAAC,CAAE,MAAAC,CAAM,IACd,IAAIC,EAAqB,CACvB,OAAQF,EACR,KAAM,iBACN,KAAM,CAACC,CAAK,EAEZ,UAAW,MAAOE,GAChBA,EAAS,gBAAgB,EAAE,eAAe,SAAS,CACvD,CAAC,CACL,GACA,kBAAmB,KAA8B,CAC/C,MAAO,CAAC,CAAE,MAAAF,CAAM,IACd,IAAIC,EAAqB,CACvB,OAAQF,EACR,KAAM,oBACN,KAAM,CAACC,CAAK,EAEZ,UAAW,MAAOE,GAChBA,EAAS,gBAAgB,EAAE,eAAe,SAAS,CACvD,CAAC,CACL,EACF,CACF,CAEA,SAASL,IAAS,CAChB,MAAO,CACL,MAAO,KAA8B,CACnC,MAAO,CAAC,CAAE,MAAAG,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,CAEA,SAASJ,IAAgB,CACvB,MAAO,CACL,MAAO,KAA8B,CACnC,MAAO,CAAC,CAAE,MAAAE,CAAM,IAAM,CACpB,IAAMG,EAAgB,CACpB,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,gBAAiB,CACf,SAAU,CACR,QAAS,CACX,CACF,CACF,EACAC,EAAoBJ,CAAe,CACrC,CACF,CACF,EACA,OAAO,IAAIC,EAAqB,CAC9B,OAAQ,gBACR,KAAM,QACN,KAAM,CAACE,CAAa,EACpB,UAAW,MACTD,GAEAA,EAAS,gBAAgB,EAAE,WAAW,SAAS,CACnD,CAAC,CACH,CACF,EACF,CACF,CCpFA,IAAAG,EAAyB,0BACzBC,EAA6B,iCCR7B,IAAAC,EAAqC,uCACrCC,EAAmC,0BACnCC,EAA4C,iCCMrC,IAAMC,EAAN,cAA6BC,CAAW,CAEpC,KAEA,QAET,YAAY,CAAE,KAAAC,EAAM,QAAAC,EAAS,GAAGC,CAAM,EAAoC,CACxE,MAAM,CAAE,GAAGA,EAAO,UAAmB,CAAC,EAEtC,KAAK,KAAOF,EACZ,KAAK,QAAUC,CACjB,CACF,EDdA,IAAME,EAAW,sBAEV,SAASC,GAAU,CACxB,MAAO,CACL,SAAU,CAACC,EAASF,KAAqC,CACvD,MAAO,CAAC,CAAE,QAAAG,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,CAAY,IAC5C,IAAIC,EAAe,CACjB,KAAM,IACJ,YAASF,CAAK,KAAI,wBAAqBA,CAAK,EAAIA,EAChDD,EACAI,EAA4BL,EAASG,CAAW,EAChDJ,CACF,EACA,KAAM,WACN,OAAQ,SACV,CAAC,CACL,GACA,wBAAyB,CAACA,EAASF,KAAqC,CACtE,MAAO,CAAC,CAAE,QAAAG,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,EAAa,IAAAG,EAAK,SAAAC,CAAS,IAC3D,IAAIH,EAAe,CACjB,KAAM,CACJ,CACE,IAAC,YAASF,CAAK,KAAI,wBAAqBA,CAAK,EAAIA,EAAOD,CAAM,EAC9D,IACE,YAASM,CAAQ,KAAI,wBAAqBA,CAAQ,EAAIA,EACtDD,CACF,CACF,EACA,EACAD,EAA4BL,EAASG,CAAW,EAChDJ,CACF,EACA,KAAM,0BACN,OAAQ,SACV,CAAC,CACL,GACA,oBAAqB,CAACA,EAASF,KAAqC,CAClE,MAAO,CAAC,CAAE,QAAAG,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,CAAY,IAAM,CAClD,IAAMK,EACJC,GACET,EACAG,CACF,EAEF,OAAO,IAAIC,EAAe,CACxB,KAAM,IACJ,YAASF,CAAK,KAAI,wBAAqBA,CAAK,EAAIA,EAChDD,EACAO,EACAT,CACF,EACA,KAAM,WACN,OAAQ,SACV,CAAC,CACH,CACF,EACF,CACF,CAmCA,SAASU,GACPT,EACAG,EAC0B,CAM1B,IAAMO,EAAc,KACdC,KAAmB,gBAAaX,CAAO,EACvCY,EAAM,KAAKF,CAAW,MAAG,eAC7B,iBAAcC,CAAgB,EAC9B,GACA,EACF,CAAC,KAED,MAAO,CACL,EACAR,EAAY,YACR,CAAC,YAAYA,EAAY,YAAY,SAAS,EAAE,CAAC,GAAIS,CAAG,EACxD,CAACA,CAAG,CACV,CACF,CAEA,SAASP,EACPL,EACAG,EAC0B,CAO1B,IAAMS,EAAM,KADQT,EAAY,eAAe,EAAI,KAAO,IAC9B,MAAG,eAC7B,iBAAcH,CAAO,EACrB,GACA,EACF,CAAC,KAED,MAAO,CACL,EACAG,EAAY,YACR,CAAC,YAAYA,EAAY,YAAY,SAAS,EAAE,CAAC,GAAIS,CAAG,EACxD,CAACA,CAAG,CACV,CACF,CEjJO,SAASC,IAAkB,CAChC,MAAO,CACL,QAAAC,CACF,CACF,CHeO,SAASC,IAAiB,CAC/B,MAAO,CACL,IAAAC,EACA,UAAAC,CACF,CACF,CAEO,SAASD,GAAM,CACpB,MAAO,CACL,MAAAE,EACF,CACF,CAEO,SAASD,GAAY,CAC1B,MAAO,CACL,OAAAE,GACA,cAAAC,GACA,OAAAC,GACA,OAAAC,EACF,CACF,CAEA,SAASJ,IAA8B,CACrC,MAAO,CACL,MAAO,CAAC,CAAE,QAAAK,EAAS,MAAAC,CAAM,IAAM,CAC7B,GAAI,CAACA,GAAS,IAAC,YAASA,CAAK,EAC3B,MAAM,IAAI,MAAM,6BAA6BA,CAAK,EAAE,EAGtD,OAAO,IAAIC,EAAe,CACxB,QAASD,EACT,KAAM,CAACD,CAAO,EACd,KAAM,YACN,OAAQ,OACV,CAAC,CACH,CACF,CACF,CAEA,SAASJ,IAAS,CAChB,MAAO,CACL,QAAS,KAA6B,CACpC,MAAO,CAAC,CAAE,QAAAI,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,SAASP,IAAgB,CACvB,MAAO,CACL,QAAS,KAA6B,CACpC,MAAO,CAAC,CAAE,QAAAG,EAAS,MAAAC,CAAM,IAAM,CAC7B,IAAMI,EAAgB,CACpB,QAAS,EACT,SAAU,CACR,GAAI,CACF,CAAE,gBAAiB,CAAE,SAAU,CAAE,QAAS,CAAE,CAAE,CAAE,EAChDC,EAAoBL,CAAe,CACrC,CACF,CACF,EAEA,OAAO,IAAIE,EAAqB,CAC9B,OAAQ,gBACR,KAAM,UACN,KAAM,CAACE,EAAeL,CAAO,EAC7B,UAAW,MACTI,GACoBA,EAAS,gBAAgB,EAAE,QAAQ,SAAS,CACpE,CAAC,CACH,CACF,EACF,CACF,CAEA,SAASN,IAAS,CAChB,MAAO,CACL,QAAS,KAA6B,CACpC,MAAO,CAAC,CAAE,QAAAE,CAAQ,IAChB,IAAIG,EAAqB,CACvB,OAAQ,SACR,KAAM,UACN,KAAM,CAACH,CAAO,EACd,UAAW,MACTI,GACoBG,EAA8BH,CAAQ,CAC9D,CAAC,CACL,GACA,mBAAoB,KAA6B,CAC/C,MAAO,CAAC,CAAE,QAAAJ,EAAS,MAAAC,CAAM,IACvB,IAAIE,EAAqB,CACvB,OAAQ,SACR,KAAM,UACN,KAAM,CAACH,CAAO,EACd,UAAW,MAAOI,GAA8B,CA1H1D,IAAAI,EA2HY,GAAIJ,EAAS,KAAK,QAChB,OAAO,GAGT,IAAMK,EAAML,EAAS,KAAK,OAAO,EAC7BM,EAYJ,GAVI,MAAM,QAAQD,CAAG,IACnBC,EAAWD,GAIT,MAAM,SAASD,EAAAC,GAAA,YAAAA,EAAa,KAAb,YAAAD,EAAiB,OAAO,IAEzCE,EAAYD,EAAY,GAAG,SAGzB,CAACC,EACH,MAAM,IAAI,MAAM,0CAA0C,EAG5D,IAAMC,EAAUD,EAAS,KAAK,CAAC,CAACE,CAAO,IAAMA,IAAYX,CAAK,EAE9D,OAAKU,EAIE,OAAOA,EAAQ,CAAC,EAAE,QAAQ,EAHxB,EAIX,CACF,CAAC,CACL,GACA,eAAgB,KAA6B,CAC3C,MAAO,CAAC,CAAE,QAAAX,CAAQ,IAAM,CACtB,IAAMa,KAAmB,gBAAab,CAAO,EAE7C,OAAO,IAAIG,EAAqB,CAC9B,OAAQ,SACR,KAAM,UACN,KAAM,CAACU,CAAgB,EACvB,UAAW,MACTT,GACoBG,EAA8BH,CAAQ,CAC9D,CAAC,CACH,CACF,EACF,CACF,CAEA,SAASL,IAAS,CAChB,MAAO,CACL,SAAU,KAA6B,CACrC,MAAO,CAAC,CAAE,QAAAC,EAAS,MAAAC,CAAM,IACvB,IAAIE,EAAqB,CACvB,OAAQ,SACR,KAAM,WACN,KAAM,CAACH,EAASC,CAAK,EACrB,UAAW,MAAO,CAChB,KAAAa,EACA,OAAAC,CACF,IACE,OAAOD,EAAK,IAAIC,CAAM,EAAE,SAAS,CAAC,CACtC,CAAC,CACL,EACF,CACF,CAEA,eAAsBR,EACpBH,EACiB,CACjB,IAAMO,EAAUP,EAAS,KAGnBU,EAAO,OAAOH,EAAQ,KAAK,SAAS,CAAC,EACrCI,EAASJ,EAAQ,YAAcA,EAAQ,OACvCK,EAAsB,OAAOD,EAAO,IAAIJ,EAAQ,QAAQ,EAAE,SAAS,CAAC,EACpEM,EAASD,EAAsB,GAAK,GAAKA,EAE/C,OAAOF,EAAOG,CAChB,CI/LO,IAAMC,EAAN,cAA8BC,CAAW,CAE9C,QAEA,YAAY,CAAE,QAAAC,EAAS,GAAGC,CAAM,EAAqC,CACnE,MAAM,CAAE,GAAGA,EAAO,gBAAyB,CAAC,EAE5C,KAAK,QAAUD,CACjB,CACF,ECRA,IAAME,EAAS,aAER,SAASC,GAAa,CAC3B,MAAO,CACL,YAAa,KAA+B,CAC1C,MAAO,CAAC,CAAE,QAAAC,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,CAAY,IAC5C,IAAIC,EAAgB,CAClB,OAAQN,EACR,KAAM,cACN,QAAS,IAAM,CACbI,EACAD,EACA,CACE,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWE,EAAY,WACzB,EACAE,EAAoBL,CAAO,CAC7B,CACF,CACF,EACA,gBACF,CACF,CAAC,CACL,GACA,YAAa,KAA+B,CAC1C,MAAO,CAAC,CAAE,QAAAA,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,EAAa,IAAAG,EAAK,SAAAC,CAAS,IAC3D,IAAIH,EAAgB,CAClB,OAAQN,EACR,KAAM,cACN,QAAS,IAAM,CACb,IAAMU,EAAmBP,EAASK,EAAM,GAAKL,EAASK,EAAM,GAE5D,MAAO,CACL,CAACJ,EAAOA,IAAUK,EAAWC,EAAmBP,CAAM,EACtD,CAACM,EAAUD,CAAG,EACd,CACE,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWH,EAAY,WACzB,EACAE,EAAoBL,CAAO,CAC7B,CACF,CACF,CACF,CACF,CACF,CAAC,CACL,EACF,CACF,CC9CO,SAASS,EAA4B,CAC1C,MAAAC,EACA,QAAAC,EACA,YAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,EACV,SAAAC,EAAW,CAEb,EAA8B,CAE5B,IAAMC,EAAUC,EAA4BJ,CAAI,EAEhD,MAAO,CACL,CACE,CAACG,CAAO,EAAG,CACT,QAAAF,EACA,SAAU,CACR,GAAI,CACF,UAAWF,EAAY,WACzB,CACF,CACF,CACF,EACA,CACE,CAACI,CAAO,EAAG,CACT,QAAS,EACT,SAAU,CACR,GAAIE,EAAoBP,CAAO,CACjC,CACF,CACF,EACA,CACE,CAACK,CAAO,EAAGN,CACb,EACAK,EACA,WACF,CACF,CAEO,SAASI,EAA2B,CACzC,MAAAT,EACA,SAAAU,CACF,EAAyC,CACvC,IAAMC,EAAgB,OAAOX,CAAK,EAC5BY,EAAmB,OAAOF,CAAQ,EAExC,OAAI,OAAO,MAAMC,CAAa,GAAK,OAAO,MAAMC,CAAgB,EACvD,GAGFD,EAAgBC,CACzB,CC1DA,IAAMC,EAAS,cAER,SAASC,GAAc,CAC5B,MAAO,CACL,6BAA8B,IAAM,CAClC,IAAMC,EAAO,+BAEb,MAAO,CACL,KAAM,KAA+B,CACnC,MAAQC,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,KAAME,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,MACZ,CACF,EACA,IAAK,CACH,SAAUF,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAQA,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,KAAME,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,eAAgBF,EAAO,cACzB,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUA,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAQA,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GAAsB,CAC9B,IAAME,EACJ,CAAC,CAACJ,EAAO,UAAYA,EAAO,QAAUA,EAAO,SACzCK,EAAS,CACb,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,eAAgBL,EAAO,cACzB,EACA,CACE,aAAcA,EAAO,KACvB,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUA,EAAO,MACnB,CACF,CACF,EAEMM,EACJC,EAA2BP,CAAM,EAEnC,GAAII,EAAkB,CACpB,IAAMI,EAAW,CACf,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,eAAgBR,EAAO,cACzB,EACA,CACE,aAAcA,EAAO,QACvB,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUA,EAAO,GACnB,CACF,EAEIM,EACFD,EAAO,QAAQG,CAAQ,EAEvBH,EAAO,KAAKG,CAAQ,CAExB,CAEA,OAAOL,EAA4B,CACjC,GAAGH,EACH,KAAME,EACN,MAAOG,EACP,SAAUD,GAAoB,CAACE,EAAwB,EAAI,CAC7D,CAAC,CACH,CACF,CAAC,CACL,EACF,CACF,EACA,6BAA8B,IAAM,CAClC,IAAMP,EAAO,+BAEb,MAAO,CACL,GAAI,KAA+B,CACjC,MAAQC,GACN,IAAIC,EAAgB,CAClB,OAAQJ,EACR,KAAAE,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,KAAME,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWF,EAAO,YAAY,WAChC,EACA,CACE,eAAgBA,EAAO,cACzB,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUA,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,EACF,CACF,EACA,cAAe,IAAM,CACnB,IAAMD,EAAO,iBAEb,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,EACF,CACF,EACA,+BAAgC,IAAM,CACpC,IAAMD,EAAO,iCACb,MAAO,CAGL,wBAAyB,KAA+B,CACtD,MAAO,CAAC,CAAE,YAAAU,EAAa,QAAAC,EAAS,OAAAC,EAAQ,MAAAC,CAAM,IAAM,CAClD,IAAMC,OACN,OAAO,IAAIZ,EAAgB,CACzB,OAAQJ,EACR,KAAAE,EAEA,QAAS,IAAM,CACb,CACE,CAACc,CAAO,EAAG,CACT,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWJ,EAAY,WACzB,CACF,CACF,CACF,CACF,EACA,CACE,CAACI,CAAO,EAAG,CACT,CACE,GAAI,CACF,QAAS,EACT,SAAU,CACR,GAAI,CACF,CAAE,gBAAiB,CAAE,SAAU,CAAE,QAAS,CAAE,CAAE,CAAE,EAChDC,EAAoBF,CAAe,CACrC,CACF,CACF,EACA,IAAK,CAAE,SAAUD,CAAO,CAC1B,CACF,CACF,EACA,eACA,CACE,CAACE,CAAO,EAAG,CACT,QAAS,EACT,SAAU,CACR,GAAI,CACF,CAAE,gBAAiB,CAAE,SAAU,CAAE,QAAS,CAAE,CAAE,CAAE,EAChDC,EAAoBF,CAAe,CACrC,CACF,CACF,CACF,EACA,eACA,CACE,CAACC,CAAO,EAAG,CACT,CACE,aAAc,CACZ,OAAQ,CACN,KAAM,CAAE,WAAY,CAAE,CACxB,EACA,YAAa,CACX,QAAS,EACT,SAAU,CACR,GAAI,CAACC,EAAoBJ,CAAO,CAAC,CACnC,CACF,CACF,CACF,CACF,CACF,EACA,WACF,CACF,CAAC,CACH,CACF,EACF,CACF,CACF,CACF,CClSO,SAASK,GAAgC,CAC9C,MAAO,WACT,CAEO,SAASC,EACdC,EACAC,EACAC,EACA,CACA,MAAO,CACL,CAACF,CAAO,EAAG,CACT,QAAS,EAET,SAAU,CACR,GAAI,CACF,CACE,UAAWE,EAAY,WACzB,EACAC,EAAoBF,CAAO,CAC7B,CACF,CACF,CACF,CACF,CCtBA,IAAMG,EAAS,UAER,SAASC,GAAU,CACxB,MAAO,CACL,SAAU,KAA+B,CACvC,MAAO,CAAC,CAAE,QAAAC,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,CAAY,IAC5C,IAAIC,EAAgB,CAClB,OAAQN,EACR,KAAM,WACN,QAAUO,GAAS,CACjB,IAAMC,EAAUC,EAA4BF,EAAM,CAAC,EAEnD,MAAO,CACLH,EACAD,EACAO,EAAeF,EAASN,EAASG,CAAW,EAC5CM,EAAU,CACZ,CACF,CACF,CAAC,CACL,GACA,mBAAqBC,GAA8B,CACjD,IAAMC,EAAW,qBAEjB,MAAO,CACL,KAAM,KAA+B,CACnC,MAAO,CAAC,CAAE,QAAAX,EAAS,OAAAC,EAAQ,YAAAE,CAAY,IACrC,IAAIC,EAAgB,CAClB,OAAQN,EACR,KAAMa,EACN,QAAUN,GAAS,CACjB,IAAMC,EAAUC,EAA4BF,EAAM,CAAC,EAEnD,MAAO,CACL,CACE,CAACC,CAAO,EAAG,CACT,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,MACZ,CACF,EACA,IAAK,CACH,SAAUL,CACZ,CACF,CACF,EACAO,EAAeF,EAASN,EAASG,CAAW,EAC5CM,EAAU,CACZ,CACF,CACF,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAO,CAAC,CAAE,QAAAT,EAAS,OAAAC,EAAQ,YAAAE,CAAY,IACrC,IAAIC,EAAgB,CAClB,OAAQN,EACR,KAAMa,EACN,QAAUN,GAAS,CACjB,IAAMC,EAAUC,EAA4BF,EAAM,CAAC,EAEnD,MAAO,CACL,CACE,CAACC,CAAO,EAAG,CACT,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,UAAWI,CACb,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUT,CACZ,CACF,CACF,EACAO,EAAeF,EAASN,EAASG,CAAW,EAC5CM,EAAU,CACZ,CACF,CACF,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAO,CAAC,CAAE,QAAAT,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,CAAY,IAC5C,IAAIC,EAAgB,CAClB,OAAQN,EACR,KAAMa,EACN,QAAUN,GAAS,CACjB,IAAMC,EAAUC,EAA4BF,EAAM,CAAC,EAEnD,MAAO,CACL,CACE,CAACC,CAAO,EAAG,CACT,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWI,CACb,EACA,CACE,WAAYR,CACd,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUD,CACZ,CACF,CACF,EACAO,EAAeF,EAASN,EAASG,CAAW,EAC5CM,EAAU,CACZ,CACF,CACF,CAAC,CACL,EACF,CACF,EACA,wBAAyB,KAA+B,CACtD,MAAO,CAAC,CAAE,QAAAT,EAAS,OAAAC,EAAQ,MAAAC,EAAO,YAAAC,EAAa,IAAAS,EAAK,SAAAC,CAAS,IAC3D,IAAIT,EAAgB,CAClB,OAAQN,EACR,KAAM,0BACN,QAAS,IAAM,CACb,CACE,CAACI,EAAOD,CAAM,EACd,CAACY,EAAUD,CAAG,CAChB,EACA,EACAJ,OAA8BR,EAASG,CAAW,EAClDM,EAAU,CACZ,CACF,CAAC,CACL,EACF,CACF,CCjJA,IAAMK,EAAS,YAER,SAASC,GAAY,CAC1B,MAAO,CACL,SAAU,IAAM,CACd,IAAMC,EAAS,WAEf,MAAO,CACL,KAAM,KAA+B,CACnC,MAAO,CAAC,CAAE,QAAAC,EAAS,OAAAC,EAAQ,YAAAC,CAAY,IACrC,IAAIC,EAAgB,CAClB,OAAQN,EACR,KAAME,EACN,QAAS,IAAM,CACb,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,MACZ,CACF,EACA,IAAK,CACH,SAAUE,CACZ,CACF,EACA,CACE,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWC,EAAY,WACzB,EACAE,EAAoBJ,CAAO,CAC7B,CACF,CACF,EACA,CACE,QAAS,IACT,UAAW,CACb,CACF,CACF,CAAC,CACL,GACA,GAAI,KAA+B,CACjC,MAAO,CAAC,CAAE,QAAAA,EAAS,OAAAC,EAAQ,YAAAC,EAAa,eAAAG,CAAe,IACrD,IAAIF,EAAgB,CAClB,OAAQN,EACR,KAAME,EACN,QAAS,IAAM,CACb,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWG,EAAY,WACzB,EACA,CACE,eAAgBG,CAClB,CACF,CACF,CACF,CACF,EACA,IAAK,CACH,SAAUJ,GAAU,EACtB,CACF,EACA,CACE,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWC,EAAY,WACzB,EACAE,EAAoBJ,CAAO,CAC7B,CACF,CACF,EACA,CACE,QAAS,IACT,UAAW,CACb,CACF,CACF,CAAC,CACL,EACF,CACF,CACF,CACF,CCrFA,IAAMM,EAAS,YAER,SAASC,GAAY,CAC1B,MAAO,CACL,6BAA8B,CAACC,EAAmB,IAAM,CACtD,IAAMC,EAAO,+BAEb,MAAO,CACL,KAAM,KAA+B,CACnC,MAAQC,GACN,IAAIC,EAAgB,CAClB,OAAQL,EACR,KAAAG,EACA,QAAUG,GACRC,EAA4B,CAC1B,GAAGH,EACH,QAAAF,EACA,KAAMI,EACN,MAAO,CACL,CACE,GAAI,CACF,SAAU,CACR,QAAS,EACT,SAAU,MACZ,CACF,EACA,IAAK,CACH,SAAUF,EAAO,MACnB,CACF,CACF,CACF,CAAC,CACL,CAAC,CACL,EACF,CACF,EACA,+BAAgC,IAAM,CACpC,IAAMD,EAAO,iCAEb,MAAO,CACL,KAAM,KAA+B,CACnC,MAAQC,GACN,IAAIC,EAAgB,CAClB,OAAQL,EACR,KAAAG,EACA,QAAS,IAAM,CACb,IAAMK,OACN,MAAO,CACL,CACE,CAACA,CAAO,EAAG,CACT,QAAS,EACT,SAAU,CACR,GAAI,CACF,CACE,UAAWJ,EAAO,YAAY,WAChC,CACF,CACF,CACF,CACF,EACA,CACE,CAACI,CAAO,EAAG,CACT,CACE,GAAI,CACF,QAAS,EACT,SAAU,MACZ,EACA,IAAK,CACH,SAAUJ,EAAO,MACnB,CACF,CACF,CACF,EACA,eACA,CACE,CAACI,CAAO,EAAG,CACT,QAAS,EACT,SAAU,MACZ,CACF,EACA,eACA,CACE,CAACA,CAAO,EAAG,CACT,CACE,aAAc,CACZ,OAAQ,CACN,KAAM,CAAE,WAAY,CAAE,CACxB,EACA,YAAa,CACX,QAAS,EACT,SAAU,CACR,GAAI,CAACC,EAAoBL,EAAO,OAAO,CAAC,CAC1C,CACF,CACF,CACF,CACF,CACF,EACA,WACF,CACF,CACF,CAAC,CACL,EACF,CACF,CACF,CACF,CC3GO,SAASM,IAAmB,CACjC,MAAO,CACL,WAAAC,EACA,QAAAC,EACA,UAAAC,EACA,YAAAC,EACA,UAAAC,CACF,CACF,CCTO,IAAMC,EAAN,KAA0B,CACtB,IAGA,KAEA,iBAET,YAAY,CAAE,IAAAC,EAAK,KAAAC,CAAK,EAAyC,CAC/D,KAAK,IAAMD,EACX,KAAK,KAAOC,CACd,CACF,EClBA,IAAAC,EAA4B,uCAQ5B,IAAMC,EAAiB,IAAM,EACvBC,GACJ,qEAEIC,GAA6B,6CAE7BC,GAA8D,CAClE,SAAU,KACV,UAAW,KACX,iBAAkB,GACpB,EACMC,GAA2D,CAC/D,SAAU,MACV,UAAW,MACX,iBAAkB,IACpB,EAEMC,OAEN,SAASC,GAAU,CACjB,OAAOD,IAAgB,IACzB,CAEA,SAASE,GAAYC,EAAoC,CACvD,GAAI,CAACF,EAAQ,EACX,OAAOE,EAET,IAAMC,EAAsB,CAAE,GAAGD,CAAU,EAC3C,OACEC,EAAoB,UACpB,OAAOA,EAAoB,UAAa,UACxC,OAAQA,EAAoB,WAEvB,MAAM,QAAQA,EAAoB,SAAS,EAAE,IAChDA,EAAoB,SAAS,GAAK,CAACA,EAAoB,SAAS,EAAE,IAG/DA,CACT,CAEO,SAASC,GAA4BC,EAAsB,CAChE,MAAO,CACL,cAAeA,EAAW,IAAKH,IAAe,CAC5C,GAAI,CAAE,GAAGA,CAAU,EACnB,IAAK,CACH,SAAUR,CACZ,CACF,EAAE,CACJ,CACF,CAEO,SAASY,GAAoCD,EAAsB,CACxE,MAAO,CACL,sBAAuBA,EAAW,IAAKH,IAAe,CACpD,GAAI,CAAE,GAAGA,CAAU,EACnB,IAAK,CACH,SAAUR,CACZ,CACF,EAAE,CACJ,CACF,CAEO,SAASa,IAA4B,CAC1C,MAAO,CACL,YAAa,MACf,CACF,CAEO,SAASC,GAA2BN,EAAmB,CAG5D,MAAO,CACL,aAAc,CACZ,KAAM,CACJ,GAAI,CACF,GAAGA,CACL,EACA,IAAK,CACH,SAAUR,CACZ,CACF,EACA,aAAc,CACZ,UAAW,MACb,CACF,CACF,CACF,CAEO,SAASe,GAA2BC,EAAiBC,EAAkB,CAC5E,IAAMC,EAAa,CACjB,aAAc,CACZ,IAAKF,EACL,QAAS,IACX,CACF,EAEA,MAAO,CACL,aAAc,CACZ,OAAQ,CACN,KAAM,CACJ,WAAYC,EAAO,MACrB,CACF,EACA,YAAa,CACX,SAAU,CACR,GAAIX,EAAQ,EAAI,CAACY,CAAU,EAAIA,CACjC,EACA,QAAS,CACX,EACA,WAAY,CACd,CACF,CACF,CAEO,SAASC,IAAyB,CACvC,MAAO,CACL,SAAUlB,EACZ,CACF,CAEA,SAASmB,EAAqBC,EAAY,CACxC,MAAO,CACL,SAAU,CAAE,GAAGA,CAAG,CACpB,CACF,CAGA,SAASC,GAAiBC,EAA0B,CAClD,IAAMC,EAAiB,CACrB,eAAgBrB,GAAoCoB,CAAQ,CAC9D,EACMF,EAAK,CACT,SAAU,CACR,GAAIf,EAAQ,EAAI,CAACkB,CAAc,EAAIA,CACrC,EACA,QAAS,GACX,EAEA,OAAOlB,EAAQ,EAAIe,EAAKD,EAAqBC,CAAE,CACjD,CAEA,SAASI,GACPC,EACAH,EACQ,CACR,IAAMF,EAAK,CACT,SAAU,CACR,GAAI,CACF,CACE,eAAgBjB,GAAiCmB,CAAQ,CAC3D,EACA,CACE,aAAc,CACZ,IAAKG,EACL,QAAS,IACX,CACF,CACF,CACF,EACA,QAAS,GACX,EACA,OAAOpB,EAAQ,EAAIe,EAAKD,EAAqBC,CAAE,CACjD,CAEA,eAAsBM,GACpBC,EACAF,EACoD,CACpD,IAAMG,EACJ,MAAMD,EAAI,MAAM,aAAa,YAE3BF,CAAK,EAET,GAAIG,EAAK,QAAU,CAACA,EAAK,OAAO,EAAE,MAChC,MAAM,IAAI,MAAM,iCAAiCH,CAAK,EAAE,EAE1D,OAAOG,CACT,CAEA,eAAsBC,EACpBF,EACAF,EACAK,EACiB,CACjB,GAAIL,IAAUxB,GACZ,OAAOoB,GAAiBS,EAAM,GAAG,EAGnC,MAAI,eAAYL,CAAK,EACnB,OAAOD,GAAmCC,EAAOK,EAAM,GAAG,EAI5D,IAAMC,GADY,MAAML,GAAeC,EAAKF,CAAK,GACf,OAAO,EAAE,MAAM,OAAO,EAElDO,EAA4B1B,GAAYyB,CAAe,EAE7D,OAAO1B,EAAQ,EACX2B,EACAb,EAAqBa,CAAyB,CACpD,CAEA,eAAsBC,GACpBN,EACAO,EACAC,EACA,CACA,IAAMC,EAAoB,MAAMT,EAAI,KAAK,cAAc,eAErD,CACA,CAACvB,CAAW,EAAG8B,CACjB,CAAC,EACD,GAAI,CAACE,EAAkB,KACrB,MAAM,IAAI,MACR,uFACF,EAEF,IAAMC,EAAcD,EAAkB,KAEhCE,EACJ,MAAMX,EAAI,KAAK,cAAc,sBAE3BU,EAAa,CACb,CAACjC,CAAW,EAAG,CACb,GAAG+B,CACL,CACF,CAAC,EACH,GAAI,CAACG,EAAsB,KACzB,MAAM,IAAI,MACR,4FACF,EAEF,OAAOA,EAAsB,KAAK,SAAS,CAC7C,CCnOO,SAASC,IAAa,CAC3B,MAAO,CACL,cAAAC,EACF,CACF,CAEA,SAASA,IAAgB,CACvB,MAAO,CACL,cAAe,CAAC,CACd,oBAAAC,EACA,gCAAAC,EAAkC,EACpC,KAA6C,CAC3C,MAAO,CAAC,CAAE,QAAAC,EAAS,IAAAC,EAAK,SAAAC,EAAU,MAAAC,EAAO,cAAAC,CAAc,IACrD,IAAIC,EAAoB,CACtB,IAAAJ,EACA,KAAM,SAA6B,CACjC,IAAMK,EAAmB,MAAMC,EAC7BN,EACAC,EACAC,CACF,EACMK,EAA2B,MAAMD,EACrCN,EACAG,EACAD,CACF,EAKMM,EACJP,IAAaE,EAAgB,CAACE,CAAgB,EALxBP,EACpB,CAACS,EAA0BF,CAAgB,EAC3C,CAACA,EAAkBE,CAAwB,EAKzCE,GAAe,CACnBZ,EACIa,GAA4BF,CAAM,EAClCG,GAAoCH,CAAM,EAC9CI,GAA0B,EAC1BC,GAA2BR,CAAgB,EAC3CS,GAA2Bf,EAASS,CAAM,EAC1CO,GAAuB,CACzB,EAEA,OAAOC,GACLhB,EACAS,GACAJ,CACF,CACF,CACF,CAAC,CACL,EACF,CACF","names":["src_exports","__export","AssetMinBuilder","BalanceBuilder","BaseConfig","CallType","ContractBuilder","ContractConfig","ExtrinsicBuilder","ExtrinsicConfig","FeeBuilder","SubstrateQueryConfig","XcmVersion","calculateSystemAccountBalance","evm","substrate","__toCommonJS","import_api_augment","import_types","import_util","import_util_crypto","XcmVersion","getExtrinsicArgumentVersion","func","index","type","instance","raw","versions","x","getExtrinsicAccount","address","CallType","BaseConfig","module","func","type","SubstrateQueryConfig","BaseConfig","args","transform","type","other","AssetMinBuilder","assetRegistry","assets","foreignAssets","pallet","asset","SubstrateQueryConfig","response","multilocation","getExtrinsicAccount","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","foreignAssets","system","tokens","address","asset","ContractConfig","SubstrateQueryConfig","response","multilocation","getExtrinsicAccount","calculateSystemAccountBalance","_a","res","balances","balance","assetId","substrateAddress","free","frozen","frozenMinusReserved","locked","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","destination","address","amount","asset","version","getExtrinsicAccount","getWeight","getDestination","version","address","destination","getExtrinsicAccount","pallet","xTokens","address","amount","asset","destination","ExtrinsicConfig","func","version","getExtrinsicArgumentVersion","getDestination","getWeight","originParachainId","funcName","fee","feeAsset","pallet","xTransfer","method","address","amount","destination","ExtrinsicConfig","getExtrinsicAccount","palletInstance","pallet","xcmPallet","parents","func","params","ExtrinsicConfig","extrinsicFunction","getPolkadotXcmExtrinsicArgs","version","getExtrinsicAccount","ExtrinsicBuilder","eqBalances","xTokens","xTransfer","polkadotXcm","xcmPallet","SubstrateCallConfig","api","call","import_xcm_utils","DEFAULT_AMOUNT","DEFALUT_HEX_STRING","MOON_CHAIN_NATIVE_ASSET_ID","MOON_CHAIN_BALANCES_PALLET_INSTANCE","MOON_CHIAN_ERC20_PALLET_INSTANCE","XCM_VERSION","isXcmV4","normalizeX1","assetType","normalizedAssetType","getWithdrawAssetInstruction","assetTypes","getReserveAssetDepositedInstruction","getClearOriginInstruction","getBuyExecutionInstruction","getDepositAssetInstruction","address","assets","accountKey","getSetTopicInstruction","applyConcreteWrapper","id","getNativeAssetId","chainKey","palletInstance","getConcreteAssetIdWithAccountKey20","asset","getAssetIdType","api","type","getVersionedAssetId","chain","assetTypeObject","normalizedAssetTypeObject","getFeeForXcmInstructionsAndAsset","instructions","versionedAssetId","xcmToWeightResult","xcmToWeight","weightToForeingAssets","FeeBuilder","xcmPaymentApi","isAssetReserveChain","shouldTransferAssetPrecedeAsset","address","api","feeAsset","chain","transferAsset","SubstrateCallConfig","versionedAssetId","getVersionedAssetId","versionedTransferAssetId","assets","instructions","getWithdrawAssetInstruction","getReserveAssetDepositedInstruction","getClearOriginInstruction","getBuyExecutionInstruction","getDepositAssetInstruction","getSetTopicInstruction","getFeeForXcmInstructionsAndAsset"]}
package/build/index.d.cts DELETED
@@ -1,267 +0,0 @@
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
- foreignAssets: typeof foreignAssets$1;
45
- };
46
- declare function assetRegistry(): {
47
- assetMetadatas: () => AssetMinConfigBuilder;
48
- currencyMetadatas: () => AssetMinConfigBuilder;
49
- };
50
- declare function assets$1(): {
51
- asset: () => AssetMinConfigBuilder;
52
- };
53
- declare function foreignAssets$1(): {
54
- asset: () => AssetMinConfigBuilder;
55
- };
56
-
57
- interface ContractConfigConstructorParams extends Omit<BaseConfigConstructorParams, 'type'> {
58
- args: any[];
59
- address?: string;
60
- }
61
- declare class ContractConfig extends BaseConfig {
62
- readonly args: any[];
63
- readonly address?: string;
64
- constructor({ args, address, ...other }: ContractConfigConstructorParams);
65
- }
66
-
67
- interface ContractConfigBuilder {
68
- build: (params: ContractConfigBuilderPrams) => ContractConfig;
69
- }
70
- interface ContractConfigBuilderPrams {
71
- address: string;
72
- amount: bigint;
73
- asset: ChainAssetId;
74
- destination: AnyChain;
75
- fee: bigint;
76
- feeAsset: ChainAssetId;
77
- }
78
-
79
- declare function Xtokens(): {
80
- transfer: (weight?: bigint) => ContractConfigBuilder;
81
- transferMultiCurrencies: (weight?: bigint) => ContractConfigBuilder;
82
- transferWithEvmTo32: (weight?: bigint) => ContractConfigBuilder;
83
- };
84
-
85
- declare function ContractBuilder(): {
86
- Xtokens: typeof Xtokens;
87
- };
88
-
89
- interface BalanceConfigBuilder {
90
- build: (params: BalanceConfigBuilderPrams) => SubstrateQueryConfig | ContractConfig;
91
- }
92
- interface BalanceConfigBuilderPrams {
93
- address: string;
94
- asset: ChainAssetId;
95
- }
96
- interface PalletBalancesAccountDataOld extends Struct {
97
- readonly free: u128;
98
- readonly reserved: u128;
99
- readonly miscFrozen: u128;
100
- readonly feeFrozen: u128;
101
- }
102
- interface TokensPalletAccountData {
103
- free: u128;
104
- reserved: u128;
105
- frozen: u128;
106
- }
107
- type EquilibriumSystemBalanceData = Array<[
108
- number,
109
- {
110
- positive: number;
111
- }
112
- ]>;
113
-
114
- declare function BalanceBuilder(): {
115
- evm: typeof evm;
116
- substrate: typeof substrate;
117
- };
118
- declare function evm(): {
119
- erc20: typeof erc20;
120
- };
121
- declare function substrate(): {
122
- assets: typeof assets;
123
- foreignAssets: typeof foreignAssets;
124
- system: typeof system;
125
- tokens: typeof tokens;
126
- };
127
- declare function erc20(): BalanceConfigBuilder;
128
- declare function assets(): {
129
- account: () => BalanceConfigBuilder;
130
- };
131
- declare function foreignAssets(): {
132
- account: () => BalanceConfigBuilder;
133
- };
134
- declare function system(): {
135
- account: () => BalanceConfigBuilder;
136
- accountEquilibrium: () => BalanceConfigBuilder;
137
- accountEvmTo32: () => BalanceConfigBuilder;
138
- };
139
- declare function tokens(): {
140
- accounts: () => BalanceConfigBuilder;
141
- };
142
- declare function calculateSystemAccountBalance(response: FrameSystemAccountInfo): Promise<bigint>;
143
-
144
- interface ExtrinsicConfigConstructorParams extends Omit<BaseConfigConstructorParams, 'type'> {
145
- getArgs: (func?: SubmittableExtrinsicFunction<'promise'>) => any[];
146
- }
147
- declare class ExtrinsicConfig extends BaseConfig {
148
- getArgs: (func?: SubmittableExtrinsicFunction<'promise'>) => any[];
149
- constructor({ getArgs, ...other }: ExtrinsicConfigConstructorParams);
150
- }
151
-
152
- interface ExtrinsicConfigBuilder {
153
- build: (params: ExtrinsicConfigBuilderPrams) => ExtrinsicConfig;
154
- }
155
- interface ExtrinsicConfigBuilderPrams {
156
- address: string;
157
- amount: bigint;
158
- asset: ChainAssetId;
159
- destination: AnyChain;
160
- fee: bigint;
161
- feeAsset: ChainAssetId;
162
- palletInstance?: number;
163
- source: AnyChain;
164
- }
165
- declare enum XcmVersion {
166
- v1 = "V1",
167
- v2 = "V2",
168
- v3 = "V3",
169
- v4 = "V4"
170
- }
171
- type Parents = 0 | 1;
172
-
173
- declare function eqBalances(): {
174
- xcmTransfer: () => ExtrinsicConfigBuilder;
175
- transferXcm: () => ExtrinsicConfigBuilder;
176
- };
177
-
178
- declare function polkadotXcm(): {
179
- limitedReserveTransferAssets: () => {
180
- here: () => ExtrinsicConfigBuilder;
181
- X1: () => ExtrinsicConfigBuilder;
182
- X2: () => ExtrinsicConfigBuilder;
183
- };
184
- limitedReserveWithdrawAssets: () => {
185
- X2: () => ExtrinsicConfigBuilder;
186
- };
187
- trasferAssets: () => {
188
- here: () => ExtrinsicConfigBuilder;
189
- };
190
- transferAssetsUsingTypeAndThen: () => {
191
- globalConcensusEthereum: () => ExtrinsicConfigBuilder;
192
- };
193
- };
194
-
195
- declare function xTokens(): {
196
- transfer: () => ExtrinsicConfigBuilder;
197
- transferMultiAsset: (originParachainId: number) => {
198
- here: () => ExtrinsicConfigBuilder;
199
- X1: () => ExtrinsicConfigBuilder;
200
- X2: () => ExtrinsicConfigBuilder;
201
- };
202
- transferMultiCurrencies: () => ExtrinsicConfigBuilder;
203
- };
204
-
205
- declare function xTransfer(): {
206
- transfer: () => {
207
- here: () => ExtrinsicConfigBuilder;
208
- X2: () => ExtrinsicConfigBuilder;
209
- };
210
- };
211
-
212
- declare function xcmPallet(): {
213
- limitedReserveTransferAssets: (parents?: Parents) => {
214
- here: () => ExtrinsicConfigBuilder;
215
- };
216
- transferAssetsUsingTypeAndThen: () => {
217
- here: () => ExtrinsicConfigBuilder;
218
- };
219
- };
220
-
221
- declare function ExtrinsicBuilder(): {
222
- eqBalances: typeof eqBalances;
223
- xTokens: typeof xTokens;
224
- xTransfer: typeof xTransfer;
225
- polkadotXcm: typeof polkadotXcm;
226
- xcmPallet: typeof xcmPallet;
227
- };
228
-
229
- interface SubstrateCallConfigConstructorParams {
230
- api: ApiPromise;
231
- call: () => Promise<bigint>;
232
- }
233
- declare class SubstrateCallConfig {
234
- readonly api: ApiPromise;
235
- readonly call: () => Promise<any>;
236
- readonly type = CallType.Substrate;
237
- constructor({ api, call }: SubstrateCallConfigConstructorParams);
238
- }
239
-
240
- interface FeeConfigBuilder {
241
- build: (params: FeeConfigBuilderPrams) => SubstrateCallConfig;
242
- }
243
- interface FeeConfigBuilderPrams {
244
- address: string;
245
- api: ApiPromise;
246
- feeAsset: ChainAssetId;
247
- transferAsset: ChainAssetId;
248
- chain: AnyParachain;
249
- }
250
- interface XcmPaymentFeeProps {
251
- isAssetReserveChain: boolean;
252
- shouldTransferAssetPrecedeAsset?: boolean;
253
- }
254
- interface MoonbeamRuntimeXcmConfigAssetType extends Enum {
255
- readonly isXcm: boolean;
256
- readonly asXcm: StagingXcmV3MultiLocation;
257
- readonly type: 'Xcm';
258
- }
259
-
260
- declare function FeeBuilder(): {
261
- xcmPaymentApi: typeof xcmPaymentApi;
262
- };
263
- declare function xcmPaymentApi(): {
264
- xcmPaymentFee: ({ isAssetReserveChain, shouldTransferAssetPrecedeAsset, }: XcmPaymentFeeProps) => FeeConfigBuilder;
265
- };
266
-
267
- 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 };