@avalabs/evm-module 0.0.16 → 0.0.17
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 +25 -24
- package/CHANGELOG.md +8 -0
- package/dist/index.cjs +25 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +22 -21
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
- package/src/constants.ts +1 -0
- package/src/handlers/eth-send-transaction/eth-send-transaction.test.ts +232 -1
- package/src/handlers/eth-send-transaction/eth-send-transaction.ts +24 -5
- package/src/handlers/eth-sign/eth-sign.test.ts +138 -35
- package/src/handlers/eth-sign/eth-sign.ts +29 -8
- package/src/handlers/get-balances/evm-balance-service/get-erc20-balances.test.ts +2 -2
- package/src/handlers/get-balances/evm-balance-service/get-erc20-balances.ts +4 -6
- package/src/handlers/get-balances/get-balances.test.ts +0 -5
- package/src/handlers/get-balances/get-balances.ts +14 -3
- package/src/handlers/get-balances/glacier-balance-service/get-erc20-balances.test.ts +0 -1
- package/src/handlers/get-balances/glacier-balance-service/get-erc20-balances.ts +10 -7
- package/src/handlers/get-tokens/get-tokens.test.ts +6 -6
- package/src/module.ts +2 -0
- package/src/types.ts +9 -0
- package/src/utils/parse-erc20-transaction-type.ts +35 -0
- package/src/utils/process-transaction-simulation.test.ts +105 -0
- package/src/utils/process-transaction-simulation.ts +294 -0
- package/src/utils/scan-transaction.ts +63 -0
- package/src/handlers/eth-sign/schemas/parse-request-params.ts +0 -90
package/dist/index.d.cts
CHANGED
|
@@ -37,8 +37,16 @@ type TransactionParams = {
|
|
|
37
37
|
nonce?: string;
|
|
38
38
|
chainId?: string;
|
|
39
39
|
};
|
|
40
|
+
declare enum ERC20TransactionType {
|
|
41
|
+
TOTAL_SUPPLY = "totalSupply",
|
|
42
|
+
BALANCE_OF = "balanceOf",
|
|
43
|
+
TRANSFER = "transfer",
|
|
44
|
+
TRANSFER_FROM = "transferFrom",
|
|
45
|
+
APPROVE = "approve",
|
|
46
|
+
ALLOWANCE = "allowance"
|
|
47
|
+
}
|
|
40
48
|
|
|
41
49
|
declare const isTypedDataV1: (data: unknown) => data is TypedDataV1;
|
|
42
50
|
declare const isTypedData: (data: unknown) => data is TypedData<MessageTypes>;
|
|
43
51
|
|
|
44
|
-
export { EvmModule, NonContractCallTypes, TransactionParams, isTypedData, isTypedDataV1 };
|
|
52
|
+
export { ERC20TransactionType, EvmModule, NonContractCallTypes, TransactionParams, isTypedData, isTypedDataV1 };
|
package/dist/index.d.ts
CHANGED
|
@@ -37,8 +37,16 @@ type TransactionParams = {
|
|
|
37
37
|
nonce?: string;
|
|
38
38
|
chainId?: string;
|
|
39
39
|
};
|
|
40
|
+
declare enum ERC20TransactionType {
|
|
41
|
+
TOTAL_SUPPLY = "totalSupply",
|
|
42
|
+
BALANCE_OF = "balanceOf",
|
|
43
|
+
TRANSFER = "transfer",
|
|
44
|
+
TRANSFER_FROM = "transferFrom",
|
|
45
|
+
APPROVE = "approve",
|
|
46
|
+
ALLOWANCE = "allowance"
|
|
47
|
+
}
|
|
40
48
|
|
|
41
49
|
declare const isTypedDataV1: (data: unknown) => data is TypedDataV1;
|
|
42
50
|
declare const isTypedData: (data: unknown) => data is TypedData<MessageTypes>;
|
|
43
51
|
|
|
44
|
-
export { EvmModule, NonContractCallTypes, TransactionParams, isTypedData, isTypedDataV1 };
|
|
52
|
+
export { ERC20TransactionType, EvmModule, NonContractCallTypes, TransactionParams, isTypedData, isTypedDataV1 };
|
package/dist/index.js
CHANGED
|
@@ -1,35 +1,36 @@
|
|
|
1
1
|
import { rpcErrors } from '@metamask/rpc-errors';
|
|
2
|
-
import { TransactionType, RpcMethod, parseManifest,
|
|
2
|
+
import { TransactionType, RpcMethod, parseManifest, TokenType, Environment, AlertType, RawSimplePriceResponseSchema, SimplePriceResponseSchema } from '@avalabs/vm-module-types';
|
|
3
3
|
import { JsonRpcBatchInternal } from '@avalabs/wallets-sdk';
|
|
4
|
-
import { toUtf8String, Network, ethers, TypedDataEncoder } from 'ethers';
|
|
5
|
-
import { numberToBN,
|
|
6
|
-
import
|
|
4
|
+
import { toUtf8String, Network, isHexString, Interface, ethers, TypedDataEncoder } from 'ethers';
|
|
5
|
+
import { numberToBN, balanceToDisplayValue, bnToBig, bigintToBig, bigToBN, ipfsResolver } from '@avalabs/utils-sdk';
|
|
6
|
+
import ct, { BN } from 'bn.js';
|
|
7
7
|
import { getNormalTxs, getErc20Txs } from '@avalabs/etherscan-sdk';
|
|
8
|
-
import
|
|
9
|
-
import { z, string, boolean } from 'zod';
|
|
8
|
+
import Kt from 'lodash.startcase';
|
|
9
|
+
import { z as z$1, string, boolean } from 'zod';
|
|
10
|
+
import We from '@blockaid/client';
|
|
10
11
|
import { getBasicCoingeckoHttp, VsCurrencyType, simpleTokenPrice, simplePrice } from '@avalabs/coingecko-sdk';
|
|
11
12
|
import { Zodios } from '@zodios/core';
|
|
12
13
|
import { Glacier } from '@avalabs/glacier-sdk';
|
|
13
14
|
|
|
14
|
-
var yt=Object.defineProperty;var gt=(r,e,t)=>e in r?yt(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var N=(r,e,t)=>(gt(r,typeof e!="symbol"?e+"":e,t),t),me=(r,e,t)=>{if(!e.has(r))throw TypeError("Cannot "+t)};var h=(r,e,t)=>(me(r,e,"read from private field"),t?t.call(r):e.get(r)),R=(r,e,t)=>{if(e.has(r))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(r):e.set(r,t);},x=(r,e,t,n)=>(me(r,e,"write to private field"),n?n.call(r,t):e.set(r,t),t);async function J({chainId:r,proxyApiUrl:e}){let t=await fetch(`${e}/tokens?evmChainId=${r}`);if(!t.ok)throw rpcErrors.internal(`Failed to fetch tokens for chainId ${r}`);return t.json()}var vt=process.env.GLACIER_API_KEY,B=r=>{let{chainId:e,chainName:t,rpcUrl:n,multiContractAddress:s,pollingInterval:o=2e3}=r,a=new JsonRpcBatchInternal({maxCalls:40,multiContractAddress:s},Et(n,vt),new Network(t,e));return a.pollingInterval=o,a},St=["glacier-api.avax.network","proxy-api.avax.network"];function Et(r,e){let t=new URL(r);if(e&&St.includes(t.hostname)){let n=t.searchParams;return n.set("token",e),t.search=n.toString(),t.toString()}return r}var X={LOW:1n,MEDIUM:4n,HIGH:6n},ee=500000000n;async function de({chainId:r,chainName:e,rpcUrl:t,multiContractAddress:n}){let s=B({chainId:r,chainName:e,rpcUrl:t,multiContractAddress:n}),{maxFeePerGas:o}=await s.getFeeData();if(!o)throw rpcErrors.internal("Pre-EIP-1559 networks are not supported");let a=ee*X.LOW,i=ee*X.MEDIUM,c=ee*X.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 A(r,e,t="tx"){return `${r}/${t}/${e}`}var fe=({tx:r,networkToken:e,chainId:t,explorerUrl:n,address:s})=>{let o=r.from.toLowerCase()===s.toLowerCase(),a=parseInt(r.timeStamp)*1e3,i=e.decimals,c=new BN(r.value),m=balanceToDisplayValue(c,i),d=o?TransactionType.SEND:TransactionType.RECEIVE,{from:u,to:p,gasPrice:f,gasUsed:b,hash:y}=r,g=A(n,y);return {isIncoming:!o,isOutgoing:o,isContractCall:It(r),timestamp:a,hash:y,isSender:o,from:u,to:p,tokens:[{decimal:i.toString(),name:e.name,symbol:e.symbol,amount:m,type:TokenType.NATIVE}],gasUsed:b,gasPrice:f,chainId:t.toString(),txType:d,explorerLink:g}};function It(r){return r.input!=="0x"}function ye({tx:r,address:e,explorerUrl:t,chainId:n}){let s=r.from.toLowerCase()===e.toLowerCase(),o=parseInt(r.timeStamp)*1e3,a=parseInt(r.tokenDecimal),i=new BN(r.value),c=balanceToDisplayValue(i,a),{from:m,to:d,gasPrice:u,gasUsed:p,hash:f,tokenDecimal:b,tokenName:y,tokenSymbol:g}=r,T=s?TransactionType.SEND:TransactionType.RECEIVE,I=A(t,f);return {isIncoming:!s,isOutgoing:s,isContractCall:!1,timestamp:o,hash:f,isSender:s,from:m,to:d,tokens:[{decimal:b,name:y,symbol:g,type:TokenType.ERC20,amount:c}],gasUsed:p,gasPrice:u,chainId:n.toString(),txType:T,explorerLink:I}}var ge=async({isTestnet:r,networkToken:e,explorerUrl:t,chainId:n,address:s,nextPageToken:o,offset:a})=>{let i=o?JSON.parse(o):void 0,c=i?.page||1,m=i?.queries||["normal","erc20"],d=(m.includes("normal")?await getNormalTxs(s,!r,{page:c,offset:a}):[]).map(y=>fe({tx:y,chainId:n,networkToken:e,explorerUrl:t,address:s})),u=(m.includes("erc20")?await getErc20Txs(s,!r,void 0,{page:c,offset:a}):[]).map(y=>ye({tx:y,address:s,explorerUrl:t,chainId:n})),p=u.map(y=>y.hash),f=d.filter(y=>!p.includes(y.hash)),b={queries:[],page:c+1};return d.length&&b.queries.push("normal"),u.length&&b.queries.push("erc20"),{transactions:[...f,...u],nextPageToken:b.queries.length?JSON.stringify(b):""}};var he=r=>r===1||r===5||r===4||r===11155111;var ve=({nativeTransaction:r,erc20Transfers:e,erc721Transfers:t},n,s)=>{let o=!e&&!t,a=Gt(r.method?.methodName),i=n.toLowerCase(),c=a.toLowerCase().includes("swap"),m=o&&r.from.address.toLowerCase()===i,d=o&&r.to.address.toLowerCase()===i,u=a==="Market Buy Orders With Eth"||a==="Buy NFT",p=a==="Approve",f=a.toLowerCase().includes("transfer"),b=a.toLowerCase().includes("airdrop"),y=a.toLowerCase().includes("unwrap"),g=a==="Fill Order",T=f&&!!s[0]&&ke(s[0].type)&&s[0].from?.address.toLowerCase()===i,I=f&&!!s[0]&&ke(s[0].type)&&s[0].to?.address.toLowerCase()===i;return c?TransactionType.SWAP:m?TransactionType.SEND:d?TransactionType.RECEIVE:u?TransactionType.NFT_BUY:p?TransactionType.APPROVE:T?TransactionType.NFT_SEND:I?TransactionType.NFT_RECEIVE:f?TransactionType.TRANSFER:b?TransactionType.AIRDROP:y?TransactionType.UNWRAP:g?TransactionType.FILL_ORDER:TransactionType.UNKNOWN};function ke(r){return r===TokenType.ERC721||r===TokenType.ERC1155}var Gt=(r="")=>r.includes("(")?At(r.split("(",1)[0]):r;var Se=(r,{nativeTransaction:e,erc20Transfers:t,erc721Transfers:n},s)=>{let o=r===TransactionType.TRANSFER,a=r===TransactionType.SEND,i=r===TransactionType.RECEIVE,c=e?.from?.address,m=e?.to?.address;o&&t&&t[0]&&(c=t[0].from.address,m=t[0].to.address),o&&n&&n[0]&&(c=n[0].from.address,m=n[0].to.address);let d=a||o&&c.toLowerCase()===s.toLowerCase(),u=i||o&&m.toLowerCase()===s.toLowerCase();return {isOutgoing:d,isIncoming:u,isSender:c===s,from:c,to:m}};async function Ee(r){try{return r.then(e=>[e,null]).catch(e=>[null,e])}catch(e){return Promise.resolve([null,e])}}var Ut="https://cloudflare-ipfs.com";function G(r,e=Ut){if(!r)return "";try{return ipfsResolver(r,e)}catch{return r}}async function Mt(r,e=5e3){let t=new AbortController;return setTimeout(()=>t.abort(),e),fetch(r,{signal:t.signal})}async function Pe(r){let e={};if(r)if(r.startsWith("data:application/json;base64,")){let t=r.substring(29);try{let n=Buffer.from(t,"base64").toString();e=JSON.parse(n);}catch{e={};}}else e=await Mt(G(r)).then(t=>t.json()).catch(()=>({}));else return {};return e}var Lt="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function Ne(r,e="256"){let t=G(r);return `${Lt}/width=${e},fit/${t}`}var Re=async({nativeTransaction:r,erc20Transfers:e,erc721Transfers:t,erc1155Transfers:n},s)=>{let o=[];if(r.value!=="0"){let a=s.decimals,i=new BN(r.value),c=balanceToDisplayValue(i,a);o.push({decimal:a.toString(),name:s.name,symbol:s.symbol,amount:c,from:r.from,to:r.to,type:TokenType.NATIVE});}return e?.forEach(a=>{let i=a.erc20Token.decimals,c=new BN(a.value),m=balanceToDisplayValue(c,i);o.push({decimal:i.toString(),name:a.erc20Token.name,symbol:a.erc20Token.symbol,amount:m,from:a.from,to:a.to,imageUri:a.erc20Token.logoUri,type:TokenType.ERC20});}),t&&await Promise.allSettled(t.map(async a=>{let i=a.erc721Token,c=await Ie(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:TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async a=>{let i=a.erc1155Token,c=await Ie(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:TokenType.ERC1155});})),o},Ie=async(r,e)=>{if(e)return e.startsWith("ipfs://")?G(e):e;{let[t,n]=await Ee(Pe(r));return n?"":t.image?Ne(t.image):""}};var xe=[TransactionType.SEND,TransactionType.RECEIVE,TransactionType.TRANSFER];var De=async({transactions:r,explorerUrl:e,networkToken:t,chainId:n,address:s})=>{let o=await Re(r,t),a=ve(r,s,o),{isOutgoing:i,isIncoming:c,isSender:m,from:d,to:u}=Se(a,r,s),{blockTimestamp:p,txHash:f,gasPrice:b,gasUsed:y}=r.nativeTransaction,g=A(e,f);return {isContractCall:!xe.includes(a),isIncoming:c,isOutgoing:i,isSender:m,timestamp:p*1e3,hash:f,from:d,to:u,tokens:o,gasPrice:b,gasUsed:y,chainId:n.toString(),txType:a,explorerLink:g}};var _e=async({chainId:r,explorerUrl:e,networkToken:t,address:n,nextPageToken:s,offset:o,glacierService:a})=>{try{let i=await a.listTransactions({chainId:r.toString(),address:n,pageToken:s,pageSize:o});return {transactions:(await Promise.all(i.transactions.filter(d=>d.nativeTransaction.txStatus==="1").map(d=>De({transactions:d,explorerUrl:e,networkToken:t,chainId:r,address:n}).then(u=>u)))).filter(d=>d.tokens.find(u=>Number(u.amount)!==0)),nextPageToken:i.nextPageToken}}catch{return {transactions:[],nextPageToken:""}}};var Be=async({chainId:r,isTestnet:e,networkToken:t,explorerUrl:n,address:s,nextPageToken:o,offset:a,glacierService:i})=>he(r)?ge({isTestnet:e,networkToken:t,explorerUrl:n,chainId:r,address:s,nextPageToken:o,offset:a}):i.isHealthy()?_e({networkToken:t,explorerUrl:n,chainId:r,address:s,nextPageToken:o,offset:a,glacierService:i}):{transactions:[],nextPageToken:""};var Ae={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_*","personal_sign"]}},manifestVersion:"0.0"};var Ht=z.object({from:z.string().length(42),to:z.string().length(42),data:z.string().optional(),value:z.string().startsWith("0x").optional(),gas:z.string().startsWith("0x").optional(),gasPrice:z.string().startsWith("0x").optional(),maxFeePerGas:z.string().startsWith("0x").optional(),maxPriorityFeePerGas:z.string().startsWith("0x").optional(),nonce:z.string().optional(),chainId:z.string().optional()}),Wt=z.array(Ht).length(1),Ge=r=>Wt.safeParse(r);var Ve=async({transactionParams:{from:r,to:e,data:t,value:n},provider:s})=>{let o=await s.getTransactionCount(r);return Number(await s.estimateGas({from:r,to:e,nonce:o,data:t,value:n}))};var Ue=async({from:r,provider:e})=>e.getTransactionCount(r);var Me=async({request:r,network:e,approvalController:t})=>{let{dappInfo:n,params:s}=r,o=Ge(s);if(!o.success)return console.error("invalid params",o.error),{error:rpcErrors.invalidParams("Transaction params are invalid")};let a=o.data[0];if(!a)return {error: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(!a.gas||Number(a.gas)<0)try{let p=await Ve({transactionParams:{from:a.from,to:a.to,data:a.data,value:a.value},provider:i});a.gas="0x"+p.toString(16);}catch{return {error:rpcErrors.internal("Unable to calculate gas limit")}}if(!a.nonce)try{let p=await Ue({from:a.from,provider:i});a.nonce=String(p);}catch{return {error: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:a.from,to:a.to,data:a.data},networkFeeSelector:!0},m={type:RpcMethod.ETH_SEND_TRANSACTION,account:a.from,chainId:e.chainId,data:{type:2,nonce:Number(a.nonce),gasLimit:Number(a.gas),to:a.to,from:a.from,data:a.data,value:a.value,chainId:a.chainId}},d=await t.requestApproval({request:r,displayData:c,signingData:m});if("error"in d)return {error:d.error};let u=await i.send("eth_sendRawTransaction",[d.result]);return $t({provider:i,txHash:u,onTransactionConfirmed:t.onTransactionConfirmed,onTransactionReverted:t.onTransactionReverted}),{result:u}},$t=async({provider:r,txHash:e,onTransactionConfirmed:t,onTransactionReverted:n})=>{(await r.waitForTransaction(e))?.status===1?t(e):n(e);};var Le={_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 Zt=18,Fe=async({provider:r,tokenService:e,address:t,currency:n,tokens:s,network:o})=>{let a=o.pricingProviders?.coingecko.assetPlatformId,i=o.pricingProviders?.coingecko.nativeTokenId,c=s.map(u=>u.address),m=await Promise.allSettled(s.map(async u=>{let f=await new ethers.Contract(u.address,Le.abi,r).balanceOf?.(t),b=new qe(f)||numberToBN(0,u.decimals||Zt);return {...u,balance:b}})).then(u=>u.reduce((p,f)=>f.status==="fulfilled"&&!f.value.balance.isZero()?[...p,f.value]:p,[]));if(!m.length)return {};let d=a&&await e.getPricesByAddresses(c,a,n)||{};return m.reduce((u,p)=>{let f=d?.[i??""]?.[n]?.price??0,b=d?.[i??""]?.[n]?.marketCap??0,y=d?.[i??""]?.[n]?.vol24??0,g=d?.[i??""]?.[n]?.change24??0,T=bnToBig(p.balance,p.decimals).mul(f).toNumber(),I=balanceToDisplayValue(p.balance,p.decimals),bt=T.toFixed(2);return {...u,[p.address.toLowerCase()]:{...p,type:TokenType.ERC20,balance:p.balance,balanceDisplayValue:I,balanceInCurrency:T,balanceCurrencyDisplayValue:bt,priceInCurrency:f,marketCap:b,change24:g,vol24:y}}},{})};var He=async({operation:r,isSuccess:e,maxRetries:t=10,backoffPolicy:n=O.exponential()})=>{let s=0,o=0,a;for(;o<t;){o>0&&await Xt(s);try{let c=await r(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)},O=class{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return t=>e*1e3}static constantMs(e){return t=>e}};function Xt(r){return new Promise(e=>setTimeout(e,r))}var ae=r=>He({operation:e=>r(e>0),maxRetries:2,backoffPolicy:O.constant(1),isSuccess:e=>e?.status?.error_code!==429});function We(r){let e,t=0;for(e=0;e<r.length;e++)t+=r.charCodeAt(e)*(e+1);return t}function ne(r){let e,t=0;for(e=0;e<r.length;e++){let n=We(r[e]??"");t=t+65027/n;}return (""+t).slice(0,16)}var se=r=>new Zodios(`${r}/proxy/coingecko`,[{method:"post",path:"/simple/price",parameters:[{name:"ids",type:"Query",schema:string()},{name:"vs_currencies",type:"Query",schema:string()},{name:"include_market_cap",type:"Query",schema:string().optional()},{name:"include_24hr_vol",type:"Query",schema:string().optional()},{name:"include_24hr_change",type:"Query",schema:string().optional()},{name:"include_last_updated_at",type:"Query",schema:string().optional()}],alias:"simplePrice",response:RawSimplePriceResponseSchema},{method:"post",path:"/simple/token_price/:id",parameters:[{name:"id",type:"Path",schema:string()},{name:"contract_addresses",type:"Query",schema:string().array()},{name:"vs_currencies",type:"Query",schema:string().array()},{name:"include_market_cap",type:"Query",schema:boolean().optional()},{name:"include_24hr_vol",type:"Query",schema:boolean().optional()},{name:"include_24hr_change",type:"Query",schema:boolean().optional()}],alias:"simplePriceByContractAddresses",response:SimplePriceResponseSchema}],{axiosConfig:{headers:{"Content-Type":"application/json"}}});var Oe=getBasicCoingeckoHttp(),w,V,j=class{constructor({storage:e,proxyApiUrl:t}){R(this,w,void 0);R(this,V,void 0);N(this,"transformSimplePriceResponse",(e,t=[VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(s=>{let o=e[s];n[s]={},t.forEach(a=>{n[s]={[a]:{price:o?.[a],change24:o?.[`${a}_24h_change`],vol24:o?.[`${a}_24h_vol`],marketCap:o?.[`${a}_market_cap`]}};});}),n});x(this,w,e),x(this,V,t);}async getSimplePrice({coinIds:e=[],currencies:t=[VsCurrencyType.USD]}){let n,o=`getSimplePrice-${e?`${ne(e)}-${t.toString()}`:`${t.toString()}`}`;return n=h(this,w)?.get?.(o),n===void 0&&(n=await ae(a=>this.simplePrice({coinIds:e,currencies:t,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:a})),h(this,w)?.set?.(o,n)),n}async getPricesByAddresses(e,t,n=VsCurrencyType.USD){let s,a=`getPricesWithMarketDataByAddresses-${`${ne(e)}-${t}-${n}`}`;return s=h(this,w)?.get?.(a),s===void 0&&(s=await ae(i=>this.fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:e,currency:n,useCoingeckoProxy:i})),h(this,w)?.set?.(a,s)),s}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:t,currency:n=VsCurrencyType.USD,useCoingeckoProxy:s=!1}){return s?se(h(this,V)).simplePriceByContractAddresses(void 0,{params:{id:e},queries:{contract_addresses:t,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}}):simpleTokenPrice(Oe,{assetPlatformId:e,tokenAddresses:t,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:e=[],currencies:t=[VsCurrencyType.USD],marketCap:n=!1,vol24:s=!1,change24:o=!1,lastUpdated:a=!1,useCoingeckoProxy:i=!1}){if(i){let c=await se(h(this,V)).simplePrice(void 0,{queries:{ids:e?.join(","),vs_currencies:t.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(c)}return simplePrice(Oe,{coinIds:e,currencies:t,marketCap:n,vol24:s,change24:o,lastUpdated:a,shouldThrow:!0})}};w=new WeakMap,V=new WeakMap;var $e=async({provider:r,tokenService:e,address:t,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??0,m=i?.[o??""]?.[n]?.marketCap??0,d=i?.[o??""]?.[n]?.vol24??0,u=i?.[o??""]?.[n]?.change24??0,p=await r.getBalance(t),f=bigintToBig(p,a.decimals),b=bigToBN(f,a.decimals),y=balanceToDisplayValue(b,a.decimals),g=bnToBig(b,a.decimals).mul(c).toNumber(),T=g.toFixed(2);return {...a,coingeckoId:o??"",type:TokenType.NATIVE,balance:b,balanceDisplayValue:y,balanceInCurrency:g,balanceCurrencyDisplayValue:T,priceInCurrency:c,marketCap:m,vol24:d,change24:u}};var je=async({address:r,currency:e,chainId:t,glacierService:n})=>{let o=(await n.getNativeBalance({chainId:t.toString(),address:r,currency:e.toLocaleLowerCase()})).nativeTokenBalance,a=new BN(o.balance),i=balanceToDisplayValue(a,o.decimals),c=o.price?.value??0,m=bnToBig(a,o.decimals).mul(c).toNumber(),d=m.toFixed(2);return {name:o.name,symbol:o.symbol,decimals:o.decimals,type:TokenType.NATIVE,logoUri:o.logoUri,balance:a,balanceDisplayValue:i,balanceInCurrency:m,balanceCurrencyDisplayValue:d,priceInCurrency:c,marketCap:0,vol24:0,change24:0,coingeckoId:""}};var Je=async({glacierService:r,currency:e,chainId:t,address:n,customTokens:s})=>{let o=[],a;do{let i=await r.listErc20Balances({chainId:t.toString(),address:n,currency:e.toLocaleLowerCase(),pageSize:100,pageToken:a});o.push(...hr(i.erc20TokenBalances,Number(t))),a=i.nextPageToken;}while(a);return [...gr(s),...o].reduce((i,c)=>({...i,[c.address.toLowerCase()]:c}),{})},gr=r=>r.map(e=>({...e,type:TokenType.ERC20,balance:new qe(0),balanceInCurrency:0,balanceDisplayValue:"0",balanceCurrencyDisplayValue:"0",priceInCurrency:0,marketCap:0,change24:0,vol24:0})),hr=(r,e)=>r.map(t=>{let n=new qe(t.balance),s=balanceToDisplayValue(n,t.decimals),o=t.balanceValue?.value.toString()??"0",a=t.price?.value??0,i=bnToBig(n,t.decimals).mul(a).toNumber();return {chainId:e,address:t.address,name:t.name,symbol:t.symbol,decimals:t.decimals,logoUri:t.logoUri,balance:n,balanceCurrencyDisplayValue:o,balanceDisplayValue:s,balanceInCurrency:i,priceInCurrency:a,contractType:"ERC-20",type:TokenType.ERC20,change24:0,marketCap:0,vol24:0}});var ze=async({addresses:r,currency:e,network:t,proxyApiUrl:n,customTokens:s=[],storage:o,glacierService:a})=>{let i=t.chainId,c=await a.isNetworkSupported(t.chainId),m=a.isHealthy(),d=[];if(m&&c)d=await Promise.allSettled(r.map(async p=>{let f=await je({address:p,currency:e,chainId:i,glacierService:a}),b=await Je({customTokens:s,glacierService:a,currency:e,chainId:i,address:p});return {address:p,balances:{[f.symbol]:f,...b}}}));else {let p=new j({storage:o,proxyApiUrl:n}),b=[...await J({chainId:Number(i),proxyApiUrl:n}),...s],y=B({chainId:i,chainName:t.chainName,rpcUrl:t.rpcUrl,multiContractAddress:t.utilityAddresses?.multicall});d=await Promise.allSettled(r.map(async g=>{let T=await $e({network:t,tokenService:p,address:g,currency:e,provider:y}),I=await Fe({provider:y,network:t,tokenService:p,address:g,currency:e,tokens:b});return {address:g,balances:{[T.symbol]:T,...I}}}));}return d.reduce((p,f)=>f.status==="rejected"?p:{...p,[f.value.address]:f.value.balances},{})};var Tr={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},kr={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Ke=r=>{switch(r){case Environment.PRODUCTION:return Tr;case Environment.DEV:return kr}};var S=class extends Error{constructor(){super(...arguments);N(this,"message","Glacier is unhealthy. Try again later.");}},K=class{constructor({glacierApiUrl:e}){N(this,"glacierSdk");N(this,"isGlacierHealthy",!0);N(this,"supportedChainIds",[]);N(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new 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(t=>t.chainId),this.supportedChainIds}catch{return []}}async reindexNft({address:e,chainId:t,tokenId:n}){try{await this.glacierSdk.nfTs.reindexNft({address:e,chainId:t,tokenId:n});}catch(s){throw s instanceof S&&this.setGlacierToUnhealthy(),s}}async getTokenDetails({address:e,chainId:t,tokenId:n}){try{return this.glacierSdk.nfTs.getTokenDetails({address:e,chainId:t,tokenId:n})}catch(s){throw s instanceof S&&this.setGlacierToUnhealthy(),s}}async getChainBalance(e){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(e)}catch(t){throw t instanceof S&&this.setGlacierToUnhealthy(),t}}async getNativeBalance({chainId:e,address:t,currency:n}){try{return this.glacierSdk.evmBalances.getNativeBalance({chainId:e,address:t,currency:n.toLocaleLowerCase()})}catch(s){throw s instanceof S&&this.setGlacierToUnhealthy(),s}}async listErc721Balances({chainId:e,address:t,pageSize:n,pageToken:s}){try{return this.glacierSdk.evmBalances.listErc721Balances({chainId:e,address:t,pageSize:n,pageToken:s})}catch(o){throw o instanceof S&&this.setGlacierToUnhealthy(),o}}async listErc1155Balances({chainId:e,address:t,pageSize:n,pageToken:s}){try{return this.glacierSdk.evmBalances.listErc1155Balances({chainId:e,address:t,pageSize:n,pageToken:s})}catch(o){throw o instanceof S&&this.setGlacierToUnhealthy(),o}}async listErc20Balances({chainId:e,address:t,currency:n,pageSize:s,pageToken:o}){try{return this.glacierSdk.evmBalances.listErc20Balances({chainId:e,address:t,currency:n.toLocaleLowerCase(),pageSize:s,pageToken:o})}catch(a){throw a instanceof S&&this.setGlacierToUnhealthy(),a}}async listTransactions({chainId:e,address:t,pageToken:n,pageSize:s}){try{return this.glacierSdk.evmTransactions.listTransactions({chainId:e,address:t,pageToken:n,pageSize:s})}catch(o){throw o instanceof S&&this.setGlacierToUnhealthy(),o}}};var ie=r=>{let e="";e+=`Domain
|
|
15
|
-
`;for(let
|
|
15
|
+
var _t=Object.defineProperty;var Bt=(t,e,a)=>e in t?_t(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a;var C=(t,e,a)=>(Bt(t,typeof e!="symbol"?e+"":e,a),a),be=(t,e,a)=>{if(!e.has(t))throw TypeError("Cannot "+a)};var T=(t,e,a)=>(be(t,e,"read from private field"),a?a.call(t):e.get(t)),w=(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);},A=(t,e,a,n)=>(be(t,e,"write to private field"),n?n.call(t,a):e.set(t,a),a);async function z({chainId:t,proxyApiUrl:e}){let a=await fetch(`${e}/tokens?evmChainId=${t}`);if(!a.ok)throw rpcErrors.internal(`Failed to fetch tokens for chainId ${t}`);return a.json()}var Vt=process.env.GLACIER_API_KEY,D=t=>{let{chainId:e,chainName:a,rpcUrl:n,multiContractAddress:s,pollingInterval:o=2e3}=t,r=new JsonRpcBatchInternal({maxCalls:40,multiContractAddress:s},Lt(n,Vt),new Network(a,e));return r.pollingInterval=o,r},Mt=["glacier-api.avax.network","proxy-api.avax.network"];function Lt(t,e){let a=new URL(t);if(e&&Mt.includes(a.hostname)){let n=a.searchParams;return n.set("token",e),a.search=n.toString(),a.toString()}return t}var re={LOW:1n,MEDIUM:4n,HIGH:6n},ne=500000000n;async function ge({chainId:t,chainName:e,rpcUrl:a,multiContractAddress:n}){let s=D({chainId:t,chainName:e,rpcUrl:a,multiContractAddress:n}),{maxFeePerGas:o}=await s.getFeeData();if(!o)throw rpcErrors.internal("Pre-EIP-1559 networks are not supported");let r=ne*re.LOW,i=ne*re.MEDIUM,c=ne*re.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 U(t,e,a="tx"){return `${t}/${a}/${e}`}var Te=({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 BN(t.value),l=balanceToDisplayValue(c,i),p=o?TransactionType.SEND:TransactionType.RECEIVE,{from:f,to:d,gasPrice:u,gasUsed:y,hash:b}=t,g=U(n,b);return {isIncoming:!o,isOutgoing:o,isContractCall:$t(t),timestamp:r,hash:b,isSender:o,from:f,to:d,tokens:[{decimal:i.toString(),name:e.name,symbol:e.symbol,amount:l,type:TokenType.NATIVE}],gasUsed:y,gasPrice:u,chainId:a.toString(),txType:p,explorerLink:g}};function $t(t){return t.input!=="0x"}function ve({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 BN(t.value),c=balanceToDisplayValue(i,r),{from:l,to:p,gasPrice:f,gasUsed:d,hash:u,tokenDecimal:y,tokenName:b,tokenSymbol:g}=t,h=s?TransactionType.SEND:TransactionType.RECEIVE,k=U(a,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:TokenType.ERC20,amount:c}],gasUsed:d,gasPrice:f,chainId:n.toString(),txType:h,explorerLink:k}}var Ee=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,l=i?.queries||["normal","erc20"],p=(l.includes("normal")?await getNormalTxs(s,!t,{page:c,offset:r}):[]).map(b=>Te({tx:b,chainId:n,networkToken:e,explorerUrl:a,address:s})),f=(l.includes("erc20")?await getErc20Txs(s,!t,void 0,{page:c,offset:r}):[]).map(b=>ve({tx:b,address:s,explorerUrl:a,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 Se=t=>t===1||t===5||t===4||t===11155111;var Ce=({nativeTransaction:t,erc20Transfers:e,erc721Transfers:a},n,s)=>{let o=!e&&!a,r=Qt(t.method?.methodName),i=n.toLowerCase(),c=r.toLowerCase().includes("swap"),l=o&&t.from.address.toLowerCase()===i,p=o&&t.to.address.toLowerCase()===i,f=r==="Market Buy Orders With Eth"||r==="Buy NFT",d=r==="Approve",u=r.toLowerCase().includes("transfer"),y=r.toLowerCase().includes("airdrop"),b=r.toLowerCase().includes("unwrap"),g=r==="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?TransactionType.SWAP:l?TransactionType.SEND:p?TransactionType.RECEIVE:f?TransactionType.NFT_BUY:d?TransactionType.APPROVE:h?TransactionType.NFT_SEND:k?TransactionType.NFT_RECEIVE:u?TransactionType.TRANSFER:y?TransactionType.AIRDROP:b?TransactionType.UNWRAP:g?TransactionType.FILL_ORDER:TransactionType.UNKNOWN};function Pe(t){return t===TokenType.ERC721||t===TokenType.ERC1155}var Qt=(t="")=>t.includes("(")?Kt(t.split("(",1)[0]):t;var Ne=(t,{nativeTransaction:e,erc20Transfers:a,erc721Transfers:n},s)=>{let o=t===TransactionType.TRANSFER,r=t===TransactionType.SEND,i=t===TransactionType.RECEIVE,c=e?.from?.address,l=e?.to?.address;o&&a&&a[0]&&(c=a[0].from.address,l=a[0].to.address),o&&n&&n[0]&&(c=n[0].from.address,l=n[0].to.address);let p=r||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 Xt="https://cloudflare-ipfs.com";function G(t,e=Xt){if(!t)return "";try{return ipfsResolver(t,e)}catch{return t}}async function ea(t,e=5e3){let a=new AbortController;return setTimeout(()=>a.abort(),e),fetch(t,{signal:a.signal})}async function Ie(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 ea(G(t)).then(a=>a.json()).catch(()=>({}));else return {};return e}var ta="https://image-proxy.svc.prod.covalenthq.com/cdn-cgi/image";function we(t,e="256"){let a=G(t);return `${ta}/width=${e},fit/${a}`}var De=async({nativeTransaction:t,erc20Transfers:e,erc721Transfers:a,erc1155Transfers:n},s)=>{let o=[];if(t.value!=="0"){let r=s.decimals,i=new BN(t.value),c=balanceToDisplayValue(i,r);o.push({decimal:r.toString(),name:s.name,symbol:s.symbol,amount:c,from:t.from,to:t.to,type:TokenType.NATIVE});}return e?.forEach(r=>{let i=r.erc20Token.decimals,c=new BN(r.value),l=balanceToDisplayValue(c,i);o.push({decimal:i.toString(),name:r.erc20Token.name,symbol:r.erc20Token.symbol,amount:l,from:r.from,to:r.to,imageUri:r.erc20Token.logoUri,type:TokenType.ERC20});}),a&&await Promise.allSettled(a.map(async r=>{let i=r.erc721Token,c=await Be(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:TokenType.ERC721});})),n&&await Promise.allSettled(n.map(async r=>{let i=r.erc1155Token,c=await Be(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:TokenType.ERC1155});})),o},Be=async(t,e)=>{if(e)return e.startsWith("ipfs://")?G(e):e;{let[a,n]=await xe(Ie(t));return n?"":a.image?we(a.image):""}};var Ue=[TransactionType.SEND,TransactionType.RECEIVE,TransactionType.TRANSFER],Q=(r=>(r.TOTAL_SUPPLY="totalSupply",r.BALANCE_OF="balanceOf",r.TRANSFER="transfer",r.TRANSFER_FROM="transferFrom",r.APPROVE="approve",r.ALLOWANCE="allowance",r))(Q||{});var Ge=async({transactions:t,explorerUrl:e,networkToken:a,chainId:n,address:s})=>{let o=await De(t,a),r=Ce(t,s,o),{isOutgoing:i,isIncoming:c,isSender:l,from:p,to:f}=Ne(r,t,s),{blockTimestamp:d,txHash:u,gasPrice:y,gasUsed:b}=t.nativeTransaction,g=U(e,u);return {isContractCall:!Ue.includes(r),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:r,explorerLink:g}};var Ve=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=>Ge({transactions:p,explorerUrl:e,networkToken:a,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 Me=async({chainId:t,isTestnet:e,networkToken:a,explorerUrl:n,address:s,nextPageToken:o,offset:r,glacierService:i})=>Se(t)?Ee({isTestnet:e,networkToken:a,explorerUrl:n,chainId:t,address:s,nextPageToken:o,offset:r}):i.isHealthy()?Ve({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_*","personal_sign"]}},manifestVersion:"0.0"};var ra=z$1.object({from:z$1.string().length(42),to:z$1.string().length(42),data:z$1.string().optional(),value:z$1.string().startsWith("0x").optional(),gas:z$1.string().startsWith("0x").optional(),gasPrice:z$1.string().startsWith("0x").optional(),maxFeePerGas:z$1.string().startsWith("0x").optional(),maxPriorityFeePerGas:z$1.string().startsWith("0x").optional(),nonce:z$1.string().optional(),chainId:z$1.string().optional()}),na=z$1.array(ra).length(1),Fe=t=>na.safeParse(t);var He=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 Oe=async({from:t,provider:e})=>e.getTransactionCount(t);var $e="DUMMY_API_KEY",je=async({proxyApiUrl:t,chainId:e,params:a,domain:n})=>new We({baseURL:t+"/proxy/blockaid/",apiKey:$e}).evm.transaction.scan({account_address:a.from,chain:e.toString(),options:["validation","simulation"],data:{from:a.from,to:a.to,data:a.data,value:a.value,gas:a.gas,gas_price:a.gasPrice},metadata:n&&n.length>0?{domain:n}:{non_dapp:!0}}),Ye=async({proxyApiUrl:t,chainId:e,accountAddress:a,data:n,domain:s})=>new We({baseURL:t+"/proxy/blockaid/",apiKey:$e}).evm.jsonRpc.scan({chain:e.toString(),options:["validation","simulation"],account_address:a,data:n,metadata:s&&s.length>0?{domain:s}:{non_dapp:!0}});var Je=async({request:t,dAppUrl:e,params:a,chainId:n,proxyApiUrl:s})=>{let{validation:o,simulation:r}=await je({proxyApiUrl:s,chainId:n,params:a,domain:e}),i;!o||o.result_type==="Error"||o.result_type==="Warning"?i={type:AlertType.WARNING,details:{title:"Suspicious Transaction",description:"Use caution, this transaction may be malicious."}}:o.result_type==="Malicious"&&(i={type:AlertType.DANGER,details:{title:"Scam Transaction",description:"This transaction is malicious, do not proceed.",actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}});let c,l;return r?.status==="Success"&&(l=ze(t,r.account_summary.exposures),c=Ke(r.account_summary.assets_diffs)),{alert:i,balanceChange:c,tokenApprovals:l}},ze=(t,e)=>{let a=[];for(let s of e){let o=Qe(s.asset);if(o)for(let[r,i]of Object.entries(s.spenders))if(i.exposure.length===0)a.push({token:o,spenderAddress:r,logoUri:o.logoUri});else for(let c of i.exposure)"raw_value"in c?a.push({token:o,spenderAddress:r,value:c.raw_value,usdPrice:c.usd_price,logoUri:o.logoUri}):a.push({token:o,spenderAddress:r,logoUri:c.logo_url,usdPrice:c.usd_price});}return a.length===0?void 0:{isEditable:a.length===1&&a[0]?.token.type===TokenType.ERC20&&t.method===RpcMethod.ETH_SEND_TRANSACTION,approvals:a}},Ke=t=>{let e=qe(t,"in"),a=qe(t,"out");if(!(e.length===0&&a.length===0))return {ins:e,outs:a}},qe=(t,e)=>t.filter(a=>a[e].length>0).sort((a,n)=>a[e].length-n[e].length).map(a=>{let n=a.asset,s="address"in n?Qe(n):la(n);if(!s)return;let o=a[e].map(r=>{let i;if("value"in r&&r.value)if("decimals"in s){let c=numberToBN(r.value,s.decimals);i=balanceToDisplayValue(c,s.decimals);}else isHexString(r.value)&&(i=parseInt(r.value,16).toString());else "type"in s&&s.type===TokenType.ERC721&&(i="1");return i?{displayValue:i,usdPrice:r.usd_price}:void 0}).filter(r=>r!==void 0);return {token:s,items:o}}).filter(a=>a!==void 0),Qe=t=>{let e;return t.type==="ERC20"?e={type: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:TokenType.ERC1155,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="ERC721"?e={type:TokenType.ERC721,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}:t.type==="NONERC"&&(e={type:TokenType.NONERC,address:t.address,logoUri:t.logo_url,name:t.name,symbol:t.symbol}),e},la=t=>({name:t.name??"",symbol:t.symbol??"",decimals:t.decimals,description:"",logoUri:t.logo_url}),Ze=async({request:t,dAppUrl:e,accountAddress:a,chainId:n,data:s,proxyApiUrl:o})=>{let{validation:r,simulation:i}=await Ye({proxyApiUrl:o,chainId:n,accountAddress:a,data:s,domain:e}),c;!r||r.result_type==="Error"||r.result_type==="Warning"?c={type:AlertType.WARNING,details:{title:"Suspicious Transaction",description:"Use caution, this transaction may be malicious."}}:r.result_type==="Malicious"&&(c={type:AlertType.DANGER,details:{title:"Scam Transaction",description:"This transaction is malicious, do not proceed.",actionTitles:{reject:"Reject Transaction",proceed:"Proceed Anyway"}}});let l,p;return i?.status==="Success"&&(p=ze(t,i.account_summary.exposures),l=Ke(i.account_summary.assets_diffs)),{alert:c,balanceChange:l,tokenApprovals:p}};var X={_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 Xe=t=>{if(t.data)try{let a=new Interface(X.abi).parseTransaction({data:t.data,value:t.value}),n=a?.name??a?.fragment?.name;return n&&da(n)?n:void 0}catch{return}};function da(t){return Object.values(Q).includes(t)}var et=async({request:t,network:e,approvalController:a,proxyApiUrl:n})=>{let{dappInfo:s,params:o}=t,r=Fe(o);if(!r.success)return console.error("invalid params",r.error),{error:rpcErrors.invalidParams("Transaction params are invalid")};let i=r.data[0];if(!i)return {error:rpcErrors.invalidParams("Transaction params are invalid")};let c=D({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 He({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.internal("Unable to calculate gas limit")}}if(!i.nonce)try{let k=await Oe({from:i.from,provider:c});i.nonce=String(k);}catch{return {error:rpcErrors.internal("Unable to calculate nonce")}}let l=Xe(i),{alert:p,balanceChange:f,tokenApprovals:d}=await Je({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: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 a.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 fa({provider:c,txHash:h,onTransactionConfirmed:a.onTransactionConfirmed,onTransactionReverted:a.onTransactionReverted}),{result:h}},fa=async({provider:t,txHash:e,onTransactionConfirmed:a,onTransactionReverted:n})=>{(await t.waitForTransaction(e))?.status===1?a(e):n(e);};var tt=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(f=>f.address),l=await Promise.allSettled(s.map(async f=>{let u=await new ethers.Contract(f.address,X.abi,t).balanceOf?.(a),y=new ct(u)||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=r&&await e.getPricesByAddresses(c,r,n)||{};return l.reduce((f,d)=>{let u=p?.[i??""]?.[n]?.price??0,y=p?.[i??""]?.[n]?.marketCap??0,b=p?.[i??""]?.[n]?.vol24??0,g=p?.[i??""]?.[n]?.change24??0,h=bnToBig(d.balance,d.decimals).mul(u).toNumber(),k=balanceToDisplayValue(d.balance,d.decimals),ye=h.toFixed(2);return {...f,[d.address.toLowerCase()]:{...d,type:TokenType.ERC20,balance:d.balance,balanceDisplayValue:k,balanceInCurrency:h,balanceCurrencyDisplayValue:ye,priceInCurrency:u,marketCap:y,change24:g,vol24:b}}},{})};var at=async({operation:t,isSuccess:e,maxRetries:a=10,backoffPolicy:n=$.exponential()})=>{let s=0,o=0,r;for(;o<a;){o>0&&await va(s);try{let c=await t(o);if(e(c))return c}catch(c){r=c;}s=n(o),o++;}let i=r?`Max retry exceeded. ${r}`:"Max retry exceeded.";throw new Error(i)},$=class{static exponential(){return e=>Math.pow(2,e)*1e3}static constant(e){return a=>e*1e3}static constantMs(e){return a=>e}};function va(t){return new Promise(e=>setTimeout(e,t))}var ie=t=>at({operation:e=>t(e>0),maxRetries:2,backoffPolicy:$.constant(1),isSuccess:e=>e?.status?.error_code!==429});function rt(t){let e,a=0;for(e=0;e<t.length;e++)a+=t.charCodeAt(e)*(e+1);return a}function ce(t){let e,a=0;for(e=0;e<t.length;e++){let n=rt(t[e]??"");a=a+65027/n;}return (""+a).slice(0,16)}var pe=t=>new Zodios(`${t}/proxy/coingecko`,[{method:"post",path:"/simple/price",parameters:[{name:"ids",type:"Query",schema:string()},{name:"vs_currencies",type:"Query",schema:string()},{name:"include_market_cap",type:"Query",schema:string().optional()},{name:"include_24hr_vol",type:"Query",schema:string().optional()},{name:"include_24hr_change",type:"Query",schema:string().optional()},{name:"include_last_updated_at",type:"Query",schema:string().optional()}],alias:"simplePrice",response:RawSimplePriceResponseSchema},{method:"post",path:"/simple/token_price/:id",parameters:[{name:"id",type:"Path",schema:string()},{name:"contract_addresses",type:"Query",schema:string().array()},{name:"vs_currencies",type:"Query",schema:string().array()},{name:"include_market_cap",type:"Query",schema:boolean().optional()},{name:"include_24hr_vol",type:"Query",schema:boolean().optional()},{name:"include_24hr_change",type:"Query",schema:boolean().optional()}],alias:"simplePriceByContractAddresses",response:SimplePriceResponseSchema}],{axiosConfig:{headers:{"Content-Type":"application/json"}}});var nt=getBasicCoingeckoHttp(),N,M,Y=class{constructor({storage:e,proxyApiUrl:a}){w(this,N,void 0);w(this,M,void 0);C(this,"transformSimplePriceResponse",(e,a=[VsCurrencyType.USD])=>{let n={};return Object.keys(e).forEach(s=>{let o=e[s];n[s]={},a.forEach(r=>{n[s]={[r]:{price:o?.[r],change24:o?.[`${r}_24h_change`],vol24:o?.[`${r}_24h_vol`],marketCap:o?.[`${r}_market_cap`]}};});}),n});A(this,N,e),A(this,M,a);}async getSimplePrice({coinIds:e=[],currencies:a=[VsCurrencyType.USD]}){let n,o=`getSimplePrice-${e?`${ce(e)}-${a.toString()}`:`${a.toString()}`}`;return n=T(this,N)?.get?.(o),n===void 0&&(n=await ie(r=>this.simplePrice({coinIds:e,currencies:a,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:r})),T(this,N)?.set?.(o,n)),n}async getPricesByAddresses(e,a,n=VsCurrencyType.USD){let s,r=`getPricesWithMarketDataByAddresses-${`${ce(e)}-${a}-${n}`}`;return s=T(this,N)?.get?.(r),s===void 0&&(s=await ie(i=>this.fetchPricesByAddresses({assetPlatformId:a,tokenAddresses:e,currency:n,useCoingeckoProxy:i})),T(this,N)?.set?.(r,s)),s}async fetchPricesByAddresses({assetPlatformId:e,tokenAddresses:a,currency:n=VsCurrencyType.USD,useCoingeckoProxy:s=!1}){return s?pe(T(this,M)).simplePriceByContractAddresses(void 0,{params:{id:e},queries:{contract_addresses:a,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}}):simpleTokenPrice(nt,{assetPlatformId:e,tokenAddresses:a,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:e=[],currencies:a=[VsCurrencyType.USD],marketCap:n=!1,vol24:s=!1,change24:o=!1,lastUpdated:r=!1,useCoingeckoProxy:i=!1}){if(i){let c=await pe(T(this,M)).simplePrice(void 0,{queries:{ids:e?.join(","),vs_currencies:a.join(","),include_market_cap:String(n),include_24hr_vol:String(s),include_24hr_change:String(o),include_last_updated_at:String(r)}});return this.transformSimplePriceResponse(c)}return simplePrice(nt,{coinIds:e,currencies:a,marketCap:n,vol24:s,change24:o,lastUpdated:r,shouldThrow:!0})}};N=new WeakMap,M=new WeakMap;var ot=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,l=i?.[o??""]?.[n]?.marketCap??0,p=i?.[o??""]?.[n]?.vol24??0,f=i?.[o??""]?.[n]?.change24??0,d=await t.getBalance(a),u=bigintToBig(d,r.decimals),y=bigToBN(u,r.decimals),b=balanceToDisplayValue(y,r.decimals),g=bnToBig(y,r.decimals).mul(c).toNumber(),h=g.toFixed(2);return {...r,coingeckoId:o??"",type:TokenType.NATIVE,balance:y,balanceDisplayValue:b,balanceInCurrency:g,balanceCurrencyDisplayValue:h,priceInCurrency:c,marketCap:l,vol24:p,change24:f}};var st=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 BN(o.balance),i=balanceToDisplayValue(r,o.decimals),c=o.price?.value??0,l=bnToBig(r,o.decimals).mul(c).toNumber(),p=l.toFixed(2);return {name:o.name,symbol:o.symbol,decimals:o.decimals,type:TokenType.NATIVE,logoUri:o.logoUri,balance:r,balanceDisplayValue:i,balanceInCurrency:l,balanceCurrencyDisplayValue:p,priceInCurrency:c,marketCap:0,vol24:0,change24:0,coingeckoId:""}};var lt=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(...Ha(i.erc20TokenBalances,Number(a))),r=i.nextPageToken;}while(r);return [...Fa(s),...o].reduce((i,c)=>({...i,[c.address.toLowerCase()]:c}),{})},Fa=t=>t.map(e=>({...e,decimals:e.decimals??18,type:TokenType.ERC20,balance:new ct(0),balanceInCurrency:0,balanceDisplayValue:"0",balanceCurrencyDisplayValue:"0",priceInCurrency:0,marketCap:0,change24:0,vol24:0})),Ha=(t,e)=>t.map(a=>{let n=new ct(a.balance),s=balanceToDisplayValue(n,a.decimals),o=a.balanceValue?.value.toString()??"0",r=a.price?.value??0,i=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,type:TokenType.ERC20,change24:0,marketCap:0,vol24:0}});var mt=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),l=r.isHealthy(),p=[];if(l&&c)p=await Promise.allSettled(t.map(async d=>{let u=await st({address:d,currency:e,chainId:i,glacierService:r}),y=await lt({customTokens:s.filter(pt),glacierService:r,currency:e,chainId:i,address:d});return {address:d,balances:{[u.symbol]:u,...y}}}));else {let d=new Y({storage:o,proxyApiUrl:n}),y=[...await z({chainId:Number(i),proxyApiUrl:n}),...s],b=D({chainId:i,chainName:a.chainName,rpcUrl:a.rpcUrl,multiContractAddress:a.utilityAddresses?.multicall});p=await Promise.allSettled(t.map(async g=>{let h=await ot({network:a,tokenService:d,address:g,currency:e,provider:b}),k=await tt({provider:b,network:a,tokenService:d,address:g,currency:e,tokens:y.filter(pt)});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 pt(t){return t.type===TokenType.ERC20}var Wa={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},$a={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},ut=t=>{switch(t){case Environment.PRODUCTION:return Wa;case Environment.DEV:return $a}};var S=class extends Error{constructor(){super(...arguments);C(this,"message","Glacier is unhealthy. Try again later.");}},te=class{constructor({glacierApiUrl:e}){C(this,"glacierSdk");C(this,"isGlacierHealthy",!0);C(this,"supportedChainIds",[]);C(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new 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 S&&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 S&&this.setGlacierToUnhealthy(),s}}async getChainBalance(e){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(e)}catch(a){throw a instanceof S&&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 S&&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 S&&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 S&&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 S&&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 S&&this.setGlacierToUnhealthy(),o}}};var me=t=>{let e="";e+=`Domain
|
|
16
|
+
`;for(let a in t.domain)e+=` ${a}: ${_(String(t.domain[a]))}
|
|
16
17
|
`;e+=`
|
|
17
18
|
Message
|
|
18
|
-
`;for(let
|
|
19
|
-
`;for(let n in
|
|
20
|
-
`,
|
|
21
|
-
`;})):e+=` ${n}: ${
|
|
22
|
-
`;}else Array.isArray(
|
|
23
|
-
`,
|
|
19
|
+
`;for(let a in t.message)if(typeof t.message[a]=="object"&&!Array.isArray(t.message[a])){e+=` ${a}:
|
|
20
|
+
`;for(let n in t.message[a])Array.isArray(t.message[a][n])?(e+=` ${n}:
|
|
21
|
+
`,t.message[a][n].forEach((s,o)=>{e+=` ${o}: ${_(s)}
|
|
22
|
+
`;})):e+=` ${n}: ${_(String(t.message[a][n]))}
|
|
23
|
+
`;}else Array.isArray(t.message[a])?(e+=` ${a}:
|
|
24
|
+
`,t.message[a].forEach((n,s)=>{e+=` ${s}:
|
|
24
25
|
`;for(let o in n)Array.isArray(n[o])?(e+=` ${o}:
|
|
25
|
-
`,n[o].forEach((
|
|
26
|
-
`;})):e+=` ${o}: ${
|
|
27
|
-
`;})):e+=` ${
|
|
28
|
-
`;return e},
|
|
29
|
-
`,e+=`${
|
|
26
|
+
`,n[o].forEach((r,i)=>{e+=` ${i}: ${_(r)}
|
|
27
|
+
`;})):e+=` ${o}: ${_(String(n[o]))}
|
|
28
|
+
`;})):e+=` ${a}: ${_(String(t.message[a]))}
|
|
29
|
+
`;return e},ft=t=>{let e="";return t.forEach(a=>{e+=`${a.name}:
|
|
30
|
+
`,e+=`${_(String(a.value))}
|
|
30
31
|
|
|
31
|
-
`;}),e},
|
|
32
|
+
`;}),e},_=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(a=>e[a]||a).join("")};var q=z$1.string().describe("message"),R=z$1.string().describe("address");var bt=z$1.object({method:z$1.literal(RpcMethod.ETH_SIGN),params:z$1.tuple([R,q])});var gt=z$1.object({name:z$1.string(),type:z$1.string()}),L=z$1.object({types:z$1.object({EIP712Domain:z$1.array(gt)}).catchall(z$1.array(gt)),primaryType:z$1.string(),domain:z$1.record(z$1.any()),message:z$1.record(z$1.any())}),ue=z$1.array(z$1.object({type:z$1.string(),name:z$1.string(),value:z$1.union([z$1.string(),z$1.number(),z$1.boolean(),z$1.object({}).passthrough(),z$1.array(z$1.unknown()),z$1.null()])})).nonempty(),fe=L.or(ue),ht=z$1.union([z$1.string().describe("data string"),L]),Tt=z$1.union([z$1.string().describe("data string"),fe]),kt=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA),params:z$1.tuple([R,Tt])}),vt=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V1),params:z$1.tuple([R,Tt])}),Et=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V3),params:z$1.tuple([R,ht])}),St=z$1.object({method:z$1.literal(RpcMethod.SIGN_TYPED_DATA_V4),params:z$1.tuple([R,ht])});var Rt=z$1.object({method:z$1.literal(RpcMethod.PERSONAL_SIGN),params:z$1.union([z$1.tuple([q,R]),z$1.tuple([q,R,z$1.string().optional().describe("password")])])});var Ja=z$1.discriminatedUnion("method",[Rt,bt,kt,vt,Et,St]).transform((t,e)=>{let{method:a,params:n}=t;switch(a){case RpcMethod.PERSONAL_SIGN:return {data:n[0],address:n[1],method:a};case RpcMethod.ETH_SIGN:return {data:n[1],address:n[0],method:a};case RpcMethod.SIGN_TYPED_DATA:case RpcMethod.SIGN_TYPED_DATA_V1:{let s=n[0],o=n[1];if(typeof o!="string")return {data:o,address:s,method:a};try{let r=JSON.parse(o);return {data:fe.parse(r),address:s,method:a}}catch{return e.addIssue({code:z$1.ZodIssueCode.custom,message:"param is not a valid json"}),z$1.NEVER}}case RpcMethod.SIGN_TYPED_DATA_V3:case RpcMethod.SIGN_TYPED_DATA_V4:{let s=n[0],o=n[1];if(typeof o!="string")return {data:o,address:s,method:a};try{let r=JSON.parse(o);return {data:L.parse(r),address:s,method:a}}catch{return e.addIssue({code:z$1.ZodIssueCode.custom,message:"param is not a valid json"}),z$1.NEVER}}}});function Pt(t){return Ja.safeParse(t)}var Ct=t=>ue.safeParse(t).success,k0=t=>L.safeParse(t).success;var Nt=t=>{try{let{EIP712Domain:e,...a}=t.types;return TypedDataEncoder.getPayload(t.domain,a,t.message),{isValid:!0}}catch(e){return {isValid:!1,error:e}}};var It=async({request:t,network:e,approvalController:a,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.invalidParams("Params are invalid")};let{method:o,data:r,address:i}=s.data,c;(o===RpcMethod.SIGN_TYPED_DATA_V3||o===RpcMethod.SIGN_TYPED_DATA_V4)&&(c=Nt(r));let l,p,f,d;if(c&&!c.isValid&&(d={type:AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements.",detailedDescription:c.error.toString()}}),o===RpcMethod.ETH_SIGN)l={type:o,account:i,chainId:e.chainId,data:r},p=r,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===RpcMethod.PERSONAL_SIGN)l={type:o,account:i,chainId:e.chainId,data:r},p=toUtf8String(r);else if(o===RpcMethod.SIGN_TYPED_DATA||o===RpcMethod.SIGN_TYPED_DATA_V1)l={type:o,account:i,chainId:e.chainId,data:r},p=Ct(r)?ft(r):me(r);else if(o===RpcMethod.SIGN_TYPED_DATA_V3||o===RpcMethod.SIGN_TYPED_DATA_V4){l={type:o,account:i,chainId:e.chainId,data:r};let{types:k,primaryType:ye,...At}=r;p=me(At);}if(!l)return {success:!1,error:rpcErrors.internal("Unable to generate signing data")};let{alert:u,balanceChange:y,tokenApprovals:b}=await Ze({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 a.requestApproval({request:t,displayData:g,signingData:l});return "error"in h?{error:h.error}:{result:h.result}};var O,I,W,wt=class{constructor({approvalController:e,environment:a}){w(this,O,void 0);w(this,I,void 0);w(this,W,void 0);let{glacierApiUrl:n,proxyApiUrl:s}=ut(a);A(this,O,new te({glacierApiUrl:n})),A(this,I,s),A(this,W,e);}getAddress(){return Promise.resolve("EVM address")}getBalances({addresses:e,network:a,currency:n,customTokens:s}){return mt({addresses:e,currency:n,network:a,proxyApiUrl:T(this,I),customTokens:s,glacierService:T(this,O)})}getManifest(){let e=parseManifest(Le);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:a,chainName:n,rpcUrl:s,utilityAddresses:o}=e;return ge({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:l=""}=a;return Me({chainId:r,isTestnet:i,networkToken:c,explorerUrl:l,address:n,nextPageToken:s,offset:o,glacierService:T(this,O)})}getTokens(e){let{chainId:a}=e;return z({chainId:a,proxyApiUrl:T(this,I)})}async onRpcRequest(e,a){switch(e.method){case RpcMethod.ETH_SEND_TRANSACTION:return et({request:e,network:a,approvalController:T(this,W),proxyApiUrl:T(this,I)});case RpcMethod.PERSONAL_SIGN:case RpcMethod.ETH_SIGN:case RpcMethod.SIGN_TYPED_DATA:case RpcMethod.SIGN_TYPED_DATA_V1:case RpcMethod.SIGN_TYPED_DATA_V3:case RpcMethod.SIGN_TYPED_DATA_V4:return It({request:e,network:a,approvalController:T(this,W),proxyApiUrl:T(this,I)});default:return {error:rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};O=new WeakMap,I=new WeakMap,W=new WeakMap;
|
|
32
33
|
|
|
33
|
-
export {
|
|
34
|
+
export { Q as ERC20TransactionType, wt as EvmModule, Ue as NonContractCallTypes, k0 as isTypedData, Ct as isTypedDataV1 };
|
|
34
35
|
//# sourceMappingURL=out.js.map
|
|
35
36
|
//# sourceMappingURL=index.js.map
|