@avalabs/evm-module 0.0.22 → 0.0.23

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.
Files changed (28) hide show
  1. package/.turbo/turbo-build.log +10 -10
  2. package/.turbo/turbo-lint.log +1 -1
  3. package/.turbo/turbo-test.log +7 -5
  4. package/CHANGELOG.md +8 -0
  5. package/dist/index.cjs +18 -20
  6. package/dist/index.cjs.map +1 -1
  7. package/dist/index.d.cts +2 -2
  8. package/dist/index.d.ts +2 -2
  9. package/dist/index.js +16 -17
  10. package/dist/index.js.map +1 -1
  11. package/package.json +9 -8
  12. package/src/handlers/get-address/get-address.ts +26 -0
  13. package/src/handlers/get-balances/evm-balance-service/get-erc20-balances.test.ts +3 -4
  14. package/src/handlers/get-balances/evm-balance-service/get-erc20-balances.ts +13 -17
  15. package/src/handlers/get-balances/evm-balance-service/get-native-token-balances.test.ts +4 -5
  16. package/src/handlers/get-balances/evm-balance-service/get-native-token-balances.ts +7 -10
  17. package/src/handlers/get-balances/get-balances.test.ts +10 -11
  18. package/src/handlers/get-balances/get-balances.ts +5 -3
  19. package/src/handlers/get-balances/glacier-balance-service/get-erc20-balances.test.ts +1 -2
  20. package/src/handlers/get-balances/glacier-balance-service/get-erc20-balances.ts +10 -13
  21. package/src/handlers/get-balances/glacier-balance-service/get-native-token-balances.test.ts +2 -3
  22. package/src/handlers/get-balances/glacier-balance-service/get-native-token-balances.ts +10 -9
  23. package/src/handlers/get-transaction-history/converters/etherscan-transaction-converter/convert-transaction-erc20.test.ts +53 -0
  24. package/src/handlers/get-transaction-history/converters/etherscan-transaction-converter/convert-transaction-erc20.ts +3 -5
  25. package/src/handlers/get-transaction-history/converters/etherscan-transaction-converter/convert-transaction-normal.test.ts +57 -0
  26. package/src/handlers/get-transaction-history/converters/etherscan-transaction-converter/convert-transaction-normal.ts +3 -4
  27. package/src/handlers/get-transaction-history/converters/evm-transaction-converter/get-tokens.ts +5 -6
  28. package/src/module.ts +5 -2
@@ -1,5 +1,5 @@
1
1
 
2
- > @avalabs/evm-module@0.0.22 build /home/runner/work/vm-modules/vm-modules/packages/evm-module
2
+ > @avalabs/evm-module@0.0.23 build /home/runner/work/vm-modules/vm-modules/packages/evm-module
3
3
  > tsup
4
4
 
5
5
  CLI Building entry: ./src/index.ts
@@ -11,12 +11,12 @@
11
11
  CJS Build start
12
12
  ESM Build start
13
13
  DTS Build start
14
- CJS dist/index.cjs 49.87 KB
15
- CJS dist/index.cjs.map 163.68 KB
16
- CJS ⚡️ Build success in 4908ms
17
- ESM dist/index.js 48.02 KB
18
- ESM dist/index.js.map 163.68 KB
19
- ESM ⚡️ Build success in 4913ms
20
- DTS ⚡️ Build success in 31697ms
21
- DTS dist/index.d.cts 2.23 KB
22
- DTS dist/index.d.ts 2.23 KB
14
+ CJS dist/index.cjs 50.18 KB
15
+ CJS dist/index.cjs.map 165.04 KB
16
+ CJS ⚡️ Build success in 4556ms
17
+ ESM dist/index.js 48.29 KB
18
+ ESM dist/index.js.map 165.04 KB
19
+ ESM ⚡️ Build success in 4560ms
20
+ DTS ⚡️ Build success in 29581ms
21
+ DTS dist/index.d.cts 2.33 KB
22
+ DTS dist/index.d.ts 2.33 KB
@@ -1,4 +1,4 @@
1
1
 
2
- > @avalabs/evm-module@0.0.22 lint /home/runner/work/vm-modules/vm-modules/packages/evm-module
2
+ > @avalabs/evm-module@0.0.23 lint /home/runner/work/vm-modules/vm-modules/packages/evm-module
3
3
  > eslint "src/**/*.ts"
4
4
 
@@ -1,8 +1,8 @@
1
1
 
2
- > @avalabs/evm-module@0.0.22 test /home/runner/work/vm-modules/vm-modules/packages/evm-module
2
+ > @avalabs/evm-module@0.0.23 test /home/runner/work/vm-modules/vm-modules/packages/evm-module
3
3
  > jest
4
4
 
5
- PASS src/handlers/eth-send-transaction/eth-send-transaction.test.ts (35.828 s)
5
+ PASS src/handlers/eth-send-transaction/eth-send-transaction.test.ts (34.428 s)
6
6
  ● Console
7
7
 
8
8
  console.error
@@ -107,11 +107,13 @@ PASS src/handlers/get-balances/glacier-balance-service/get-erc20-balances.test.t
107
107
  PASS src/handlers/get-balances/evm-balance-service/get-erc20-balances.test.ts
108
108
  PASS src/handlers/get-transaction-history/get-transaction-history.test.ts
109
109
  PASS src/handlers/get-balances/glacier-balance-service/get-native-token-balances.test.ts
110
+ PASS src/handlers/get-transaction-history/converters/etherscan-transaction-converter/convert-transaction-normal.test.ts
111
+ PASS src/handlers/get-transaction-history/converters/etherscan-transaction-converter/convert-transaction-erc20.test.ts
110
112
  PASS src/handlers/get-network-fee/get-network-fee.test.ts
111
113
  PASS src/handlers/eth-sign/utils/beautify-message/beautify-message.test.ts
112
114
 
113
- Test Suites: 17 passed, 17 total
114
- Tests: 82 passed, 82 total
115
+ Test Suites: 19 passed, 19 total
116
+ Tests: 84 passed, 84 total
115
117
  Snapshots: 0 total
116
- Time: 46.703 s
118
+ Time: 45.29 s
117
119
  Ran all test suites.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @avalabs/evm-module
2
2
 
3
+ ## 0.0.23
4
+
5
+ ### Patch Changes
6
+
7
+ - fbdefd2: Replace BN with bigint
8
+ - Updated dependencies [fbdefd2]
9
+ - @avalabs/vm-module-types@0.0.23
10
+
3
11
  ## 0.0.22
4
12
 
5
13
  ### Patch Changes
package/dist/index.cjs CHANGED
@@ -5,44 +5,42 @@ var vmModuleTypes = require('@avalabs/vm-module-types');
5
5
  var walletsSdk = require('@avalabs/wallets-sdk');
6
6
  var ethers = require('ethers');
7
7
  var utilsSdk = require('@avalabs/utils-sdk');
8
- var lt = require('bn.js');
9
8
  var etherscanSdk = require('@avalabs/etherscan-sdk');
10
- var Zt = require('lodash.startcase');
9
+ var Qt = require('lodash.startcase');
11
10
  var zod = require('zod');
12
- var $e = require('@blockaid/client');
11
+ var je = require('@blockaid/client');
13
12
  var coingeckoSdk = require('@avalabs/coingecko-sdk');
14
13
  var core = require('@zodios/core');
15
14
  var glacierSdk = require('@avalabs/glacier-sdk');
16
15
 
17
16
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
18
17
 
19
- var lt__default = /*#__PURE__*/_interopDefault(lt);
20
- var Zt__default = /*#__PURE__*/_interopDefault(Zt);
21
- var $e__default = /*#__PURE__*/_interopDefault($e);
18
+ var Qt__default = /*#__PURE__*/_interopDefault(Qt);
19
+ var je__default = /*#__PURE__*/_interopDefault(je);
22
20
 
23
- var Bt=Object.defineProperty;var Ut=(t,e,r)=>e in t?Bt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var C=(t,e,r)=>(Ut(t,typeof e!="symbol"?e+"":e,r),r),ge=(t,e,r)=>{if(!e.has(t))throw TypeError("Cannot "+r)};var T=(t,e,r)=>(ge(t,e,"read from private field"),r?r.call(t):e.get(t)),_=(t,e,r)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,r);},D=(t,e,r,n)=>(ge(t,e,"write to private field"),n?n.call(t,r):e.set(t,r),r);async function Q({chainId:t,proxyApiUrl:e}){let r=await fetch(`${e}/tokens?evmChainId=${t}`);if(!r.ok)throw rpcErrors.rpcErrors.internal(`Failed to fetch tokens for chainId ${t}`);return r.json()}var Lt=process.env.GLACIER_API_KEY,I=t=>{let{chainId:e,chainName:r,rpcUrl:n,multiContractAddress:s,pollingInterval:o=2e3}=t,a=new walletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:s},Ht(n,Lt),new ethers.Network(r,e));return a.pollingInterval=o,a},Ft=["glacier-api.avax.network","proxy-api.avax.network"];function Ht(t,e){let r=new URL(t);if(e&&Ft.includes(r.hostname)){let n=r.searchParams;return n.set("token",e),r.search=n.toString(),r.toString()}return t}var ne={LOW:1n,MEDIUM:4n,HIGH:6n},oe=500000000n;async function he({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n}){let s=I({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:n}),{maxFeePerGas:o}=await s.getFeeData();if(!o)throw rpcErrors.rpcErrors.internal("Pre-EIP-1559 networks are not supported");let a=oe*ne.LOW,i=oe*ne.MEDIUM,c=oe*ne.HIGH;return {baseFee:o,low:{maxFeePerGas:o+a,maxPriorityFeePerGas:a},medium:{maxFeePerGas:o+i,maxPriorityFeePerGas:i},high:{maxFeePerGas:o+c,maxPriorityFeePerGas:c},isFixedFee:!1}}function G(t,e,r="tx"){return `${t}/${r}/${e}`}var ke=({tx:t,networkToken:e,chainId:r,explorerUrl:n,address:s})=>{let o=t.from.toLowerCase()===s.toLowerCase(),a=parseInt(t.timeStamp)*1e3,i=e.decimals,c=new lt.BN(t.value),l=utilsSdk.balanceToDisplayValue(c,i),p=o?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,{from:f,to:d,gasPrice:u,gasUsed:y,hash:b}=t,g=G(n,b);return {isIncoming:!o,isOutgoing:o,isContractCall:Yt(t),timestamp:a,hash:b,isSender:o,from:f,to:d,tokens:[{decimal:i.toString(),name:e.name,symbol:e.symbol,amount:l,type:vmModuleTypes.TokenType.NATIVE}],gasUsed:y,gasPrice:u,chainId:r.toString(),txType:p,explorerLink:g}};function Yt(t){return t.input!=="0x"}function Ee({tx:t,address:e,explorerUrl:r,chainId:n}){let s=t.from.toLowerCase()===e.toLowerCase(),o=parseInt(t.timeStamp)*1e3,a=parseInt(t.tokenDecimal),i=new lt.BN(t.value),c=utilsSdk.balanceToDisplayValue(i,a),{from:l,to:p,gasPrice:f,gasUsed:d,hash:u,tokenDecimal:y,tokenName:b,tokenSymbol:g}=t,h=s?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,k=G(r,u);return {isIncoming:!s,isOutgoing:s,isContractCall:!1,timestamp:o,hash:u,isSender:s,from:l,to:p,tokens:[{decimal:y,name:b,symbol:g,type:vmModuleTypes.TokenType.ERC20,amount:c}],gasUsed:d,gasPrice:f,chainId:n.toString(),txType:h,explorerLink:k}}var Se=async({isTestnet:t,networkToken:e,explorerUrl:r,chainId:n,address:s,nextPageToken:o,offset:a})=>{let i=o?JSON.parse(o):void 0,c=i?.page||1,l=i?.queries||["normal","erc20"],p=(l.includes("normal")?await etherscanSdk.getNormalTxs(s,!t,{page:c,offset:a}):[]).map(b=>ke({tx:b,chainId:n,networkToken:e,explorerUrl:r,address:s})),f=(l.includes("erc20")?await etherscanSdk.getErc20Txs(s,!t,void 0,{page:c,offset:a}):[]).map(b=>Ee({tx:b,address:s,explorerUrl:r,chainId:n})),d=f.map(b=>b.hash),u=p.filter(b=>!d.includes(b.hash)),y={queries:[],page:c+1};return p.length&&y.queries.push("normal"),f.length&&y.queries.push("erc20"),{transactions:[...u,...f],nextPageToken:y.queries.length?JSON.stringify(y):""}};var Re=t=>t===1||t===5||t===4||t===11155111;var Ce=({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r},n,s)=>{let o=!e&&!r,a=Xt(t.method?.methodName),i=n.toLowerCase(),c=a.toLowerCase().includes("swap"),l=o&&t.from.address.toLowerCase()===i,p=o&&t.to.address.toLowerCase()===i,f=a==="Market Buy Orders With Eth"||a==="Buy NFT",d=a==="Approve",u=a.toLowerCase().includes("transfer"),y=a.toLowerCase().includes("airdrop"),b=a.toLowerCase().includes("unwrap"),g=a==="Fill Order",h=u&&!!s[0]&&Pe(s[0].type)&&s[0].from?.address.toLowerCase()===i,k=u&&!!s[0]&&Pe(s[0].type)&&s[0].to?.address.toLowerCase()===i;return c?vmModuleTypes.TransactionType.SWAP:l?vmModuleTypes.TransactionType.SEND:p?vmModuleTypes.TransactionType.RECEIVE:f?vmModuleTypes.TransactionType.NFT_BUY:d?vmModuleTypes.TransactionType.APPROVE:h?vmModuleTypes.TransactionType.NFT_SEND:k?vmModuleTypes.TransactionType.NFT_RECEIVE:u?vmModuleTypes.TransactionType.TRANSFER:y?vmModuleTypes.TransactionType.AIRDROP:b?vmModuleTypes.TransactionType.UNWRAP:g?vmModuleTypes.TransactionType.FILL_ORDER:vmModuleTypes.TransactionType.UNKNOWN};function Pe(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}var Xt=(t="")=>t.includes("(")?Zt__default.default(t.split("(",1)[0]):t;var Ie=(t,{nativeTransaction:e,erc20Transfers:r,erc721Transfers:n},s)=>{let o=t===vmModuleTypes.TransactionType.TRANSFER,a=t===vmModuleTypes.TransactionType.SEND,i=t===vmModuleTypes.TransactionType.RECEIVE,c=e?.from?.address,l=e?.to?.address;o&&r&&r[0]&&(c=r[0].from.address,l=r[0].to.address),o&&n&&n[0]&&(c=n[0].from.address,l=n[0].to.address);let p=a||o&&c.toLowerCase()===s.toLowerCase(),f=i||o&&l.toLowerCase()===s.toLowerCase();return {isOutgoing:p,isIncoming:f,isSender:c===s,from:c,to:l}};async function xe(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var tr="https://cloudflare-ipfs.com";function V(t,e=tr){if(!t)return "";try{return utilsSdk.ipfsResolver(t,e)}catch{return t}}async function rr(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}async function we(t){let e={};if(t)if(t.startsWith("data:application/json;base64,")){let r=t.substring(29);try{let n=Buffer.from(r,"base64").toString();e=JSON.parse(n);}catch{e={};}}else e=await rr(V(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}var ar="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Ae(t,e="256"){let r=V(t);return `${ar}/width=${e},fit/${r}`}var Ue=async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:n},s)=>{let o=[];if(t.value!=="0"){let a=s.decimals,i=new lt.BN(t.value),c=utilsSdk.balanceToDisplayValue(i,a);o.push({decimal:a.toString(),name:s.name,symbol:s.symbol,amount:c,from:t.from,to:t.to,type:vmModuleTypes.TokenType.NATIVE});}return e?.forEach(a=>{let i=a.erc20Token.decimals,c=new lt.BN(a.value),l=utilsSdk.balanceToDisplayValue(c,i);o.push({decimal:i.toString(),name:a.erc20Token.name,symbol:a.erc20Token.symbol,amount:l,from:a.from,to:a.to,imageUri:a.erc20Token.logoUri,type:vmModuleTypes.TokenType.ERC20});}),r&&await Promise.allSettled(r.map(async a=>{let i=a.erc721Token,c=await Be(i.tokenUri,i.metadata.imageUri);o.push({name:a.erc721Token.name,symbol:a.erc721Token.symbol,amount:"1",imageUri:c,from:a.from,to:a.to,collectableTokenId:a.erc721Token.tokenId,type:vmModuleTypes.TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async a=>{let i=a.erc1155Token,c=await Be(i.tokenUri,i.metadata.imageUri);o.push({name:a.erc1155Token.metadata.name??"",symbol:a.erc1155Token.metadata.symbol??"",amount:a.value,imageUri:c,from:a.from,to:a.to,collectableTokenId:a.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),o},Be=async(t,e)=>{if(e)return e.startsWith("ipfs://")?V(e):e;{let[r,n]=await xe(we(t));return n?"":r.image?Ae(r.image):""}};var Ge=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER],X=(a=>(a.TOTAL_SUPPLY="totalSupply",a.BALANCE_OF="balanceOf",a.TRANSFER="transfer",a.TRANSFER_FROM="transferFrom",a.APPROVE="approve",a.ALLOWANCE="allowance",a))(X||{});var Ve=async({transactions:t,explorerUrl:e,networkToken:r,chainId:n,address:s})=>{let o=await Ue(t,r),a=Ce(t,s,o),{isOutgoing:i,isIncoming:c,isSender:l,from:p,to:f}=Ie(a,t,s),{blockTimestamp:d,txHash:u,gasPrice:y,gasUsed:b}=t.nativeTransaction,g=G(e,u);return {isContractCall:!Ge.includes(a),isIncoming:c,isOutgoing:i,isSender:l,timestamp:d*1e3,hash:u,from:p,to:f,tokens:o,gasPrice:y,gasUsed:b,chainId:n.toString(),txType:a,explorerLink:g}};var Me=async({chainId:t,explorerUrl:e,networkToken:r,address:n,nextPageToken:s,offset:o,glacierService:a})=>{try{let i=await a.listTransactions({chainId:t.toString(),address:n,pageToken:s,pageSize:o});return {transactions:(await Promise.all(i.transactions.filter(p=>p.nativeTransaction.txStatus==="1").map(p=>Ve({transactions:p,explorerUrl:e,networkToken:r,chainId:t,address:n}).then(f=>f)))).filter(p=>p.tokens.find(f=>Number(f.amount)!==0)),nextPageToken:i.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}};var Le=async({chainId:t,isTestnet:e,networkToken:r,explorerUrl:n,address:s,nextPageToken:o,offset:a,glacierService:i})=>Re(t)?Se({isTestnet:e,networkToken:r,explorerUrl:n,chainId:t,address:s,nextPageToken:o,offset:a}):i.isHealthy()?Me({networkToken:r,explorerUrl:n,chainId:t,address:s,nextPageToken:o,offset:a,glacierService:i}):{transactions:[],nextPageToken:""};var Fe={name:"EVM",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/bundle.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:["eip155:1","eip155:43114","eip155:43113"],namespaces:["eip155"]},cointype:"60",permissions:{rpc:{dapps:!0,methods:["personal_sign","eth_sendTransaction","eth_*","web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"]}},manifestVersion:"0.0"};var or=zod.z.object({from:zod.z.string().length(42),to:zod.z.string().length(42),data:zod.z.string().optional(),value:zod.z.string().startsWith("0x").optional(),gas:zod.z.string().startsWith("0x").optional(),gasPrice:zod.z.string().startsWith("0x").optional(),maxFeePerGas:zod.z.string().startsWith("0x").optional(),maxPriorityFeePerGas:zod.z.string().startsWith("0x").optional(),nonce:zod.z.string().optional(),chainId:zod.z.string().optional()}),sr=zod.z.array(or).length(1),He=t=>sr.safeParse(t);var Oe=async({transactionParams:{from:t,to:e,data:r,value:n},provider:s})=>{let o=await s.getTransactionCount(t);return Number(await s.estimateGas({from:t,to:e,nonce:o,data:r,value:n}))};var We=async({from:t,provider:e})=>e.getTransactionCount(t);var je="DUMMY_API_KEY",Ye=async({proxyApiUrl:t,chainId:e,params:r,domain:n})=>new $e__default.default({baseURL:t+"/proxy/blockaid/",apiKey:je}).evm.transaction.scan({account_address:r.from,chain:e.toString(),options:["validation","simulation"],data:{from:r.from,to:r.to,data:r.data,value:r.value,gas:r.gas,gas_price:r.gasPrice},metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}}),Je=async({proxyApiUrl:t,chainId:e,accountAddress:r,data:n,domain:s})=>new $e__default.default({baseURL:t+"/proxy/blockaid/",apiKey:je}).evm.jsonRpc.scan({chain:e.toString(),options:["validation","simulation"],account_address:r,data:n,metadata:s&&s.length>0?{domain:s}:{non_dapp:!0}});var ze=async({request:t,dAppUrl:e,params:r,chainId:n,proxyApiUrl:s})=>{let o,a,i;try{let{validation:c,simulation:l}=await Ye({proxyApiUrl:s,chainId:n,params:r,domain:e});!c||c.result_type==="Error"||c.result_type==="Warning"?o=L[vmModuleTypes.AlertType.WARNING]:c.result_type==="Malicious"&&(o=L[vmModuleTypes.AlertType.DANGER]),l?.status==="Success"&&(i=Ke(t,l.account_summary.exposures),a=Qe(l.account_summary.assets_diffs));}catch(c){console.error("processTransactionSimulation error",c),o=L[vmModuleTypes.AlertType.WARNING];}return {alert:o,balanceChange:a,tokenApprovals:i}},Ke=(t,e)=>{let r=[];for(let s of e){let o=Ze(s.asset);if(o)for(let[a,i]of Object.entries(s.spenders))if(i.exposure.length===0)r.push({token:o,spenderAddress:a,logoUri:o.logoUri});else for(let c of i.exposure)"raw_value"in c?r.push({token:o,spenderAddress:a,value:c.raw_value,usdPrice:c.usd_price,logoUri:o.logoUri}):r.push({token:o,spenderAddress:a,logoUri:c.logo_url,usdPrice:c.usd_price});}return r.length===0?void 0:{isEditable:r.length===1&&r[0]?.token.type===vmModuleTypes.TokenType.ERC20&&t.method===vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,approvals:r}},Qe=t=>{let e=qe(t,"in"),r=qe(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},qe=(t,e)=>t.filter(r=>r[e].length>0).sort((r,n)=>r[e].length-n[e].length).map(r=>{let n=r.asset,s="address"in n?Ze(n):mr(n);if(!s)return;let o=r[e].map(a=>{let i;if("value"in a&&a.value)if("decimals"in s){let c=utilsSdk.numberToBN(a.value,s.decimals);i=utilsSdk.balanceToDisplayValue(c,s.decimals);}else ethers.isHexString(a.value)&&(i=parseInt(a.value,16).toString());else "type"in s&&s.type===vmModuleTypes.TokenType.ERC721&&(i="1");return i?{displayValue:i,usdPrice:a.usd_price}:void 0}).filter(a=>a!==void 0);return {token:s,items:o}}).filter(r=>r!==void 0),Ze=t=>{let e;return t.type==="ERC20"?e={type:vmModuleTypes.TokenType.ERC20,address:t.address,decimals:t.decimals,name:t.name??t.symbol??"",symbol:t.symbol??"",logoUri:t.logo_url}:t.type==="ERC1155"?e={type:vmModuleTypes.TokenType.ERC1155,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="ERC721"?e={type:vmModuleTypes.TokenType.ERC721,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="NONERC"&&(e={type:vmModuleTypes.TokenType.NONERC,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}),e},mr=t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),Xe=async({request:t,dAppUrl:e,accountAddress:r,chainId:n,data:s,proxyApiUrl:o})=>{let a,i,c;try{let{validation:l,simulation:p}=await Je({proxyApiUrl:o,chainId:n,accountAddress:r,data:s,domain:e});!l||l.result_type==="Error"||l.result_type==="Warning"?a=L[vmModuleTypes.AlertType.WARNING]:l.result_type==="Malicious"&&(a=L[vmModuleTypes.AlertType.DANGER]),p?.status==="Success"&&(c=Ke(t,p.account_summary.exposures),i=Qe(p.account_summary.assets_diffs));}catch(l){console.error("processJsonRpcSimulation error",l),a=L[vmModuleTypes.AlertType.WARNING];}return {alert:a,balanceChange:i,tokenApprovals:c}},L={[vmModuleTypes.AlertType.WARNING]:{type:vmModuleTypes.AlertType.WARNING,details:{title:"Suspicious Transaction",description:"Use caution, this transaction may be malicious."}},[vmModuleTypes.AlertType.DANGER]:{type:vmModuleTypes.AlertType.DANGER,details:{title:"Scam Transaction",description:"This transaction is malicious, do not proceed.",actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};var ee={_format:"hh-sol-artifact-1",contractName:"ERC20",sourceName:"contracts/token/ERC20/ERC20.sol",abi:[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],bytecode:"0x60806040523480156200001157600080fd5b5060405162000aed38038062000aed8339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000281565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b6020821081036200027b57634e487b7160e01b600052602260045260246000fd5b50919050565b61085c80620002916000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c3919061069a565b60405180910390f35b6100df6100da36600461070b565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610735565b61024a565b604051601281526020016100c3565b6100df61013136600461070b565b61026e565b6100f3610144366004610771565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df61017536600461070b565b61029f565b6100df61018836600461070b565b61031f565b6100f361019b366004610793565b61032d565b6060600380546101af906107c6565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107c6565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b9190610800565b610358565b6060600480546101af906107c6565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104f0565b600060208083528351808285015260005b818110156106c7578581018301518582016040015282016106ab565b818111156106d9576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461070657600080fd5b919050565b6000806040838503121561071e57600080fd5b610727836106ef565b946020939093013593505050565b60008060006060848603121561074a57600080fd5b610753846106ef565b9250610761602085016106ef565b9150604084013590509250925092565b60006020828403121561078357600080fd5b61078c826106ef565b9392505050565b600080604083850312156107a657600080fd5b6107af836106ef565b91506107bd602084016106ef565b90509250929050565b600181811c908216806107da57607f821691505b6020821081036107fa57634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561082157634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220e7dc257596a973556752e9db5f465b21aad78d068ae819d0395e1f99a95065a964736f6c634300080d0033",deployedBytecode:"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c3919061069a565b60405180910390f35b6100df6100da36600461070b565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610735565b61024a565b604051601281526020016100c3565b6100df61013136600461070b565b61026e565b6100f3610144366004610771565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df61017536600461070b565b61029f565b6100df61018836600461070b565b61031f565b6100f361019b366004610793565b61032d565b6060600380546101af906107c6565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107c6565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b9190610800565b610358565b6060600480546101af906107c6565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104f0565b600060208083528351808285015260005b818110156106c7578581018301518582016040015282016106ab565b818111156106d9576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461070657600080fd5b919050565b6000806040838503121561071e57600080fd5b610727836106ef565b946020939093013593505050565b60008060006060848603121561074a57600080fd5b610753846106ef565b9250610761602085016106ef565b9150604084013590509250925092565b60006020828403121561078357600080fd5b61078c826106ef565b9392505050565b600080604083850312156107a657600080fd5b6107af836106ef565b91506107bd602084016106ef565b90509250929050565b600181811c908216806107da57607f821691505b6020821081036107fa57634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561082157634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220e7dc257596a973556752e9db5f465b21aad78d068ae819d0395e1f99a95065a964736f6c634300080d0033",linkReferences:{},deployedLinkReferences:{}};var et=t=>{if(t.data)try{let r=new ethers.Interface(ee.abi).parseTransaction({data:t.data,value:t.value}),n=r?.name??r?.fragment?.name;return n&&fr(n)?n:void 0}catch{return}};function fr(t){return Object.values(X).includes(t)}var tt=async({request:t,network:e,approvalController:r,proxyApiUrl:n})=>{let{dappInfo:s,params:o}=t,a=He(o);if(!a.success)return console.error("invalid params",a.error),{error:rpcErrors.rpcErrors.invalidParams("Transaction params are invalid")};let i=a.data[0];if(!i)return {error:rpcErrors.rpcErrors.invalidParams("Transaction params are invalid")};let c=I({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});if(!i.gas||Number(i.gas)<0)try{let k=await Oe({transactionParams:{from:i.from,to:i.to,data:i.data,value:i.value},provider:c});i.gas="0x"+k.toString(16);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate gas limit")}}if(!i.nonce)try{let k=await We({from:i.from,provider:c});i.nonce=String(k);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate nonce")}}let l=et(i),{alert:p,balanceChange:f,tokenApprovals:d}=await ze({request:t,proxyApiUrl:n,chainId:e.chainId,params:i,dAppUrl:t.dappInfo.url}),u="Approve Transaction";l==="approve"&&(u="Token Spend Approval");let y={title:u,network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},transactionDetails:{website:new URL(s.url).hostname,from:i.from,to:i.to,data:i.data,type:l},networkFeeSelector:!0,alert:p,balanceChange:f,tokenApprovals:d},b={type:vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,account:i.from,chainId:e.chainId,data:{type:2,nonce:Number(i.nonce),gasLimit:Number(i.gas),to:i.to,from:i.from,data:i.data,value:i.value,chainId:i.chainId}},g=await r.requestApproval({request:t,displayData:y,signingData:b});if("error"in g)return {error:g.error};let h=await c.send("eth_sendRawTransaction",[g.result]);return br({provider:c,txHash:h,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted}),{result:h}},br=async({provider:t,txHash:e,onTransactionConfirmed:r,onTransactionReverted:n})=>{(await t.waitForTransaction(e))?.status===1?r(e):n(e);};var rt=async({provider:t,tokenService:e,address:r,currency:n,tokens:s,network:o})=>{let a=o.pricingProviders?.coingecko.assetPlatformId,i=o.pricingProviders?.coingecko.nativeTokenId,c=s.map(f=>f.address),l=await Promise.allSettled(s.map(async f=>{let u=await new ethers.ethers.Contract(f.address,ee.abi,t).balanceOf?.(r),y=new lt__default.default(u)||utilsSdk.numberToBN(0,f.decimals);return {...f,balance:y}})).then(f=>f.reduce((d,u)=>u.status==="fulfilled"&&!u.value.balance.isZero()?[...d,u.value]:d,[]));if(!l.length)return {};let p=a&&await e.getPricesByAddresses(c,a,n)||{};return l.reduce((f,d)=>{let u=p?.[i??""]?.[n]?.price??void 0,y=p?.[i??""]?.[n]?.marketCap??void 0,b=p?.[i??""]?.[n]?.vol24??void 0,g=p?.[i??""]?.[n]?.change24??void 0,h=u?utilsSdk.bnToBig(d.balance,d.decimals).mul(u).toNumber():void 0,k=utilsSdk.balanceToDisplayValue(d.balance,d.decimals),be=h?.toFixed(2);return {...f,[d.address.toLowerCase()]:{...d,type:vmModuleTypes.TokenType.ERC20,balance:d.balance,balanceDisplayValue:k,balanceInCurrency:h,balanceCurrencyDisplayValue:be,priceInCurrency:u,marketCap:y,change24:g,vol24:b}}},{})};var at=async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:n=Y.exponential()})=>{let s=0,o=0,a;for(;o<r;){o>0&&await Sr(s);try{let c=await t(o);if(e(c))return c}catch(c){a=c;}s=n(o),o++;}let i=a?`Max retry exceeded. ${a}`:"Max retry exceeded.";throw new Error(i)},Y=class{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return r=>e*1e3}static constantMs(e){return r=>e}};function Sr(t){return new Promise(e=>setTimeout(e,t))}var ce=t=>at({operation:e=>t(e>0),maxRetries:2,backoffPolicy:Y.constant(1),isSuccess:e=>e?.status?.error_code!==429});function nt(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}function le(t){let e,r=0;for(e=0;e<t.length;e++){let n=nt(t[e]??"");r=r+65027/n;}return (""+r).slice(0,16)}var me=t=>new core.Zodios(`${t}/proxy/coingecko`,[{method:"post",path:"/simple/price",parameters:[{name:"ids",type:"Query",schema:zod.string()},{name:"vs_currencies",type:"Query",schema:zod.string()},{name:"include_market_cap",type:"Query",schema:zod.string().optional()},{name:"include_24hr_vol",type:"Query",schema:zod.string().optional()},{name:"include_24hr_change",type:"Query",schema:zod.string().optional()},{name:"include_last_updated_at",type:"Query",schema:zod.string().optional()}],alias:"simplePrice",response:vmModuleTypes.RawSimplePriceResponseSchema},{method:"post",path:"/simple/token_price/:id",parameters:[{name:"id",type:"Path",schema:zod.string()},{name:"contract_addresses",type:"Query",schema:zod.string().array()},{name:"vs_currencies",type:"Query",schema:zod.string().array()},{name:"include_market_cap",type:"Query",schema:zod.boolean().optional()},{name:"include_24hr_vol",type:"Query",schema:zod.boolean().optional()},{name:"include_24hr_change",type:"Query",schema:zod.boolean().optional()}],alias:"simplePriceByContractAddresses",response:vmModuleTypes.SimplePriceResponseSchema}],{axiosConfig:{headers:{"Content-Type":"application/json"}}});var ot=coingeckoSdk.getBasicCoingeckoHttp(),x,F,q=class{constructor({storage:e,proxyApiUrl:r}){_(this,x,void 0);_(this,F,void 0);C(this,"transformSimplePriceResponse",(e,r=[coingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(s=>{let o=e[s];n[s]={},r.forEach(a=>{n[s]={[a]:{price:o?.[a],change24:o?.[`${a}_24h_change`],vol24:o?.[`${a}_24h_vol`],marketCap:o?.[`${a}_market_cap`]}};});}),n});D(this,x,e),D(this,F,r);}async getSimplePrice({coinIds:e=[],currencies:r=[coingeckoSdk.VsCurrencyType.USD]}){let n,o=`getSimplePrice-${e?`${le(e)}-${r.toString()}`:`${r.toString()}`}`;if(n=T(this,x)?.get?.(o),n)return n;try{n=await ce(a=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:a}));}catch{n=void 0;}return T(this,x)?.set?.(o,n),n}async getPricesByAddresses(e,r,n=coingeckoSdk.VsCurrencyType.USD){let s,a=`getPricesWithMarketDataByAddresses-${`${le(e)}-${r}-${n}`}`;if(s=T(this,x)?.get?.(a),s)return s;try{s=await ce(i=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:n,useCoingeckoProxy:i}));}catch{s=void 0;}return T(this,x)?.set?.(a,s),s}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:n=coingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:s=!1}){return s?me(T(this,F)).simplePriceByContractAddresses(void 0,{params:{id:e},queries:{contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}}):coingeckoSdk.simpleTokenPrice(ot,{assetPlatformId:e,tokenAddresses:r,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:e=[],currencies:r=[coingeckoSdk.VsCurrencyType.USD],marketCap:n=!1,vol24:s=!1,change24:o=!1,lastUpdated:a=!1,useCoingeckoProxy:i=!1,shouldThrow:c=!0}){if(i){let l=await me(T(this,F)).simplePrice(void 0,{queries:{ids:e?.join(","),vs_currencies:r.join(","),include_market_cap:String(n),include_24hr_vol:String(s),include_24hr_change:String(o),include_last_updated_at:String(a)}});return this.transformSimplePriceResponse(l,r)}return coingeckoSdk.simplePrice(ot,{coinIds:e,currencies:r,marketCap:n,vol24:s,change24:o,lastUpdated:a,shouldThrow:c})}};x=new WeakMap,F=new WeakMap;var st=async({provider:t,tokenService:e,address:r,currency:n,network:s})=>{let o=s.pricingProviders?.coingecko.nativeTokenId,a=s.networkToken,i=o?await e.getSimplePrice({coinIds:[o],currencies:[n]}):{},c=i?.[o??""]?.[n]?.price??void 0,l=i?.[o??""]?.[n]?.marketCap??void 0,p=i?.[o??""]?.[n]?.vol24??void 0,f=i?.[o??""]?.[n]?.change24??void 0,d=await t.getBalance(r),u=utilsSdk.bigintToBig(d,a.decimals),y=utilsSdk.bigToBN(u,a.decimals),b=utilsSdk.balanceToDisplayValue(y,a.decimals),g=c?utilsSdk.bnToBig(y,a.decimals).mul(c).toNumber():void 0,h=g?.toFixed(2);return {...a,coingeckoId:o??"",type:vmModuleTypes.TokenType.NATIVE,balance:y,balanceDisplayValue:b,balanceInCurrency:g,balanceCurrencyDisplayValue:h,priceInCurrency:c,marketCap:l,vol24:p,change24:f}};var it=async({address:t,currency:e,chainId:r,glacierService:n,coingeckoId:s})=>{let a=(await n.getNativeBalance({chainId:r.toString(),address:t,currency:e.toLocaleLowerCase()})).nativeTokenBalance,i=new lt.BN(a.balance),c=utilsSdk.balanceToDisplayValue(i,a.decimals),l=a.price?.value,p=l?utilsSdk.bnToBig(i,a.decimals).mul(l).toNumber():void 0,f=p?.toFixed(2);return {name:a.name,symbol:a.symbol,decimals:a.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:a.logoUri,balance:i,balanceDisplayValue:c,balanceInCurrency:p,balanceCurrencyDisplayValue:f,priceInCurrency:l,coingeckoId:s}};var pt=async({glacierService:t,currency:e,chainId:r,address:n,customTokens:s})=>{let o=[],a;do{let i=await t.listErc20Balances({chainId:r.toString(),address:n,currency:e.toLocaleLowerCase(),pageSize:100,pageToken:a});o.push(...Wr(i.erc20TokenBalances,Number(r))),a=i.nextPageToken;}while(a);return [...Or(s),...o].reduce((i,c)=>({...i,[c.address.toLowerCase()]:c}),{})},Or=t=>t.map(e=>({...e,decimals:e.decimals??18,type:vmModuleTypes.TokenType.ERC20,balance:new lt__default.default(0),balanceInCurrency:0,balanceDisplayValue:"0",balanceCurrencyDisplayValue:"0",priceInCurrency:0,marketCap:0,change24:0,vol24:0})),Wr=(t,e)=>t.map(r=>{let n=new lt__default.default(r.balance),s=utilsSdk.balanceToDisplayValue(n,r.decimals),o=r.balanceValue?.value.toString(),a=r.price?.value,i=a?utilsSdk.bnToBig(n,r.decimals).mul(a).toNumber():void 0;return {chainId:e,address:r.address,name:r.name,symbol:r.symbol,decimals:r.decimals,logoUri:r.logoUri,balance:n,balanceCurrencyDisplayValue:o,balanceDisplayValue:s,balanceInCurrency:i,priceInCurrency:a,type:vmModuleTypes.TokenType.ERC20}});var dt=async({addresses:t,currency:e,network:r,proxyApiUrl:n,customTokens:s=[],storage:o,glacierService:a})=>{let i=r.chainId,c=await a.isNetworkSupported(r.chainId),l=a.isHealthy(),p=[];if(l&&c)p=await Promise.allSettled(t.map(async d=>{let u=await it({address:d,currency:e,chainId:i,glacierService:a,coingeckoId:r.pricingProviders?.coingecko.nativeTokenId??""}),y=await pt({customTokens:s.filter(mt),glacierService:a,currency:e,chainId:i,address:d});return {address:d,balances:{[u.symbol]:u,...y}}}));else {let d=new q({storage:o,proxyApiUrl:n}),y=[...await Q({chainId:Number(i),proxyApiUrl:n}),...s],b=I({chainId:i,chainName:r.chainName,rpcUrl:r.rpcUrl,multiContractAddress:r.utilityAddresses?.multicall});p=await Promise.allSettled(t.map(async g=>{let h=await st({network:r,tokenService:d,address:g,currency:e,provider:b}),k=await rt({provider:b,network:r,tokenService:d,address:g,currency:e,tokens:y.filter(mt)});return {address:g,balances:{[h.symbol]:h,...k}}}));}return p.reduce((d,u)=>u.status==="rejected"?d:{...d,[u.value.address]:u.value.balances},{})};function mt(t){return t.type===vmModuleTypes.TokenType.ERC20}var jr={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Yr={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},ft=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return jr;case vmModuleTypes.Environment.DEV:return Yr}};var P=class extends Error{constructor(){super(...arguments);C(this,"message","Glacier is unhealthy. Try again later.");}},re=class{constructor({glacierApiUrl:e}){C(this,"glacierSdk");C(this,"isGlacierHealthy",!0);C(this,"supportedChainIds",[]);C(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:e}),this.getSupportedChainIds().catch(()=>{});}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async isNetworkSupported(e){return (await this.getSupportedChainIds()).some(n=>n===e.toString())}async getSupportedChainIds(){if(this.supportedChainIds.length)return this.supportedChainIds;try{let e=await this.glacierSdk.evmChains.supportedChains({});return this.supportedChainIds=e.chains.map(r=>r.chainId),this.supportedChainIds}catch{return []}}async reindexNft({address:e,chainId:r,tokenId:n}){try{await this.glacierSdk.nfTs.reindexNft({address:e,chainId:r,tokenId:n});}catch(s){throw s instanceof P&&this.setGlacierToUnhealthy(),s}}async getTokenDetails({address:e,chainId:r,tokenId:n}){try{return this.glacierSdk.nfTs.getTokenDetails({address:e,chainId:r,tokenId:n})}catch(s){throw s instanceof P&&this.setGlacierToUnhealthy(),s}}async getNativeBalance({chainId:e,address:r,currency:n}){try{return this.glacierSdk.evmBalances.getNativeBalance({chainId:e,address:r,currency:n.toLocaleLowerCase()})}catch(s){throw s instanceof P&&this.setGlacierToUnhealthy(),s}}async listErc721Balances({chainId:e,address:r,pageSize:n,pageToken:s}){try{return this.glacierSdk.evmBalances.listErc721Balances({chainId:e,address:r,pageSize:n,pageToken:s})}catch(o){throw o instanceof P&&this.setGlacierToUnhealthy(),o}}async listErc1155Balances({chainId:e,address:r,pageSize:n,pageToken:s}){try{return this.glacierSdk.evmBalances.listErc1155Balances({chainId:e,address:r,pageSize:n,pageToken:s})}catch(o){throw o instanceof P&&this.setGlacierToUnhealthy(),o}}async listErc20Balances({chainId:e,address:r,currency:n,pageSize:s,pageToken:o}){try{return this.glacierSdk.evmBalances.listErc20Balances({chainId:e,address:r,currency:n.toLocaleLowerCase(),pageSize:s,pageToken:o})}catch(a){throw a instanceof P&&this.setGlacierToUnhealthy(),a}}async listTransactions({chainId:e,address:r,pageToken:n,pageSize:s}){try{return this.glacierSdk.evmTransactions.listTransactions({chainId:e,address:r,pageToken:n,pageSize:s})}catch(o){throw o instanceof P&&this.setGlacierToUnhealthy(),o}}};var de=t=>{let e="";e+=`Domain
21
+ var Ut=Object.defineProperty;var Gt=(t,e,r)=>e in t?Ut(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var A=(t,e,r)=>(Gt(t,typeof e!="symbol"?e+"":e,r),r),Te=(t,e,r)=>{if(!e.has(t))throw TypeError("Cannot "+r)};var T=(t,e,r)=>(Te(t,e,"read from private field"),r?r.call(t):e.get(t)),_=(t,e,r)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,r);},D=(t,e,r,a)=>(Te(t,e,"write to private field"),a?a.call(t,r):e.set(t,r),r);async function X({chainId:t,proxyApiUrl:e}){let r=await fetch(`${e}/tokens?evmChainId=${t}`);if(!r.ok)throw rpcErrors.rpcErrors.internal(`Failed to fetch tokens for chainId ${t}`);return r.json()}var Ft=process.env.GLACIER_API_KEY,C=t=>{let{chainId:e,chainName:r,rpcUrl:a,multiContractAddress:s,pollingInterval:o=2e3}=t,n=new walletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:s},Ot(a,Ft),new ethers.Network(r,e));return n.pollingInterval=o,n},Ht=["glacier-api.avax.network","proxy-api.avax.network"];function Ot(t,e){let r=new URL(t);if(e&&Ht.includes(r.hostname)){let a=r.searchParams;return a.set("token",e),r.search=a.toString(),r.toString()}return t}var se={LOW:1n,MEDIUM:4n,HIGH:6n},ie=500000000n;async function ke({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:a}){let s=C({chainId:t,chainName:e,rpcUrl:r,multiContractAddress:a}),{maxFeePerGas:o}=await s.getFeeData();if(!o)throw rpcErrors.rpcErrors.internal("Pre-EIP-1559 networks are not supported");let n=ie*se.LOW,i=ie*se.MEDIUM,c=ie*se.HIGH;return {baseFee:o,low:{maxFeePerGas:o+n,maxPriorityFeePerGas:n},medium:{maxFeePerGas:o+i,maxPriorityFeePerGas:i},high:{maxFeePerGas:o+c,maxPriorityFeePerGas:c},isFixedFee:!1}}function G(t,e,r="tx"){return `${t}/${r}/${e}`}var Ee=({tx:t,networkToken:e,chainId:r,explorerUrl:a,address:s})=>{let o=t.from.toLowerCase()===s.toLowerCase(),n=parseInt(t.timeStamp)*1e3,i=e.decimals,p=new utilsSdk.TokenUnit(t.value,e.decimals,e.symbol).toDisplay(),l=o?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,{from:f,to:m,gasPrice:u,gasUsed:b,hash:y}=t,g=G(a,y);return {isIncoming:!o,isOutgoing:o,isContractCall:Yt(t),timestamp:n,hash:y,isSender:o,from:f,to:m,tokens:[{decimal:i.toString(),name:e.name,symbol:e.symbol,amount:p,type:vmModuleTypes.TokenType.NATIVE}],gasUsed:b,gasPrice:u,chainId:r.toString(),txType:l,explorerLink:g}};function Yt(t){return t.input!=="0x"}function Re({tx:t,address:e,explorerUrl:r,chainId:a}){let s=t.from.toLowerCase()===e.toLowerCase(),o=parseInt(t.timeStamp)*1e3,i=new utilsSdk.TokenUnit(t.value,Number(t.tokenDecimal),t.tokenSymbol).toDisplay(),{from:c,to:p,gasPrice:l,gasUsed:f,hash:m,tokenDecimal:u,tokenName:b,tokenSymbol:y}=t,g=s?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,h=G(r,m);return {isIncoming:!s,isOutgoing:s,isContractCall:!1,timestamp:o,hash:m,isSender:s,from:c,to:p,tokens:[{decimal:u,name:b,symbol:y,type:vmModuleTypes.TokenType.ERC20,amount:i}],gasUsed:f,gasPrice:l,chainId:a.toString(),txType:g,explorerLink:h}}var Pe=async({isTestnet:t,networkToken:e,explorerUrl:r,chainId:a,address:s,nextPageToken:o,offset:n})=>{let i=o?JSON.parse(o):void 0,c=i?.page||1,p=i?.queries||["normal","erc20"],l=(p.includes("normal")?await etherscanSdk.getNormalTxs(s,!t,{page:c,offset:n}):[]).map(y=>Ee({tx:y,chainId:a,networkToken:e,explorerUrl:r,address:s})),f=(p.includes("erc20")?await etherscanSdk.getErc20Txs(s,!t,void 0,{page:c,offset:n}):[]).map(y=>Re({tx:y,address:s,explorerUrl:r,chainId:a})),m=f.map(y=>y.hash),u=l.filter(y=>!m.includes(y.hash)),b={queries:[],page:c+1};return l.length&&b.queries.push("normal"),f.length&&b.queries.push("erc20"),{transactions:[...u,...f],nextPageToken:b.queries.length?JSON.stringify(b):""}};var Ne=t=>t===1||t===5||t===4||t===11155111;var Ie=({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r},a,s)=>{let o=!e&&!r,n=Xt(t.method?.methodName),i=a.toLowerCase(),c=n.toLowerCase().includes("swap"),p=o&&t.from.address.toLowerCase()===i,l=o&&t.to.address.toLowerCase()===i,f=n==="Market Buy Orders With Eth"||n==="Buy NFT",m=n==="Approve",u=n.toLowerCase().includes("transfer"),b=n.toLowerCase().includes("airdrop"),y=n.toLowerCase().includes("unwrap"),g=n==="Fill Order",h=u&&!!s[0]&&Ce(s[0].type)&&s[0].from?.address.toLowerCase()===i,k=u&&!!s[0]&&Ce(s[0].type)&&s[0].to?.address.toLowerCase()===i;return c?vmModuleTypes.TransactionType.SWAP:p?vmModuleTypes.TransactionType.SEND:l?vmModuleTypes.TransactionType.RECEIVE:f?vmModuleTypes.TransactionType.NFT_BUY:m?vmModuleTypes.TransactionType.APPROVE:h?vmModuleTypes.TransactionType.NFT_SEND:k?vmModuleTypes.TransactionType.NFT_RECEIVE:u?vmModuleTypes.TransactionType.TRANSFER:b?vmModuleTypes.TransactionType.AIRDROP:y?vmModuleTypes.TransactionType.UNWRAP:g?vmModuleTypes.TransactionType.FILL_ORDER:vmModuleTypes.TransactionType.UNKNOWN};function Ce(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}var Xt=(t="")=>t.includes("(")?Qt__default.default(t.split("(",1)[0]):t;var xe=(t,{nativeTransaction:e,erc20Transfers:r,erc721Transfers:a},s)=>{let o=t===vmModuleTypes.TransactionType.TRANSFER,n=t===vmModuleTypes.TransactionType.SEND,i=t===vmModuleTypes.TransactionType.RECEIVE,c=e?.from?.address,p=e?.to?.address;o&&r&&r[0]&&(c=r[0].from.address,p=r[0].to.address),o&&a&&a[0]&&(c=a[0].from.address,p=a[0].to.address);let l=n||o&&c.toLowerCase()===s.toLowerCase(),f=i||o&&p.toLowerCase()===s.toLowerCase();return {isOutgoing:l,isIncoming:f,isSender:c===s,from:c,to:p}};async function we(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var er="https://cloudflare-ipfs.com";function M(t,e=er){if(!t)return "";try{return utilsSdk.ipfsResolver(t,e)}catch{return t}}async function tr(t,e=5e3){let r=new AbortController;return setTimeout(()=>r.abort(),e),fetch(t,{signal:r.signal})}async function _e(t){let e={};if(t)if(t.startsWith("data:application/json;base64,")){let r=t.substring(29);try{let a=Buffer.from(r,"base64").toString();e=JSON.parse(a);}catch{e={};}}else e=await tr(M(t)).then(r=>r.json()).catch(()=>({}));else return {};return e}var rr="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function De(t,e="256"){let r=M(t);return `${rr}/width=${e},fit/${r}`}var Ge=async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:r,erc1155Transfers:a},s)=>{let o=[];if(t.value!=="0"){let n=s.decimals,c=new utilsSdk.TokenUnit(t.value,s.decimals,s.symbol).toDisplay();o.push({decimal:n.toString(),name:s.name,symbol:s.symbol,amount:c,from:t.from,to:t.to,type:vmModuleTypes.TokenType.NATIVE});}return e?.forEach(n=>{let i=n.erc20Token.decimals,p=new utilsSdk.TokenUnit(n.value,i,n.erc20Token.symbol).toDisplay();o.push({decimal:i.toString(),name:n.erc20Token.name,symbol:n.erc20Token.symbol,amount:p,from:n.from,to:n.to,imageUri:n.erc20Token.logoUri,type:vmModuleTypes.TokenType.ERC20});}),r&&await Promise.allSettled(r.map(async n=>{let i=n.erc721Token,c=await Ue(i.tokenUri,i.metadata.imageUri);o.push({name:n.erc721Token.name,symbol:n.erc721Token.symbol,amount:"1",imageUri:c,from:n.from,to:n.to,collectableTokenId:n.erc721Token.tokenId,type:vmModuleTypes.TokenType.ERC721});})),a&&await Promise.allSettled(a.map(async n=>{let i=n.erc1155Token,c=await Ue(i.tokenUri,i.metadata.imageUri);o.push({name:n.erc1155Token.metadata.name??"",symbol:n.erc1155Token.metadata.symbol??"",amount:n.value,imageUri:c,from:n.from,to:n.to,collectableTokenId:n.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),o},Ue=async(t,e)=>{if(e)return e.startsWith("ipfs://")?M(e):e;{let[r,a]=await we(_e(t));return a?"":r.image?De(r.image):""}};var Me=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER],ee=(n=>(n.TOTAL_SUPPLY="totalSupply",n.BALANCE_OF="balanceOf",n.TRANSFER="transfer",n.TRANSFER_FROM="transferFrom",n.APPROVE="approve",n.ALLOWANCE="allowance",n))(ee||{});var Ve=async({transactions:t,explorerUrl:e,networkToken:r,chainId:a,address:s})=>{let o=await Ge(t,r),n=Ie(t,s,o),{isOutgoing:i,isIncoming:c,isSender:p,from:l,to:f}=xe(n,t,s),{blockTimestamp:m,txHash:u,gasPrice:b,gasUsed:y}=t.nativeTransaction,g=G(e,u);return {isContractCall:!Me.includes(n),isIncoming:c,isOutgoing:i,isSender:p,timestamp:m*1e3,hash:u,from:l,to:f,tokens:o,gasPrice:b,gasUsed:y,chainId:a.toString(),txType:n,explorerLink:g}};var Le=async({chainId:t,explorerUrl:e,networkToken:r,address:a,nextPageToken:s,offset:o,glacierService:n})=>{try{let i=await n.listTransactions({chainId:t.toString(),address:a,pageToken:s,pageSize:o});return {transactions:(await Promise.all(i.transactions.filter(l=>l.nativeTransaction.txStatus==="1").map(l=>Ve({transactions:l,explorerUrl:e,networkToken:r,chainId:t,address:a}).then(f=>f)))).filter(l=>l.tokens.find(f=>Number(f.amount)!==0)),nextPageToken:i.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}};var Fe=async({chainId:t,isTestnet:e,networkToken:r,explorerUrl:a,address:s,nextPageToken:o,offset:n,glacierService:i})=>Ne(t)?Pe({isTestnet:e,networkToken:r,explorerUrl:a,chainId:t,address:s,nextPageToken:o,offset:n}):i.isHealthy()?Le({networkToken:r,explorerUrl:a,chainId:t,address:s,nextPageToken:o,offset:n,glacierService:i}):{transactions:[],nextPageToken:""};var He={name:"EVM",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/bundle.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider.js",packageName:"@avalabs/evm-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:["eip155:1","eip155:43114","eip155:43113"],namespaces:["eip155"]},cointype:"60",permissions:{rpc:{dapps:!0,methods:["personal_sign","eth_sendTransaction","eth_*","web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"]}},manifestVersion:"0.0"};var nr=zod.z.object({from:zod.z.string().length(42),to:zod.z.string().length(42),data:zod.z.string().optional(),value:zod.z.string().startsWith("0x").optional(),gas:zod.z.string().startsWith("0x").optional(),gasPrice:zod.z.string().startsWith("0x").optional(),maxFeePerGas:zod.z.string().startsWith("0x").optional(),maxPriorityFeePerGas:zod.z.string().startsWith("0x").optional(),nonce:zod.z.string().optional(),chainId:zod.z.string().optional()}),or=zod.z.array(nr).length(1),Oe=t=>or.safeParse(t);var We=async({transactionParams:{from:t,to:e,data:r,value:a},provider:s})=>{let o=await s.getTransactionCount(t);return Number(await s.estimateGas({from:t,to:e,nonce:o,data:r,value:a}))};var $e=async({from:t,provider:e})=>e.getTransactionCount(t);var Ye="DUMMY_API_KEY",Je=async({proxyApiUrl:t,chainId:e,params:r,domain:a})=>new je__default.default({baseURL:t+"/proxy/blockaid/",apiKey:Ye}).evm.transaction.scan({account_address:r.from,chain:e.toString(),options:["validation","simulation"],data:{from:r.from,to:r.to,data:r.data,value:r.value,gas:r.gas,gas_price:r.gasPrice},metadata:a&&a.length>0?{domain:a}:{non_dapp:!0}}),qe=async({proxyApiUrl:t,chainId:e,accountAddress:r,data:a,domain:s})=>new je__default.default({baseURL:t+"/proxy/blockaid/",apiKey:Ye}).evm.jsonRpc.scan({chain:e.toString(),options:["validation","simulation"],account_address:r,data:a,metadata:s&&s.length>0?{domain:s}:{non_dapp:!0}});var ze=async({request:t,dAppUrl:e,params:r,chainId:a,proxyApiUrl:s})=>{let o,n,i;try{let{validation:c,simulation:p}=await Je({proxyApiUrl:s,chainId:a,params:r,domain:e});!c||c.result_type==="Error"||c.result_type==="Warning"?o=L[vmModuleTypes.AlertType.WARNING]:c.result_type==="Malicious"&&(o=L[vmModuleTypes.AlertType.DANGER]),p?.status==="Success"&&(i=Qe(t,p.account_summary.exposures),n=Xe(p.account_summary.assets_diffs));}catch(c){console.error("processTransactionSimulation error",c),o=L[vmModuleTypes.AlertType.WARNING];}return {alert:o,balanceChange:n,tokenApprovals:i}},Qe=(t,e)=>{let r=[];for(let s of e){let o=Ze(s.asset);if(o)for(let[n,i]of Object.entries(s.spenders))if(i.exposure.length===0)r.push({token:o,spenderAddress:n,logoUri:o.logoUri});else for(let c of i.exposure)"raw_value"in c?r.push({token:o,spenderAddress:n,value:c.raw_value,usdPrice:c.usd_price,logoUri:o.logoUri}):r.push({token:o,spenderAddress:n,logoUri:c.logo_url,usdPrice:c.usd_price});}return r.length===0?void 0:{isEditable:r.length===1&&r[0]?.token.type===vmModuleTypes.TokenType.ERC20&&t.method===vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,approvals:r}},Xe=t=>{let e=Ke(t,"in"),r=Ke(t,"out");if(!(e.length===0&&r.length===0))return {ins:e,outs:r}},Ke=(t,e)=>t.filter(r=>r[e].length>0).sort((r,a)=>r[e].length-a[e].length).map(r=>{let a=r.asset,s="address"in a?Ze(a):lr(a);if(!s)return;let o=r[e].map(n=>{let i;if("value"in n&&n.value)if("decimals"in s){let c=utilsSdk.numberToBN(n.value,s.decimals);i=utilsSdk.balanceToDisplayValue(c,s.decimals);}else ethers.isHexString(n.value)&&(i=parseInt(n.value,16).toString());else "type"in s&&s.type===vmModuleTypes.TokenType.ERC721&&(i="1");return i?{displayValue:i,usdPrice:n.usd_price}:void 0}).filter(n=>n!==void 0);return {token:s,items:o}}).filter(r=>r!==void 0),Ze=t=>{let e;return t.type==="ERC20"?e={type:vmModuleTypes.TokenType.ERC20,address:t.address,decimals:t.decimals,name:t.name??t.symbol??"",symbol:t.symbol??"",logoUri:t.logo_url}:t.type==="ERC1155"?e={type:vmModuleTypes.TokenType.ERC1155,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="ERC721"?e={type:vmModuleTypes.TokenType.ERC721,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="NONERC"&&(e={type:vmModuleTypes.TokenType.NONERC,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}),e},lr=t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),et=async({request:t,dAppUrl:e,accountAddress:r,chainId:a,data:s,proxyApiUrl:o})=>{let n,i,c;try{let{validation:p,simulation:l}=await qe({proxyApiUrl:o,chainId:a,accountAddress:r,data:s,domain:e});!p||p.result_type==="Error"||p.result_type==="Warning"?n=L[vmModuleTypes.AlertType.WARNING]:p.result_type==="Malicious"&&(n=L[vmModuleTypes.AlertType.DANGER]),l?.status==="Success"&&(c=Qe(t,l.account_summary.exposures),i=Xe(l.account_summary.assets_diffs));}catch(p){console.error("processJsonRpcSimulation error",p),n=L[vmModuleTypes.AlertType.WARNING];}return {alert:n,balanceChange:i,tokenApprovals:c}},L={[vmModuleTypes.AlertType.WARNING]:{type:vmModuleTypes.AlertType.WARNING,details:{title:"Suspicious Transaction",description:"Use caution, this transaction may be malicious."}},[vmModuleTypes.AlertType.DANGER]:{type:vmModuleTypes.AlertType.DANGER,details:{title:"Scam Transaction",description:"This transaction is malicious, do not proceed.",actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}}};var te={_format:"hh-sol-artifact-1",contractName:"ERC20",sourceName:"contracts/token/ERC20/ERC20.sol",abi:[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],bytecode:"0x60806040523480156200001157600080fd5b5060405162000aed38038062000aed8339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000281565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b6020821081036200027b57634e487b7160e01b600052602260045260246000fd5b50919050565b61085c80620002916000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c3919061069a565b60405180910390f35b6100df6100da36600461070b565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610735565b61024a565b604051601281526020016100c3565b6100df61013136600461070b565b61026e565b6100f3610144366004610771565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df61017536600461070b565b61029f565b6100df61018836600461070b565b61031f565b6100f361019b366004610793565b61032d565b6060600380546101af906107c6565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107c6565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b9190610800565b610358565b6060600480546101af906107c6565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104f0565b600060208083528351808285015260005b818110156106c7578581018301518582016040015282016106ab565b818111156106d9576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461070657600080fd5b919050565b6000806040838503121561071e57600080fd5b610727836106ef565b946020939093013593505050565b60008060006060848603121561074a57600080fd5b610753846106ef565b9250610761602085016106ef565b9150604084013590509250925092565b60006020828403121561078357600080fd5b61078c826106ef565b9392505050565b600080604083850312156107a657600080fd5b6107af836106ef565b91506107bd602084016106ef565b90509250929050565b600181811c908216806107da57607f821691505b6020821081036107fa57634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561082157634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220e7dc257596a973556752e9db5f465b21aad78d068ae819d0395e1f99a95065a964736f6c634300080d0033",deployedBytecode:"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c3919061069a565b60405180910390f35b6100df6100da36600461070b565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610735565b61024a565b604051601281526020016100c3565b6100df61013136600461070b565b61026e565b6100f3610144366004610771565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df61017536600461070b565b61029f565b6100df61018836600461070b565b61031f565b6100f361019b366004610793565b61032d565b6060600380546101af906107c6565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107c6565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b9190610800565b610358565b6060600480546101af906107c6565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104f0565b600060208083528351808285015260005b818110156106c7578581018301518582016040015282016106ab565b818111156106d9576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461070657600080fd5b919050565b6000806040838503121561071e57600080fd5b610727836106ef565b946020939093013593505050565b60008060006060848603121561074a57600080fd5b610753846106ef565b9250610761602085016106ef565b9150604084013590509250925092565b60006020828403121561078357600080fd5b61078c826106ef565b9392505050565b600080604083850312156107a657600080fd5b6107af836106ef565b91506107bd602084016106ef565b90509250929050565b600181811c908216806107da57607f821691505b6020821081036107fa57634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561082157634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220e7dc257596a973556752e9db5f465b21aad78d068ae819d0395e1f99a95065a964736f6c634300080d0033",linkReferences:{},deployedLinkReferences:{}};var tt=t=>{if(t.data)try{let r=new ethers.Interface(te.abi).parseTransaction({data:t.data,value:t.value}),a=r?.name??r?.fragment?.name;return a&&ur(a)?a:void 0}catch{return}};function ur(t){return Object.values(ee).includes(t)}var rt=async({request:t,network:e,approvalController:r,proxyApiUrl:a})=>{let{dappInfo:s,params:o}=t,n=Oe(o);if(!n.success)return console.error("invalid params",n.error),{error:rpcErrors.rpcErrors.invalidParams("Transaction params are invalid")};let i=n.data[0];if(!i)return {error:rpcErrors.rpcErrors.invalidParams("Transaction params are invalid")};let c=C({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});if(!i.gas||Number(i.gas)<0)try{let k=await We({transactionParams:{from:i.from,to:i.to,data:i.data,value:i.value},provider:c});i.gas="0x"+k.toString(16);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate gas limit")}}if(!i.nonce)try{let k=await $e({from:i.from,provider:c});i.nonce=String(k);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate nonce")}}let p=tt(i),{alert:l,balanceChange:f,tokenApprovals:m}=await ze({request:t,proxyApiUrl:a,chainId:e.chainId,params:i,dAppUrl:t.dappInfo.url}),u="Approve Transaction";p==="approve"&&(u="Token Spend Approval");let b={title:u,network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},transactionDetails:{website:new URL(s.url).hostname,from:i.from,to:i.to,data:i.data,type:p},networkFeeSelector:!0,alert:l,balanceChange:f,tokenApprovals:m},y={type:vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION,account:i.from,chainId:e.chainId,data:{type:2,nonce:Number(i.nonce),gasLimit:Number(i.gas),to:i.to,from:i.from,data:i.data,value:i.value,chainId:i.chainId}},g=await r.requestApproval({request:t,displayData:b,signingData:y});if("error"in g)return {error:g.error};let h=await c.send("eth_sendRawTransaction",[g.result]);return yr({provider:c,txHash:h,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted}),{result:h}},yr=async({provider:t,txHash:e,onTransactionConfirmed:r,onTransactionReverted:a})=>{(await t.waitForTransaction(e))?.status===1?r(e):a(e);};var at=async({provider:t,tokenService:e,address:r,currency:a,tokens:s,network:o})=>{let n=o.pricingProviders?.coingecko.assetPlatformId,i=o.pricingProviders?.coingecko.nativeTokenId,c=s.map(f=>f.address),p=await Promise.allSettled(s.map(async f=>{let b=await new ethers.ethers.Contract(f.address,te.abi,t).balanceOf?.(r)||0n;return {...f,balance:b}})).then(f=>f.reduce((m,u)=>u.status==="fulfilled"&&u.value.balance!==0n?[...m,u.value]:m,[]));if(!p.length)return {};let l=n&&await e.getPricesByAddresses(c,n,a)||{};return p.reduce((f,m)=>{let u=l?.[i??""]?.[a]?.price??void 0,b=l?.[i??""]?.[a]?.marketCap??void 0,y=l?.[i??""]?.[a]?.vol24??void 0,g=l?.[i??""]?.[a]?.change24??void 0,h=new utilsSdk.TokenUnit(m.balance,m.decimals,m.symbol),k=u?h.mul(u).toDisplay(2):void 0,he=k?Number(k):void 0,oe=h.toDisplay();return {...f,[m.address.toLowerCase()]:{...m,type:vmModuleTypes.TokenType.ERC20,balance:m.balance,balanceDisplayValue:oe,balanceInCurrency:he,balanceCurrencyDisplayValue:k,priceInCurrency:u,marketCap:b,change24:g,vol24:y}}},{})};var nt=async({operation:t,isSuccess:e,maxRetries:r=10,backoffPolicy:a=Y.exponential()})=>{let s=0,o=0,n;for(;o<r;){o>0&&await Tr(s);try{let c=await t(o);if(e(c))return c}catch(c){n=c;}s=a(o),o++;}let i=n?`Max retry exceeded. ${n}`:"Max retry exceeded.";throw new Error(i)},Y=class{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return r=>e*1e3}static constantMs(e){return r=>e}};function Tr(t){return new Promise(e=>setTimeout(e,t))}var le=t=>nt({operation:e=>t(e>0),maxRetries:2,backoffPolicy:Y.constant(1),isSuccess:e=>e?.status?.error_code!==429});function ot(t){let e,r=0;for(e=0;e<t.length;e++)r+=t.charCodeAt(e)*(e+1);return r}function me(t){let e,r=0;for(e=0;e<t.length;e++){let a=ot(t[e]??"");r=r+65027/a;}return (""+r).slice(0,16)}var ue=t=>new core.Zodios(`${t}/proxy/coingecko`,[{method:"post",path:"/simple/price",parameters:[{name:"ids",type:"Query",schema:zod.string()},{name:"vs_currencies",type:"Query",schema:zod.string()},{name:"include_market_cap",type:"Query",schema:zod.string().optional()},{name:"include_24hr_vol",type:"Query",schema:zod.string().optional()},{name:"include_24hr_change",type:"Query",schema:zod.string().optional()},{name:"include_last_updated_at",type:"Query",schema:zod.string().optional()}],alias:"simplePrice",response:vmModuleTypes.RawSimplePriceResponseSchema},{method:"post",path:"/simple/token_price/:id",parameters:[{name:"id",type:"Path",schema:zod.string()},{name:"contract_addresses",type:"Query",schema:zod.string().array()},{name:"vs_currencies",type:"Query",schema:zod.string().array()},{name:"include_market_cap",type:"Query",schema:zod.boolean().optional()},{name:"include_24hr_vol",type:"Query",schema:zod.boolean().optional()},{name:"include_24hr_change",type:"Query",schema:zod.boolean().optional()}],alias:"simplePriceByContractAddresses",response:vmModuleTypes.SimplePriceResponseSchema}],{axiosConfig:{headers:{"Content-Type":"application/json"}}});var st=coingeckoSdk.getBasicCoingeckoHttp(),I,F,q=class{constructor({storage:e,proxyApiUrl:r}){_(this,I,void 0);_(this,F,void 0);A(this,"transformSimplePriceResponse",(e,r=[coingeckoSdk.VsCurrencyType.USD])=>{let a={};return Object.keys(e).forEach(s=>{let o=e[s];a[s]={},r.forEach(n=>{a[s]={[n]:{price:o?.[n],change24:o?.[`${n}_24h_change`],vol24:o?.[`${n}_24h_vol`],marketCap:o?.[`${n}_market_cap`]}};});}),a});D(this,I,e),D(this,F,r);}async getSimplePrice({coinIds:e=[],currencies:r=[coingeckoSdk.VsCurrencyType.USD]}){let a,o=`getSimplePrice-${e?`${me(e)}-${r.toString()}`:`${r.toString()}`}`;if(a=T(this,I)?.get?.(o),a)return a;try{a=await le(n=>this.simplePrice({coinIds:e,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:n}));}catch{a=void 0;}return T(this,I)?.set?.(o,a),a}async getPricesByAddresses(e,r,a=coingeckoSdk.VsCurrencyType.USD){let s,n=`getPricesWithMarketDataByAddresses-${`${me(e)}-${r}-${a}`}`;if(s=T(this,I)?.get?.(n),s)return s;try{s=await le(i=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:e,currency:a,useCoingeckoProxy:i}));}catch{s=void 0;}return T(this,I)?.set?.(n,s),s}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:r,currency:a=coingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:s=!1}){return s?ue(T(this,F)).simplePriceByContractAddresses(void 0,{params:{id:e},queries:{contract_addresses:r,vs_currencies:[a],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}}):coingeckoSdk.simpleTokenPrice(st,{assetPlatformId:e,tokenAddresses:r,currencies:[a],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:e=[],currencies:r=[coingeckoSdk.VsCurrencyType.USD],marketCap:a=!1,vol24:s=!1,change24:o=!1,lastUpdated:n=!1,useCoingeckoProxy:i=!1,shouldThrow:c=!0}){if(i){let p=await ue(T(this,F)).simplePrice(void 0,{queries:{ids:e?.join(","),vs_currencies:r.join(","),include_market_cap:String(a),include_24hr_vol:String(s),include_24hr_change:String(o),include_last_updated_at:String(n)}});return this.transformSimplePriceResponse(p,r)}return coingeckoSdk.simplePrice(st,{coinIds:e,currencies:r,marketCap:a,vol24:s,change24:o,lastUpdated:n,shouldThrow:c})}};I=new WeakMap,F=new WeakMap;var it=async({provider:t,tokenService:e,address:r,currency:a,network:s})=>{let o=s.pricingProviders?.coingecko.nativeTokenId,n=s.networkToken,i=o?await e.getSimplePrice({coinIds:[o],currencies:[a]}):{},c=i?.[o??""]?.[a]?.price??void 0,p=i?.[o??""]?.[a]?.marketCap??void 0,l=i?.[o??""]?.[a]?.vol24??void 0,f=i?.[o??""]?.[a]?.change24??void 0,m=await t.getBalance(r),u=new utilsSdk.TokenUnit(m,n.decimals,n.symbol),b=u.toDisplay(),y=c?u.mul(c).toDisplay(2):void 0,g=y?Number(y):void 0;return {...n,coingeckoId:o??"",type:vmModuleTypes.TokenType.NATIVE,balance:m,balanceDisplayValue:b,balanceInCurrency:g,balanceCurrencyDisplayValue:y,priceInCurrency:c,marketCap:p,vol24:l,change24:f}};var ct=async({address:t,currency:e,chainId:r,glacierService:a,coingeckoId:s})=>{let n=(await a.getNativeBalance({chainId:r.toString(),address:t,currency:e.toLocaleLowerCase()})).nativeTokenBalance,i=new utilsSdk.TokenUnit(n.balance,n.decimals,n.symbol),c=i.toDisplay(),p=n.price?.value,l=p?i.mul(p).toDisplay(2):void 0,f=l?Number(l):void 0;return {name:n.name,symbol:n.symbol,decimals:n.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:n.logoUri,balance:i.toSubUnit(),balanceDisplayValue:c,balanceInCurrency:f,balanceCurrencyDisplayValue:l,priceInCurrency:p,coingeckoId:s}};var lt=async({glacierService:t,currency:e,chainId:r,address:a,customTokens:s})=>{let o=[],n;do{let i=await t.listErc20Balances({chainId:r.toString(),address:a,currency:e.toLocaleLowerCase(),pageSize:100,pageToken:n});o.push(...Dr(i.erc20TokenBalances,Number(r))),n=i.nextPageToken;}while(n);return [..._r(s),...o].reduce((i,c)=>({...i,[c.address.toLowerCase()]:c}),{})},_r=t=>t.map(e=>({...e,decimals:e.decimals??18,type:vmModuleTypes.TokenType.ERC20,balance:0n,balanceInCurrency:0,balanceDisplayValue:"0",balanceCurrencyDisplayValue:"0",priceInCurrency:0,marketCap:0,change24:0,vol24:0})),Dr=(t,e)=>t.map(r=>{let a=new utilsSdk.TokenUnit(r.balance,r.decimals,r.symbol),s=a.toDisplay(),o=r.balanceValue?.value.toString(),n=r.price?.value,i=n?Number(a.mul(n).toDisplay(2)):void 0;return {chainId:e,address:r.address,name:r.name,symbol:r.symbol,decimals:r.decimals,logoUri:r.logoUri,balance:a.toSubUnit(),balanceCurrencyDisplayValue:o,balanceDisplayValue:s,balanceInCurrency:i,priceInCurrency:n,type:vmModuleTypes.TokenType.ERC20}});var dt=async({addresses:t,currency:e,network:r,proxyApiUrl:a,customTokens:s=[],storage:o,glacierService:n})=>{let i=r.chainId,c=await n.isNetworkSupported(r.chainId),p=n.isHealthy(),l=[];if(p&&c)l=await Promise.allSettled(t.map(async m=>{let u=await ct({address:m,currency:e,chainId:i,glacierService:n,coingeckoId:r.pricingProviders?.coingecko.nativeTokenId??""}),b=await lt({customTokens:s.filter(mt),glacierService:n,currency:e,chainId:i,address:m});return {address:m,balances:{[u.symbol]:u,...b}}}));else {let m=new q({storage:o,proxyApiUrl:a}),b=[...await X({chainId:Number(i),proxyApiUrl:a}),...s],y=C({chainId:i,chainName:r.chainName,rpcUrl:r.rpcUrl,multiContractAddress:r.utilityAddresses?.multicall});l=await Promise.allSettled(t.map(async g=>{let h=await it({network:r,tokenService:m,address:g,currency:e,provider:y}),k=await at({provider:y,network:r,tokenService:m,address:g,currency:e,tokens:b.filter(mt)});return {address:g,balances:{[h.symbol]:h,...k}}}));}return l.reduce((m,u)=>u.status==="rejected"?m:{...m,[u.value.address]:u.value.balances},{})};function mt(t){return t.type===vmModuleTypes.TokenType.ERC20}var Ur={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Gr={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},ft=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return Ur;case vmModuleTypes.Environment.DEV:return Gr}};var N=class extends Error{constructor(){super(...arguments);A(this,"message","Glacier is unhealthy. Try again later.");}},ae=class{constructor({glacierApiUrl:e}){A(this,"glacierSdk");A(this,"isGlacierHealthy",!0);A(this,"supportedChainIds",[]);A(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:e}),this.getSupportedChainIds().catch(()=>{});}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async isNetworkSupported(e){return (await this.getSupportedChainIds()).some(a=>a===e.toString())}async getSupportedChainIds(){if(this.supportedChainIds.length)return this.supportedChainIds;try{let e=await this.glacierSdk.evmChains.supportedChains({});return this.supportedChainIds=e.chains.map(r=>r.chainId),this.supportedChainIds}catch{return []}}async reindexNft({address:e,chainId:r,tokenId:a}){try{await this.glacierSdk.nfTs.reindexNft({address:e,chainId:r,tokenId:a});}catch(s){throw s instanceof N&&this.setGlacierToUnhealthy(),s}}async getTokenDetails({address:e,chainId:r,tokenId:a}){try{return this.glacierSdk.nfTs.getTokenDetails({address:e,chainId:r,tokenId:a})}catch(s){throw s instanceof N&&this.setGlacierToUnhealthy(),s}}async getNativeBalance({chainId:e,address:r,currency:a}){try{return this.glacierSdk.evmBalances.getNativeBalance({chainId:e,address:r,currency:a.toLocaleLowerCase()})}catch(s){throw s instanceof N&&this.setGlacierToUnhealthy(),s}}async listErc721Balances({chainId:e,address:r,pageSize:a,pageToken:s}){try{return this.glacierSdk.evmBalances.listErc721Balances({chainId:e,address:r,pageSize:a,pageToken:s})}catch(o){throw o instanceof N&&this.setGlacierToUnhealthy(),o}}async listErc1155Balances({chainId:e,address:r,pageSize:a,pageToken:s}){try{return this.glacierSdk.evmBalances.listErc1155Balances({chainId:e,address:r,pageSize:a,pageToken:s})}catch(o){throw o instanceof N&&this.setGlacierToUnhealthy(),o}}async listErc20Balances({chainId:e,address:r,currency:a,pageSize:s,pageToken:o}){try{return this.glacierSdk.evmBalances.listErc20Balances({chainId:e,address:r,currency:a.toLocaleLowerCase(),pageSize:s,pageToken:o})}catch(n){throw n instanceof N&&this.setGlacierToUnhealthy(),n}}async listTransactions({chainId:e,address:r,pageToken:a,pageSize:s}){try{return this.glacierSdk.evmTransactions.listTransactions({chainId:e,address:r,pageToken:a,pageSize:s})}catch(o){throw o instanceof N&&this.setGlacierToUnhealthy(),o}}};var fe=t=>{let e="";e+=`Domain
24
22
  `;for(let r in t.domain)e+=` ${r}: ${B(String(t.domain[r]))}
25
23
  `;e+=`
26
24
  Message
27
25
  `;for(let r in t.message)if(typeof t.message[r]=="object"&&!Array.isArray(t.message[r])){e+=` ${r}:
28
- `;for(let n in t.message[r])Array.isArray(t.message[r][n])?(e+=` ${n}:
29
- `,t.message[r][n].forEach((s,o)=>{e+=` ${o}: ${B(s)}
30
- `;})):e+=` ${n}: ${B(String(t.message[r][n]))}
26
+ `;for(let a in t.message[r])Array.isArray(t.message[r][a])?(e+=` ${a}:
27
+ `,t.message[r][a].forEach((s,o)=>{e+=` ${o}: ${B(s)}
28
+ `;})):e+=` ${a}: ${B(String(t.message[r][a]))}
31
29
  `;}else Array.isArray(t.message[r])?(e+=` ${r}:
32
- `,t.message[r].forEach((n,s)=>{e+=` ${s}:
33
- `;for(let o in n)Array.isArray(n[o])?(e+=` ${o}:
34
- `,n[o].forEach((a,i)=>{e+=` ${i}: ${B(a)}
35
- `;})):e+=` ${o}: ${B(String(n[o]))}
30
+ `,t.message[r].forEach((a,s)=>{e+=` ${s}:
31
+ `;for(let o in a)Array.isArray(a[o])?(e+=` ${o}:
32
+ `,a[o].forEach((n,i)=>{e+=` ${i}: ${B(n)}
33
+ `;})):e+=` ${o}: ${B(String(a[o]))}
36
34
  `;})):e+=` ${r}: ${B(String(t.message[r]))}
37
35
  `;return e},yt=t=>{let e="";return t.forEach(r=>{e+=`${r.name}:
38
36
  `,e+=`${B(String(r.value))}
39
37
 
40
- `;}),e},B=t=>{let e={0:"\u{1D7EC}",1:"\u{1D7ED}",2:"\u{1D7EE}",3:"\u{1D7EF}",4:"\u{1D7F0}",5:"\u{1D7F1}",6:"\u{1D7F2}",7:"\u{1D7F3}",8:"\u{1D7F4}",9:"\u{1D7F5}",a:"\u{1D5EE}",b:"\u{1D5EF}",c:"\u{1D5F0}",d:"\u{1D5F1}",e:"\u{1D5F2}",f:"\u{1D5F3}",g:"\u{1D5F4}",h:"\u{1D5F5}",i:"\u{1D5F6}",j:"\u{1D5F7}",k:"\u{1D5F8}",l:"\u{1D5F9}",m:"\u{1D5FA}",n:"\u{1D5FB}",o:"\u{1D5FC}",p:"\u{1D5FD}",q:"\u{1D5FE}",r:"\u{1D5FF}",s:"\u{1D600}",t:"\u{1D601}",u:"\u{1D602}",v:"\u{1D603}",w:"\u{1D604}",x:"\u{1D605}",y:"\u{1D606}",z:"\u{1D607}",A:"\u{1D5D4}",B:"\u{1D5D5}",C:"\u{1D5D6}",D:"\u{1D5D7}",E:"\u{1D5D8}",F:"\u{1D5D9}",G:"\u{1D5DA}",H:"\u{1D5DB}",I:"\u{1D5DC}",J:"\u{1D5DD}",K:"\u{1D5DE}",L:"\u{1D5DF}",M:"\u{1D5E0}",N:"\u{1D5E1}",O:"\u{1D5E2}",P:"\u{1D5E3}",Q:"\u{1D5E4}",R:"\u{1D5E5}",S:"\u{1D5E6}",T:"\u{1D5E7}",U:"\u{1D5E8}",V:"\u{1D5E9}",W:"\u{1D5EA}",X:"\u{1D5EB}",Y:"\u{1D5EC}",Z:"\u{1D5ED}"};return t.split("").map(r=>e[r]||r).join("")};var z=zod.z.string().describe("message"),R=zod.z.string().describe("address");var gt=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.ETH_SIGN),params:zod.z.tuple([R,z])});var ht=zod.z.object({name:zod.z.string(),type:zod.z.string()}),H=zod.z.object({types:zod.z.object({EIP712Domain:zod.z.array(ht)}).catchall(zod.z.array(ht)),primaryType:zod.z.string(),domain:zod.z.record(zod.z.any()),message:zod.z.record(zod.z.any())}),fe=zod.z.array(zod.z.object({type:zod.z.string(),name:zod.z.string(),value:zod.z.union([zod.z.string(),zod.z.number(),zod.z.boolean(),zod.z.object({}).passthrough(),zod.z.array(zod.z.unknown()),zod.z.null()])})).nonempty(),ye=H.or(fe),Tt=zod.z.union([zod.z.string().describe("data string"),H]),kt=zod.z.union([zod.z.string().describe("data string"),ye]),vt=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA),params:zod.z.tuple([R,kt])}),Et=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1),params:zod.z.tuple([R,kt])}),St=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3),params:zod.z.tuple([R,Tt])}),Rt=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4),params:zod.z.tuple([R,Tt])});var Nt=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.PERSONAL_SIGN),params:zod.z.union([zod.z.tuple([z,R]),zod.z.tuple([z,R,zod.z.string().optional().describe("password")])])});var Kr=zod.z.discriminatedUnion("method",[Nt,gt,vt,Et,St,Rt]).transform((t,e)=>{let{method:r,params:n}=t;switch(r){case vmModuleTypes.RpcMethod.PERSONAL_SIGN:return {data:n[0],address:n[1],method:r};case vmModuleTypes.RpcMethod.ETH_SIGN:return {data:n[1],address:n[0],method:r};case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:{let s=n[0],o=n[1];if(typeof o!="string")return {data:o,address:s,method:r};try{let a=JSON.parse(o);return {data:ye.parse(a),address:s,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:{let s=n[0],o=n[1];if(typeof o!="string")return {data:o,address:s,method:r};try{let a=JSON.parse(o);return {data:H.parse(a),address:s,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}}});function Pt(t){return Kr.safeParse(t)}var Ct=t=>fe.safeParse(t).success,E0=t=>H.safeParse(t).success;var It=t=>{try{let{EIP712Domain:e,...r}=t.types;return ethers.TypedDataEncoder.getPayload(t.domain,r,t.message),{isValid:!0}}catch(e){return {isValid:!1,error:e}}};var wt=async({request:t,network:e,approvalController:r,proxyApiUrl:n})=>{let s=Pt({method:t.method,params:t.params});if(!s.success)return console.error("invalid params",s.error),{success:!1,error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};let{method:o,data:a,address:i}=s.data,c;(o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4)&&(c=It(a));let l,p,f,d;if(c&&!c.isValid&&(d={type:vmModuleTypes.AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements.",detailedDescription:c.error.toString()}}),o===vmModuleTypes.RpcMethod.ETH_SIGN)l={type:o,account:i,chainId:e.chainId,data:a},p=a,f="Signing this message can be dangerous. This signature could potentially perform any operation on your account's behalf, including granting complete control of your account and all of its assets to the requesting site. Only sign this message if you know what you're doing or completely trust the requesting site";else if(o===vmModuleTypes.RpcMethod.PERSONAL_SIGN)l={type:o,account:i,chainId:e.chainId,data:a},p=ethers.toUtf8String(a);else if(o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA||o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1)l={type:o,account:i,chainId:e.chainId,data:a},p=Ct(a)?yt(a):de(a);else if(o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4){l={type:o,account:i,chainId:e.chainId,data:a};let{types:k,primaryType:be,...Dt}=a;p=de(Dt);}if(!l)return {success:!1,error:rpcErrors.rpcErrors.internal("Unable to generate signing data")};let{alert:u,balanceChange:y,tokenApprovals:b}=await Xe({request:t,proxyApiUrl:n,accountAddress:i,chainId:e.chainId,data:{method:o,params:t.params},dAppUrl:t.dappInfo.url}),g={title:"Sign Message",dAppInfo:{name:t.dappInfo.name,action:`${t.dappInfo.name} requests you to sign the following message`,logoUri:t.dappInfo.icon},network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},account:i,messageDetails:p,disclaimer:f,alert:u??d,balanceChange:y,tokenApprovals:b},h=await r.requestApproval({request:t,displayData:g,signingData:l});return "error"in h?{error:h.error}:{result:h.result}};var At=async(t,e)=>{try{return {result:await I({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3}).send(t.method,t.params)}}catch(r){let n=r.info?.error?.message||r.error?.message||r.message;return {error:rpcErrors.rpcErrors.internal(n)}}};var $,A,j,_t=class{constructor({approvalController:e,environment:r}){_(this,$,void 0);_(this,A,void 0);_(this,j,void 0);let{glacierApiUrl:n,proxyApiUrl:s}=ft(r);D(this,$,new re({glacierApiUrl:n})),D(this,A,s),D(this,j,e);}getAddress(){return Promise.resolve("EVM address")}getBalances({addresses:e,network:r,currency:n,customTokens:s,storage:o}){return dt({addresses:e,currency:n,network:r,proxyApiUrl:T(this,A),customTokens:s,glacierService:T(this,$),storage:o})}getManifest(){let e=vmModuleTypes.parseManifest(Fe);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:r,chainName:n,rpcUrl:s,utilityAddresses:o}=e;return he({chainId:r,chainName:n,rpcUrl:s,multiContractAddress:o?.multicall})}getTransactionHistory(e){let{network:r,address:n,nextPageToken:s,offset:o}=e,{chainId:a,isTestnet:i,networkToken:c,explorerUrl:l=""}=r;return Le({chainId:a,isTestnet:i,networkToken:c,explorerUrl:l,address:n,nextPageToken:s,offset:o,glacierService:T(this,$)})}getTokens(e){let{chainId:r}=e;return Q({chainId:r,proxyApiUrl:T(this,A)})}async onRpcRequest(e,r){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return tt({request:e,network:r,approvalController:T(this,j),proxyApiUrl:T(this,A)});case vmModuleTypes.RpcMethod.PERSONAL_SIGN:case vmModuleTypes.RpcMethod.ETH_SIGN:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:return wt({request:e,network:r,approvalController:T(this,j),proxyApiUrl:T(this,A)});default:return aa(e.method)?At(e,r):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};$=new WeakMap,A=new WeakMap,j=new WeakMap;var aa=t=>t.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(t);
38
+ `;}),e},B=t=>{let e={0:"\u{1D7EC}",1:"\u{1D7ED}",2:"\u{1D7EE}",3:"\u{1D7EF}",4:"\u{1D7F0}",5:"\u{1D7F1}",6:"\u{1D7F2}",7:"\u{1D7F3}",8:"\u{1D7F4}",9:"\u{1D7F5}",a:"\u{1D5EE}",b:"\u{1D5EF}",c:"\u{1D5F0}",d:"\u{1D5F1}",e:"\u{1D5F2}",f:"\u{1D5F3}",g:"\u{1D5F4}",h:"\u{1D5F5}",i:"\u{1D5F6}",j:"\u{1D5F7}",k:"\u{1D5F8}",l:"\u{1D5F9}",m:"\u{1D5FA}",n:"\u{1D5FB}",o:"\u{1D5FC}",p:"\u{1D5FD}",q:"\u{1D5FE}",r:"\u{1D5FF}",s:"\u{1D600}",t:"\u{1D601}",u:"\u{1D602}",v:"\u{1D603}",w:"\u{1D604}",x:"\u{1D605}",y:"\u{1D606}",z:"\u{1D607}",A:"\u{1D5D4}",B:"\u{1D5D5}",C:"\u{1D5D6}",D:"\u{1D5D7}",E:"\u{1D5D8}",F:"\u{1D5D9}",G:"\u{1D5DA}",H:"\u{1D5DB}",I:"\u{1D5DC}",J:"\u{1D5DD}",K:"\u{1D5DE}",L:"\u{1D5DF}",M:"\u{1D5E0}",N:"\u{1D5E1}",O:"\u{1D5E2}",P:"\u{1D5E3}",Q:"\u{1D5E4}",R:"\u{1D5E5}",S:"\u{1D5E6}",T:"\u{1D5E7}",U:"\u{1D5E8}",V:"\u{1D5E9}",W:"\u{1D5EA}",X:"\u{1D5EB}",Y:"\u{1D5EC}",Z:"\u{1D5ED}"};return t.split("").map(r=>e[r]||r).join("")};var K=zod.z.string().describe("message"),R=zod.z.string().describe("address");var gt=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.ETH_SIGN),params:zod.z.tuple([R,K])});var ht=zod.z.object({name:zod.z.string(),type:zod.z.string()}),H=zod.z.object({types:zod.z.object({EIP712Domain:zod.z.array(ht)}).catchall(zod.z.array(ht)),primaryType:zod.z.string(),domain:zod.z.record(zod.z.any()),message:zod.z.record(zod.z.any())}),be=zod.z.array(zod.z.object({type:zod.z.string(),name:zod.z.string(),value:zod.z.union([zod.z.string(),zod.z.number(),zod.z.boolean(),zod.z.object({}).passthrough(),zod.z.array(zod.z.unknown()),zod.z.null()])})).nonempty(),ge=H.or(be),Tt=zod.z.union([zod.z.string().describe("data string"),H]),kt=zod.z.union([zod.z.string().describe("data string"),ge]),vt=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA),params:zod.z.tuple([R,kt])}),Et=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1),params:zod.z.tuple([R,kt])}),St=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3),params:zod.z.tuple([R,Tt])}),Rt=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4),params:zod.z.tuple([R,Tt])});var Pt=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.PERSONAL_SIGN),params:zod.z.union([zod.z.tuple([K,R]),zod.z.tuple([K,R,zod.z.string().optional().describe("password")])])});var Fr=zod.z.discriminatedUnion("method",[Pt,gt,vt,Et,St,Rt]).transform((t,e)=>{let{method:r,params:a}=t;switch(r){case vmModuleTypes.RpcMethod.PERSONAL_SIGN:return {data:a[0],address:a[1],method:r};case vmModuleTypes.RpcMethod.ETH_SIGN:return {data:a[1],address:a[0],method:r};case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:{let s=a[0],o=a[1];if(typeof o!="string")return {data:o,address:s,method:r};try{let n=JSON.parse(o);return {data:ge.parse(n),address:s,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:{let s=a[0],o=a[1];if(typeof o!="string")return {data:o,address:s,method:r};try{let n=JSON.parse(o);return {data:H.parse(n),address:s,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}}});function Nt(t){return Fr.safeParse(t)}var At=t=>be.safeParse(t).success,s0=t=>H.safeParse(t).success;var Ct=t=>{try{let{EIP712Domain:e,...r}=t.types;return ethers.TypedDataEncoder.getPayload(t.domain,r,t.message),{isValid:!0}}catch(e){return {isValid:!1,error:e}}};var xt=async({request:t,network:e,approvalController:r,proxyApiUrl:a})=>{let s=Nt({method:t.method,params:t.params});if(!s.success)return console.error("invalid params",s.error),{success:!1,error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};let{method:o,data:n,address:i}=s.data,c;(o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4)&&(c=Ct(n));let p,l,f,m;if(c&&!c.isValid&&(m={type:vmModuleTypes.AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements.",detailedDescription:c.error.toString()}}),o===vmModuleTypes.RpcMethod.ETH_SIGN)p={type:o,account:i,chainId:e.chainId,data:n},l=n,f="Signing this message can be dangerous. This signature could potentially perform any operation on your account's behalf, including granting complete control of your account and all of its assets to the requesting site. Only sign this message if you know what you're doing or completely trust the requesting site";else if(o===vmModuleTypes.RpcMethod.PERSONAL_SIGN)p={type:o,account:i,chainId:e.chainId,data:n},l=ethers.toUtf8String(n);else if(o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA||o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1)p={type:o,account:i,chainId:e.chainId,data:n},l=At(n)?yt(n):fe(n);else if(o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||o===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4){p={type:o,account:i,chainId:e.chainId,data:n};let{types:k,primaryType:he,...oe}=n;l=fe(oe);}if(!p)return {success:!1,error:rpcErrors.rpcErrors.internal("Unable to generate signing data")};let{alert:u,balanceChange:b,tokenApprovals:y}=await et({request:t,proxyApiUrl:a,accountAddress:i,chainId:e.chainId,data:{method:o,params:t.params},dAppUrl:t.dappInfo.url}),g={title:"Sign Message",dAppInfo:{name:t.dappInfo.name,action:`${t.dappInfo.name} requests you to sign the following message`,logoUri:t.dappInfo.icon},network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},account:i,messageDetails:l,disclaimer:f,alert:u??m,balanceChange:b,tokenApprovals:y},h=await r.requestApproval({request:t,displayData:g,signingData:p});return "error"in h?{error:h.error}:{result:h.result}};var wt=async(t,e)=>{try{return {result:await C({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3}).send(t.method,t.params)}}catch(r){let a=r.info?.error?.message||r.error?.message||r.message;return {error:rpcErrors.rpcErrors.internal(a)}}};var Dt=async({accountIndex:t,xpub:e,walletType:r})=>{switch(r){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:return {[vmModuleTypes.NetworkVMType.EVM]:walletsSdk.getAddressFromXPub(e,t)};case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{let a=Buffer.from(e,"hex");return {[vmModuleTypes.NetworkVMType.EVM]:walletsSdk.getEvmAddressFromPubKey(a)}}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}};var $,w,j,Bt=class{constructor({approvalController:e,environment:r}){_(this,$,void 0);_(this,w,void 0);_(this,j,void 0);let{glacierApiUrl:a,proxyApiUrl:s}=ft(r);D(this,$,new ae({glacierApiUrl:a})),D(this,w,s),D(this,j,e);}getAddress({accountIndex:e,xpub:r,walletType:a}){return Dt({accountIndex:e,xpub:r,walletType:a})}getBalances({addresses:e,network:r,currency:a,customTokens:s,storage:o}){return dt({addresses:e,currency:a,network:r,proxyApiUrl:T(this,w),customTokens:s,glacierService:T(this,$),storage:o})}getManifest(){let e=vmModuleTypes.parseManifest(He);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:r,chainName:a,rpcUrl:s,utilityAddresses:o}=e;return ke({chainId:r,chainName:a,rpcUrl:s,multiContractAddress:o?.multicall})}getTransactionHistory(e){let{network:r,address:a,nextPageToken:s,offset:o}=e,{chainId:n,isTestnet:i,networkToken:c,explorerUrl:p=""}=r;return Fe({chainId:n,isTestnet:i,networkToken:c,explorerUrl:p,address:a,nextPageToken:s,offset:o,glacierService:T(this,$)})}getTokens(e){let{chainId:r}=e;return X({chainId:r,proxyApiUrl:T(this,w)})}async onRpcRequest(e,r){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return rt({request:e,network:r,approvalController:T(this,j),proxyApiUrl:T(this,w)});case vmModuleTypes.RpcMethod.PERSONAL_SIGN:case vmModuleTypes.RpcMethod.ETH_SIGN:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:return xt({request:e,network:r,approvalController:T(this,j),proxyApiUrl:T(this,w)});default:return zr(e.method)?wt(e,r):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};$=new WeakMap,w=new WeakMap,j=new WeakMap;var zr=t=>t.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(t);
41
39
 
42
- exports.ERC20TransactionType = X;
43
- exports.EvmModule = _t;
44
- exports.NonContractCallTypes = Ge;
45
- exports.isTypedData = E0;
46
- exports.isTypedDataV1 = Ct;
40
+ exports.ERC20TransactionType = ee;
41
+ exports.EvmModule = Bt;
42
+ exports.NonContractCallTypes = Me;
43
+ exports.isTypedData = s0;
44
+ exports.isTypedDataV1 = At;
47
45
  //# sourceMappingURL=out.js.map
48
46
  //# sourceMappingURL=index.cjs.map