@avalabs/evm-module 0.0.12 → 0.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +10 -10
- package/.turbo/turbo-lint.log +1 -1
- package/.turbo/turbo-test.log +11 -6
- package/CHANGELOG.md +27 -0
- package/dist/index.cjs +10 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -5
- package/dist/index.d.ts +6 -5
- package/dist/index.js +10 -8
- package/dist/index.js.map +1 -1
- package/package.json +17 -10
- package/src/contracts/openzeppelin/ERC1155.ts +440 -0
- package/src/contracts/openzeppelin/ERC20.ts +330 -0
- package/src/contracts/openzeppelin/ERC721.ts +420 -0
- package/src/contracts/openzeppelin/common.ts +131 -0
- package/src/contracts/openzeppelin/factories/ERC1155__factory.ts +388 -0
- package/src/contracts/openzeppelin/factories/ERC20__factory.ts +353 -0
- package/src/contracts/openzeppelin/factories/ERC721__factory.ts +413 -0
- package/src/contracts/openzeppelin/factories/index.ts +6 -0
- package/src/contracts/openzeppelin/index.ts +10 -0
- package/src/handlers/eth-send-transaction/eth-send-transaction.test.ts +2 -2
- package/src/handlers/eth-send-transaction/eth-send-transaction.ts +1 -1
- package/src/handlers/get-balances/evm-balance-service/get-erc20-balances.test.ts +78 -0
- package/src/handlers/get-balances/evm-balance-service/get-erc20-balances.ts +85 -0
- package/src/handlers/get-balances/evm-balance-service/get-native-token-balances.test.ts +102 -0
- package/src/handlers/get-balances/evm-balance-service/get-native-token-balances.ts +54 -0
- package/src/handlers/get-balances/get-balances.test.ts +252 -0
- package/src/handlers/get-balances/get-balances.ts +109 -0
- package/src/handlers/get-balances/glacier-balance-service/get-erc20-balances.test.ts +76 -0
- package/src/handlers/get-balances/glacier-balance-service/get-erc20-balances.ts +107 -0
- package/src/handlers/get-balances/glacier-balance-service/get-native-token-balances.test.ts +61 -0
- package/src/handlers/get-balances/glacier-balance-service/get-native-token-balances.ts +46 -0
- package/src/handlers/get-network-fee/get-network-fee.test.ts +1 -1
- package/src/handlers/get-network-fee/get-network-fee.ts +1 -1
- package/src/handlers/get-transaction-history/converters/evm-transaction-converter/get-transaction-from-glacier.test.ts +72 -59
- package/src/handlers/get-transaction-history/converters/evm-transaction-converter/get-transactions-from-glacier.ts +4 -11
- package/src/handlers/get-transaction-history/get-transaction-history.test.ts +7 -2
- package/src/handlers/get-transaction-history/get-transaction-history.ts +13 -3
- package/src/module.ts +18 -8
- package/src/services/glacier-service/glacier-service.ts +259 -0
- package/tsconfig.json +1 -0
- /package/{src/manifest.json → manifest.json} +0 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @avalabs/evm-module@0.0.
|
|
2
|
+
> @avalabs/evm-module@0.0.15 build /home/runner/work/vm-modules/vm-modules/packages/evm-module
|
|
3
3
|
> tsup
|
|
4
4
|
|
|
5
5
|
[34mCLI[39m Building entry: ./src/index.ts
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
[34mCLI[39m Cleaning output folder
|
|
11
11
|
[34mCJS[39m Build start
|
|
12
12
|
[34mESM[39m Build start
|
|
13
|
-
[32mESM[39m [1mdist/index.js [22m[32m13.08 KB[39m
|
|
14
|
-
[32mESM[39m [1mdist/index.js.map [22m[32m53.79 KB[39m
|
|
15
|
-
[32mESM[39m ⚡️ Build success in 1103ms
|
|
16
|
-
[32mCJS[39m [1mdist/index.cjs [22m[32m13.83 KB[39m
|
|
17
|
-
[32mCJS[39m [1mdist/index.cjs.map [22m[32m53.79 KB[39m
|
|
18
|
-
[32mCJS[39m ⚡️ Build success in 1104ms
|
|
19
13
|
[34mDTS[39m Build start
|
|
20
|
-
[
|
|
21
|
-
[
|
|
22
|
-
[
|
|
14
|
+
[32mCJS[39m [1mdist/index.cjs [22m[32m33.67 KB[39m
|
|
15
|
+
[32mCJS[39m [1mdist/index.cjs.map [22m[32m102.31 KB[39m
|
|
16
|
+
[32mCJS[39m ⚡️ Build success in 1623ms
|
|
17
|
+
[32mESM[39m [1mdist/index.js [22m[32m32.73 KB[39m
|
|
18
|
+
[32mESM[39m [1mdist/index.js.map [22m[32m102.31 KB[39m
|
|
19
|
+
[32mESM[39m ⚡️ Build success in 1623ms
|
|
20
|
+
[32mDTS[39m ⚡️ Build success in 11993ms
|
|
21
|
+
[32mDTS[39m [1mdist/index.d.cts [22m[32m1.77 KB[39m
|
|
22
|
+
[32mDTS[39m [1mdist/index.d.ts [22m[32m1.77 KB[39m
|
package/.turbo/turbo-lint.log
CHANGED
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
> @avalabs/evm-module@0.0.
|
|
2
|
+
> @avalabs/evm-module@0.0.15 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 (
|
|
5
|
+
PASS src/handlers/eth-send-transaction/eth-send-transaction.test.ts (15.799 s)
|
|
6
6
|
● Console
|
|
7
7
|
|
|
8
8
|
console.error
|
|
@@ -32,15 +32,20 @@ PASS src/handlers/eth-send-transaction/eth-send-transaction.test.ts (10.594 s)
|
|
|
32
32
|
at ethSendTransaction (src/handlers/eth-send-transaction/eth-send-transaction.ts:32:13)
|
|
33
33
|
at Object.<anonymous> (src/handlers/eth-send-transaction/eth-send-transaction.test.ts:120:46)
|
|
34
34
|
|
|
35
|
-
PASS src/handlers/
|
|
35
|
+
PASS src/handlers/get-balances/get-balances.test.ts
|
|
36
36
|
PASS src/handlers/get-transaction-history/converters/evm-transaction-converter/get-transaction-from-glacier.test.ts
|
|
37
|
+
PASS src/handlers/eth-send-transaction/schema.test.ts
|
|
37
38
|
PASS src/handlers/get-transaction-history/converters/etherscan-transaction-converter/get-transaction-from-etherscan.test.ts
|
|
38
39
|
PASS src/handlers/get-tokens/get-tokens.test.ts
|
|
40
|
+
PASS src/handlers/get-balances/evm-balance-service/get-native-token-balances.test.ts
|
|
41
|
+
PASS src/handlers/get-balances/glacier-balance-service/get-erc20-balances.test.ts
|
|
42
|
+
PASS src/handlers/get-balances/evm-balance-service/get-erc20-balances.test.ts
|
|
39
43
|
PASS src/handlers/get-transaction-history/get-transaction-history.test.ts
|
|
44
|
+
PASS src/handlers/get-balances/glacier-balance-service/get-native-token-balances.test.ts
|
|
40
45
|
PASS src/handlers/get-network-fee/get-network-fee.test.ts
|
|
41
46
|
|
|
42
|
-
Test Suites:
|
|
43
|
-
Tests:
|
|
47
|
+
Test Suites: 12 passed, 12 total
|
|
48
|
+
Tests: 36 passed, 36 total
|
|
44
49
|
Snapshots: 0 total
|
|
45
|
-
Time:
|
|
50
|
+
Time: 20.135 s
|
|
46
51
|
Ran all test suites.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# @avalabs/evm-module
|
|
2
2
|
|
|
3
|
+
## 0.0.15
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- f536d58: add module functions to evm-module
|
|
8
|
+
- Updated dependencies [f536d58]
|
|
9
|
+
- @avalabs/vm-module-types@0.0.15
|
|
10
|
+
- @internal/utils@0.0.3
|
|
11
|
+
|
|
12
|
+
## 0.0.14
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- 0593258: add getBalances to evm-module
|
|
17
|
+
- Updated dependencies [0593258]
|
|
18
|
+
- @avalabs/vm-module-types@0.0.14
|
|
19
|
+
- @internal/utils@0.0.2
|
|
20
|
+
|
|
21
|
+
## 0.0.13
|
|
22
|
+
|
|
23
|
+
### Patch Changes
|
|
24
|
+
|
|
25
|
+
- d9fa0f5: added getNetworkFee to avalanche module
|
|
26
|
+
- Updated dependencies [af68c81]
|
|
27
|
+
- Updated dependencies [d9fa0f5]
|
|
28
|
+
- @avalabs/vm-module-types@0.0.13
|
|
29
|
+
|
|
3
30
|
## 0.0.12
|
|
4
31
|
|
|
5
32
|
### Patch Changes
|
package/dist/index.cjs
CHANGED
|
@@ -5,19 +5,22 @@ 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
|
|
8
|
+
var he = require('bn.js');
|
|
9
9
|
var etherscanSdk = require('@avalabs/etherscan-sdk');
|
|
10
|
-
var
|
|
11
|
-
var St = require('lodash.startcase');
|
|
10
|
+
var qe = require('lodash.startcase');
|
|
12
11
|
var zod = require('zod');
|
|
12
|
+
require('@avalabs/coingecko-sdk');
|
|
13
|
+
var utils = require('@internal/utils');
|
|
14
|
+
var glacierSdk = require('@avalabs/glacier-sdk');
|
|
13
15
|
|
|
14
16
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
17
|
|
|
16
|
-
var
|
|
18
|
+
var he__default = /*#__PURE__*/_interopDefault(he);
|
|
19
|
+
var qe__default = /*#__PURE__*/_interopDefault(qe);
|
|
17
20
|
|
|
18
|
-
var H=(t,e,o)=>{if(!e.has(t))throw TypeError("Cannot "+o)};var N=(t,e,o)=>(H(t,e,"read from private field"),o?o.call(t):e.get(t)),P=(t,e,o)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,o);},I=(t,e,o,n)=>(H(t,e,"write to private field"),n?n.call(t,o):e.set(t,o),o);async function M({chainId:t,proxyApiUrl:e}){let o=await fetch(`${e}/tokens?evmChainId=${t}`);if(!o.ok)throw rpcErrors.rpcErrors.internal(`Failed to fetch tokens for chainId ${t}`);return o.json()}var yt=process.env.GLACIER_API_KEY,b=t=>{let{chainId:e,chainName:o,rpcUrl:n,multiContractAddress:a,pollingInterval:s=2e3}=t,r=new walletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:a},Et(n,yt),new ethers.Network(o,e));return r.pollingInterval=s,r},ht=["glacier-api.avax.network","proxy-api.avax.network"];function Et(t,e){let o=new URL(t);if(e&&ht.includes(o.hostname)){let n=o.searchParams;return n.set("token",e),o.search=n.toString(),o.toString()}return t}var U={LOW:1n,MEDIUM:4n,HIGH:6n},F=500000000n;async function _({chainId:t,chainName:e,rpcUrl:o,multiContractAddress:n}){let a=b({chainId:t,chainName:e,rpcUrl:o,multiContractAddress:n}),{maxFeePerGas:s}=await a.getFeeData();if(!s)throw rpcErrors.rpcErrors.internal("Pre-EIP-1559 networks are not supported");let r=F*U.LOW,i=F*U.MEDIUM,c=F*U.HIGH;return {baseFee:s,low:{maxFeePerGas:s+r,maxPriorityFeePerGas:r},medium:{maxFeePerGas:s+i,maxPriorityFeePerGas:i},high:{maxFeePerGas:s+c,maxPriorityFeePerGas:c}}}function E(t,e,o="tx"){return `${t}/${o}/${e}`}var B=({tx:t,networkToken:e,chainId:o,explorerUrl:n,address:a})=>{let s=t.from.toLowerCase()===a.toLowerCase(),r=parseInt(t.timeStamp)*1e3,i=e.decimals,c=new bn_js.BN(t.value),m=utilsSdk.balanceToDisplayValue(c,i),u=s?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,{from:p,to:l,gasPrice:d,gasUsed:f,hash:g}=t,h=E(n,g);return {isIncoming:!s,isOutgoing:s,isContractCall:wt(t),timestamp:r,hash:g,isSender:s,from:p,to:l,tokens:[{decimal:i.toString(),name:e.name,symbol:e.symbol,amount:m,type:vmModuleTypes.TokenType.NATIVE}],gasUsed:f,gasPrice:d,chainId:o.toString(),txType:u,explorerLink:h}};function wt(t){return t.input!=="0x"}function V({tx:t,address:e,explorerUrl:o,chainId:n}){let a=t.from.toLowerCase()===e.toLowerCase(),s=parseInt(t.timeStamp)*1e3,r=parseInt(t.tokenDecimal),i=new bn_js.BN(t.value),c=utilsSdk.balanceToDisplayValue(i,r),{from:m,to:u,gasPrice:p,gasUsed:l,hash:d,tokenDecimal:f,tokenName:g,tokenSymbol:h}=t,R=a?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,A=E(o,d);return {isIncoming:!a,isOutgoing:a,isContractCall:!1,timestamp:s,hash:d,isSender:a,from:m,to:u,tokens:[{decimal:f,name:g,symbol:h,type:vmModuleTypes.TokenType.ERC20,amount:c}],gasUsed:l,gasPrice:p,chainId:n.toString(),txType:R,explorerLink:A}}var W=async({isTestnet:t,networkToken:e,explorerUrl:o,chainId:n,address:a,nextPageToken:s,offset:r})=>{let i=s?JSON.parse(s):void 0,c=i?.page||1,m=i?.queries||["normal","erc20"],u=(m.includes("normal")?await etherscanSdk.getNormalTxs(a,!t,{page:c,offset:r}):[]).map(g=>B({tx:g,chainId:n,networkToken:e,explorerUrl:o,address:a})),p=(m.includes("erc20")?await etherscanSdk.getErc20Txs(a,!t,void 0,{page:c,offset:r}):[]).map(g=>V({tx:g,address:a,explorerUrl:o,chainId:n})),l=p.map(g=>g.hash),d=u.filter(g=>!l.includes(g.hash)),f={queries:[],page:c+1};return u.length&&f.queries.push("normal"),p.length&&f.queries.push("erc20"),{transactions:[...d,...p],nextPageToken:f.queries.length?JSON.stringify(f):""}};var q=t=>t===1||t===5||t===4||t===11155111;var $=({nativeTransaction:t,erc20Transfers:e,erc721Transfers:o},n,a)=>{let s=!e&&!o,r=At(t.method?.methodName),i=n.toLowerCase(),c=r.toLowerCase().includes("swap"),m=s&&t.from.address.toLowerCase()===i,u=s&&t.to.address.toLowerCase()===i,p=r==="Market Buy Orders With Eth"||r==="Buy NFT",l=r==="Approve",d=r.toLowerCase().includes("transfer"),f=r.toLowerCase().includes("airdrop"),g=r.toLowerCase().includes("unwrap"),h=r==="Fill Order",R=d&&!!a[0]&&j(a[0].type)&&a[0].from?.address.toLowerCase()===i,A=d&&!!a[0]&&j(a[0].type)&&a[0].to?.address.toLowerCase()===i;return c?vmModuleTypes.TransactionType.SWAP:m?vmModuleTypes.TransactionType.SEND:u?vmModuleTypes.TransactionType.RECEIVE:p?vmModuleTypes.TransactionType.NFT_BUY:l?vmModuleTypes.TransactionType.APPROVE:R?vmModuleTypes.TransactionType.NFT_SEND:A?vmModuleTypes.TransactionType.NFT_RECEIVE:d?vmModuleTypes.TransactionType.TRANSFER:f?vmModuleTypes.TransactionType.AIRDROP:g?vmModuleTypes.TransactionType.UNWRAP:h?vmModuleTypes.TransactionType.FILL_ORDER:vmModuleTypes.TransactionType.UNKNOWN};function j(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}var At=(t="")=>t.includes("(")?St__default.default(t.split("(",1)[0]):t;var Y=(t,{nativeTransaction:e,erc20Transfers:o,erc721Transfers:n},a)=>{let s=t===vmModuleTypes.TransactionType.TRANSFER,r=t===vmModuleTypes.TransactionType.SEND,i=t===vmModuleTypes.TransactionType.RECEIVE,c=e?.from?.address,m=e?.to?.address;s&&o&&o[0]&&(c=o[0].from.address,m=o[0].to.address),s&&n&&n[0]&&(c=n[0].from.address,m=n[0].to.address);let u=r||s&&c.toLowerCase()===a.toLowerCase(),p=i||s&&m.toLowerCase()===a.toLowerCase();return {isOutgoing:u,isIncoming:p,isSender:c===a,from:c,to:m}};async function K(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var Ft="https://cloudflare-ipfs.com";function v(t,e=Ft){if(!t)return "";try{return utilsSdk.ipfsResolver(t,e)}catch{return t}}async function Dt(t,e=5e3){let o=new AbortController;return setTimeout(()=>o.abort(),e),fetch(t,{signal:o.signal})}async function z(t){let e={};if(t)if(t.startsWith("data:application/json;base64,")){let o=t.substring(29);try{let n=Buffer.from(o,"base64").toString();e=JSON.parse(n);}catch{e={};}}else e=await Dt(v(t)).then(o=>o.json()).catch(()=>({}));else return {};return e}var Lt="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Z(t,e="256"){let o=v(t);return `${Lt}/width=${e},fit/${o}`}var et=async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:o,erc1155Transfers:n},a)=>{let s=[];if(t.value!=="0"){let r=a.decimals,i=new bn_js.BN(t.value),c=utilsSdk.balanceToDisplayValue(i,r);s.push({decimal:r.toString(),name:a.name,symbol:a.symbol,amount:c,from:t.from,to:t.to,type:vmModuleTypes.TokenType.NATIVE});}return e?.forEach(r=>{let i=r.erc20Token.decimals,c=new bn_js.BN(r.value),m=utilsSdk.balanceToDisplayValue(c,i);s.push({decimal:i.toString(),name:r.erc20Token.name,symbol:r.erc20Token.symbol,amount:m,from:r.from,to:r.to,imageUri:r.erc20Token.logoUri,type:vmModuleTypes.TokenType.ERC20});}),o&&await Promise.allSettled(o.map(async r=>{let i=r.erc721Token,c=await tt(i.tokenUri,i.metadata.imageUri);s.push({name:r.erc721Token.name,symbol:r.erc721Token.symbol,amount:"1",imageUri:c,from:r.from,to:r.to,collectableTokenId:r.erc721Token.tokenId,type:vmModuleTypes.TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async r=>{let i=r.erc1155Token,c=await tt(i.tokenUri,i.metadata.imageUri);s.push({name:r.erc1155Token.metadata.name??"",symbol:r.erc1155Token.metadata.symbol??"",amount:r.value,imageUri:c,from:r.from,to:r.to,collectableTokenId:r.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),s},tt=async(t,e)=>{if(e)return e.startsWith("ipfs://")?v(e):e;{let[o,n]=await K(z(t));return n?"":o.image?Z(o.image):""}};var rt=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER];var ot=async({transactions:t,explorerUrl:e,networkToken:o,chainId:n,address:a})=>{let s=await et(t,o),r=$(t,a,s),{isOutgoing:i,isIncoming:c,isSender:m,from:u,to:p}=Y(r,t,a),{blockTimestamp:l,txHash:d,gasPrice:f,gasUsed:g}=t.nativeTransaction,h=E(e,d);return {isContractCall:!rt.includes(r),isIncoming:c,isOutgoing:i,isSender:m,timestamp:l*1e3,hash:d,from:u,to:p,tokens:s,gasPrice:f,gasUsed:g,chainId:n.toString(),txType:r,explorerLink:h}};var nt=async({chainId:t,explorerUrl:e,networkToken:o,address:n,nextPageToken:a,offset:s,glacierApiUrl:r})=>{if(!r)throw rpcErrors.rpcErrors.invalidParams("Glacier API URL is required");let i=new glacierSdk.Glacier({BASE:r});try{let c=await i.evmTransactions.listTransactions({chainId:t.toString(),address:n,pageToken:a,pageSize:s});return {transactions:(await Promise.all(c.transactions.filter(p=>p.nativeTransaction.txStatus==="1").map(p=>ot({transactions:p,explorerUrl:e,networkToken:o,chainId:t,address:n}).then(l=>l)))).filter(p=>p.tokens.find(l=>Number(l.amount)!==0)),nextPageToken:c.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}};var at=async({chainId:t,isTestnet:e,networkToken:o,explorerUrl:n,address:a,nextPageToken:s,offset:r,glacierApiUrl:i})=>q(t)?W({isTestnet:e,networkToken:o,explorerUrl:n,chainId:t,address:a,nextPageToken:s,offset:r}):nt({networkToken:o,explorerUrl:n,chainId:t,address:a,nextPageToken:s,offset:r,glacierApiUrl:i});var st={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:["eth_sendTransaction","eth_*","getTransactionHistory"]}},manifestVersion:"0.0"};var Ot={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Bt={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},ct=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return Ot;case vmModuleTypes.Environment.DEV:return Bt}};var Gt=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()}),Vt=zod.z.array(Gt).length(1),mt=t=>Vt.safeParse(t);var pt=async({transactionParams:{from:t,to:e,data:o,value:n},provider:a})=>{let s=await a.getTransactionCount(t);return Number(await a.estimateGas({from:t,to:e,nonce:s,data:o,value:n}))};var lt=async({from:t,provider:e})=>e.getTransactionCount(t);var ut=async({request:t,network:e,approvalController:o})=>{let{dappInfo:n,params:a}=t,s=mt(a);if(!s.success)return console.error(s.error),{error:rpcErrors.rpcErrors.invalidParams("Transaction params are invalid")};let r=s.data[0];if(!r)return {error:rpcErrors.rpcErrors.invalidParams("Transaction params are invalid")};let i=b({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});if(!r.gas||Number(r.gas)<0)try{let l=await pt({transactionParams:{from:r.from,to:r.to,data:r.data,value:r.value},provider:i});r.gas="0x"+l.toString(16);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate gas limit")}}if(!r.nonce)try{let l=await lt({from:r.from,provider:i});r.nonce=String(l);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate nonce")}}let c={title:"Approve Transaction",network:{chainId:e.chainId,name:e.chainName,logoUrl:e.logoUrl},transactionDetails:{website:new URL(n.url).hostname,from:r.from,to:r.to,data:r.data},networkFeeSelector:!0},m={type:vmModuleTypes.SigningDataType.EVM_TRANSACTION,account:r.from,chainId:e.chainId,data:{type:2,nonce:Number(r.nonce),gasLimit:Number(r.gas),to:r.to,from:r.from,data:r.data,value:r.value,chainId:r.chainId}},u=await o.requestApproval({request:t,displayData:c,signingData:m});if("error"in u)return {error:u.error};let p=await i.send("eth_sendRawTransaction",[u.result]);return qt({provider:i,txHash:p,onTransactionConfirmed:o.onTransactionConfirmed,onTransactionReverted:o.onTransactionReverted}),{result:p}},qt=async({provider:t,txHash:e,onTransactionConfirmed:o,onTransactionReverted:n})=>{(await t.waitForTransaction(e))?.status===1?o(e):n(e);};var k,x,w,gt=class{constructor({approvalController:e,environment:o}){P(this,k,void 0);P(this,x,void 0);P(this,w,void 0);let{glacierApiUrl:n,proxyApiUrl:a}=ct(o);I(this,k,n),I(this,x,a),I(this,w,e);}getAddress(){return Promise.resolve("EVM address")}getBalances(){return Promise.resolve("EVM balances")}getManifest(){let e=vmModuleTypes.parseManifest(st);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:o,chainName:n,rpcUrl:a,utilityAddresses:s}=e;return _({chainId:o,chainName:n,rpcUrl:a,multiContractAddress:s?.multicall,glacierApiUrl:N(this,k)})}getTransactionHistory(e){let{network:o,address:n,nextPageToken:a,offset:s}=e,{chainId:r,isTestnet:i,networkToken:c,explorerUrl:m=""}=o;return at({chainId:r,isTestnet:i,networkToken:c,explorerUrl:m,address:n,nextPageToken:a,offset:s,glacierApiUrl:N(this,k)})}getTokens(e){let{chainId:o}=e;return M({chainId:o,proxyApiUrl:N(this,x)})}async onRpcRequest(e,o){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return ut({request:e,network:o,approvalController:N(this,w)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};k=new WeakMap,x=new WeakMap,w=new WeakMap;
|
|
21
|
+
var xe=Object.defineProperty;var Ie=(t,e,a)=>e in t?xe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a;var E=(t,e,a)=>(Ie(t,typeof e!="symbol"?e+"":e,a),a),V=(t,e,a)=>{if(!e.has(t))throw TypeError("Cannot "+a)};var w=(t,e,a)=>(V(t,e,"read from private field"),a?a.call(t):e.get(t)),S=(t,e,a)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,a);},P=(t,e,a,n)=>(V(t,e,"write to private field"),n?n.call(t,a):e.set(t,a),a);async function A({chainId:t,proxyApiUrl:e}){let a=await fetch(`${e}/tokens?evmChainId=${t}`);if(!a.ok)throw rpcErrors.rpcErrors.internal(`Failed to fetch tokens for chainId ${t}`);return a.json()}var Pe=process.env.GLACIER_API_KEY,C=t=>{let{chainId:e,chainName:a,rpcUrl:n,multiContractAddress:s,pollingInterval:o=2e3}=t,r=new walletsSdk.JsonRpcBatchInternal({maxCalls:40,multiContractAddress:s},Ue(n,Pe),new ethers.Network(a,e));return r.pollingInterval=o,r},Ae=["glacier-api.avax.network","proxy-api.avax.network"];function Ue(t,e){let a=new URL(t);if(e&&Ae.includes(a.hostname)){let n=a.searchParams;return n.set("token",e),a.search=n.toString(),a.toString()}return t}var F={LOW:1n,MEDIUM:4n,HIGH:6n},D=500000000n;async function _({chainId:t,chainName:e,rpcUrl:a,multiContractAddress:n}){let s=C({chainId:t,chainName:e,rpcUrl:a,multiContractAddress:n}),{maxFeePerGas:o}=await s.getFeeData();if(!o)throw rpcErrors.rpcErrors.internal("Pre-EIP-1559 networks are not supported");let r=D*F.LOW,i=D*F.MEDIUM,c=D*F.HIGH;return {baseFee:o,low:{maxFeePerGas:o+r,maxPriorityFeePerGas:r},medium:{maxFeePerGas:o+i,maxPriorityFeePerGas:i},high:{maxFeePerGas:o+c,maxPriorityFeePerGas:c},isFixedFee:!1}}function N(t,e,a="tx"){return `${t}/${a}/${e}`}var O=({tx:t,networkToken:e,chainId:a,explorerUrl:n,address:s})=>{let o=t.from.toLowerCase()===s.toLowerCase(),r=parseInt(t.timeStamp)*1e3,i=e.decimals,c=new he.BN(t.value),d=utilsSdk.balanceToDisplayValue(c,i),p=o?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,{from:m,to:l,gasPrice:b,gasUsed:f,hash:u}=t,y=N(n,u);return {isIncoming:!o,isOutgoing:o,isContractCall:Me(t),timestamp:r,hash:u,isSender:o,from:m,to:l,tokens:[{decimal:i.toString(),name:e.name,symbol:e.symbol,amount:d,type:vmModuleTypes.TokenType.NATIVE}],gasUsed:f,gasPrice:b,chainId:a.toString(),txType:p,explorerLink:y}};function Me(t){return t.input!=="0x"}function J({tx:t,address:e,explorerUrl:a,chainId:n}){let s=t.from.toLowerCase()===e.toLowerCase(),o=parseInt(t.timeStamp)*1e3,r=parseInt(t.tokenDecimal),i=new he.BN(t.value),c=utilsSdk.balanceToDisplayValue(i,r),{from:d,to:p,gasPrice:m,gasUsed:l,hash:b,tokenDecimal:f,tokenName:u,tokenSymbol:y}=t,g=s?vmModuleTypes.TransactionType.SEND:vmModuleTypes.TransactionType.RECEIVE,k=N(a,b);return {isIncoming:!s,isOutgoing:s,isContractCall:!1,timestamp:o,hash:b,isSender:s,from:d,to:p,tokens:[{decimal:f,name:u,symbol:y,type:vmModuleTypes.TokenType.ERC20,amount:c}],gasUsed:l,gasPrice:m,chainId:n.toString(),txType:g,explorerLink:k}}var j=async({isTestnet:t,networkToken:e,explorerUrl:a,chainId:n,address:s,nextPageToken:o,offset:r})=>{let i=o?JSON.parse(o):void 0,c=i?.page||1,d=i?.queries||["normal","erc20"],p=(d.includes("normal")?await etherscanSdk.getNormalTxs(s,!t,{page:c,offset:r}):[]).map(u=>O({tx:u,chainId:n,networkToken:e,explorerUrl:a,address:s})),m=(d.includes("erc20")?await etherscanSdk.getErc20Txs(s,!t,void 0,{page:c,offset:r}):[]).map(u=>J({tx:u,address:s,explorerUrl:a,chainId:n})),l=m.map(u=>u.hash),b=p.filter(u=>!l.includes(u.hash)),f={queries:[],page:c+1};return p.length&&f.queries.push("normal"),m.length&&f.queries.push("erc20"),{transactions:[...b,...m],nextPageToken:f.queries.length?JSON.stringify(f):""}};var $=t=>t===1||t===5||t===4||t===11155111;var K=({nativeTransaction:t,erc20Transfers:e,erc721Transfers:a},n,s)=>{let o=!e&&!a,r=Je(t.method?.methodName),i=n.toLowerCase(),c=r.toLowerCase().includes("swap"),d=o&&t.from.address.toLowerCase()===i,p=o&&t.to.address.toLowerCase()===i,m=r==="Market Buy Orders With Eth"||r==="Buy NFT",l=r==="Approve",b=r.toLowerCase().includes("transfer"),f=r.toLowerCase().includes("airdrop"),u=r.toLowerCase().includes("unwrap"),y=r==="Fill Order",g=b&&!!s[0]&&z(s[0].type)&&s[0].from?.address.toLowerCase()===i,k=b&&!!s[0]&&z(s[0].type)&&s[0].to?.address.toLowerCase()===i;return c?vmModuleTypes.TransactionType.SWAP:d?vmModuleTypes.TransactionType.SEND:p?vmModuleTypes.TransactionType.RECEIVE:m?vmModuleTypes.TransactionType.NFT_BUY:l?vmModuleTypes.TransactionType.APPROVE:g?vmModuleTypes.TransactionType.NFT_SEND:k?vmModuleTypes.TransactionType.NFT_RECEIVE:b?vmModuleTypes.TransactionType.TRANSFER:f?vmModuleTypes.TransactionType.AIRDROP:u?vmModuleTypes.TransactionType.UNWRAP:y?vmModuleTypes.TransactionType.FILL_ORDER:vmModuleTypes.TransactionType.UNKNOWN};function z(t){return t===vmModuleTypes.TokenType.ERC721||t===vmModuleTypes.TokenType.ERC1155}var Je=(t="")=>t.includes("(")?qe__default.default(t.split("(",1)[0]):t;var X=(t,{nativeTransaction:e,erc20Transfers:a,erc721Transfers:n},s)=>{let o=t===vmModuleTypes.TransactionType.TRANSFER,r=t===vmModuleTypes.TransactionType.SEND,i=t===vmModuleTypes.TransactionType.RECEIVE,c=e?.from?.address,d=e?.to?.address;o&&a&&a[0]&&(c=a[0].from.address,d=a[0].to.address),o&&n&&n[0]&&(c=n[0].from.address,d=n[0].to.address);let p=r||o&&c.toLowerCase()===s.toLowerCase(),m=i||o&&d.toLowerCase()===s.toLowerCase();return {isOutgoing:p,isIncoming:m,isSender:c===s,from:c,to:d}};async function Z(t){try{return t.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var $e="https://cloudflare-ipfs.com";function x(t,e=$e){if(!t)return "";try{return utilsSdk.ipfsResolver(t,e)}catch{return t}}async function Ye(t,e=5e3){let a=new AbortController;return setTimeout(()=>a.abort(),e),fetch(t,{signal:a.signal})}async function Q(t){let e={};if(t)if(t.startsWith("data:application/json;base64,")){let a=t.substring(29);try{let n=Buffer.from(a,"base64").toString();e=JSON.parse(n);}catch{e={};}}else e=await Ye(x(t)).then(a=>a.json()).catch(()=>({}));else return {};return e}var ze="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function ee(t,e="256"){let a=x(t);return `${ze}/width=${e},fit/${a}`}var ne=async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:a,erc1155Transfers:n},s)=>{let o=[];if(t.value!=="0"){let r=s.decimals,i=new he.BN(t.value),c=utilsSdk.balanceToDisplayValue(i,r);o.push({decimal:r.toString(),name:s.name,symbol:s.symbol,amount:c,from:t.from,to:t.to,type:vmModuleTypes.TokenType.NATIVE});}return e?.forEach(r=>{let i=r.erc20Token.decimals,c=new he.BN(r.value),d=utilsSdk.balanceToDisplayValue(c,i);o.push({decimal:i.toString(),name:r.erc20Token.name,symbol:r.erc20Token.symbol,amount:d,from:r.from,to:r.to,imageUri:r.erc20Token.logoUri,type:vmModuleTypes.TokenType.ERC20});}),a&&await Promise.allSettled(a.map(async r=>{let i=r.erc721Token,c=await re(i.tokenUri,i.metadata.imageUri);o.push({name:r.erc721Token.name,symbol:r.erc721Token.symbol,amount:"1",imageUri:c,from:r.from,to:r.to,collectableTokenId:r.erc721Token.tokenId,type:vmModuleTypes.TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async r=>{let i=r.erc1155Token,c=await re(i.tokenUri,i.metadata.imageUri);o.push({name:r.erc1155Token.metadata.name??"",symbol:r.erc1155Token.metadata.symbol??"",amount:r.value,imageUri:c,from:r.from,to:r.to,collectableTokenId:r.erc1155Token.tokenId,type:vmModuleTypes.TokenType.ERC1155});})),o},re=async(t,e)=>{if(e)return e.startsWith("ipfs://")?x(e):e;{let[a,n]=await Z(Q(t));return n?"":a.image?ee(a.image):""}};var oe=[vmModuleTypes.TransactionType.SEND,vmModuleTypes.TransactionType.RECEIVE,vmModuleTypes.TransactionType.TRANSFER];var se=async({transactions:t,explorerUrl:e,networkToken:a,chainId:n,address:s})=>{let o=await ne(t,a),r=K(t,s,o),{isOutgoing:i,isIncoming:c,isSender:d,from:p,to:m}=X(r,t,s),{blockTimestamp:l,txHash:b,gasPrice:f,gasUsed:u}=t.nativeTransaction,y=N(e,b);return {isContractCall:!oe.includes(r),isIncoming:c,isOutgoing:i,isSender:d,timestamp:l*1e3,hash:b,from:p,to:m,tokens:o,gasPrice:f,gasUsed:u,chainId:n.toString(),txType:r,explorerLink:y}};var ie=async({chainId:t,explorerUrl:e,networkToken:a,address:n,nextPageToken:s,offset:o,glacierService:r})=>{try{let i=await r.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=>se({transactions:p,explorerUrl:e,networkToken:a,chainId:t,address:n}).then(m=>m)))).filter(p=>p.tokens.find(m=>Number(m.amount)!==0)),nextPageToken:i.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}};var ce=async({chainId:t,isTestnet:e,networkToken:a,explorerUrl:n,address:s,nextPageToken:o,offset:r,glacierService:i})=>$(t)?j({isTestnet:e,networkToken:a,explorerUrl:n,chainId:t,address:s,nextPageToken:o,offset:r}):i.isHealthy()?ie({networkToken:a,explorerUrl:n,chainId:t,address:s,nextPageToken:o,offset:r,glacierService:i}):{transactions:[],nextPageToken:""};var le={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:["eth_sendTransaction","eth_*","getTransactionHistory"]}},manifestVersion:"0.0"};var Xe=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()}),Ze=zod.z.array(Xe).length(1),pe=t=>Ze.safeParse(t);var me=async({transactionParams:{from:t,to:e,data:a,value:n},provider:s})=>{let o=await s.getTransactionCount(t);return Number(await s.estimateGas({from:t,to:e,nonce:o,data:a,value:n}))};var de=async({from:t,provider:e})=>e.getTransactionCount(t);var be=async({request:t,network:e,approvalController:a})=>{let{dappInfo:n,params:s}=t,o=pe(s);if(!o.success)return console.error(o.error),{error:rpcErrors.rpcErrors.invalidParams("Transaction params are invalid")};let r=o.data[0];if(!r)return {error:rpcErrors.rpcErrors.invalidParams("Transaction params are invalid")};let i=C({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});if(!r.gas||Number(r.gas)<0)try{let l=await me({transactionParams:{from:r.from,to:r.to,data:r.data,value:r.value},provider:i});r.gas="0x"+l.toString(16);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate gas limit")}}if(!r.nonce)try{let l=await de({from:r.from,provider:i});r.nonce=String(l);}catch{return {error:rpcErrors.rpcErrors.internal("Unable to calculate nonce")}}let c={title:"Approve Transaction",network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},transactionDetails:{website:new URL(n.url).hostname,from:r.from,to:r.to,data:r.data},networkFeeSelector:!0},d={type:vmModuleTypes.SigningDataType.EVM_TRANSACTION,account:r.from,chainId:e.chainId,data:{type:2,nonce:Number(r.nonce),gasLimit:Number(r.gas),to:r.to,from:r.from,data:r.data,value:r.value,chainId:r.chainId}},p=await a.requestApproval({request:t,displayData:c,signingData:d});if("error"in p)return {error:p.error};let m=await i.send("eth_sendRawTransaction",[p.result]);return e0({provider:i,txHash:m,onTransactionConfirmed:a.onTransactionConfirmed,onTransactionReverted:a.onTransactionReverted}),{result:m}},e0=async({provider:t,txHash:e,onTransactionConfirmed:a,onTransactionReverted:n})=>{(await t.waitForTransaction(e))?.status===1?a(e):n(e);};var fe={_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 c0=18,ue=async({provider:t,tokenService:e,address:a,currency:n,tokens:s,network:o})=>{let r=o.pricingProviders?.coingecko.assetPlatformId,i=o.pricingProviders?.coingecko.nativeTokenId,c=s.map(m=>m.address),d=await Promise.allSettled(s.map(async m=>{let b=await new ethers.ethers.Contract(m.address,fe.abi,t).balanceOf?.(a),f=new he__default.default(b)||utilsSdk.numberToBN(0,m.decimals||c0);return {...m,balance:f}})).then(m=>m.reduce((l,b)=>b.status==="fulfilled"&&!b.value.balance.isZero()?[...l,b.value]:l,[]));if(!d.length)return {};let p=r&&await e.getPricesByAddresses(c,r,n)||{};return d.reduce((m,l)=>{let b=p?.[i??""]?.[n]?.price??0,f=p?.[i??""]?.[n]?.marketCap??0,u=p?.[i??""]?.[n]?.vol24??0,y=p?.[i??""]?.[n]?.change24??0,g=utilsSdk.bnToBig(l.balance,l.decimals).mul(b).toNumber(),k=utilsSdk.balanceToDisplayValue(l.balance,l.decimals),Ne=g.toFixed(2);return {...m,[l.address.toLowerCase()]:{...l,type:vmModuleTypes.TokenType.ERC20,balance:l.balance,balanceDisplayValue:k,balanceInCurrency:g,balanceCurrencyDisplayValue:Ne,priceInCurrency:b,marketCap:f,change24:y,vol24:u}}},{})};var ye=async({provider:t,tokenService:e,address:a,currency:n,network:s})=>{let o=s.pricingProviders?.coingecko.nativeTokenId,r=s.networkToken,i=o?await e.getSimplePrice({coinIds:[o],currencies:[n]}):{},c=i?.[o??""]?.[n]?.price??0,d=i?.[o??""]?.[n]?.marketCap??0,p=i?.[o??""]?.[n]?.vol24??0,m=i?.[o??""]?.[n]?.change24??0,l=await t.getBalance(a),b=utilsSdk.bigintToBig(l,r.decimals),f=utilsSdk.bigToBN(b,r.decimals),u=utilsSdk.balanceToDisplayValue(f,r.decimals),y=utilsSdk.bnToBig(f,r.decimals).mul(c).toNumber(),g=y.toFixed(2);return {...r,coingeckoId:o??"",type:vmModuleTypes.TokenType.NATIVE,balance:f,balanceDisplayValue:u,balanceInCurrency:y,balanceCurrencyDisplayValue:g,priceInCurrency:c,marketCap:d,vol24:p,change24:m}};var ge=async({address:t,currency:e,chainId:a,glacierService:n})=>{let o=(await n.getNativeBalance({chainId:a.toString(),address:t,currency:e.toLocaleLowerCase()})).nativeTokenBalance,r=new he.BN(o.balance),i=utilsSdk.balanceToDisplayValue(r,o.decimals),c=o.price?.value??0,d=utilsSdk.bnToBig(r,o.decimals).mul(c).toNumber(),p=d.toFixed(2);return {name:o.name,symbol:o.symbol,decimals:o.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:o.logoUri,balance:r,balanceDisplayValue:i,balanceInCurrency:d,balanceCurrencyDisplayValue:p,priceInCurrency:c,marketCap:0,vol24:0,change24:0,coingeckoId:""}};var ve=async({glacierService:t,currency:e,chainId:a,address:n,customTokens:s})=>{let o=[],r;do{let i=await t.listErc20Balances({chainId:a.toString(),address:n,currency:e.toLocaleLowerCase(),pageSize:100,pageToken:r});o.push(...k0(i.erc20TokenBalances,Number(a))),r=i.nextPageToken;}while(r);return [...v0(s),...o].reduce((i,c)=>({...i,[c.address.toLowerCase()]:c}),{})},v0=t=>t.map(e=>({...e,type:vmModuleTypes.TokenType.ERC20,balance:new he__default.default(0),balanceInCurrency:0,balanceDisplayValue:"0",balanceCurrencyDisplayValue:"0",priceInCurrency:0,marketCap:0,change24:0,vol24:0})),k0=(t,e)=>t.map(a=>{let n=new he__default.default(a.balance),s=utilsSdk.balanceToDisplayValue(n,a.decimals),o=a.balanceValue?.value.toString()??"0",r=a.price?.value??0,i=utilsSdk.bnToBig(n,a.decimals).mul(r).toNumber();return {chainId:e,address:a.address,name:a.name,symbol:a.symbol,decimals:a.decimals,logoUri:a.logoUri,balance:n,balanceCurrencyDisplayValue:o,balanceDisplayValue:s,balanceInCurrency:i,priceInCurrency:r,contractType:"ERC-20",type:vmModuleTypes.TokenType.ERC20,change24:0,marketCap:0,vol24:0}});var ke=async({addresses:t,currency:e,network:a,proxyApiUrl:n,customTokens:s=[],storage:o,glacierService:r})=>{let i=a.chainId,c=await r.isNetworkSupported(a.chainId),d=r.isHealthy(),p=[];if(d&&c)p=await Promise.allSettled(t.map(async l=>{let b=await ge({address:l,currency:e,chainId:i,glacierService:r}),f=await ve({customTokens:s,glacierService:r,currency:e,chainId:i,address:l});return {address:l,balances:{[b.symbol]:b,...f}}}));else {let l=new utils.TokenService({storage:o,proxyApiUrl:n}),f=[...await A({chainId:Number(i),proxyApiUrl:n}),...s],u=C({chainId:i,chainName:a.chainName,rpcUrl:a.rpcUrl,multiContractAddress:a.utilityAddresses?.multicall});p=await Promise.allSettled(t.map(async y=>{let g=await ye({network:a,tokenService:l,address:y,currency:e,provider:u}),k=await ue({provider:u,network:a,tokenService:l,address:y,currency:e,tokens:f});return {address:y,balances:{[g.symbol]:g,...k}}}));}return p.reduce((l,b)=>b.status==="rejected"?l:{...l,[b.value.address]:b.value.balances},{})};var w0={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},C0={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},we=t=>{switch(t){case vmModuleTypes.Environment.PRODUCTION:return w0;case vmModuleTypes.Environment.DEV:return C0}};var v=class extends Error{constructor(){super(...arguments);E(this,"message","Glacier is unhealthy. Try again later.");}},L=class{constructor({glacierApiUrl:e}){E(this,"glacierSdk");E(this,"isGlacierHealthy",!0);E(this,"supportedChainIds",[]);E(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(a=>a.chainId),this.supportedChainIds}catch{return []}}async reindexNft({address:e,chainId:a,tokenId:n}){try{await this.glacierSdk.nfTs.reindexNft({address:e,chainId:a,tokenId:n});}catch(s){throw s instanceof v&&this.setGlacierToUnhealthy(),s}}async getTokenDetails({address:e,chainId:a,tokenId:n}){try{return this.glacierSdk.nfTs.getTokenDetails({address:e,chainId:a,tokenId:n})}catch(s){throw s instanceof v&&this.setGlacierToUnhealthy(),s}}async getChainBalance(e){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(e)}catch(a){throw a instanceof v&&this.setGlacierToUnhealthy(),a}}async getNativeBalance({chainId:e,address:a,currency:n}){try{return this.glacierSdk.evmBalances.getNativeBalance({chainId:e,address:a,currency:n.toLocaleLowerCase()})}catch(s){throw s instanceof v&&this.setGlacierToUnhealthy(),s}}async listErc721Balances({chainId:e,address:a,pageSize:n,pageToken:s}){try{return this.glacierSdk.evmBalances.listErc721Balances({chainId:e,address:a,pageSize:n,pageToken:s})}catch(o){throw o instanceof v&&this.setGlacierToUnhealthy(),o}}async listErc1155Balances({chainId:e,address:a,pageSize:n,pageToken:s}){try{return this.glacierSdk.evmBalances.listErc1155Balances({chainId:e,address:a,pageSize:n,pageToken:s})}catch(o){throw o instanceof v&&this.setGlacierToUnhealthy(),o}}async listErc20Balances({chainId:e,address:a,currency:n,pageSize:s,pageToken:o}){try{return this.glacierSdk.evmBalances.listErc20Balances({chainId:e,address:a,currency:n.toLocaleLowerCase(),pageSize:s,pageToken:o})}catch(r){throw r instanceof v&&this.setGlacierToUnhealthy(),r}}async listTransactions({chainId:e,address:a,pageToken:n,pageSize:s}){try{return this.glacierSdk.evmTransactions.listTransactions({chainId:e,address:a,pageToken:n,pageSize:s})}catch(o){throw o instanceof v&&this.setGlacierToUnhealthy(),o}}};var I,B,R,Ce=class{constructor({approvalController:e,environment:a}){S(this,I,void 0);S(this,B,void 0);S(this,R,void 0);let{glacierApiUrl:n,proxyApiUrl:s}=we(a);P(this,I,new L({glacierApiUrl:n})),P(this,B,s),P(this,R,e);}getAddress(){return Promise.resolve("EVM address")}getBalances({addresses:e,network:a,currency:n,customTokens:s}){return ke({addresses:e,currency:n,network:a,proxyApiUrl:w(this,B),customTokens:s,glacierService:w(this,I)})}getManifest(){let e=vmModuleTypes.parseManifest(le);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:a,chainName:n,rpcUrl:s,utilityAddresses:o}=e;return _({chainId:a,chainName:n,rpcUrl:s,multiContractAddress:o?.multicall})}getTransactionHistory(e){let{network:a,address:n,nextPageToken:s,offset:o}=e,{chainId:r,isTestnet:i,networkToken:c,explorerUrl:d=""}=a;return ce({chainId:r,isTestnet:i,networkToken:c,explorerUrl:d,address:n,nextPageToken:s,offset:o,glacierService:w(this,I)})}getTokens(e){let{chainId:a}=e;return A({chainId:a,proxyApiUrl:w(this,B)})}async onRpcRequest(e,a){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return be({request:e,network:a,approvalController:w(this,R)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};I=new WeakMap,B=new WeakMap,R=new WeakMap;
|
|
19
22
|
|
|
20
|
-
exports.EvmModule =
|
|
21
|
-
exports.NonContractCallTypes =
|
|
23
|
+
exports.EvmModule = Ce;
|
|
24
|
+
exports.NonContractCallTypes = oe;
|
|
22
25
|
//# sourceMappingURL=out.js.map
|
|
23
26
|
//# sourceMappingURL=index.cjs.map
|