@decentro-dev/polkadot-sufficient-assets 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decentro-dev/polkadot-sufficient-assets",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"description": "polkadot-sufficient-assets",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "./packages/client/dist/index.js",
|
|
@@ -74,7 +74,12 @@
|
|
|
74
74
|
"update-version:default": "./update_version.sh"
|
|
75
75
|
},
|
|
76
76
|
"type": "module",
|
|
77
|
-
"files": [
|
|
77
|
+
"files": [
|
|
78
|
+
"packages/client/dist",
|
|
79
|
+
"packages/client/README.md",
|
|
80
|
+
"packages/core/dist",
|
|
81
|
+
"packages/core/.papi"
|
|
82
|
+
],
|
|
78
83
|
"peerDependencies": {
|
|
79
84
|
"@types/react": "^17.0.0 || ^18.0.0",
|
|
80
85
|
"react": "^17.0.0 || ^18.0.0",
|
|
@@ -94,7 +99,9 @@
|
|
|
94
99
|
"typescript": "^5.6.2"
|
|
95
100
|
},
|
|
96
101
|
"lint-staged": {
|
|
97
|
-
"*.{js,ts,cjs,mjs,d.cts,d.mts,jsx,tsx,json,jsonc}": [
|
|
102
|
+
"*.{js,ts,cjs,mjs,d.cts,d.mts,jsx,tsx,json,jsonc}": [
|
|
103
|
+
"pnpm format:fix"
|
|
104
|
+
]
|
|
98
105
|
},
|
|
99
106
|
"packageManager": "pnpm@9.1.1",
|
|
100
107
|
"engines": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var L=Object.defineProperty;var _e=Object.getOwnPropertyDescriptor;var Xe=Object.getOwnPropertyNames;var De=Object.prototype.hasOwnProperty;var re=(e,t)=>{for(var s in t)L(e,s,{get:t[s],enumerable:!0})},K=(e,t,s,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Xe(t))!De.call(e,r)&&r!==s&&L(e,r,{get:()=>t[r],enumerable:!(n=_e(t,r))||n.enumerable});return e},k=(e,t,s)=>(K(e,t,"default"),s&&K(s,t,"default"));var Ee=e=>K(L({},"__esModule",{value:!0}),e);var b={};re(b,{CLIENTS_CACHE:()=>N,DESCRIPTORS_ALL:()=>M,Wallet:()=>B,chainDestIsBridge:()=>W,chains:()=>J,createChain:()=>m,createConfig:()=>He,createToken:()=>h,formatBalance:()=>Ge,formatDecimals:()=>fe,formatUnits:()=>ge,getApi:()=>Fe,getApiInner:()=>ye,getAssetConvertPlancks:()=>Se,getAssetIdByChain:()=>y,getAssetPalletByChain:()=>A,getChainById:()=>P,getClient:()=>Q,getClientCacheId:()=>pe,getDescriptors:()=>j,getExistentialDeposit:()=>et,getFeeAssetLocation:()=>xe,getParaChainClient:()=>ue,getRelayChainClient:()=>de,getTokenBalance:()=>st,getTokenIdFromXcmV3Multilocation:()=>V,getTransferExtrinsic:()=>rt,getXcmTransferExtrinsic:()=>lt,isApiAssetHub:()=>U,isApiRelay:()=>Je,isChainIdAssetHub:()=>T,isChainIdRelay:()=>q,isNumber:()=>Ye,isParachain:()=>C,isRelayChain:()=>g,isSystemChain:()=>I,isValidAddress:()=>Ze,parseLocationStrToLocation:()=>oe,parseUnits:()=>_,subscribeTokenBalance:()=>tt,tokens:()=>nt,wallet:()=>pt});module.exports=Ee(b);k(b,require("@polkadot-api/descriptors"),module.exports);var He=e=>e;var me=require("@polkadot-api/descriptors"),he=require("rxjs");var g=e=>e.type==="relay",I=e=>{if(e.type==="system"&&e.chainId){let t=Number(e.chainId);return t>0&&t<2e3}return!1},C=e=>e.type==="para"&&e.chainId?Number(e.chainId)>2e3:!1,oe=e=>{try{return JSON.parse(e)}catch{throw new Error(`Unable to parse ${e} as a valid location`)}},W=e=>{let t=oe(e),s=!1;return t?.interior&&(s=t.interior.X1?JSON.stringify(t.interior.X1).toLowerCase().includes("globalconsensus"):t.interior.X2?JSON.stringify(t.interior.X2).toLowerCase().includes("globalconsensus"):!1),s};var d=require("@polkadot-api/descriptors"),ae={polkadot:d.polkadot,kusama:d.kusama,rococo:d.rococo,westend:d.westend,paseo:d.paseo},ie={pah:d.pah,kah:d.kah,rah:d.rah,wah:d.wah,paseoah:d.paseoah},Ne={hdx:d.hdx},M={...ae,...ie,...Ne},T=e=>typeof e=="string"&&!!ie[e],q=e=>typeof e=="string"&&!!ae[e],j=e=>{if(M[e])return M[e]},P=(e,t)=>{let s=t.find(n=>n.id===e);if(!s)throw new Error(`Could not find chain ${e}`);return s};var m=e=>e;var J={};re(J,{hydration:()=>je,kusamaAssetHubChain:()=>Oe,kusamaChain:()=>Be,paseoAssetHubChain:()=>qe,paseoChain:()=>Me,polkadotAssetHubChain:()=>Ve,polkadotChain:()=>Ue,rococoAssetHubChain:()=>Ke,rococoChain:()=>$e,westendAssetHubChain:()=>We,westendChain:()=>Le});var Ue=m({id:"polkadot",name:"Polkadot",specName:"polkadot",wsUrls:["wss://polkadot-rpc.dwellir.com"],relay:"polkadot",type:"relay",chainId:null,logo:"./chains/dot.svg",blockExplorerUrl:"https://polkadot.subscan.io"}),Ve=m({id:"pah",name:"Polkadot Asset Hub",specName:"asset-hub-polkadot",wsUrls:["wss://polkadot-asset-hub-rpc.polkadot.io/"],relay:"polkadot",type:"system",chainId:1e3,logo:"./chains/pah.svg",blockExplorerUrl:"https://assethub-polkadot.subscan.io"}),Be=m({id:"kusama",name:"Kusama",specName:"kusama",wsUrls:["wss://kusama-rpc.polkadot.io"],relay:"kusama",type:"relay",chainId:null,logo:"./chains/ksm.svg",blockExplorerUrl:"https://kusama.subscan.io"}),Oe=m({id:"kah",name:"Kusama Asset Hub",specName:"asset-hub-kusama",wsUrls:["wss://kusama-asset-hub-rpc.polkadot.io"],relay:"kusama",type:"system",chainId:1e3,logo:"./chains/kah.svg",blockExplorerUrl:"https://assethub-kusama.subscan.io"}),$e=m({id:"rococo",name:"Rococo",specName:"rococo",wsUrls:["wss://rococo-rpc.polkadot.io"],relay:"rococo",type:"relay",chainId:null,logo:"./chains/roc.svg",blockExplorerUrl:"https://rococo.subscan.io"}),Ke=m({id:"rah",name:"Rococo Asset Hub",specName:"asset-hub-rococo",wsUrls:["wss://rococo-asset-hub-rpc.polkadot.io"],relay:"rococo",type:"system",chainId:1e3,logo:"./chains/rah.svg",blockExplorerUrl:"https://assethub-rococo.subscan.io"}),Le=m({id:"westend",name:"Westend",specName:"westend",wsUrls:["wss://westend-rpc.polkadot.io"],relay:"westend",type:"relay",chainId:null,logo:"./chains/wnd.svg",blockExplorerUrl:"https://westend.subscan.io",xcmExtrinsic:"limited_teleport_assets"}),We=m({id:"wah",name:"Westend Asset Hub",specName:"asset-hub-westend",wsUrls:["wss://westend-asset-hub-rpc.polkadot.io"],relay:"westend",type:"system",chainId:1e3,logo:"./chains/wah.svg",blockExplorerUrl:"https://assethub-westend.subscan.io"}),Me=m({id:"paseo",name:"Paseo",specName:"paseo-testnet",wsUrls:["wss://paseo.dotters.network"],relay:"paseo",type:"relay",chainId:null,logo:"./chains/pas.svg",blockExplorerUrl:"https://paseo.subscan.io"}),qe=m({id:"paseoah",name:"Paseo Asset Hub",specName:"asset-hub-paseo",wsUrls:["wss://asset-hub-paseo-rpc.dwellir.com"],relay:"paseo",type:"system",chainId:1e3,logo:"./chains/pah.svg",blockExplorerUrl:"https://assethub-paseo.subscan.io"}),je=m({id:"hdx",name:"Hydration",specName:"hydradx",wsUrls:["wss://hydration-rpc.n.dwellir.com/","wss://rpc.hydradx.cloud","wss://hydradx-rpc.dwellir.com","wss://rpc.helikon.io/hydradx","wss://hydration.dotters.network"],relay:"polkadot",chainId:2034,logo:"./chains/pah.svg",blockExplorerUrl:"https://hydration.subscan.io",type:"para"});var R=require("polkadot-api"),Y=require("polkadot-api/ws-provider/web");var v=(e,t)=>t?t[e]!==void 0:!1,z=new Map,H=(e,t)=>{if(!t)throw new Error("chainSpecs is not provided in lightClients config");if(!v(e,t))throw new Error(`Unknown chain: ${e}`);return!z.has(e)&&t?.[e]&&z.set(e,t?.[e]),z.get(e)};var le=require("polkadot-api/sm-provider"),F=new Map,ce=async(e,{chainId:t,chainSpec:s},n)=>{let r=e.addChain({chainSpec:s,potentialRelayChains:n?[n]:void 0});return F.has(t)||F.set(t,r),F.get(t)},G=async(e,t,s)=>{let n=s?await ce(e,s):void 0,r=await ce(e,t,n);return(0,le.getSmProvider)(r)};var pe=(e,{lightClients:t})=>`${e}-${t?.enable??"false"}`,N=new Map,Q=(e,t,s)=>{let n=pe(e,s);if(!N.has(n)){let r=P(e,t);N.set(n,g(r)?de(r,s):ue(r,s))}return N.get(n)},de=async(e,t)=>{if(!t.lightClients||!t.lightClients.enable||!v(e.id,t?.lightClients?.chainSpecs))return(0,R.createClient)((0,Y.getWsProvider)(e.wsUrls));let{smoldot:s,chainSpecs:n}=t.lightClients,r=H(e.id,n),o=await G(s,{chainId:e.id,chainSpec:r});return(0,R.createClient)(o)},ue=async(e,t)=>{if(!e.relay)throw new Error(`Chain ${e.id} does not have a relay chain`);let{id:s,relay:n}=e,r=t?.lightClients?.chainSpecs;if(!t.lightClients||!t.lightClients.enable||!v(s,r)||!v(n,r))return(0,R.createClient)((0,Y.getWsProvider)(e.wsUrls));let{chainSpecs:o,smoldot:a}=t.lightClients,[i,c]=[H(n,o),H(s,o)];return(0,R.createClient)(await G(a,{chainId:e.id,chainSpec:c},{chainId:n,chainSpec:i}))};var U=e=>T(e.chainId),Je=e=>q(e.chainId),ye=async(e,t,s)=>{let n=P(e,s),r=j(n.id),o=await Q(e,s,{lightClients:t});if(!o)throw new Error(`Could not create client for chain ${e}/${t}`);let a=o.getTypedApi(r??me.polkadot);return a.chainId=e,a.chain=n,a.waitReady=new Promise((i,c)=>{(0,he.firstValueFrom)(o.bestBlocks$).then(()=>i()).catch(c)}),a},ze=(e,t)=>`${e}-${t?.enable??"false"}`,Z=new Map,Fe=async(e,t=[],s=!0,n)=>{let r=ze(e,n);Z.has(r)||Z.set(r,ye(e,n,t));let o=await Z.get(r);return s&&await o.waitReady,o};var h=e=>e;var fe=(e,t=4)=>{try{if(e==null)return"";let s=Number(e);if(isNaN(s))throw new Error(`Invalid number: ${e}`);if(s===0)return"0";let n=1/10**t;return s<n?`< ${n.toFixed(t)}`:Intl.NumberFormat("en-US",{notation:"compact",maximumSignificantDigits:t>0?t:void 0}).format(Number(Number(e).toFixed(t)))}catch(s){throw console.error("formatDecimals",{err:s,num:e,digits:t}),s}},ge=(e,t=10)=>{if(!e)return"0";let s=e.toString(),n=s.startsWith("-");n&&(s=s.slice(1)),s=s.padStart(t,"0");let[r,o]=[s.slice(0,s.length-t),s.slice(s.length-t)];return o=o.replace(/(0+)$/,""),`${n?"-":""}${r||"0"}${o?`.${o}`:""}`},Ge=(e,t=10,s=4)=>{let n=ge(e,t);return fe(n,s)};function _(e,t=10){if(!/^(-?)([0-9]*)\.?([0-9]*)$/.test(e))throw new Error("Invalid value");let[s,n="0"]=e.split("."),r=s.startsWith("-");if(r&&(s=s.slice(1)),n=n.replace(/(0+)$/,""),t===0)Math.round(+`.${n}`)===1&&(s=`${BigInt(s)+1n}`),n="";else if(n.length>t){let[o,a,i]=[n.slice(0,t-1),n.slice(t-1,t),n.slice(t)],c=Math.round(+`${a}.${i}`);c>9?n=`${BigInt(o)+BigInt(1)}0`.padStart(o.length+1,"0"):n=`${o}${c}`,n.length>t&&(n=n.slice(1),s=`${BigInt(s)+1n}`),n=n.slice(0,t)}else n=n.padEnd(t,"0");return BigInt(`${r?"-":""}${s}${n}`)}var Ye=e=>{if(!e)return!1;if(e.length<Number.MAX_SAFE_INTEGER.toString().length){let t=Number.parseInt(e);return!Number.isNaN(t)}try{BigInt(e)}catch{return!1}return!0};var Ie=require("polkadot-api"),Qe=(0,Ie.AccountId)().enc,Ze=e=>{try{return e?(Qe(e),!0):!1}catch{return!1}};var y=(e,t)=>(e.assetIds?.[t]??e.assetId)?.toString(),A=(e,t)=>e.assetPallet?.[t];var V=(e,t)=>{let{interior:s}=t;if(s.type==="Here")return{type:"native",assetId:void 0};if(s.type==="X2"&&s.value.some(n=>n.type==="PalletInstance"&&n.value===50)){for(let n of s.value)if(n.type==="GeneralIndex")return{type:"asset",assetId:Number(n.value)}}return T(e)?{type:"foreign-asset",location:()=>t}:null};var et=async(e,t)=>{switch(e.type){case"asset":{let s=y(e,t.chainId);if(!s)throw new Error(`Token ${e.symbol} does not have an assetId`);if(A(e,t.chainId)==="assets"){let r=await t.query.Assets.Asset.getValue(Number(s),{at:"best"});if(r?.min_balance)return r.min_balance}return 0n}case"native":{let s=await t.constants.Balances.ExistentialDeposit();return s||0n}default:throw new Error(`Unsupported token type: ${e.symbol}`)}};var tt=(e,t,s,n)=>{if(!s||!e||!t)return;let r,o=e.chainId,a={assets:()=>{let c=t.assetIds?.[o]??t.assetId;return c?e.query.Assets.Account.watchValue(Number(c),s,"best").subscribe(l=>{let f=l?.status.type==="Liquid"?l.balance:0n;n?.(f)}):null},system:()=>e.query.System.Account.watchValue(s,"best").subscribe(c=>{let l=c.data.free-c.data.frozen;n?.(l)}),balances:()=>t.assetIds?.[o]??t.assetId?e.query.Balances.Account.watchValue(s,"best").subscribe(l=>{let f=l.free-l.frozen;n?.(f)}):null,tokens:()=>{let c=t.assetIds?.[o]??t.assetId;return c?e.query.Tokens.Accounts.watchValue(s,Number(c),"best").subscribe(l=>{let f=l.free-l.frozen;n?.(f)}):null},ormlTokens:()=>{let c=t.assetIds?.[o]??t.assetId;return c?e.query.OrmlTokens.Accounts.watchValue(s,Number(c),"best").subscribe(l=>{let f=l.free-l.frozen;n?.(f)}):null}},i=A(t,o);return i?r=a[i]():t.type!=="native"&&t.assetId?r=a.assets():r=a.system(),r},st=async(e,t,s)=>{if(!s||!e||!t)return;let n=e.chainId,r={assets:()=>{let a=t.assetIds?.[n]??t.assetId;return a?e.query.Assets.Account.getValue(Number(a),s,{at:"best"}).then(i=>i?.status.type==="Liquid"?i.balance:0n):null},system:()=>e.query.System.Account.getValue(s,{at:"best"}).then(a=>a.data.free-a.data.frozen),balances:()=>t.assetIds?.[n]??t.assetId?e.query.Balances.Account.getValue(s,{at:"best"}).then(i=>i.free-i.frozen):null,tokens:()=>{let a=t.assetIds?.[n]??t.assetId;return a?e.query.Tokens.Accounts.getValue(s,Number(a),{at:"best"}).then(i=>i.free-i.frozen):null},ormlTokens:()=>{let a=t.assetIds?.[n]??t.assetId;return a?e.query.OrmlTokens.Accounts.getValue(s,Number(a),{at:"best"}).then(i=>i.free-i.frozen):null}},o=A(t,n);return o?r[o]():t.type!=="native"&&t.assetId?r.assets():r.system()};var nt={WND:h({type:"native",decimals:12,symbol:"WND",name:"Westend",logo:"./img/tokens/WND.svg",isSufficient:!0}),ROC:h({type:"native",decimals:12,symbol:"ROC",name:"Rococo",logo:"./img/tokens/ROC.svg",isSufficient:!0}),KSM:h({type:"native",decimals:12,symbol:"KSM",name:"Kusama",logo:"./img/tokens/KSM.svg",isSufficient:!0}),KSM_PAH:h({type:"native",decimals:12,symbol:"KSM",name:"Kusama",logo:"./img/tokens/KSM.svg",isSufficient:!0}),DOT:h({type:"native",decimals:10,symbol:"DOT",name:"Polkadot",logo:"./img/tokens/DOT.svg",isSufficient:!0}),PAS:h({type:"native",decimals:10,symbol:"PAS",name:"Paseo",logo:"./img/tokens/PAS.svg",isSufficient:!0}),USDC:h({type:"asset",assetId:1337,decimals:6,symbol:"USDC",name:"USDC Coin",logo:"./img/tokens/USDC.svg",isSufficient:!0}),WND_USDC:h({type:"asset",assetId:31337,decimals:6,symbol:"USDC",name:"USDC Coin",logo:"./img/tokens/USDC.svg",isSufficient:!0}),USDT:h({type:"asset",assetId:1984,decimals:6,symbol:"USDT",name:"Tether USD",logo:"./img/tokens/USDT.svg",isSufficient:!0}),USDT_HDX:h({type:"asset",assetId:10,decimals:6,symbol:"USDT",name:"Tether USD",logo:"./img/tokens/USDT.svg",isSufficient:!0}),HDX:h({type:"native",decimals:12,symbol:"HDX",name:"HDX",logo:"./img/tokens/HDX.svg",isSufficient:!0})};var X=require("@polkadot-api/descriptors");var Ce=async e=>{let[t,s]=await Promise.all([e.query.AssetConversion.Pools.getEntries({at:"best"}),e.query.PoolAssets.Asset.getEntries({at:"best"})]),n=e.chain;return t.map(r=>{let o=r.value,a=s.find(c=>c.keyArgs[0]===o);return a?{type:"asset-convertion",chainId:n.id,poolAssetId:o,tokenIds:r.keyArgs[0].map(c=>V(n.id,c)),owner:a.value.owner}:null}).filter(r=>!!r).filter(r=>r.tokenIds.every(o=>!!o))};var xe=(e,t)=>{if(!e.isSufficient)throw new Error(`Token ${e.symbol} (${e.assetId}) is not sufficient`);let s=y(e,t);if(s&&e.type!=="native")return{parents:0,interior:X.XcmV3Junctions.X2([X.XcmV3Junction.PalletInstance(50),X.XcmV3Junction.GeneralIndex(BigInt(s))])}},Ae=async(e,t,s)=>{switch(t.type){case"native":{let n=await e.query.System.Account.getValue(s,{at:"best"});return n.data.free-n.data.frozen}case"asset":{if(!U(e)||!t.assetId)throw new Error(`Cannot watch balance for ${t.assetId}. Assets are not supported on ${e.chainId}`);let n=await e.query.Assets.Account.getValue(t.assetId,s,{at:"best"});return n?.status.type==="Liquid"?n.balance:0n}case"foreign-asset":{if(!U(e)||!t.assetId)throw new Error(`Cannot watch balance for ${t.assetId}. Assets are not supported on ${e.chainId}`);return 0n}default:return 0n}},be=(e,t,s)=>y(e,s)?.toString()===t.assetId?.toString()&&e.type?.toString()===t.type?.toString(),ke=async(e,t,s,n)=>{let r=n.find(c=>c.tokenIds.some(l=>be(t,l,e.chainId))&&c.tokenIds.some(l=>be(s,l,e.chainId)));if(!r)return null;let o=await Ae(e,r.tokenIds[0],r.owner),a=await Ae(e,r.tokenIds[1],r.owner),i=[o,a];return t.type==="native"?i:i.slice().reverse()},Se=async(e,t)=>{let{nativeToken:s,plancks:n,tokenIn:r,tokenOut:o}=t;if(!r||!o||!s||!n)return;let a=e.chainId,i=y(r,a),c=y(o,a);if(i===c)return n;let l=await Ce(e),f=await ke(e,s,r,l),u=await ke(e,s,o,l),O=s.assetId!==i?f:[1n,1n],$=s.assetId!==c?u:[1n,1n];if(!O||!$||[...$,...O].includes(0n))return;let[se,ne]=s.assetId!==c?$:[1n,1n];if(i===s.assetId)return n*ne/se;let[ve,Re]=O;return n*ve/Re*ne/se};var ee=require("@polkadot-api/descriptors");var rt=(e,t,s,n)=>{let r=_(s,t.decimals),o=e.chain;switch(t.type){case"native":return e.tx.Balances.transfer_keep_alive({dest:ee.MultiAddress.Id(n),value:r});case"asset":{let a=y(t,o.id);if(!a)throw new Error(`Token ${t.symbol} does not have an assetId`);return A(t,o.id)==="tokens"?e.tx.Tokens.transfer({dest:n,amount:r,currency_id:Number(a)}):e.tx.Assets.transfer({id:Number(a),target:ee.MultiAddress.Id(n),amount:r})}default:return null}};function we(e,t){let s=t.chainId,n=g(e.chain),r=I(e.chain),o=g(t),a=I(t),i=C(e.chain),c=C(t),l=W(s);if(r&&o)return"SystemToRelay";if(r&&a)return"SystemToSystem";if(r&&c)return"SystemToPara";if(r&&l)return"SystemToBridge";if(n&&a)return"RelayToSystem";if(n&&c)return"RelayToPara";if(n&&l)return"RelayToBridge";if(i&&o)return"ParaToRelay";if(i&&a)return"ParaToSystem";if(i&&c)return"ParaToPara";throw Error("Could not establish a xcm transaction direction")}var p=require("@polkadot-api/descriptors"),x=require("polkadot-api");var ot=e=>p.XcmVersionedLocation.V3({parents:0,interior:p.XcmV3Junctions.X1(p.XcmV3Junction.AccountId32({network:void 0,id:x.Binary.fromBytes((0,x.AccountId)().enc(e))}))}),at=e=>{switch(e.relay){case"kusama":return p.XcmV3Junction.GlobalConsensus(p.XcmV3JunctionNetworkId.Kusama());case"polkadot":return p.XcmV3Junction.GlobalConsensus(p.XcmV3JunctionNetworkId.Polkadot());case"paseo":return p.XcmV3Junction.GlobalConsensus({type:"Paseo",value:void 0});case"rococo":return p.XcmV3Junction.GlobalConsensus(p.XcmV3JunctionNetworkId.Rococo());case"westend":return p.XcmV3Junction.GlobalConsensus(p.XcmV3JunctionNetworkId.Westend());default:throw new Error("Unsupported relay")}};function it(e,t){let s=0;return(C(e)||I(e))&&(s+=1),t||(s+=1),s}function ct(e,t,s){let n=[];switch(t?(C(e)||I(e))&&n.push(p.XcmV3Junction.Parachain(e.chainId)):(n.push(at(e)),(C(e)||I(e))&&n.push(p.XcmV3Junction.Parachain(e.chainId))),s&&n.push(p.XcmV3Junction.AccountId32({network:void 0,id:x.Binary.fromBytes(s instanceof Uint8Array?s:(0,x.AccountId)().enc(s))})),n.length){case 1:return p.XcmV3Junctions.X1(n[0]);case 2:return p.XcmV3Junctions.X2([n[0],n[1]]);case 3:return p.XcmV3Junctions.X3([n[0],n[1],n[2]]);default:return p.XcmV3Junctions.Here()}}var te=(e,t,s,n)=>{let r=it(t,e),o=ct(s,e,n);return p.XcmVersionedLocation.V3({parents:r,interior:o})},S=(e,t,s,n,r,o)=>{if(!n.location)throw new Error("Token has no location!");let a=t.relay===s.relay,i=te(a,t,s),c=n.location(o,t,s);return{dest:i,assets:c,beneficiary:ot(r),fee_asset_item:0,weight_limit:p.XcmV3WeightLimit.Unlimited()}},Te=(e,t,s,n,r,o)=>{if(!n.location)throw new Error("Token has no location!");let a=t.relay===s.relay,i=te(a,t,s,r);return{asset:n.location(o,t,s),dest:i,dest_weight_limit:p.XcmV3WeightLimit.Unlimited()}},Pe=(e,t,s,n,r,o)=>{if(!n.location)throw new Error("Token has no location!");let a=t.relay===s.relay,i=te(a,t,s,r),c=y(n,t.id);return{currency_id:Number(c),amount:o,dest:i,dest_weight_limit:p.XcmV3WeightLimit.Unlimited()}};var lt=(e,t,s,n,r)=>{let o=_(s,t.decimals),a=we(e,r),i=e.chain,l=g(i)?"XcmPallet":"PolkadotXcm";switch(t.xcmExtrinsic?.(i,r)??"limited_reserve_transfer_assets"){case"XTokens.transfer":{let u=Pe(a,i,r,t,n,o);return e.tx.XTokens.transfer({...u})}case"XTokens.transfer_multiasset":{let u=Te(a,i,r,t,n,o);return e.tx.XTokens.transfer_multiasset({...u})}case"limited_reserve_transfer_assets":{let u=S(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm?.limited_reserve_transfer_assets({...u}):e.tx.XcmPallet?.limited_reserve_transfer_assets({...u})}case"transfer_asset":{let u=S(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm.transfer_assets({...u}):e.tx.XcmPallet.transfer_assets({...u})}case"limited_teleport_assets":{let u=S(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm.limited_teleport_assets({...u}):e.tx.XcmPallet.limited_teleport_assets({...u})}case"teleport_assets":{let u=S(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm.teleport_assets({...u}):e.tx.XcmPallet.teleport_assets({...u})}case"reserve_transfer_assets":{let u=S(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm.reserve_transfer_assets({...u}):e.tx.XcmPallet.reserve_transfer_assets({...u})}default:throw new Error("Method not supported")}};var w=require("polkadot-api/pjs-signer");var D=class{storeKey="currentAccountId";constructor(t="currentAccountId"){this.storeKey=t}get(){return localStorage.getItem(this.storeKey)}set(t){return localStorage.setItem(this.storeKey,t)}remove(){return localStorage.removeItem(this.storeKey)}};var E=class{storeKey="connectedWalletIds";constructor(t="connectedWalletIds"){this.storeKey=t}get(){let t=localStorage.getItem(this.storeKey);return t?JSON.parse(t):[]}set(t){return localStorage.setItem(this.storeKey,JSON.stringify(t))}remove(){return localStorage.removeItem(this.storeKey)}};var B=class e{static _instance=null;store=new E;accountStore=new D;constructor(){}get isConnected(){return this.connectedWalletIds.length>0}static get instance(){return this._instance===null&&(this._instance=new e),this._instance}setStoreKey(t,s){this.store=new E(t),this.accountStore=new D(s)}get currentAccountId(){let t=this.accountStore.get();if(!t)return null;let[s,n]=t.split(":");return{wallet:s,address:n}}get connectedWalletIds(){return this.store.get()??[]}setCurrentAccountId(t,s){let n=t+":"+s;this.accountStore.set(n)}getInjectedWalletIds(){return(0,w.getInjectedExtensions)()?.concat().sort((t,s)=>t==="talisman"||s==="subwallet-js"?-1:s==="talisman"||t==="subwallet-js"?1:t.localeCompare(s))??[]}async connect(t){try{await(0,w.connectInjectedExtension)(t);let s=new Set([...this.connectedWalletIds,t]);this.store.set(Array.from(s))}catch(s){throw this.store.set(this.connectedWalletIds.filter(n=>n!==t)),s}}async disconnect(t){let s=this.connectedWalletIds.filter(n=>n!==t);this.store.set(s)}async getAllConnectedAccounts(){let t=[];for(let s of this.connectedWalletIds){let r=(await(0,w.connectInjectedExtension)(s)).getAccounts();t=t.concat(r.map(o=>({...o,wallet:s})))}return t}async subscribeAccounts(t){for(let s of this.connectedWalletIds)(await(0,w.connectInjectedExtension)(s)).subscribe(r=>{t(r.map(o=>({...o,wallet:s})))})}},pt=B.instance;0&&(module.exports={CLIENTS_CACHE,DESCRIPTORS_ALL,Wallet,chainDestIsBridge,chains,createChain,createConfig,createToken,formatBalance,formatDecimals,formatUnits,getApi,getApiInner,getAssetConvertPlancks,getAssetIdByChain,getAssetPalletByChain,getChainById,getClient,getClientCacheId,getDescriptors,getExistentialDeposit,getFeeAssetLocation,getParaChainClient,getRelayChainClient,getTokenBalance,getTokenIdFromXcmV3Multilocation,getTransferExtrinsic,getXcmTransferExtrinsic,isApiAssetHub,isApiRelay,isChainIdAssetHub,isChainIdRelay,isNumber,isParachain,isRelayChain,isSystemChain,isValidAddress,parseLocationStrToLocation,parseUnits,subscribeTokenBalance,tokens,wallet,...require("@polkadot-api/descriptors")});
|
|
1
|
+
"use strict";var L=Object.defineProperty;var _e=Object.getOwnPropertyDescriptor;var Xe=Object.getOwnPropertyNames;var De=Object.prototype.hasOwnProperty;var re=(e,t)=>{for(var s in t)L(e,s,{get:t[s],enumerable:!0})},K=(e,t,s,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Xe(t))!De.call(e,r)&&r!==s&&L(e,r,{get:()=>t[r],enumerable:!(n=_e(t,r))||n.enumerable});return e},k=(e,t,s)=>(K(e,t,"default"),s&&K(s,t,"default"));var Ee=e=>K(L({},"__esModule",{value:!0}),e);var b={};re(b,{CLIENTS_CACHE:()=>N,DESCRIPTORS_ALL:()=>M,Wallet:()=>B,chainDestIsBridge:()=>W,chains:()=>J,createChain:()=>m,createConfig:()=>He,createToken:()=>h,formatBalance:()=>Ge,formatDecimals:()=>fe,formatUnits:()=>ge,getApi:()=>Fe,getApiInner:()=>ye,getAssetConvertPlancks:()=>Se,getAssetIdByChain:()=>y,getAssetPalletByChain:()=>A,getChainById:()=>P,getClient:()=>Q,getClientCacheId:()=>pe,getDescriptors:()=>j,getExistentialDeposit:()=>et,getFeeAssetLocation:()=>xe,getParaChainClient:()=>ue,getRelayChainClient:()=>de,getTokenBalance:()=>st,getTokenIdFromXcmV3Multilocation:()=>V,getTransferExtrinsic:()=>rt,getXcmTransferExtrinsic:()=>lt,isApiAssetHub:()=>U,isApiRelay:()=>Je,isChainIdAssetHub:()=>T,isChainIdRelay:()=>q,isNumber:()=>Ye,isParachain:()=>C,isRelayChain:()=>g,isSystemChain:()=>I,isValidAddress:()=>Ze,parseLocationStrToLocation:()=>oe,parseUnits:()=>_,subscribeTokenBalance:()=>tt,tokens:()=>nt,wallet:()=>pt});module.exports=Ee(b);k(b,require("@polkadot-api/descriptors"),module.exports);var He=e=>e;var me=require("@polkadot-api/descriptors"),he=require("rxjs");var g=e=>e.type==="relay",I=e=>{if(e.type==="system"&&e.chainId){let t=Number(e.chainId);return t>0&&t<2e3}return!1},C=e=>e.type==="para"&&e.chainId?Number(e.chainId)>2e3:!1,oe=e=>{try{return JSON.parse(e)}catch{throw new Error(`Unable to parse ${e} as a valid location`)}},W=e=>{let t=oe(e),s=!1;return t?.interior&&(s=t.interior.X1?JSON.stringify(t.interior.X1).toLowerCase().includes("globalconsensus"):t.interior.X2?JSON.stringify(t.interior.X2).toLowerCase().includes("globalconsensus"):!1),s};var d=require("@polkadot-api/descriptors"),ae={polkadot:d.polkadot,kusama:d.kusama,rococo:d.rococo,westend:d.westend,paseo:d.paseo},ie={pah:d.pah,kah:d.kah,rah:d.rah,wah:d.wah,paseoah:d.paseoah},Ne={hdx:d.hdx,prmx:d.pah},M={...ae,...ie,...Ne},T=e=>typeof e=="string"&&!!ie[e],q=e=>typeof e=="string"&&!!ae[e],j=e=>{if(M[e])return M[e]},P=(e,t)=>{let s=t.find(n=>n.id===e);if(!s)throw new Error(`Could not find chain ${e}`);return s};var m=e=>e;var J={};re(J,{hydration:()=>je,kusamaAssetHubChain:()=>Oe,kusamaChain:()=>Be,paseoAssetHubChain:()=>qe,paseoChain:()=>Me,polkadotAssetHubChain:()=>Ve,polkadotChain:()=>Ue,rococoAssetHubChain:()=>Ke,rococoChain:()=>$e,westendAssetHubChain:()=>We,westendChain:()=>Le});var Ue=m({id:"polkadot",name:"Polkadot",specName:"polkadot",wsUrls:["wss://polkadot-rpc.dwellir.com"],relay:"polkadot",type:"relay",chainId:null,logo:"./chains/dot.svg",blockExplorerUrl:"https://polkadot.subscan.io"}),Ve=m({id:"pah",name:"Polkadot Asset Hub",specName:"asset-hub-polkadot",wsUrls:["wss://polkadot-asset-hub-rpc.polkadot.io/"],relay:"polkadot",type:"system",chainId:1e3,logo:"./chains/pah.svg",blockExplorerUrl:"https://assethub-polkadot.subscan.io"}),Be=m({id:"kusama",name:"Kusama",specName:"kusama",wsUrls:["wss://kusama-rpc.polkadot.io"],relay:"kusama",type:"relay",chainId:null,logo:"./chains/ksm.svg",blockExplorerUrl:"https://kusama.subscan.io"}),Oe=m({id:"kah",name:"Kusama Asset Hub",specName:"asset-hub-kusama",wsUrls:["wss://kusama-asset-hub-rpc.polkadot.io"],relay:"kusama",type:"system",chainId:1e3,logo:"./chains/kah.svg",blockExplorerUrl:"https://assethub-kusama.subscan.io"}),$e=m({id:"rococo",name:"Rococo",specName:"rococo",wsUrls:["wss://rococo-rpc.polkadot.io"],relay:"rococo",type:"relay",chainId:null,logo:"./chains/roc.svg",blockExplorerUrl:"https://rococo.subscan.io"}),Ke=m({id:"rah",name:"Rococo Asset Hub",specName:"asset-hub-rococo",wsUrls:["wss://rococo-asset-hub-rpc.polkadot.io"],relay:"rococo",type:"system",chainId:1e3,logo:"./chains/rah.svg",blockExplorerUrl:"https://assethub-rococo.subscan.io"}),Le=m({id:"westend",name:"Westend",specName:"westend",wsUrls:["wss://westend-rpc.polkadot.io"],relay:"westend",type:"relay",chainId:null,logo:"./chains/wnd.svg",blockExplorerUrl:"https://westend.subscan.io",xcmExtrinsic:"limited_teleport_assets"}),We=m({id:"wah",name:"Westend Asset Hub",specName:"asset-hub-westend",wsUrls:["wss://westend-asset-hub-rpc.polkadot.io"],relay:"westend",type:"system",chainId:1e3,logo:"./chains/wah.svg",blockExplorerUrl:"https://assethub-westend.subscan.io"}),Me=m({id:"paseo",name:"Paseo",specName:"paseo-testnet",wsUrls:["wss://paseo.dotters.network"],relay:"paseo",type:"relay",chainId:null,logo:"./chains/pas.svg",blockExplorerUrl:"https://paseo.subscan.io"}),qe=m({id:"paseoah",name:"Paseo Asset Hub",specName:"asset-hub-paseo",wsUrls:["wss://asset-hub-paseo-rpc.dwellir.com"],relay:"paseo",type:"system",chainId:1e3,logo:"./chains/pah.svg",blockExplorerUrl:"https://assethub-paseo.subscan.io"}),je=m({id:"hdx",name:"Hydration",specName:"hydradx",wsUrls:["wss://hydration-rpc.n.dwellir.com/","wss://rpc.hydradx.cloud","wss://hydradx-rpc.dwellir.com","wss://rpc.helikon.io/hydradx","wss://hydration.dotters.network"],relay:"polkadot",chainId:2034,logo:"./chains/pah.svg",blockExplorerUrl:"https://hydration.subscan.io",type:"para"});var R=require("polkadot-api"),Y=require("polkadot-api/ws-provider/web");var v=(e,t)=>t?t[e]!==void 0:!1,z=new Map,H=(e,t)=>{if(!t)throw new Error("chainSpecs is not provided in lightClients config");if(!v(e,t))throw new Error(`Unknown chain: ${e}`);return!z.has(e)&&t?.[e]&&z.set(e,t?.[e]),z.get(e)};var le=require("polkadot-api/sm-provider"),F=new Map,ce=async(e,{chainId:t,chainSpec:s},n)=>{let r=e.addChain({chainSpec:s,potentialRelayChains:n?[n]:void 0});return F.has(t)||F.set(t,r),F.get(t)},G=async(e,t,s)=>{let n=s?await ce(e,s):void 0,r=await ce(e,t,n);return(0,le.getSmProvider)(r)};var pe=(e,{lightClients:t})=>`${e}-${t?.enable??"false"}`,N=new Map,Q=(e,t,s)=>{let n=pe(e,s);if(!N.has(n)){let r=P(e,t);N.set(n,g(r)?de(r,s):ue(r,s))}return N.get(n)},de=async(e,t)=>{if(!t.lightClients||!t.lightClients.enable||!v(e.id,t?.lightClients?.chainSpecs))return(0,R.createClient)((0,Y.getWsProvider)(e.wsUrls));let{smoldot:s,chainSpecs:n}=t.lightClients,r=H(e.id,n),o=await G(s,{chainId:e.id,chainSpec:r});return(0,R.createClient)(o)},ue=async(e,t)=>{if(!e.relay)throw new Error(`Chain ${e.id} does not have a relay chain`);let{id:s,relay:n}=e,r=t?.lightClients?.chainSpecs;if(!t.lightClients||!t.lightClients.enable||!v(s,r)||!v(n,r))return(0,R.createClient)((0,Y.getWsProvider)(e.wsUrls));let{chainSpecs:o,smoldot:a}=t.lightClients,[i,c]=[H(n,o),H(s,o)];return(0,R.createClient)(await G(a,{chainId:e.id,chainSpec:c},{chainId:n,chainSpec:i}))};var U=e=>T(e.chainId),Je=e=>q(e.chainId),ye=async(e,t,s)=>{let n=P(e,s),r=j(n.id),o=await Q(e,s,{lightClients:t});if(!o)throw new Error(`Could not create client for chain ${e}/${t}`);let a=o.getTypedApi(r??me.pah);return a.chainId=e,a.chain=n,a.waitReady=new Promise((i,c)=>{(0,he.firstValueFrom)(o.bestBlocks$).then(()=>i()).catch(c)}),a},ze=(e,t)=>`${e}-${t?.enable??"false"}`,Z=new Map,Fe=async(e,t=[],s=!0,n)=>{let r=ze(e,n);Z.has(r)||Z.set(r,ye(e,n,t));let o=await Z.get(r);return s&&await o.waitReady,o};var h=e=>e;var fe=(e,t=4)=>{try{if(e==null)return"";let s=Number(e);if(isNaN(s))throw new Error(`Invalid number: ${e}`);if(s===0)return"0";let n=1/10**t;return s<n?`< ${n.toFixed(t)}`:Intl.NumberFormat("en-US",{notation:"compact",maximumSignificantDigits:t>0?t:void 0}).format(Number(Number(e).toFixed(t)))}catch(s){throw console.error("formatDecimals",{err:s,num:e,digits:t}),s}},ge=(e,t=10)=>{if(!e)return"0";let s=e.toString(),n=s.startsWith("-");n&&(s=s.slice(1)),s=s.padStart(t,"0");let[r,o]=[s.slice(0,s.length-t),s.slice(s.length-t)];return o=o.replace(/(0+)$/,""),`${n?"-":""}${r||"0"}${o?`.${o}`:""}`},Ge=(e,t=10,s=4)=>{let n=ge(e,t);return fe(n,s)};function _(e,t=10){if(!/^(-?)([0-9]*)\.?([0-9]*)$/.test(e))throw new Error("Invalid value");let[s,n="0"]=e.split("."),r=s.startsWith("-");if(r&&(s=s.slice(1)),n=n.replace(/(0+)$/,""),t===0)Math.round(+`.${n}`)===1&&(s=`${BigInt(s)+1n}`),n="";else if(n.length>t){let[o,a,i]=[n.slice(0,t-1),n.slice(t-1,t),n.slice(t)],c=Math.round(+`${a}.${i}`);c>9?n=`${BigInt(o)+BigInt(1)}0`.padStart(o.length+1,"0"):n=`${o}${c}`,n.length>t&&(n=n.slice(1),s=`${BigInt(s)+1n}`),n=n.slice(0,t)}else n=n.padEnd(t,"0");return BigInt(`${r?"-":""}${s}${n}`)}var Ye=e=>{if(!e)return!1;if(e.length<Number.MAX_SAFE_INTEGER.toString().length){let t=Number.parseInt(e);return!Number.isNaN(t)}try{BigInt(e)}catch{return!1}return!0};var Ie=require("polkadot-api"),Qe=(0,Ie.AccountId)().enc,Ze=e=>{try{return e?(Qe(e),!0):!1}catch{return!1}};var y=(e,t)=>(e.assetIds?.[t]??e.assetId)?.toString(),A=(e,t)=>e.assetPallet?.[t];var V=(e,t)=>{let{interior:s}=t;if(s.type==="Here")return{type:"native",assetId:void 0};if(s.type==="X2"&&s.value.some(n=>n.type==="PalletInstance"&&n.value===50)){for(let n of s.value)if(n.type==="GeneralIndex")return{type:"asset",assetId:Number(n.value)}}return T(e)?{type:"foreign-asset",location:()=>t}:null};var et=async(e,t)=>{switch(e.type){case"asset":{let s=y(e,t.chainId);if(!s)throw new Error(`Token ${e.symbol} does not have an assetId`);if(A(e,t.chainId)==="assets"){let r=await t.query.Assets.Asset.getValue(Number(s),{at:"best"});if(r?.min_balance)return r.min_balance}return 0n}case"native":{let s=await t.constants.Balances.ExistentialDeposit();return s||0n}default:throw new Error(`Unsupported token type: ${e.symbol}`)}};var tt=(e,t,s,n)=>{if(!s||!e||!t)return;let r,o=e.chainId,a={assets:()=>{let c=t.assetIds?.[o]??t.assetId;return c?e.query.Assets.Account.watchValue(Number(c),s,"best").subscribe(l=>{let f=l?.status.type==="Liquid"?l.balance:0n;n?.(f)}):null},system:()=>e.query.System.Account.watchValue(s,"best").subscribe(c=>{let l=c.data.free-c.data.frozen;n?.(l)}),balances:()=>t.assetIds?.[o]??t.assetId?e.query.Balances.Account.watchValue(s,"best").subscribe(l=>{let f=l.free-l.frozen;n?.(f)}):null,tokens:()=>{let c=t.assetIds?.[o]??t.assetId;return c?e.query.Tokens.Accounts.watchValue(s,Number(c),"best").subscribe(l=>{let f=l.free-l.frozen;n?.(f)}):null},ormlTokens:()=>{let c=t.assetIds?.[o]??t.assetId;return c?e.query.OrmlTokens.Accounts.watchValue(s,Number(c),"best").subscribe(l=>{let f=l.free-l.frozen;n?.(f)}):null}},i=A(t,o);return i?r=a[i]():t.type!=="native"&&t.assetId?r=a.assets():r=a.system(),r},st=async(e,t,s)=>{if(!s||!e||!t)return;let n=e.chainId,r={assets:()=>{let a=t.assetIds?.[n]??t.assetId;return a?e.query.Assets.Account.getValue(Number(a),s,{at:"best"}).then(i=>i?.status.type==="Liquid"?i.balance:0n):null},system:()=>e.query.System.Account.getValue(s,{at:"best"}).then(a=>a.data.free-a.data.frozen),balances:()=>t.assetIds?.[n]??t.assetId?e.query.Balances.Account.getValue(s,{at:"best"}).then(i=>i.free-i.frozen):null,tokens:()=>{let a=t.assetIds?.[n]??t.assetId;return a?e.query.Tokens.Accounts.getValue(s,Number(a),{at:"best"}).then(i=>i.free-i.frozen):null},ormlTokens:()=>{let a=t.assetIds?.[n]??t.assetId;return a?e.query.OrmlTokens.Accounts.getValue(s,Number(a),{at:"best"}).then(i=>i.free-i.frozen):null}},o=A(t,n);return o?r[o]():t.type!=="native"&&t.assetId?r.assets():r.system()};var nt={WND:h({type:"native",decimals:12,symbol:"WND",name:"Westend",logo:"./img/tokens/WND.svg",isSufficient:!0}),ROC:h({type:"native",decimals:12,symbol:"ROC",name:"Rococo",logo:"./img/tokens/ROC.svg",isSufficient:!0}),KSM:h({type:"native",decimals:12,symbol:"KSM",name:"Kusama",logo:"./img/tokens/KSM.svg",isSufficient:!0}),KSM_PAH:h({type:"native",decimals:12,symbol:"KSM",name:"Kusama",logo:"./img/tokens/KSM.svg",isSufficient:!0}),DOT:h({type:"native",decimals:10,symbol:"DOT",name:"Polkadot",logo:"./img/tokens/DOT.svg",isSufficient:!0}),PAS:h({type:"native",decimals:10,symbol:"PAS",name:"Paseo",logo:"./img/tokens/PAS.svg",isSufficient:!0}),USDC:h({type:"asset",assetId:1337,decimals:6,symbol:"USDC",name:"USDC Coin",logo:"./img/tokens/USDC.svg",isSufficient:!0}),WND_USDC:h({type:"asset",assetId:31337,decimals:6,symbol:"USDC",name:"USDC Coin",logo:"./img/tokens/USDC.svg",isSufficient:!0}),USDT:h({type:"asset",assetId:1984,decimals:6,symbol:"USDT",name:"Tether USD",logo:"./img/tokens/USDT.svg",isSufficient:!0}),USDT_HDX:h({type:"asset",assetId:10,decimals:6,symbol:"USDT",name:"Tether USD",logo:"./img/tokens/USDT.svg",isSufficient:!0}),HDX:h({type:"native",decimals:12,symbol:"HDX",name:"HDX",logo:"./img/tokens/HDX.svg",isSufficient:!0})};var X=require("@polkadot-api/descriptors");var Ce=async e=>{let[t,s]=await Promise.all([e.query.AssetConversion.Pools.getEntries({at:"best"}),e.query.PoolAssets.Asset.getEntries({at:"best"})]),n=e.chain;return t.map(r=>{let o=r.value,a=s.find(c=>c.keyArgs[0]===o);return a?{type:"asset-convertion",chainId:n.id,poolAssetId:o,tokenIds:r.keyArgs[0].map(c=>V(n.id,c)),owner:a.value.owner}:null}).filter(r=>!!r).filter(r=>r.tokenIds.every(o=>!!o))};var xe=(e,t)=>{if(!e.isSufficient)throw new Error(`Token ${e.symbol} (${e.assetId}) is not sufficient`);let s=y(e,t);if(s&&e.type!=="native")return{parents:0,interior:X.XcmV3Junctions.X2([X.XcmV3Junction.PalletInstance(50),X.XcmV3Junction.GeneralIndex(BigInt(s))])}},Ae=async(e,t,s)=>{switch(t.type){case"native":{let n=await e.query.System.Account.getValue(s,{at:"best"});return n.data.free-n.data.frozen}case"asset":{if(!U(e)||!t.assetId)throw new Error(`Cannot watch balance for ${t.assetId}. Assets are not supported on ${e.chainId}`);let n=await e.query.Assets.Account.getValue(t.assetId,s,{at:"best"});return n?.status.type==="Liquid"?n.balance:0n}case"foreign-asset":{if(!U(e)||!t.assetId)throw new Error(`Cannot watch balance for ${t.assetId}. Assets are not supported on ${e.chainId}`);return 0n}default:return 0n}},be=(e,t,s)=>y(e,s)?.toString()===t.assetId?.toString()&&e.type?.toString()===t.type?.toString(),ke=async(e,t,s,n)=>{let r=n.find(c=>c.tokenIds.some(l=>be(t,l,e.chainId))&&c.tokenIds.some(l=>be(s,l,e.chainId)));if(!r)return null;let o=await Ae(e,r.tokenIds[0],r.owner),a=await Ae(e,r.tokenIds[1],r.owner),i=[o,a];return t.type==="native"?i:i.slice().reverse()},Se=async(e,t)=>{let{nativeToken:s,plancks:n,tokenIn:r,tokenOut:o}=t;if(!r||!o||!s||!n)return;let a=e.chainId,i=y(r,a),c=y(o,a);if(i===c)return n;let l=await Ce(e),f=await ke(e,s,r,l),u=await ke(e,s,o,l),O=s.assetId!==i?f:[1n,1n],$=s.assetId!==c?u:[1n,1n];if(!O||!$||[...$,...O].includes(0n))return;let[se,ne]=s.assetId!==c?$:[1n,1n];if(i===s.assetId)return n*ne/se;let[ve,Re]=O;return n*ve/Re*ne/se};var ee=require("@polkadot-api/descriptors");var rt=(e,t,s,n)=>{let r=_(s,t.decimals),o=e.chain;switch(t.type){case"native":return e.tx.Balances.transfer_keep_alive({dest:ee.MultiAddress.Id(n),value:r});case"asset":{let a=y(t,o.id);if(!a)throw new Error(`Token ${t.symbol} does not have an assetId`);return A(t,o.id)==="tokens"?e.tx.Tokens.transfer({dest:n,amount:r,currency_id:Number(a)}):e.tx.Assets.transfer({id:Number(a),target:ee.MultiAddress.Id(n),amount:r})}default:return null}};function we(e,t){let s=t.chainId,n=g(e.chain),r=I(e.chain),o=g(t),a=I(t),i=C(e.chain),c=C(t),l=W(s);if(r&&o)return"SystemToRelay";if(r&&a)return"SystemToSystem";if(r&&c)return"SystemToPara";if(r&&l)return"SystemToBridge";if(n&&a)return"RelayToSystem";if(n&&c)return"RelayToPara";if(n&&l)return"RelayToBridge";if(i&&o)return"ParaToRelay";if(i&&a)return"ParaToSystem";if(i&&c)return"ParaToPara";throw Error("Could not establish a xcm transaction direction")}var p=require("@polkadot-api/descriptors"),x=require("polkadot-api");var ot=e=>p.XcmVersionedLocation.V3({parents:0,interior:p.XcmV3Junctions.X1(p.XcmV3Junction.AccountId32({network:void 0,id:x.Binary.fromBytes((0,x.AccountId)().enc(e))}))}),at=e=>{switch(e.relay){case"kusama":return p.XcmV3Junction.GlobalConsensus(p.XcmV3JunctionNetworkId.Kusama());case"polkadot":return p.XcmV3Junction.GlobalConsensus(p.XcmV3JunctionNetworkId.Polkadot());case"paseo":return p.XcmV3Junction.GlobalConsensus({type:"Paseo",value:void 0});case"rococo":return p.XcmV3Junction.GlobalConsensus(p.XcmV3JunctionNetworkId.Rococo());case"westend":return p.XcmV3Junction.GlobalConsensus(p.XcmV3JunctionNetworkId.Westend());default:throw new Error("Unsupported relay")}};function it(e,t){let s=0;return(C(e)||I(e))&&(s+=1),t||(s+=1),s}function ct(e,t,s){let n=[];switch(t?(C(e)||I(e))&&n.push(p.XcmV3Junction.Parachain(e.chainId)):(n.push(at(e)),(C(e)||I(e))&&n.push(p.XcmV3Junction.Parachain(e.chainId))),s&&n.push(p.XcmV3Junction.AccountId32({network:void 0,id:x.Binary.fromBytes(s instanceof Uint8Array?s:(0,x.AccountId)().enc(s))})),n.length){case 1:return p.XcmV3Junctions.X1(n[0]);case 2:return p.XcmV3Junctions.X2([n[0],n[1]]);case 3:return p.XcmV3Junctions.X3([n[0],n[1],n[2]]);default:return p.XcmV3Junctions.Here()}}var te=(e,t,s,n)=>{let r=it(t,e),o=ct(s,e,n);return p.XcmVersionedLocation.V3({parents:r,interior:o})},S=(e,t,s,n,r,o)=>{if(!n.location)throw new Error("Token has no location!");let a=t.relay===s.relay,i=te(a,t,s),c=n.location(o,t,s);return{dest:i,assets:c,beneficiary:ot(r),fee_asset_item:0,weight_limit:p.XcmV3WeightLimit.Unlimited()}},Te=(e,t,s,n,r,o)=>{if(!n.location)throw new Error("Token has no location!");let a=t.relay===s.relay,i=te(a,t,s,r);return{asset:n.location(o,t,s),dest:i,dest_weight_limit:p.XcmV3WeightLimit.Unlimited()}},Pe=(e,t,s,n,r,o)=>{if(!n.location)throw new Error("Token has no location!");let a=t.relay===s.relay,i=te(a,t,s,r),c=y(n,t.id);return{currency_id:Number(c),amount:o,dest:i,dest_weight_limit:p.XcmV3WeightLimit.Unlimited()}};var lt=(e,t,s,n,r)=>{let o=_(s,t.decimals),a=we(e,r),i=e.chain,l=g(i)?"XcmPallet":"PolkadotXcm";switch(t.xcmExtrinsic?.(i,r)??"limited_reserve_transfer_assets"){case"XTokens.transfer":{let u=Pe(a,i,r,t,n,o);return e.tx.XTokens.transfer({...u})}case"XTokens.transfer_multiasset":{let u=Te(a,i,r,t,n,o);return e.tx.XTokens.transfer_multiasset({...u})}case"limited_reserve_transfer_assets":{let u=S(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm?.limited_reserve_transfer_assets({...u}):e.tx.XcmPallet?.limited_reserve_transfer_assets({...u})}case"transfer_asset":{let u=S(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm.transfer_assets({...u}):e.tx.XcmPallet.transfer_assets({...u})}case"limited_teleport_assets":{let u=S(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm.limited_teleport_assets({...u}):e.tx.XcmPallet.limited_teleport_assets({...u})}case"teleport_assets":{let u=S(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm.teleport_assets({...u}):e.tx.XcmPallet.teleport_assets({...u})}case"reserve_transfer_assets":{let u=S(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm.reserve_transfer_assets({...u}):e.tx.XcmPallet.reserve_transfer_assets({...u})}default:throw new Error("Method not supported")}};var w=require("polkadot-api/pjs-signer");var D=class{storeKey="currentAccountId";constructor(t="currentAccountId"){this.storeKey=t}get(){return localStorage.getItem(this.storeKey)}set(t){return localStorage.setItem(this.storeKey,t)}remove(){return localStorage.removeItem(this.storeKey)}};var E=class{storeKey="connectedWalletIds";constructor(t="connectedWalletIds"){this.storeKey=t}get(){let t=localStorage.getItem(this.storeKey);return t?JSON.parse(t):[]}set(t){return localStorage.setItem(this.storeKey,JSON.stringify(t))}remove(){return localStorage.removeItem(this.storeKey)}};var B=class e{static _instance=null;store=new E;accountStore=new D;constructor(){}get isConnected(){return this.connectedWalletIds.length>0}static get instance(){return this._instance===null&&(this._instance=new e),this._instance}setStoreKey(t,s){this.store=new E(t),this.accountStore=new D(s)}get currentAccountId(){let t=this.accountStore.get();if(!t)return null;let[s,n]=t.split(":");return{wallet:s,address:n}}get connectedWalletIds(){return this.store.get()??[]}setCurrentAccountId(t,s){let n=t+":"+s;this.accountStore.set(n)}getInjectedWalletIds(){return(0,w.getInjectedExtensions)()?.concat().sort((t,s)=>t==="talisman"||s==="subwallet-js"?-1:s==="talisman"||t==="subwallet-js"?1:t.localeCompare(s))??[]}async connect(t){try{await(0,w.connectInjectedExtension)(t);let s=new Set([...this.connectedWalletIds,t]);this.store.set(Array.from(s))}catch(s){throw this.store.set(this.connectedWalletIds.filter(n=>n!==t)),s}}async disconnect(t){let s=this.connectedWalletIds.filter(n=>n!==t);this.store.set(s)}async getAllConnectedAccounts(){let t=[];for(let s of this.connectedWalletIds){let r=(await(0,w.connectInjectedExtension)(s)).getAccounts();t=t.concat(r.map(o=>({...o,wallet:s})))}return t}async subscribeAccounts(t){for(let s of this.connectedWalletIds)(await(0,w.connectInjectedExtension)(s)).subscribe(r=>{t(r.map(o=>({...o,wallet:s})))})}},pt=B.instance;0&&(module.exports={CLIENTS_CACHE,DESCRIPTORS_ALL,Wallet,chainDestIsBridge,chains,createChain,createConfig,createToken,formatBalance,formatDecimals,formatUnits,getApi,getApiInner,getAssetConvertPlancks,getAssetIdByChain,getAssetPalletByChain,getChainById,getClient,getClientCacheId,getDescriptors,getExistentialDeposit,getFeeAssetLocation,getParaChainClient,getRelayChainClient,getTokenBalance,getTokenIdFromXcmV3Multilocation,getTransferExtrinsic,getXcmTransferExtrinsic,isApiAssetHub,isApiRelay,isChainIdAssetHub,isChainIdRelay,isNumber,isParachain,isRelayChain,isSystemChain,isValidAddress,parseLocationStrToLocation,parseUnits,subscribeTokenBalance,tokens,wallet,...require("@polkadot-api/descriptors")});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var fe=Object.defineProperty;var ge=(e,t)=>{for(var s in t)fe(e,s,{get:t[s],enumerable:!0})};export*from"@polkadot-api/descriptors";var ut=e=>e;import{polkadot as je}from"@polkadot-api/descriptors";import{firstValueFrom as Je}from"rxjs";var f=e=>e.type==="relay",g=e=>{if(e.type==="system"&&e.chainId){let t=Number(e.chainId);return t>0&&t<2e3}return!1},I=e=>e.type==="para"&&e.chainId?Number(e.chainId)>2e3:!1,Ie=e=>{try{return JSON.parse(e)}catch{throw new Error(`Unable to parse ${e} as a valid location`)}},j=e=>{let t=Ie(e),s=!1;return t?.interior&&(s=t.interior.X1?JSON.stringify(t.interior.X1).toLowerCase().includes("globalconsensus"):t.interior.X2?JSON.stringify(t.interior.X2).toLowerCase().includes("globalconsensus"):!1),s};import{hdx as Ce,kah as Ae,kusama as be,pah as ke,paseo as xe,paseoah as Se,polkadot as we,rah as Te,rococo as Pe,wah as ve,westend as Re}from"@polkadot-api/descriptors";var z={polkadot:we,kusama:be,rococo:Pe,westend:Re,paseo:xe},F={pah:ke,kah:Ae,rah:Te,wah:ve,paseoah:Se},_e={hdx:Ce},J={...z,...F,..._e},w=e=>typeof e=="string"&&!!F[e],G=e=>typeof e=="string"&&!!z[e],Y=e=>{if(J[e])return J[e]},T=(e,t)=>{let s=t.find(n=>n.id===e);if(!s)throw new Error(`Could not find chain ${e}`);return s};var d=e=>e;var Q={};ge(Q,{hydration:()=>Ke,kusamaAssetHubChain:()=>He,kusamaChain:()=>Ee,paseoAssetHubChain:()=>$e,paseoChain:()=>Oe,polkadotAssetHubChain:()=>De,polkadotChain:()=>Xe,rococoAssetHubChain:()=>Ue,rococoChain:()=>Ne,westendAssetHubChain:()=>Be,westendChain:()=>Ve});var Xe=d({id:"polkadot",name:"Polkadot",specName:"polkadot",wsUrls:["wss://polkadot-rpc.dwellir.com"],relay:"polkadot",type:"relay",chainId:null,logo:"./chains/dot.svg",blockExplorerUrl:"https://polkadot.subscan.io"}),De=d({id:"pah",name:"Polkadot Asset Hub",specName:"asset-hub-polkadot",wsUrls:["wss://polkadot-asset-hub-rpc.polkadot.io/"],relay:"polkadot",type:"system",chainId:1e3,logo:"./chains/pah.svg",blockExplorerUrl:"https://assethub-polkadot.subscan.io"}),Ee=d({id:"kusama",name:"Kusama",specName:"kusama",wsUrls:["wss://kusama-rpc.polkadot.io"],relay:"kusama",type:"relay",chainId:null,logo:"./chains/ksm.svg",blockExplorerUrl:"https://kusama.subscan.io"}),He=d({id:"kah",name:"Kusama Asset Hub",specName:"asset-hub-kusama",wsUrls:["wss://kusama-asset-hub-rpc.polkadot.io"],relay:"kusama",type:"system",chainId:1e3,logo:"./chains/kah.svg",blockExplorerUrl:"https://assethub-kusama.subscan.io"}),Ne=d({id:"rococo",name:"Rococo",specName:"rococo",wsUrls:["wss://rococo-rpc.polkadot.io"],relay:"rococo",type:"relay",chainId:null,logo:"./chains/roc.svg",blockExplorerUrl:"https://rococo.subscan.io"}),Ue=d({id:"rah",name:"Rococo Asset Hub",specName:"asset-hub-rococo",wsUrls:["wss://rococo-asset-hub-rpc.polkadot.io"],relay:"rococo",type:"system",chainId:1e3,logo:"./chains/rah.svg",blockExplorerUrl:"https://assethub-rococo.subscan.io"}),Ve=d({id:"westend",name:"Westend",specName:"westend",wsUrls:["wss://westend-rpc.polkadot.io"],relay:"westend",type:"relay",chainId:null,logo:"./chains/wnd.svg",blockExplorerUrl:"https://westend.subscan.io",xcmExtrinsic:"limited_teleport_assets"}),Be=d({id:"wah",name:"Westend Asset Hub",specName:"asset-hub-westend",wsUrls:["wss://westend-asset-hub-rpc.polkadot.io"],relay:"westend",type:"system",chainId:1e3,logo:"./chains/wah.svg",blockExplorerUrl:"https://assethub-westend.subscan.io"}),Oe=d({id:"paseo",name:"Paseo",specName:"paseo-testnet",wsUrls:["wss://paseo.dotters.network"],relay:"paseo",type:"relay",chainId:null,logo:"./chains/pas.svg",blockExplorerUrl:"https://paseo.subscan.io"}),$e=d({id:"paseoah",name:"Paseo Asset Hub",specName:"asset-hub-paseo",wsUrls:["wss://asset-hub-paseo-rpc.dwellir.com"],relay:"paseo",type:"system",chainId:1e3,logo:"./chains/pah.svg",blockExplorerUrl:"https://assethub-paseo.subscan.io"}),Ke=d({id:"hdx",name:"Hydration",specName:"hydradx",wsUrls:["wss://hydration-rpc.n.dwellir.com/","wss://rpc.hydradx.cloud","wss://hydradx-rpc.dwellir.com","wss://rpc.helikon.io/hydradx","wss://hydration.dotters.network"],relay:"polkadot",chainId:2034,logo:"./chains/pah.svg",blockExplorerUrl:"https://hydration.subscan.io",type:"para"});import{createClient as v}from"polkadot-api";import{getWsProvider as ee}from"polkadot-api/ws-provider/web";var b=(e,t)=>t?t[e]!==void 0:!1,E=new Map,P=(e,t)=>{if(!t)throw new Error("chainSpecs is not provided in lightClients config");if(!b(e,t))throw new Error(`Unknown chain: ${e}`);return!E.has(e)&&t?.[e]&&E.set(e,t?.[e]),E.get(e)};import{getSmProvider as Le}from"polkadot-api/sm-provider";var H=new Map,Z=async(e,{chainId:t,chainSpec:s},n)=>{let r=e.addChain({chainSpec:s,potentialRelayChains:n?[n]:void 0});return H.has(t)||H.set(t,r),H.get(t)},N=async(e,t,s)=>{let n=s?await Z(e,s):void 0,r=await Z(e,t,n);return Le(r)};var We=(e,{lightClients:t})=>`${e}-${t?.enable??"false"}`,U=new Map,te=(e,t,s)=>{let n=We(e,s);if(!U.has(n)){let r=T(e,t);U.set(n,f(r)?Me(r,s):qe(r,s))}return U.get(n)},Me=async(e,t)=>{if(!t.lightClients||!t.lightClients.enable||!b(e.id,t?.lightClients?.chainSpecs))return v(ee(e.wsUrls));let{smoldot:s,chainSpecs:n}=t.lightClients,r=P(e.id,n),o=await N(s,{chainId:e.id,chainSpec:r});return v(o)},qe=async(e,t)=>{if(!e.relay)throw new Error(`Chain ${e.id} does not have a relay chain`);let{id:s,relay:n}=e,r=t?.lightClients?.chainSpecs;if(!t.lightClients||!t.lightClients.enable||!b(s,r)||!b(n,r))return v(ee(e.wsUrls));let{chainSpecs:o,smoldot:a}=t.lightClients,[i,c]=[P(n,o),P(s,o)];return v(await N(a,{chainId:e.id,chainSpec:c},{chainId:n,chainSpec:i}))};var B=e=>w(e.chainId),Ut=e=>G(e.chainId),ze=async(e,t,s)=>{let n=T(e,s),r=Y(n.id),o=await te(e,s,{lightClients:t});if(!o)throw new Error(`Could not create client for chain ${e}/${t}`);let a=o.getTypedApi(r??je);return a.chainId=e,a.chain=n,a.waitReady=new Promise((i,c)=>{Je(o.bestBlocks$).then(()=>i()).catch(c)}),a},Fe=(e,t)=>`${e}-${t?.enable??"false"}`,V=new Map,Vt=async(e,t=[],s=!0,n)=>{let r=Fe(e,n);V.has(r)||V.set(r,ze(e,n,t));let o=await V.get(r);return s&&await o.waitReady,o};var u=e=>e;var Ge=(e,t=4)=>{try{if(e==null)return"";let s=Number(e);if(isNaN(s))throw new Error(`Invalid number: ${e}`);if(s===0)return"0";let n=1/10**t;return s<n?`< ${n.toFixed(t)}`:Intl.NumberFormat("en-US",{notation:"compact",maximumSignificantDigits:t>0?t:void 0}).format(Number(Number(e).toFixed(t)))}catch(s){throw console.error("formatDecimals",{err:s,num:e,digits:t}),s}},Ye=(e,t=10)=>{if(!e)return"0";let s=e.toString(),n=s.startsWith("-");n&&(s=s.slice(1)),s=s.padStart(t,"0");let[r,o]=[s.slice(0,s.length-t),s.slice(s.length-t)];return o=o.replace(/(0+)$/,""),`${n?"-":""}${r||"0"}${o?`.${o}`:""}`},$t=(e,t=10,s=4)=>{let n=Ye(e,t);return Ge(n,s)};function R(e,t=10){if(!/^(-?)([0-9]*)\.?([0-9]*)$/.test(e))throw new Error("Invalid value");let[s,n="0"]=e.split("."),r=s.startsWith("-");if(r&&(s=s.slice(1)),n=n.replace(/(0+)$/,""),t===0)Math.round(+`.${n}`)===1&&(s=`${BigInt(s)+1n}`),n="";else if(n.length>t){let[o,a,i]=[n.slice(0,t-1),n.slice(t-1,t),n.slice(t)],c=Math.round(+`${a}.${i}`);c>9?n=`${BigInt(o)+BigInt(1)}0`.padStart(o.length+1,"0"):n=`${o}${c}`,n.length>t&&(n=n.slice(1),s=`${BigInt(s)+1n}`),n=n.slice(0,t)}else n=n.padEnd(t,"0");return BigInt(`${r?"-":""}${s}${n}`)}var Lt=e=>{if(!e)return!1;if(e.length<Number.MAX_SAFE_INTEGER.toString().length){let t=Number.parseInt(e);return!Number.isNaN(t)}try{BigInt(e)}catch{return!1}return!0};import{AccountId as Qe}from"polkadot-api";var Ze=Qe().enc,qt=e=>{try{return e?(Ze(e),!0):!1}catch{return!1}};var m=(e,t)=>(e.assetIds?.[t]??e.assetId)?.toString(),C=(e,t)=>e.assetPallet?.[t];var O=(e,t)=>{let{interior:s}=t;if(s.type==="Here")return{type:"native",assetId:void 0};if(s.type==="X2"&&s.value.some(n=>n.type==="PalletInstance"&&n.value===50)){for(let n of s.value)if(n.type==="GeneralIndex")return{type:"asset",assetId:Number(n.value)}}return w(e)?{type:"foreign-asset",location:()=>t}:null};var ns=async(e,t)=>{switch(e.type){case"asset":{let s=m(e,t.chainId);if(!s)throw new Error(`Token ${e.symbol} does not have an assetId`);if(C(e,t.chainId)==="assets"){let r=await t.query.Assets.Asset.getValue(Number(s),{at:"best"});if(r?.min_balance)return r.min_balance}return 0n}case"native":{let s=await t.constants.Balances.ExistentialDeposit();return s||0n}default:throw new Error(`Unsupported token type: ${e.symbol}`)}};var as=(e,t,s,n)=>{if(!s||!e||!t)return;let r,o=e.chainId,a={assets:()=>{let c=t.assetIds?.[o]??t.assetId;return c?e.query.Assets.Account.watchValue(Number(c),s,"best").subscribe(l=>{let h=l?.status.type==="Liquid"?l.balance:0n;n?.(h)}):null},system:()=>e.query.System.Account.watchValue(s,"best").subscribe(c=>{let l=c.data.free-c.data.frozen;n?.(l)}),balances:()=>t.assetIds?.[o]??t.assetId?e.query.Balances.Account.watchValue(s,"best").subscribe(l=>{let h=l.free-l.frozen;n?.(h)}):null,tokens:()=>{let c=t.assetIds?.[o]??t.assetId;return c?e.query.Tokens.Accounts.watchValue(s,Number(c),"best").subscribe(l=>{let h=l.free-l.frozen;n?.(h)}):null},ormlTokens:()=>{let c=t.assetIds?.[o]??t.assetId;return c?e.query.OrmlTokens.Accounts.watchValue(s,Number(c),"best").subscribe(l=>{let h=l.free-l.frozen;n?.(h)}):null}},i=C(t,o);return i?r=a[i]():t.type!=="native"&&t.assetId?r=a.assets():r=a.system(),r},is=async(e,t,s)=>{if(!s||!e||!t)return;let n=e.chainId,r={assets:()=>{let a=t.assetIds?.[n]??t.assetId;return a?e.query.Assets.Account.getValue(Number(a),s,{at:"best"}).then(i=>i?.status.type==="Liquid"?i.balance:0n):null},system:()=>e.query.System.Account.getValue(s,{at:"best"}).then(a=>a.data.free-a.data.frozen),balances:()=>t.assetIds?.[n]??t.assetId?e.query.Balances.Account.getValue(s,{at:"best"}).then(i=>i.free-i.frozen):null,tokens:()=>{let a=t.assetIds?.[n]??t.assetId;return a?e.query.Tokens.Accounts.getValue(s,Number(a),{at:"best"}).then(i=>i.free-i.frozen):null},ormlTokens:()=>{let a=t.assetIds?.[n]??t.assetId;return a?e.query.OrmlTokens.Accounts.getValue(s,Number(a),{at:"best"}).then(i=>i.free-i.frozen):null}},o=C(t,n);return o?r[o]():t.type!=="native"&&t.assetId?r.assets():r.system()};var ps={WND:u({type:"native",decimals:12,symbol:"WND",name:"Westend",logo:"./img/tokens/WND.svg",isSufficient:!0}),ROC:u({type:"native",decimals:12,symbol:"ROC",name:"Rococo",logo:"./img/tokens/ROC.svg",isSufficient:!0}),KSM:u({type:"native",decimals:12,symbol:"KSM",name:"Kusama",logo:"./img/tokens/KSM.svg",isSufficient:!0}),KSM_PAH:u({type:"native",decimals:12,symbol:"KSM",name:"Kusama",logo:"./img/tokens/KSM.svg",isSufficient:!0}),DOT:u({type:"native",decimals:10,symbol:"DOT",name:"Polkadot",logo:"./img/tokens/DOT.svg",isSufficient:!0}),PAS:u({type:"native",decimals:10,symbol:"PAS",name:"Paseo",logo:"./img/tokens/PAS.svg",isSufficient:!0}),USDC:u({type:"asset",assetId:1337,decimals:6,symbol:"USDC",name:"USDC Coin",logo:"./img/tokens/USDC.svg",isSufficient:!0}),WND_USDC:u({type:"asset",assetId:31337,decimals:6,symbol:"USDC",name:"USDC Coin",logo:"./img/tokens/USDC.svg",isSufficient:!0}),USDT:u({type:"asset",assetId:1984,decimals:6,symbol:"USDT",name:"Tether USD",logo:"./img/tokens/USDT.svg",isSufficient:!0}),USDT_HDX:u({type:"asset",assetId:10,decimals:6,symbol:"USDT",name:"Tether USD",logo:"./img/tokens/USDT.svg",isSufficient:!0}),HDX:u({type:"native",decimals:12,symbol:"HDX",name:"HDX",logo:"./img/tokens/HDX.svg",isSufficient:!0})};import{XcmV3Junction as ne,XcmV3Junctions as et}from"@polkadot-api/descriptors";var se=async e=>{let[t,s]=await Promise.all([e.query.AssetConversion.Pools.getEntries({at:"best"}),e.query.PoolAssets.Asset.getEntries({at:"best"})]),n=e.chain;return t.map(r=>{let o=r.value,a=s.find(c=>c.keyArgs[0]===o);return a?{type:"asset-convertion",chainId:n.id,poolAssetId:o,tokenIds:r.keyArgs[0].map(c=>O(n.id,c)),owner:a.value.owner}:null}).filter(r=>!!r).filter(r=>r.tokenIds.every(o=>!!o))};var tt=(e,t)=>{if(!e.isSufficient)throw new Error(`Token ${e.symbol} (${e.assetId}) is not sufficient`);let s=m(e,t);if(s&&e.type!=="native")return{parents:0,interior:et.X2([ne.PalletInstance(50),ne.GeneralIndex(BigInt(s))])}},re=async(e,t,s)=>{switch(t.type){case"native":{let n=await e.query.System.Account.getValue(s,{at:"best"});return n.data.free-n.data.frozen}case"asset":{if(!B(e)||!t.assetId)throw new Error(`Cannot watch balance for ${t.assetId}. Assets are not supported on ${e.chainId}`);let n=await e.query.Assets.Account.getValue(t.assetId,s,{at:"best"});return n?.status.type==="Liquid"?n.balance:0n}case"foreign-asset":{if(!B(e)||!t.assetId)throw new Error(`Cannot watch balance for ${t.assetId}. Assets are not supported on ${e.chainId}`);return 0n}default:return 0n}},oe=(e,t,s)=>m(e,s)?.toString()===t.assetId?.toString()&&e.type?.toString()===t.type?.toString(),ae=async(e,t,s,n)=>{let r=n.find(c=>c.tokenIds.some(l=>oe(t,l,e.chainId))&&c.tokenIds.some(l=>oe(s,l,e.chainId)));if(!r)return null;let o=await re(e,r.tokenIds[0],r.owner),a=await re(e,r.tokenIds[1],r.owner),i=[o,a];return t.type==="native"?i:i.slice().reverse()},st=async(e,t)=>{let{nativeToken:s,plancks:n,tokenIn:r,tokenOut:o}=t;if(!r||!o||!s||!n)return;let a=e.chainId,i=m(r,a),c=m(o,a);if(i===c)return n;let l=await se(e),h=await ae(e,s,r,l),p=await ae(e,s,o,l),X=s.assetId!==i?h:[1n,1n],D=s.assetId!==c?p:[1n,1n];if(!X||!D||[...D,...X].includes(0n))return;let[M,q]=s.assetId!==c?D:[1n,1n];if(i===s.assetId)return n*q/M;let[he,ye]=X;return n*he/ye*q/M};import{MultiAddress as ie}from"@polkadot-api/descriptors";var bs=(e,t,s,n)=>{let r=R(s,t.decimals),o=e.chain;switch(t.type){case"native":return e.tx.Balances.transfer_keep_alive({dest:ie.Id(n),value:r});case"asset":{let a=m(t,o.id);if(!a)throw new Error(`Token ${t.symbol} does not have an assetId`);return C(t,o.id)==="tokens"?e.tx.Tokens.transfer({dest:n,amount:r,currency_id:Number(a)}):e.tx.Assets.transfer({id:Number(a),target:ie.Id(n),amount:r})}default:return null}};function ce(e,t){let s=t.chainId,n=f(e.chain),r=g(e.chain),o=f(t),a=g(t),i=I(e.chain),c=I(t),l=j(s);if(r&&o)return"SystemToRelay";if(r&&a)return"SystemToSystem";if(r&&c)return"SystemToPara";if(r&&l)return"SystemToBridge";if(n&&a)return"RelayToSystem";if(n&&c)return"RelayToPara";if(n&&l)return"RelayToBridge";if(i&&o)return"ParaToRelay";if(i&&a)return"ParaToSystem";if(i&&c)return"ParaToPara";throw Error("Could not establish a xcm transaction direction")}import{XcmV3Junction as y,XcmV3JunctionNetworkId as _,XcmV3Junctions as k,XcmV3WeightLimit as $,XcmVersionedLocation as le}from"@polkadot-api/descriptors";import{AccountId as pe,Binary as de}from"polkadot-api";var nt=e=>le.V3({parents:0,interior:k.X1(y.AccountId32({network:void 0,id:de.fromBytes(pe().enc(e))}))}),rt=e=>{switch(e.relay){case"kusama":return y.GlobalConsensus(_.Kusama());case"polkadot":return y.GlobalConsensus(_.Polkadot());case"paseo":return y.GlobalConsensus({type:"Paseo",value:void 0});case"rococo":return y.GlobalConsensus(_.Rococo());case"westend":return y.GlobalConsensus(_.Westend());default:throw new Error("Unsupported relay")}};function ot(e,t){let s=0;return(I(e)||g(e))&&(s+=1),t||(s+=1),s}function at(e,t,s){let n=[];switch(t?(I(e)||g(e))&&n.push(y.Parachain(e.chainId)):(n.push(rt(e)),(I(e)||g(e))&&n.push(y.Parachain(e.chainId))),s&&n.push(y.AccountId32({network:void 0,id:de.fromBytes(s instanceof Uint8Array?s:pe().enc(s))})),n.length){case 1:return k.X1(n[0]);case 2:return k.X2([n[0],n[1]]);case 3:return k.X3([n[0],n[1],n[2]]);default:return k.Here()}}var K=(e,t,s,n)=>{let r=ot(t,e),o=at(s,e,n);return le.V3({parents:r,interior:o})},A=(e,t,s,n,r,o)=>{if(!n.location)throw new Error("Token has no location!");let a=t.relay===s.relay,i=K(a,t,s),c=n.location(o,t,s);return{dest:i,assets:c,beneficiary:nt(r),fee_asset_item:0,weight_limit:$.Unlimited()}},ue=(e,t,s,n,r,o)=>{if(!n.location)throw new Error("Token has no location!");let a=t.relay===s.relay,i=K(a,t,s,r);return{asset:n.location(o,t,s),dest:i,dest_weight_limit:$.Unlimited()}},me=(e,t,s,n,r,o)=>{if(!n.location)throw new Error("Token has no location!");let a=t.relay===s.relay,i=K(a,t,s,r),c=m(n,t.id);return{currency_id:Number(c),amount:o,dest:i,dest_weight_limit:$.Unlimited()}};var Hs=(e,t,s,n,r)=>{let o=R(s,t.decimals),a=ce(e,r),i=e.chain,l=f(i)?"XcmPallet":"PolkadotXcm";switch(t.xcmExtrinsic?.(i,r)??"limited_reserve_transfer_assets"){case"XTokens.transfer":{let p=me(a,i,r,t,n,o);return e.tx.XTokens.transfer({...p})}case"XTokens.transfer_multiasset":{let p=ue(a,i,r,t,n,o);return e.tx.XTokens.transfer_multiasset({...p})}case"limited_reserve_transfer_assets":{let p=A(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm?.limited_reserve_transfer_assets({...p}):e.tx.XcmPallet?.limited_reserve_transfer_assets({...p})}case"transfer_asset":{let p=A(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm.transfer_assets({...p}):e.tx.XcmPallet.transfer_assets({...p})}case"limited_teleport_assets":{let p=A(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm.limited_teleport_assets({...p}):e.tx.XcmPallet.limited_teleport_assets({...p})}case"teleport_assets":{let p=A(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm.teleport_assets({...p}):e.tx.XcmPallet.teleport_assets({...p})}case"reserve_transfer_assets":{let p=A(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm.reserve_transfer_assets({...p}):e.tx.XcmPallet.reserve_transfer_assets({...p})}default:throw new Error("Method not supported")}};import{connectInjectedExtension as L,getInjectedExtensions as it}from"polkadot-api/pjs-signer";var x=class{storeKey="currentAccountId";constructor(t="currentAccountId"){this.storeKey=t}get(){return localStorage.getItem(this.storeKey)}set(t){return localStorage.setItem(this.storeKey,t)}remove(){return localStorage.removeItem(this.storeKey)}};var S=class{storeKey="connectedWalletIds";constructor(t="connectedWalletIds"){this.storeKey=t}get(){let t=localStorage.getItem(this.storeKey);return t?JSON.parse(t):[]}set(t){return localStorage.setItem(this.storeKey,JSON.stringify(t))}remove(){return localStorage.removeItem(this.storeKey)}};var W=class e{static _instance=null;store=new S;accountStore=new x;constructor(){}get isConnected(){return this.connectedWalletIds.length>0}static get instance(){return this._instance===null&&(this._instance=new e),this._instance}setStoreKey(t,s){this.store=new S(t),this.accountStore=new x(s)}get currentAccountId(){let t=this.accountStore.get();if(!t)return null;let[s,n]=t.split(":");return{wallet:s,address:n}}get connectedWalletIds(){return this.store.get()??[]}setCurrentAccountId(t,s){let n=t+":"+s;this.accountStore.set(n)}getInjectedWalletIds(){return it()?.concat().sort((t,s)=>t==="talisman"||s==="subwallet-js"?-1:s==="talisman"||t==="subwallet-js"?1:t.localeCompare(s))??[]}async connect(t){try{await L(t);let s=new Set([...this.connectedWalletIds,t]);this.store.set(Array.from(s))}catch(s){throw this.store.set(this.connectedWalletIds.filter(n=>n!==t)),s}}async disconnect(t){let s=this.connectedWalletIds.filter(n=>n!==t);this.store.set(s)}async getAllConnectedAccounts(){let t=[];for(let s of this.connectedWalletIds){let r=(await L(s)).getAccounts();t=t.concat(r.map(o=>({...o,wallet:s})))}return t}async subscribeAccounts(t){for(let s of this.connectedWalletIds)(await L(s)).subscribe(r=>{t(r.map(o=>({...o,wallet:s})))})}},qs=W.instance;export{U as CLIENTS_CACHE,J as DESCRIPTORS_ALL,W as Wallet,j as chainDestIsBridge,Q as chains,d as createChain,ut as createConfig,u as createToken,$t as formatBalance,Ge as formatDecimals,Ye as formatUnits,Vt as getApi,ze as getApiInner,st as getAssetConvertPlancks,m as getAssetIdByChain,C as getAssetPalletByChain,T as getChainById,te as getClient,We as getClientCacheId,Y as getDescriptors,ns as getExistentialDeposit,tt as getFeeAssetLocation,qe as getParaChainClient,Me as getRelayChainClient,is as getTokenBalance,O as getTokenIdFromXcmV3Multilocation,bs as getTransferExtrinsic,Hs as getXcmTransferExtrinsic,B as isApiAssetHub,Ut as isApiRelay,w as isChainIdAssetHub,G as isChainIdRelay,Lt as isNumber,I as isParachain,f as isRelayChain,g as isSystemChain,qt as isValidAddress,Ie as parseLocationStrToLocation,R as parseUnits,as as subscribeTokenBalance,ps as tokens,qs as wallet};
|
|
1
|
+
var ge=Object.defineProperty;var Ie=(e,t)=>{for(var s in t)ge(e,s,{get:t[s],enumerable:!0})};export*from"@polkadot-api/descriptors";var ut=e=>e;import{pah as je}from"@polkadot-api/descriptors";import{firstValueFrom as Je}from"rxjs";var f=e=>e.type==="relay",g=e=>{if(e.type==="system"&&e.chainId){let t=Number(e.chainId);return t>0&&t<2e3}return!1},I=e=>e.type==="para"&&e.chainId?Number(e.chainId)>2e3:!1,Ce=e=>{try{return JSON.parse(e)}catch{throw new Error(`Unable to parse ${e} as a valid location`)}},j=e=>{let t=Ce(e),s=!1;return t?.interior&&(s=t.interior.X1?JSON.stringify(t.interior.X1).toLowerCase().includes("globalconsensus"):t.interior.X2?JSON.stringify(t.interior.X2).toLowerCase().includes("globalconsensus"):!1),s};import{hdx as Ae,kah as be,kusama as ke,pah as z,paseo as xe,paseoah as Se,polkadot as we,rah as Te,rococo as Pe,wah as ve,westend as Re}from"@polkadot-api/descriptors";var F={polkadot:we,kusama:ke,rococo:Pe,westend:Re,paseo:xe},G={pah:z,kah:be,rah:Te,wah:ve,paseoah:Se},_e={hdx:Ae,prmx:z},J={...F,...G,..._e},w=e=>typeof e=="string"&&!!G[e],Y=e=>typeof e=="string"&&!!F[e],Q=e=>{if(J[e])return J[e]},T=(e,t)=>{let s=t.find(n=>n.id===e);if(!s)throw new Error(`Could not find chain ${e}`);return s};var d=e=>e;var Z={};Ie(Z,{hydration:()=>Ke,kusamaAssetHubChain:()=>He,kusamaChain:()=>Ee,paseoAssetHubChain:()=>$e,paseoChain:()=>Oe,polkadotAssetHubChain:()=>De,polkadotChain:()=>Xe,rococoAssetHubChain:()=>Ue,rococoChain:()=>Ne,westendAssetHubChain:()=>Be,westendChain:()=>Ve});var Xe=d({id:"polkadot",name:"Polkadot",specName:"polkadot",wsUrls:["wss://polkadot-rpc.dwellir.com"],relay:"polkadot",type:"relay",chainId:null,logo:"./chains/dot.svg",blockExplorerUrl:"https://polkadot.subscan.io"}),De=d({id:"pah",name:"Polkadot Asset Hub",specName:"asset-hub-polkadot",wsUrls:["wss://polkadot-asset-hub-rpc.polkadot.io/"],relay:"polkadot",type:"system",chainId:1e3,logo:"./chains/pah.svg",blockExplorerUrl:"https://assethub-polkadot.subscan.io"}),Ee=d({id:"kusama",name:"Kusama",specName:"kusama",wsUrls:["wss://kusama-rpc.polkadot.io"],relay:"kusama",type:"relay",chainId:null,logo:"./chains/ksm.svg",blockExplorerUrl:"https://kusama.subscan.io"}),He=d({id:"kah",name:"Kusama Asset Hub",specName:"asset-hub-kusama",wsUrls:["wss://kusama-asset-hub-rpc.polkadot.io"],relay:"kusama",type:"system",chainId:1e3,logo:"./chains/kah.svg",blockExplorerUrl:"https://assethub-kusama.subscan.io"}),Ne=d({id:"rococo",name:"Rococo",specName:"rococo",wsUrls:["wss://rococo-rpc.polkadot.io"],relay:"rococo",type:"relay",chainId:null,logo:"./chains/roc.svg",blockExplorerUrl:"https://rococo.subscan.io"}),Ue=d({id:"rah",name:"Rococo Asset Hub",specName:"asset-hub-rococo",wsUrls:["wss://rococo-asset-hub-rpc.polkadot.io"],relay:"rococo",type:"system",chainId:1e3,logo:"./chains/rah.svg",blockExplorerUrl:"https://assethub-rococo.subscan.io"}),Ve=d({id:"westend",name:"Westend",specName:"westend",wsUrls:["wss://westend-rpc.polkadot.io"],relay:"westend",type:"relay",chainId:null,logo:"./chains/wnd.svg",blockExplorerUrl:"https://westend.subscan.io",xcmExtrinsic:"limited_teleport_assets"}),Be=d({id:"wah",name:"Westend Asset Hub",specName:"asset-hub-westend",wsUrls:["wss://westend-asset-hub-rpc.polkadot.io"],relay:"westend",type:"system",chainId:1e3,logo:"./chains/wah.svg",blockExplorerUrl:"https://assethub-westend.subscan.io"}),Oe=d({id:"paseo",name:"Paseo",specName:"paseo-testnet",wsUrls:["wss://paseo.dotters.network"],relay:"paseo",type:"relay",chainId:null,logo:"./chains/pas.svg",blockExplorerUrl:"https://paseo.subscan.io"}),$e=d({id:"paseoah",name:"Paseo Asset Hub",specName:"asset-hub-paseo",wsUrls:["wss://asset-hub-paseo-rpc.dwellir.com"],relay:"paseo",type:"system",chainId:1e3,logo:"./chains/pah.svg",blockExplorerUrl:"https://assethub-paseo.subscan.io"}),Ke=d({id:"hdx",name:"Hydration",specName:"hydradx",wsUrls:["wss://hydration-rpc.n.dwellir.com/","wss://rpc.hydradx.cloud","wss://hydradx-rpc.dwellir.com","wss://rpc.helikon.io/hydradx","wss://hydration.dotters.network"],relay:"polkadot",chainId:2034,logo:"./chains/pah.svg",blockExplorerUrl:"https://hydration.subscan.io",type:"para"});import{createClient as v}from"polkadot-api";import{getWsProvider as te}from"polkadot-api/ws-provider/web";var b=(e,t)=>t?t[e]!==void 0:!1,E=new Map,P=(e,t)=>{if(!t)throw new Error("chainSpecs is not provided in lightClients config");if(!b(e,t))throw new Error(`Unknown chain: ${e}`);return!E.has(e)&&t?.[e]&&E.set(e,t?.[e]),E.get(e)};import{getSmProvider as Le}from"polkadot-api/sm-provider";var H=new Map,ee=async(e,{chainId:t,chainSpec:s},n)=>{let r=e.addChain({chainSpec:s,potentialRelayChains:n?[n]:void 0});return H.has(t)||H.set(t,r),H.get(t)},N=async(e,t,s)=>{let n=s?await ee(e,s):void 0,r=await ee(e,t,n);return Le(r)};var We=(e,{lightClients:t})=>`${e}-${t?.enable??"false"}`,U=new Map,se=(e,t,s)=>{let n=We(e,s);if(!U.has(n)){let r=T(e,t);U.set(n,f(r)?Me(r,s):qe(r,s))}return U.get(n)},Me=async(e,t)=>{if(!t.lightClients||!t.lightClients.enable||!b(e.id,t?.lightClients?.chainSpecs))return v(te(e.wsUrls));let{smoldot:s,chainSpecs:n}=t.lightClients,r=P(e.id,n),o=await N(s,{chainId:e.id,chainSpec:r});return v(o)},qe=async(e,t)=>{if(!e.relay)throw new Error(`Chain ${e.id} does not have a relay chain`);let{id:s,relay:n}=e,r=t?.lightClients?.chainSpecs;if(!t.lightClients||!t.lightClients.enable||!b(s,r)||!b(n,r))return v(te(e.wsUrls));let{chainSpecs:o,smoldot:a}=t.lightClients,[i,c]=[P(n,o),P(s,o)];return v(await N(a,{chainId:e.id,chainSpec:c},{chainId:n,chainSpec:i}))};var B=e=>w(e.chainId),Vt=e=>Y(e.chainId),ze=async(e,t,s)=>{let n=T(e,s),r=Q(n.id),o=await se(e,s,{lightClients:t});if(!o)throw new Error(`Could not create client for chain ${e}/${t}`);let a=o.getTypedApi(r??je);return a.chainId=e,a.chain=n,a.waitReady=new Promise((i,c)=>{Je(o.bestBlocks$).then(()=>i()).catch(c)}),a},Fe=(e,t)=>`${e}-${t?.enable??"false"}`,V=new Map,Bt=async(e,t=[],s=!0,n)=>{let r=Fe(e,n);V.has(r)||V.set(r,ze(e,n,t));let o=await V.get(r);return s&&await o.waitReady,o};var u=e=>e;var Ge=(e,t=4)=>{try{if(e==null)return"";let s=Number(e);if(isNaN(s))throw new Error(`Invalid number: ${e}`);if(s===0)return"0";let n=1/10**t;return s<n?`< ${n.toFixed(t)}`:Intl.NumberFormat("en-US",{notation:"compact",maximumSignificantDigits:t>0?t:void 0}).format(Number(Number(e).toFixed(t)))}catch(s){throw console.error("formatDecimals",{err:s,num:e,digits:t}),s}},Ye=(e,t=10)=>{if(!e)return"0";let s=e.toString(),n=s.startsWith("-");n&&(s=s.slice(1)),s=s.padStart(t,"0");let[r,o]=[s.slice(0,s.length-t),s.slice(s.length-t)];return o=o.replace(/(0+)$/,""),`${n?"-":""}${r||"0"}${o?`.${o}`:""}`},Kt=(e,t=10,s=4)=>{let n=Ye(e,t);return Ge(n,s)};function R(e,t=10){if(!/^(-?)([0-9]*)\.?([0-9]*)$/.test(e))throw new Error("Invalid value");let[s,n="0"]=e.split("."),r=s.startsWith("-");if(r&&(s=s.slice(1)),n=n.replace(/(0+)$/,""),t===0)Math.round(+`.${n}`)===1&&(s=`${BigInt(s)+1n}`),n="";else if(n.length>t){let[o,a,i]=[n.slice(0,t-1),n.slice(t-1,t),n.slice(t)],c=Math.round(+`${a}.${i}`);c>9?n=`${BigInt(o)+BigInt(1)}0`.padStart(o.length+1,"0"):n=`${o}${c}`,n.length>t&&(n=n.slice(1),s=`${BigInt(s)+1n}`),n=n.slice(0,t)}else n=n.padEnd(t,"0");return BigInt(`${r?"-":""}${s}${n}`)}var Wt=e=>{if(!e)return!1;if(e.length<Number.MAX_SAFE_INTEGER.toString().length){let t=Number.parseInt(e);return!Number.isNaN(t)}try{BigInt(e)}catch{return!1}return!0};import{AccountId as Qe}from"polkadot-api";var Ze=Qe().enc,jt=e=>{try{return e?(Ze(e),!0):!1}catch{return!1}};var m=(e,t)=>(e.assetIds?.[t]??e.assetId)?.toString(),C=(e,t)=>e.assetPallet?.[t];var O=(e,t)=>{let{interior:s}=t;if(s.type==="Here")return{type:"native",assetId:void 0};if(s.type==="X2"&&s.value.some(n=>n.type==="PalletInstance"&&n.value===50)){for(let n of s.value)if(n.type==="GeneralIndex")return{type:"asset",assetId:Number(n.value)}}return w(e)?{type:"foreign-asset",location:()=>t}:null};var rs=async(e,t)=>{switch(e.type){case"asset":{let s=m(e,t.chainId);if(!s)throw new Error(`Token ${e.symbol} does not have an assetId`);if(C(e,t.chainId)==="assets"){let r=await t.query.Assets.Asset.getValue(Number(s),{at:"best"});if(r?.min_balance)return r.min_balance}return 0n}case"native":{let s=await t.constants.Balances.ExistentialDeposit();return s||0n}default:throw new Error(`Unsupported token type: ${e.symbol}`)}};var is=(e,t,s,n)=>{if(!s||!e||!t)return;let r,o=e.chainId,a={assets:()=>{let c=t.assetIds?.[o]??t.assetId;return c?e.query.Assets.Account.watchValue(Number(c),s,"best").subscribe(l=>{let h=l?.status.type==="Liquid"?l.balance:0n;n?.(h)}):null},system:()=>e.query.System.Account.watchValue(s,"best").subscribe(c=>{let l=c.data.free-c.data.frozen;n?.(l)}),balances:()=>t.assetIds?.[o]??t.assetId?e.query.Balances.Account.watchValue(s,"best").subscribe(l=>{let h=l.free-l.frozen;n?.(h)}):null,tokens:()=>{let c=t.assetIds?.[o]??t.assetId;return c?e.query.Tokens.Accounts.watchValue(s,Number(c),"best").subscribe(l=>{let h=l.free-l.frozen;n?.(h)}):null},ormlTokens:()=>{let c=t.assetIds?.[o]??t.assetId;return c?e.query.OrmlTokens.Accounts.watchValue(s,Number(c),"best").subscribe(l=>{let h=l.free-l.frozen;n?.(h)}):null}},i=C(t,o);return i?r=a[i]():t.type!=="native"&&t.assetId?r=a.assets():r=a.system(),r},cs=async(e,t,s)=>{if(!s||!e||!t)return;let n=e.chainId,r={assets:()=>{let a=t.assetIds?.[n]??t.assetId;return a?e.query.Assets.Account.getValue(Number(a),s,{at:"best"}).then(i=>i?.status.type==="Liquid"?i.balance:0n):null},system:()=>e.query.System.Account.getValue(s,{at:"best"}).then(a=>a.data.free-a.data.frozen),balances:()=>t.assetIds?.[n]??t.assetId?e.query.Balances.Account.getValue(s,{at:"best"}).then(i=>i.free-i.frozen):null,tokens:()=>{let a=t.assetIds?.[n]??t.assetId;return a?e.query.Tokens.Accounts.getValue(s,Number(a),{at:"best"}).then(i=>i.free-i.frozen):null},ormlTokens:()=>{let a=t.assetIds?.[n]??t.assetId;return a?e.query.OrmlTokens.Accounts.getValue(s,Number(a),{at:"best"}).then(i=>i.free-i.frozen):null}},o=C(t,n);return o?r[o]():t.type!=="native"&&t.assetId?r.assets():r.system()};var ds={WND:u({type:"native",decimals:12,symbol:"WND",name:"Westend",logo:"./img/tokens/WND.svg",isSufficient:!0}),ROC:u({type:"native",decimals:12,symbol:"ROC",name:"Rococo",logo:"./img/tokens/ROC.svg",isSufficient:!0}),KSM:u({type:"native",decimals:12,symbol:"KSM",name:"Kusama",logo:"./img/tokens/KSM.svg",isSufficient:!0}),KSM_PAH:u({type:"native",decimals:12,symbol:"KSM",name:"Kusama",logo:"./img/tokens/KSM.svg",isSufficient:!0}),DOT:u({type:"native",decimals:10,symbol:"DOT",name:"Polkadot",logo:"./img/tokens/DOT.svg",isSufficient:!0}),PAS:u({type:"native",decimals:10,symbol:"PAS",name:"Paseo",logo:"./img/tokens/PAS.svg",isSufficient:!0}),USDC:u({type:"asset",assetId:1337,decimals:6,symbol:"USDC",name:"USDC Coin",logo:"./img/tokens/USDC.svg",isSufficient:!0}),WND_USDC:u({type:"asset",assetId:31337,decimals:6,symbol:"USDC",name:"USDC Coin",logo:"./img/tokens/USDC.svg",isSufficient:!0}),USDT:u({type:"asset",assetId:1984,decimals:6,symbol:"USDT",name:"Tether USD",logo:"./img/tokens/USDT.svg",isSufficient:!0}),USDT_HDX:u({type:"asset",assetId:10,decimals:6,symbol:"USDT",name:"Tether USD",logo:"./img/tokens/USDT.svg",isSufficient:!0}),HDX:u({type:"native",decimals:12,symbol:"HDX",name:"HDX",logo:"./img/tokens/HDX.svg",isSufficient:!0})};import{XcmV3Junction as re,XcmV3Junctions as et}from"@polkadot-api/descriptors";var ne=async e=>{let[t,s]=await Promise.all([e.query.AssetConversion.Pools.getEntries({at:"best"}),e.query.PoolAssets.Asset.getEntries({at:"best"})]),n=e.chain;return t.map(r=>{let o=r.value,a=s.find(c=>c.keyArgs[0]===o);return a?{type:"asset-convertion",chainId:n.id,poolAssetId:o,tokenIds:r.keyArgs[0].map(c=>O(n.id,c)),owner:a.value.owner}:null}).filter(r=>!!r).filter(r=>r.tokenIds.every(o=>!!o))};var tt=(e,t)=>{if(!e.isSufficient)throw new Error(`Token ${e.symbol} (${e.assetId}) is not sufficient`);let s=m(e,t);if(s&&e.type!=="native")return{parents:0,interior:et.X2([re.PalletInstance(50),re.GeneralIndex(BigInt(s))])}},oe=async(e,t,s)=>{switch(t.type){case"native":{let n=await e.query.System.Account.getValue(s,{at:"best"});return n.data.free-n.data.frozen}case"asset":{if(!B(e)||!t.assetId)throw new Error(`Cannot watch balance for ${t.assetId}. Assets are not supported on ${e.chainId}`);let n=await e.query.Assets.Account.getValue(t.assetId,s,{at:"best"});return n?.status.type==="Liquid"?n.balance:0n}case"foreign-asset":{if(!B(e)||!t.assetId)throw new Error(`Cannot watch balance for ${t.assetId}. Assets are not supported on ${e.chainId}`);return 0n}default:return 0n}},ae=(e,t,s)=>m(e,s)?.toString()===t.assetId?.toString()&&e.type?.toString()===t.type?.toString(),ie=async(e,t,s,n)=>{let r=n.find(c=>c.tokenIds.some(l=>ae(t,l,e.chainId))&&c.tokenIds.some(l=>ae(s,l,e.chainId)));if(!r)return null;let o=await oe(e,r.tokenIds[0],r.owner),a=await oe(e,r.tokenIds[1],r.owner),i=[o,a];return t.type==="native"?i:i.slice().reverse()},st=async(e,t)=>{let{nativeToken:s,plancks:n,tokenIn:r,tokenOut:o}=t;if(!r||!o||!s||!n)return;let a=e.chainId,i=m(r,a),c=m(o,a);if(i===c)return n;let l=await ne(e),h=await ie(e,s,r,l),p=await ie(e,s,o,l),X=s.assetId!==i?h:[1n,1n],D=s.assetId!==c?p:[1n,1n];if(!X||!D||[...D,...X].includes(0n))return;let[M,q]=s.assetId!==c?D:[1n,1n];if(i===s.assetId)return n*q/M;let[ye,fe]=X;return n*ye/fe*q/M};import{MultiAddress as ce}from"@polkadot-api/descriptors";var ks=(e,t,s,n)=>{let r=R(s,t.decimals),o=e.chain;switch(t.type){case"native":return e.tx.Balances.transfer_keep_alive({dest:ce.Id(n),value:r});case"asset":{let a=m(t,o.id);if(!a)throw new Error(`Token ${t.symbol} does not have an assetId`);return C(t,o.id)==="tokens"?e.tx.Tokens.transfer({dest:n,amount:r,currency_id:Number(a)}):e.tx.Assets.transfer({id:Number(a),target:ce.Id(n),amount:r})}default:return null}};function le(e,t){let s=t.chainId,n=f(e.chain),r=g(e.chain),o=f(t),a=g(t),i=I(e.chain),c=I(t),l=j(s);if(r&&o)return"SystemToRelay";if(r&&a)return"SystemToSystem";if(r&&c)return"SystemToPara";if(r&&l)return"SystemToBridge";if(n&&a)return"RelayToSystem";if(n&&c)return"RelayToPara";if(n&&l)return"RelayToBridge";if(i&&o)return"ParaToRelay";if(i&&a)return"ParaToSystem";if(i&&c)return"ParaToPara";throw Error("Could not establish a xcm transaction direction")}import{XcmV3Junction as y,XcmV3JunctionNetworkId as _,XcmV3Junctions as k,XcmV3WeightLimit as $,XcmVersionedLocation as pe}from"@polkadot-api/descriptors";import{AccountId as de,Binary as ue}from"polkadot-api";var nt=e=>pe.V3({parents:0,interior:k.X1(y.AccountId32({network:void 0,id:ue.fromBytes(de().enc(e))}))}),rt=e=>{switch(e.relay){case"kusama":return y.GlobalConsensus(_.Kusama());case"polkadot":return y.GlobalConsensus(_.Polkadot());case"paseo":return y.GlobalConsensus({type:"Paseo",value:void 0});case"rococo":return y.GlobalConsensus(_.Rococo());case"westend":return y.GlobalConsensus(_.Westend());default:throw new Error("Unsupported relay")}};function ot(e,t){let s=0;return(I(e)||g(e))&&(s+=1),t||(s+=1),s}function at(e,t,s){let n=[];switch(t?(I(e)||g(e))&&n.push(y.Parachain(e.chainId)):(n.push(rt(e)),(I(e)||g(e))&&n.push(y.Parachain(e.chainId))),s&&n.push(y.AccountId32({network:void 0,id:ue.fromBytes(s instanceof Uint8Array?s:de().enc(s))})),n.length){case 1:return k.X1(n[0]);case 2:return k.X2([n[0],n[1]]);case 3:return k.X3([n[0],n[1],n[2]]);default:return k.Here()}}var K=(e,t,s,n)=>{let r=ot(t,e),o=at(s,e,n);return pe.V3({parents:r,interior:o})},A=(e,t,s,n,r,o)=>{if(!n.location)throw new Error("Token has no location!");let a=t.relay===s.relay,i=K(a,t,s),c=n.location(o,t,s);return{dest:i,assets:c,beneficiary:nt(r),fee_asset_item:0,weight_limit:$.Unlimited()}},me=(e,t,s,n,r,o)=>{if(!n.location)throw new Error("Token has no location!");let a=t.relay===s.relay,i=K(a,t,s,r);return{asset:n.location(o,t,s),dest:i,dest_weight_limit:$.Unlimited()}},he=(e,t,s,n,r,o)=>{if(!n.location)throw new Error("Token has no location!");let a=t.relay===s.relay,i=K(a,t,s,r),c=m(n,t.id);return{currency_id:Number(c),amount:o,dest:i,dest_weight_limit:$.Unlimited()}};var Ns=(e,t,s,n,r)=>{let o=R(s,t.decimals),a=le(e,r),i=e.chain,l=f(i)?"XcmPallet":"PolkadotXcm";switch(t.xcmExtrinsic?.(i,r)??"limited_reserve_transfer_assets"){case"XTokens.transfer":{let p=he(a,i,r,t,n,o);return e.tx.XTokens.transfer({...p})}case"XTokens.transfer_multiasset":{let p=me(a,i,r,t,n,o);return e.tx.XTokens.transfer_multiasset({...p})}case"limited_reserve_transfer_assets":{let p=A(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm?.limited_reserve_transfer_assets({...p}):e.tx.XcmPallet?.limited_reserve_transfer_assets({...p})}case"transfer_asset":{let p=A(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm.transfer_assets({...p}):e.tx.XcmPallet.transfer_assets({...p})}case"limited_teleport_assets":{let p=A(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm.limited_teleport_assets({...p}):e.tx.XcmPallet.limited_teleport_assets({...p})}case"teleport_assets":{let p=A(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm.teleport_assets({...p}):e.tx.XcmPallet.teleport_assets({...p})}case"reserve_transfer_assets":{let p=A(a,i,r,t,n,o);return l==="PolkadotXcm"?e.tx.PolkadotXcm.reserve_transfer_assets({...p}):e.tx.XcmPallet.reserve_transfer_assets({...p})}default:throw new Error("Method not supported")}};import{connectInjectedExtension as L,getInjectedExtensions as it}from"polkadot-api/pjs-signer";var x=class{storeKey="currentAccountId";constructor(t="currentAccountId"){this.storeKey=t}get(){return localStorage.getItem(this.storeKey)}set(t){return localStorage.setItem(this.storeKey,t)}remove(){return localStorage.removeItem(this.storeKey)}};var S=class{storeKey="connectedWalletIds";constructor(t="connectedWalletIds"){this.storeKey=t}get(){let t=localStorage.getItem(this.storeKey);return t?JSON.parse(t):[]}set(t){return localStorage.setItem(this.storeKey,JSON.stringify(t))}remove(){return localStorage.removeItem(this.storeKey)}};var W=class e{static _instance=null;store=new S;accountStore=new x;constructor(){}get isConnected(){return this.connectedWalletIds.length>0}static get instance(){return this._instance===null&&(this._instance=new e),this._instance}setStoreKey(t,s){this.store=new S(t),this.accountStore=new x(s)}get currentAccountId(){let t=this.accountStore.get();if(!t)return null;let[s,n]=t.split(":");return{wallet:s,address:n}}get connectedWalletIds(){return this.store.get()??[]}setCurrentAccountId(t,s){let n=t+":"+s;this.accountStore.set(n)}getInjectedWalletIds(){return it()?.concat().sort((t,s)=>t==="talisman"||s==="subwallet-js"?-1:s==="talisman"||t==="subwallet-js"?1:t.localeCompare(s))??[]}async connect(t){try{await L(t);let s=new Set([...this.connectedWalletIds,t]);this.store.set(Array.from(s))}catch(s){throw this.store.set(this.connectedWalletIds.filter(n=>n!==t)),s}}async disconnect(t){let s=this.connectedWalletIds.filter(n=>n!==t);this.store.set(s)}async getAllConnectedAccounts(){let t=[];for(let s of this.connectedWalletIds){let r=(await L(s)).getAccounts();t=t.concat(r.map(o=>({...o,wallet:s})))}return t}async subscribeAccounts(t){for(let s of this.connectedWalletIds)(await L(s)).subscribe(r=>{t(r.map(o=>({...o,wallet:s})))})}},js=W.instance;export{U as CLIENTS_CACHE,J as DESCRIPTORS_ALL,W as Wallet,j as chainDestIsBridge,Z as chains,d as createChain,ut as createConfig,u as createToken,Kt as formatBalance,Ge as formatDecimals,Ye as formatUnits,Bt as getApi,ze as getApiInner,st as getAssetConvertPlancks,m as getAssetIdByChain,C as getAssetPalletByChain,T as getChainById,se as getClient,We as getClientCacheId,Q as getDescriptors,rs as getExistentialDeposit,tt as getFeeAssetLocation,qe as getParaChainClient,Me as getRelayChainClient,cs as getTokenBalance,O as getTokenIdFromXcmV3Multilocation,ks as getTransferExtrinsic,Ns as getXcmTransferExtrinsic,B as isApiAssetHub,Vt as isApiRelay,w as isChainIdAssetHub,Y as isChainIdRelay,Wt as isNumber,I as isParachain,f as isRelayChain,g as isSystemChain,jt as isValidAddress,Ce as parseLocationStrToLocation,R as parseUnits,is as subscribeTokenBalance,ds as tokens,js as wallet};
|