@avalabs/evm-module 1.4.5 → 1.4.6
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/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -40,7 +40,7 @@ Message
|
|
|
40
40
|
`;return e},Rr=t=>{let e="";return t.forEach(r=>{e+=`${r.name}:
|
|
41
41
|
`,e+=`${q(String(r.value))}
|
|
42
42
|
|
|
43
|
-
`;}),e},q=t=>{let e={0:"\u{1D7EC}",1:"\u{1D7ED}",2:"\u{1D7EE}",3:"\u{1D7EF}",4:"\u{1D7F0}",5:"\u{1D7F1}",6:"\u{1D7F2}",7:"\u{1D7F3}",8:"\u{1D7F4}",9:"\u{1D7F5}",a:"\u{1D5EE}",b:"\u{1D5EF}",c:"\u{1D5F0}",d:"\u{1D5F1}",e:"\u{1D5F2}",f:"\u{1D5F3}",g:"\u{1D5F4}",h:"\u{1D5F5}",i:"\u{1D5F6}",j:"\u{1D5F7}",k:"\u{1D5F8}",l:"\u{1D5F9}",m:"\u{1D5FA}",n:"\u{1D5FB}",o:"\u{1D5FC}",p:"\u{1D5FD}",q:"\u{1D5FE}",r:"\u{1D5FF}",s:"\u{1D600}",t:"\u{1D601}",u:"\u{1D602}",v:"\u{1D603}",w:"\u{1D604}",x:"\u{1D605}",y:"\u{1D606}",z:"\u{1D607}",A:"\u{1D5D4}",B:"\u{1D5D5}",C:"\u{1D5D6}",D:"\u{1D5D7}",E:"\u{1D5D8}",F:"\u{1D5D9}",G:"\u{1D5DA}",H:"\u{1D5DB}",I:"\u{1D5DC}",J:"\u{1D5DD}",K:"\u{1D5DE}",L:"\u{1D5DF}",M:"\u{1D5E0}",N:"\u{1D5E1}",O:"\u{1D5E2}",P:"\u{1D5E3}",Q:"\u{1D5E4}",R:"\u{1D5E5}",S:"\u{1D5E6}",T:"\u{1D5E7}",U:"\u{1D5E8}",V:"\u{1D5E9}",W:"\u{1D5EA}",X:"\u{1D5EB}",Y:"\u{1D5EC}",Z:"\u{1D5ED}"};return t.split("").map(r=>e[r]||r).join("")};var Te=zod.z.string().describe("message"),N=zod.z.string().describe("address");var Pr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.ETH_SIGN),params:zod.z.tuple([N,Te])});var xr=zod.z.object({name:zod.z.string(),type:zod.z.string()}),ae=zod.z.object({types:zod.z.object({EIP712Domain:zod.z.array(xr)}).catchall(zod.z.array(xr)),primaryType:zod.z.string(),domain:zod.z.record(zod.z.any()),message:zod.z.record(zod.z.any())}),gt=zod.z.array(zod.z.object({type:zod.z.string(),name:zod.z.string(),value:zod.z.union([zod.z.string(),zod.z.number(),zod.z.boolean(),zod.z.object({}).passthrough(),zod.z.array(zod.z.unknown()),zod.z.null()])})).nonempty(),ht=ae.or(gt),Ar=zod.z.union([zod.z.string().describe("data string"),ae]),wr=zod.z.union([zod.z.string().describe("data string"),ht]),Cr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA),params:zod.z.tuple([N,wr])}),Nr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1),params:zod.z.tuple([N,wr])}),Br=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3),params:zod.z.tuple([N,Ar])}),_r=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4),params:zod.z.tuple([N,Ar])});var Dr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.PERSONAL_SIGN),params:zod.z.union([zod.z.tuple([Te,N]),zod.z.tuple([Te,N,zod.z.string().optional().describe("password")])])});var ka=zod.z.discriminatedUnion("method",[Dr,Pr,Cr,Nr,Br,_r]).transform((t,e)=>{let{method:r,params:n}=t;switch(r){case vmModuleTypes.RpcMethod.PERSONAL_SIGN:return {data:n[0],address:n[1],method:r};case vmModuleTypes.RpcMethod.ETH_SIGN:return {data:n[1],address:n[0],method:r};case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:{let o=n[0],a=n[1];if(typeof a!="string")return {data:a,address:o,method:r};try{let s=JSON.parse(a);return {data:ht.parse(s),address:o,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:{let o=n[0],a=n[1];if(typeof a!="string")return {data:a,address:o,method:r};try{let s=JSON.parse(a);return {data:ae.parse(s),address:o,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}}});function Ur(t){return ka.safeParse(t)}var Fr=t=>gt.safeParse(t).success,Xc=t=>ae.safeParse(t).success;var Gr=t=>{try{let{EIP712Domain:e,...r}=t.types;return ethers.TypedDataEncoder.getPayload(t.domain,r,t.message),{isValid:!0}}catch(e){return {isValid:!1,error:e}}};var Lr=async({request:t,network:e,approvalController:r,proxyApiUrl:n})=>{let o=Ur({method:t.method,params:t.params});if(!o.success)return console.error("invalid params",o.error),{success:!1,error:rpcErrors.rpcErrors.invalidParams({message:"Params are invalid",data:{cause:o.error}})};let{method:a,data:s,address:i}=o.data,c;(a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4)&&(c=Gr(s));let l,p,m,d;if(c&&!c.isValid&&(d={type:vmModuleTypes.AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements.",detailedDescription:c.error.toString()}}),a===vmModuleTypes.RpcMethod.ETH_SIGN)l={type:a,account:i,data:s},p=s,m="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(a===vmModuleTypes.RpcMethod.PERSONAL_SIGN)l={type:a,account:i,data:s},p=ethers.toUtf8String(s);else if(a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA||a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1)l={type:a,account:i,data:s},p=Fr(s)?Rr(s):ft(s);else if(a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4){l={type:a,account:i,data:s};let{types:v,primaryType:E,...T}=s;p=ft(T);}if(!l||!p)return {success:!1,error:rpcErrors.rpcErrors.internal("Unable to generate signing data")};let u=await cr({request:t,proxyApiUrl:n,accountAddress:i,chainId:e.chainId,data:{method:a,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,details:[{title:"Message",items:[p]}],disclaimer:m,alert:u?.alert??d,balanceChange:u?.balanceChange,tokenApprovals:u?.tokenApprovals},y=await r.requestApproval({request:t,displayData:g,signingData:l});return "error"in y?{error:y.error}:"signedData"in y?{result:y.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var Mr=async(t,e)=>{try{return {result:await(await w({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3})).send(t.method,t.params)}}catch(r){let n=r.info?.error?.message||r.error?.message||r.message;return {error:rpcErrors.rpcErrors.internal(n)}}};var Hr=async({accountIndex:t,xpub:e,walletType:r})=>{switch(r){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getAddressFromXPub(e,t)};case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{let n=Buffer.from(e,"hex");return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getEvmAddressFromPubKey(n)}}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}};var ie,je=class{constructor(e){this.baseUrl=e;chunkTKL4UUHE_cjs.c(this,ie,[]);}async isNetworkSupported(e){return (await this.getChainList()).map(o=>o.community_id).some(o=>o===e)}async getChainInfo({chainId:e}){return (await this.getChainList()).find(n=>n.id===e)}async getTokenBalance({chainId:e,address:r,tokenId:n}){let o=await fetch(`${this.baseUrl}/v1/user/token?id=${r}&chain_id=${e}&token_id=${n}`);if(o.ok)return await o.json();throw new Error(`${o.status}:${o.statusText}`)}async getTokensBalanceOnChain({chainId:e,address:r}){let n=await fetch(`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getTokenList({chainId:e,address:r}){let n=await fetch(`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getChainList(){if(chunkTKL4UUHE_cjs.b(this,ie).length===0){let e=await fetch(`${this.baseUrl}/v1/chain/list`);if(e.ok)chunkTKL4UUHE_cjs.d(this,ie,await e.json());else throw new Error(`${e.status}:${e.statusText}`)}return chunkTKL4UUHE_cjs.b(this,ie)}async getNftList({address:e,chainId:r}){return D([`${this.baseUrl}/v1/user/nft_list?id=${e}&chain_id=${r}`],Ca)}};ie=new WeakMap;var Aa=zod.z.object({id:zod.z.union([zod.z.custom(ethers.isHexString),zod.z.string()]),chain:zod.z.string(),name:zod.z.string()}),wa=Aa.merge(zod.z.object({contract_id:zod.z.string(),description:zod.z.string(),content_type:zod.z.string(),content:zod.z.string(),thumbnail_url:zod.z.string(),total_supply:zod.z.number(),detail_url:zod.z.string(),collection_id:zod.z.string(),is_core:zod.z.boolean(),inner_id:zod.z.string(),collection_name:zod.z.string(),contract_name:zod.z.string(),amount:zod.z.number(),usd_price:zod.z.number(),is_erc721:zod.z.boolean().optional(),is_erc1155:zod.z.boolean().optional()})),Ca=zod.z.array(wa);var B,ce,Je,Ye,Or,ze=class{constructor({proxyApiUrl:e}){chunkTKL4UUHE_cjs.c(this,ce);chunkTKL4UUHE_cjs.c(this,Ye);chunkTKL4UUHE_cjs.c(this,B,void 0);chunkTKL4UUHE_cjs.d(this,B,new je(`${e}/proxy/debank`));}async isNetworkSupported(e){return chunkTKL4UUHE_cjs.b(this,B).isNetworkSupported(e)}async getNativeBalance({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid address: "+r);let{chainInfo:o,chainIdString:a}=await chunkTKL4UUHE_cjs.e(this,ce,Je).call(this,e),s=o.native_token_id,i=await chunkTKL4UUHE_cjs.b(this,B).getTokenBalance({address:r,chainId:a,tokenId:s}),c=new coreUtilsSdk.TokenUnit(i.raw_amount,i.decimals,i.symbol),l=c.toDisplay(),m=(await Ve()).usd[n.toLowerCase()],d=m?m*i.price:void 0,u=d?c.mul(d).toDisplay({fixedDp:2}):void 0,g=d?c.mul(d).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {name:i.name,symbol:i.symbol,decimals:i.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:i.logo_url,balance:c.toSubUnit(),balanceDisplayValue:l,balanceInCurrency:g,balanceCurrencyDisplayValue:u,priceInCurrency:d}}async listErc20Balances({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listErc20Balances: not valid address");let{chainInfo:o,chainIdString:a}=await chunkTKL4UUHE_cjs.e(this,ce,Je).call(this,e),s=await chunkTKL4UUHE_cjs.b(this,B).getTokensBalanceOnChain({chainId:a,address:r}),i=await Ve(),c={};for(let l of s){if(l.id===o.native_token_id||l.is_core===!1)continue;let p=new coreUtilsSdk.TokenUnit(l.raw_amount,l.decimals,l.symbol),m=p.toDisplay(),d=i.usd[n.toLowerCase()],u=d?d*l.price:void 0,g=u?p.mul(u).toDisplay({fixedDp:2}):void 0,y=u?p.mul(u).toDisplay({fixedDp:2,asNumber:!0}):void 0;c[l.id]={chainId:o.community_id,address:l.id,name:l.name,symbol:l.symbol,decimals:l.decimals,logoUri:l.logo_url,balance:p.toSubUnit(),balanceCurrencyDisplayValue:g,balanceDisplayValue:m,balanceInCurrency:y,priceInCurrency:u,type:vmModuleTypes.TokenType.ERC20,reputation:null};}return c}async listNftBalances({chainId:e,address:r}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listNftBalances: not valid address");let{chainIdString:n}=await chunkTKL4UUHE_cjs.e(this,ce,Je).call(this,e),o=await chunkTKL4UUHE_cjs.b(this,B).getNftList({chainId:n,address:r});return chunkTKL4UUHE_cjs.e(this,Ye,Or).call(this,o)}};B=new WeakMap,ce=new WeakSet,Je=async function(e){let n=(await chunkTKL4UUHE_cjs.b(this,B).getChainList()).find(a=>a.community_id===e)?.id;if(!n)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let o=await chunkTKL4UUHE_cjs.b(this,B).getChainInfo({chainId:n});if(!o)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);return {chainInfo:o,chainIdString:n}},Ye=new WeakSet,Or=function(e){return e.reduce((r,n)=>({...r,[`${n.contract_id}-${n.id}`]:{address:n.contract_id,description:n.description,logoUri:n.thumbnail_url,logoSmall:$e(n.content),name:n.name,symbol:"",tokenId:`${n.inner_id}`,tokenUri:n.detail_url,collectionName:n.collection_name,balance:BigInt(n.amount),balanceDisplayValue:`${n.amount}`,type:n.is_erc721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{description:n.description,properties:""}}}),{})};var Ba=zod.z.tuple([X,X]).rest(X).refine(t=>Et(t,"chainId"),{message:'All transactions must use the same "chainId"'}).refine(t=>Et(t,"from"),{message:'All transactions must use the same "from" address'}).refine(t=>Da(t,"nonce")||_a(t,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'});function _a(t,e){return !Et(t,e)}function Da(t,e){return t.every(r=>r[e]===void 0||r[e]==="")}function Et(t,e){return new Set(t.map(n=>n[e])).size===1}var Wr=t=>Ba.safeParse(t);var jr=async(t,e)=>{if(t[0].nonce)return;let r=await Ae({from:t[0].from,provider:e});return Promise.all(t.map(async(n,o)=>{n.nonce=String(r+o);}))};var Ke=new Map,qr=(t,e,r)=>(Ke.set(t,{signingRequests:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:o},a)=>{let s=Ke.get(t);if(!s)throw rpcErrors.rpcErrors.resourceNotFound();let{signingRequests:i}=s,l={signingRequests:i.map((p,m)=>{if(a===void 0||a===m){let{signingData:d}=p;return {signingData:{...d,data:{...d.data,maxFeePerGas:n??d.data.maxFeePerGas,maxPriorityFeePerGas:o??d.data.maxPriorityFeePerGas}},displayData:p.displayData}}return p}),displayData:r};return Ke.set(t,l),l},cleanup:()=>Ke.delete(t)});var zr=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,proxyApiUrl:o,provider:a,populateMissingGas:s})=>{let i;try{i=await zt({proxyApiUrl:o,chainId:n,params:r,domain:e,withGasEstimation:s});}catch(u){return console.error("simulateTransactionBatch error",u),{isSimulationSuccessful:!1,alert:G[vmModuleTypes.AlertType.WARNING],scans:[]}}let c=await Promise.all(i.map(async(u,g)=>{let y=r[g],v=await lt({chainId:n,params:r[g],provider:a,rpcMethod:t,simulationResult:u});return s&&!y.gas&&v.estimatedGasLimit&&(y.gas=`0x${v.estimatedGasLimit.toString(16)}`),{transaction:y,...v}})),l=c.every(u=>u.isSimulationSuccessful),p=Fa(c),m=La(c),d=Ga(c);return {isSimulationSuccessful:l,alert:p,balanceChange:m,tokenApprovals:d,scans:c.map(u=>(u.tokenApprovals&&(u.tokenApprovals.isEditable=!1),u))}},Fa=t=>{let e={[vmModuleTypes.AlertType.INFO]:0,[vmModuleTypes.AlertType.WARNING]:1,[vmModuleTypes.AlertType.DANGER]:2};return t.reduce((r,{alert:n})=>n&&(!r||e[n.type]>e[r.type])?n:r,void 0)},Ga=t=>{let e=t.reduce((r,{tokenApprovals:n})=>(n&&n.approvals.forEach(o=>{let a=r.approvals.find(s=>o.token.address===s.token.address&&o.spenderAddress===s.spenderAddress);if(!a){r.approvals.push({...o});return}a.value=o.value,a.usdPrice=o.usdPrice;}),r),{approvals:[],isEditable:!1});return Ma(e,t),ct(e)?void 0:e},La=t=>{let e=t.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(o=>{let a=Jr(r.ins,o);a?a.items.push(...o.items):r.ins.push(o);}),n.outs.forEach(o=>{let a=Jr(r.outs,o);a?a.items.push(...o.items):r.outs.push({...o});})),r),{ins:[],outs:[]});return ct(e)?void 0:e},Jr=(t,e)=>t.find(r=>W(r.token)&&W(e.token)?r.token.symbol===e.token.symbol:!W(r.token)&&!W(e.token)?r.token.address===e.token.address:!1),Ma=(t,e)=>{for(let r of t.approvals)for(let n of e)if(!(!n.isSimulationSuccessful||!n.balanceChange||!n.balanceChange.outs.some(a=>!W(a.token)&&!W(r.token)&&a.token.address===r.token.address)))if(!n.tokenApprovals)t.approvals=t.approvals.filter(a=>a.spenderAddress!==r.spenderAddress&&r.token.address!==a.token.address);else {let a=n.tokenApprovals.approvals.find(s=>s.spenderAddress===r.spenderAddress&&s.token.address===r.token.address);if(!a)continue;r.usdPrice=a.usdPrice,r.value=a.value;}};var Yr=async({request:t,network:e,approvalController:r,proxyApiUrl:n})=>{let{params:o}=t,{data:a,success:s,error:i}=Wr(o);if(!s)return console.error("invalid params",i),{error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:i}})};let c=await w({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});try{await jr(a,c);}catch(x){return console.error("Unable to calculate nonce",x),{error:rpcErrors.rpcErrors.internal({message:"Unable to calculate nonce",data:{originalError:x}})}}let l=a.every(x=>Number(x.gas)>0),{alert:p,balanceChange:m,isSimulationSuccessful:d,tokenApprovals:u,scans:g}=await zr({rpcMethod:t.method,proxyApiUrl:n,chainId:e.chainId,params:a,dAppUrl:t.dappInfo.url,provider:c,populateMissingGas:!l});if(!g.every(({transaction:x})=>Number(x.gas)>0))return console.error("Gas limit is missing in some transactions"),{error:rpcErrors.rpcErrors.internal({message:"Gas limit is missing in some transactions"})};let v={title:"Approve Transaction Batch",details:[{title:"Transaction Details",items:[_e("Website",t.dappInfo),Y("From",a[0].from)]}],network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},isSimulationSuccessful:d,balanceChange:m,alert:p,tokenApprovals:u,networkFeeSelector:!0},E=g.map(x=>De(t,e,x.transaction,x)),{cleanup:T,updateTx:k}=qr(t.requestId,E,v),P=await r.requestBatchApproval({request:t,signingRequests:E,displayData:v,updateTx:k});if(T(),"error"in P)return {error:P.error};if(P.result.length!==a.length)return {error:rpcErrors.rpcErrors.internal({message:`Invalid number of signatures. Expected ${a.length}, got ${P.result.length}`})};let Re=[];for(let[x,Ze]of P.result.entries()){let Ie=x===P.result.length-1,pe=await Le(c,Ze),Zr=Ge({provider:c,txHash:pe,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,requestId:t.requestId});if(!Ie&&!await Zr)return {error:rpcErrors.rpcErrors.internal({message:`Transaction ${x+1} failed! Batch execution stopped`})};Re.push(pe);}return {result:Re}};var le,Se,_,$,Xr=class{constructor({approvalController:e,environment:r,appInfo:n}){chunkTKL4UUHE_cjs.c(this,le,void 0);chunkTKL4UUHE_cjs.c(this,Se,void 0);chunkTKL4UUHE_cjs.c(this,_,void 0);chunkTKL4UUHE_cjs.c(this,$,void 0);let{glacierApiUrl:o,proxyApiUrl:a}=kr(r);chunkTKL4UUHE_cjs.d(this,le,new Oe({glacierApiUrl:o,headers:ut(n)})),chunkTKL4UUHE_cjs.d(this,Se,new ze({proxyApiUrl:a})),chunkTKL4UUHE_cjs.d(this,_,a),chunkTKL4UUHE_cjs.d(this,$,e);}getProvider(e){return w({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3})}getAddress({accountIndex:e,xpub:r,walletType:n}){return Hr({accountIndex:e,xpub:r,walletType:n})}getBalances({addresses:e,network:r,currency:n,customTokens:o,storage:a,tokenTypes:s}){return hr({addresses:e,currency:n,network:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_),customTokens:o,balanceServices:[chunkTKL4UUHE_cjs.b(this,le),chunkTKL4UUHE_cjs.b(this,Se)],storage:a,tokenTypes:s})}getManifest(){let e=vmModuleTypes.parseManifest(Wt);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:r,chainName:n,rpcUrl:o,utilityAddresses:a,caipId:s}=e;return St({chainId:r,chainName:n,rpcUrl:o,multiContractAddress:a?.multicall,caipId:s,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_)})}getTransactionHistory(e){let{network:r,address:n,nextPageToken:o,offset:a}=e,{chainId:s,isTestnet:i,networkToken:c,explorerUrl:l=""}=r;return Ot({chainId:s,isTestnet:i,networkToken:c,explorerUrl:l,address:n,nextPageToken:o,offset:a,glacierService:chunkTKL4UUHE_cjs.b(this,le)})}getTokens(e){let{chainId:r}=e;return Pe({chainId:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_)})}async onRpcRequest(e,r){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return pr({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,$),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_)});case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION_BATCH:return rr(chunkTKL4UUHE_cjs.b(this,$))?Yr({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,$),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_)}):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} requires BatchApprovalController`)};case vmModuleTypes.RpcMethod.PERSONAL_SIGN:case vmModuleTypes.RpcMethod.ETH_SIGN:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:return Lr({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,$),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_)});default:return Ha(e.method)?Mr(e,r):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};le=new WeakMap,Se=new WeakMap,_=new WeakMap,$=new WeakMap;var Ha=t=>t.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(t);
|
|
43
|
+
`;}),e},q=t=>{let e={0:"\u{1D7EC}",1:"\u{1D7ED}",2:"\u{1D7EE}",3:"\u{1D7EF}",4:"\u{1D7F0}",5:"\u{1D7F1}",6:"\u{1D7F2}",7:"\u{1D7F3}",8:"\u{1D7F4}",9:"\u{1D7F5}",a:"\u{1D5EE}",b:"\u{1D5EF}",c:"\u{1D5F0}",d:"\u{1D5F1}",e:"\u{1D5F2}",f:"\u{1D5F3}",g:"\u{1D5F4}",h:"\u{1D5F5}",i:"\u{1D5F6}",j:"\u{1D5F7}",k:"\u{1D5F8}",l:"\u{1D5F9}",m:"\u{1D5FA}",n:"\u{1D5FB}",o:"\u{1D5FC}",p:"\u{1D5FD}",q:"\u{1D5FE}",r:"\u{1D5FF}",s:"\u{1D600}",t:"\u{1D601}",u:"\u{1D602}",v:"\u{1D603}",w:"\u{1D604}",x:"\u{1D605}",y:"\u{1D606}",z:"\u{1D607}",A:"\u{1D5D4}",B:"\u{1D5D5}",C:"\u{1D5D6}",D:"\u{1D5D7}",E:"\u{1D5D8}",F:"\u{1D5D9}",G:"\u{1D5DA}",H:"\u{1D5DB}",I:"\u{1D5DC}",J:"\u{1D5DD}",K:"\u{1D5DE}",L:"\u{1D5DF}",M:"\u{1D5E0}",N:"\u{1D5E1}",O:"\u{1D5E2}",P:"\u{1D5E3}",Q:"\u{1D5E4}",R:"\u{1D5E5}",S:"\u{1D5E6}",T:"\u{1D5E7}",U:"\u{1D5E8}",V:"\u{1D5E9}",W:"\u{1D5EA}",X:"\u{1D5EB}",Y:"\u{1D5EC}",Z:"\u{1D5ED}"};return t.split("").map(r=>e[r]||r).join("")};var Te=zod.z.string().describe("message"),N=zod.z.string().describe("address");var Pr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.ETH_SIGN),params:zod.z.tuple([N,Te])});var xr=zod.z.object({name:zod.z.string(),type:zod.z.string()}),ae=zod.z.object({types:zod.z.object({EIP712Domain:zod.z.array(xr)}).catchall(zod.z.array(xr)),primaryType:zod.z.string(),domain:zod.z.record(zod.z.any()),message:zod.z.record(zod.z.any())}),gt=zod.z.array(zod.z.object({type:zod.z.string(),name:zod.z.string(),value:zod.z.union([zod.z.string(),zod.z.number(),zod.z.boolean(),zod.z.object({}).passthrough(),zod.z.array(zod.z.unknown()),zod.z.null()])})).nonempty(),ht=ae.or(gt),Ar=zod.z.union([zod.z.string().describe("data string"),ae]),wr=zod.z.union([zod.z.string().describe("data string"),ht]),Cr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA),params:zod.z.tuple([N,wr])}),Nr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1),params:zod.z.tuple([N,wr])}),Br=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3),params:zod.z.tuple([N,Ar])}),_r=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4),params:zod.z.tuple([N,Ar])});var Dr=zod.z.object({method:zod.z.literal(vmModuleTypes.RpcMethod.PERSONAL_SIGN),params:zod.z.union([zod.z.tuple([Te,N]),zod.z.tuple([Te,N,zod.z.string().optional().describe("password")])])});var ka=zod.z.discriminatedUnion("method",[Dr,Pr,Cr,Nr,Br,_r]).transform((t,e)=>{let{method:r,params:n}=t;switch(r){case vmModuleTypes.RpcMethod.PERSONAL_SIGN:return {data:n[0],address:n[1],method:r};case vmModuleTypes.RpcMethod.ETH_SIGN:return {data:n[1],address:n[0],method:r};case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:{let o=n[0],a=n[1];if(typeof a!="string")return {data:a,address:o,method:r};try{let s=JSON.parse(a);return {data:ht.parse(s),address:o,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:{let o=n[0],a=n[1];if(typeof a!="string")return {data:a,address:o,method:r};try{let s=JSON.parse(a);return {data:ae.parse(s),address:o,method:r}}catch{return e.addIssue({code:zod.z.ZodIssueCode.custom,message:"param is not a valid json"}),zod.z.NEVER}}}});function Ur(t){return ka.safeParse(t)}var Fr=t=>gt.safeParse(t).success,Xc=t=>ae.safeParse(t).success;var Gr=t=>{try{let{EIP712Domain:e,...r}=t.types;return ethers.TypedDataEncoder.getPayload(t.domain,r,t.message),{isValid:!0}}catch(e){return {isValid:!1,error:e}}};var Lr=async({request:t,network:e,approvalController:r,proxyApiUrl:n})=>{let o=Ur({method:t.method,params:t.params});if(!o.success)return console.error("invalid params",o.error),{success:!1,error:rpcErrors.rpcErrors.invalidParams({message:"Params are invalid",data:{cause:o.error}})};let{method:a,data:s,address:i}=o.data,c;(a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4)&&(c=Gr(s));let l,p,m,d;if(c&&!c.isValid&&(d={type:vmModuleTypes.AlertType.INFO,details:{title:"Warning: Verify Message Content",description:"This message contains non-standard elements.",detailedDescription:c.error.toString()}}),a===vmModuleTypes.RpcMethod.ETH_SIGN)l={type:a,account:i,data:s},p=s,m="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(a===vmModuleTypes.RpcMethod.PERSONAL_SIGN)l={type:a,account:i,data:s},p=ethers.toUtf8String(s);else if(a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA||a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1)l={type:a,account:i,data:s},p=Fr(s)?Rr(s):ft(s);else if(a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3||a===vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4){l={type:a,account:i,data:s};let{types:v,primaryType:E,...T}=s;p=ft(T);}if(!l||!p)return {success:!1,error:rpcErrors.rpcErrors.internal("Unable to generate signing data")};let u=await cr({request:t,proxyApiUrl:n,accountAddress:i,chainId:e.chainId,data:{method:a,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,details:[{title:"Message",items:[p]}],disclaimer:m,alert:u?.alert??d,balanceChange:u?.balanceChange,tokenApprovals:u?.tokenApprovals},y=await r.requestApproval({request:t,displayData:g,signingData:l});return "error"in y?{error:y.error}:"signedData"in y?{result:y.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var Mr=async(t,e)=>{try{return {result:await(await w({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3})).send(t.method,t.params)}}catch(r){let n=r.info?.error?.message||r.error?.message||r.message;return {error:rpcErrors.rpcErrors.internal(n)}}};var Hr=async({accountIndex:t,xpub:e,walletType:r})=>{switch(r){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getAddressFromXPub(e,t)};case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{let n=Buffer.from(e,"hex");return {[vmModuleTypes.NetworkVMType.EVM]:coreWalletsSdk.getEvmAddressFromPubKey(n)}}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}};var ie,je=class{constructor(e){this.baseUrl=e;chunkTKL4UUHE_cjs.c(this,ie,[]);}async isNetworkSupported(e){return (await this.getChainList()).map(o=>o.community_id).some(o=>o===e)}async getChainInfo({chainId:e}){return (await this.getChainList()).find(n=>n.id===e)}async getTokenBalance({chainId:e,address:r,tokenId:n}){let o=await fetch(`${this.baseUrl}/v1/user/token?id=${r}&chain_id=${e}&token_id=${n}`);if(o.ok)return await o.json();throw new Error(`${o.status}:${o.statusText}`)}async getTokensBalanceOnChain({chainId:e,address:r}){let n=await fetch(`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getTokenList({chainId:e,address:r}){let n=await fetch(`${this.baseUrl}/v1/user/token_list?id=${r}&chain_id=${e}`);if(n.ok)return await n.json();throw new Error(`${n.status}:${n.statusText}`)}async getChainList(){if(chunkTKL4UUHE_cjs.b(this,ie).length===0){let e=await fetch(`${this.baseUrl}/v1/chain/list`);if(e.ok)chunkTKL4UUHE_cjs.d(this,ie,await e.json());else throw new Error(`${e.status}:${e.statusText}`)}return chunkTKL4UUHE_cjs.b(this,ie)}async getNftList({address:e,chainId:r}){return D([`${this.baseUrl}/v1/user/nft_list?id=${e}&chain_id=${r}`],Ca)}};ie=new WeakMap;var Aa=zod.z.object({id:zod.z.union([zod.z.custom(ethers.isHexString),zod.z.string()]),chain:zod.z.string(),name:zod.z.string()}),wa=Aa.merge(zod.z.object({contract_id:zod.z.string(),description:zod.z.string().nullable(),content_type:zod.z.string().nullable(),content:zod.z.string(),thumbnail_url:zod.z.string(),total_supply:zod.z.number(),detail_url:zod.z.string(),collection_id:zod.z.string(),is_core:zod.z.boolean(),inner_id:zod.z.string(),collection_name:zod.z.string(),contract_name:zod.z.string(),amount:zod.z.number(),usd_price:zod.z.number().optional(),is_erc721:zod.z.boolean().optional(),is_erc1155:zod.z.boolean().optional()})),Ca=zod.z.array(wa);var B,ce,Je,Ye,Or,ze=class{constructor({proxyApiUrl:e}){chunkTKL4UUHE_cjs.c(this,ce);chunkTKL4UUHE_cjs.c(this,Ye);chunkTKL4UUHE_cjs.c(this,B,void 0);chunkTKL4UUHE_cjs.d(this,B,new je(`${e}/proxy/debank`));}async isNetworkSupported(e){return chunkTKL4UUHE_cjs.b(this,B).isNetworkSupported(e)}async getNativeBalance({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid address: "+r);let{chainInfo:o,chainIdString:a}=await chunkTKL4UUHE_cjs.e(this,ce,Je).call(this,e),s=o.native_token_id,i=await chunkTKL4UUHE_cjs.b(this,B).getTokenBalance({address:r,chainId:a,tokenId:s}),c=new coreUtilsSdk.TokenUnit(i.raw_amount,i.decimals,i.symbol),l=c.toDisplay(),m=(await Ve()).usd[n.toLowerCase()],d=m?m*i.price:void 0,u=d?c.mul(d).toDisplay({fixedDp:2}):void 0,g=d?c.mul(d).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {name:i.name,symbol:i.symbol,decimals:i.decimals,type:vmModuleTypes.TokenType.NATIVE,logoUri:i.logo_url,balance:c.toSubUnit(),balanceDisplayValue:l,balanceInCurrency:g,balanceCurrencyDisplayValue:u,priceInCurrency:d}}async listErc20Balances({chainId:e,address:r,currency:n}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listErc20Balances: not valid address");let{chainInfo:o,chainIdString:a}=await chunkTKL4UUHE_cjs.e(this,ce,Je).call(this,e),s=await chunkTKL4UUHE_cjs.b(this,B).getTokensBalanceOnChain({chainId:a,address:r}),i=await Ve(),c={};for(let l of s){if(l.id===o.native_token_id||l.is_core===!1)continue;let p=new coreUtilsSdk.TokenUnit(l.raw_amount,l.decimals,l.symbol),m=p.toDisplay(),d=i.usd[n.toLowerCase()],u=d?d*l.price:void 0,g=u?p.mul(u).toDisplay({fixedDp:2}):void 0,y=u?p.mul(u).toDisplay({fixedDp:2,asNumber:!0}):void 0;c[l.id]={chainId:o.community_id,address:l.id,name:l.name,symbol:l.symbol,decimals:l.decimals,logoUri:l.logo_url,balance:p.toSubUnit(),balanceCurrencyDisplayValue:g,balanceDisplayValue:m,balanceInCurrency:y,priceInCurrency:u,type:vmModuleTypes.TokenType.ERC20,reputation:null};}return c}async listNftBalances({chainId:e,address:r}){if(!ethers.isHexString(r))throw rpcErrors.rpcErrors.invalidParams("listNftBalances: not valid address");let{chainIdString:n}=await chunkTKL4UUHE_cjs.e(this,ce,Je).call(this,e),o=await chunkTKL4UUHE_cjs.b(this,B).getNftList({chainId:n,address:r});return chunkTKL4UUHE_cjs.e(this,Ye,Or).call(this,o)}};B=new WeakMap,ce=new WeakSet,Je=async function(e){let n=(await chunkTKL4UUHE_cjs.b(this,B).getChainList()).find(a=>a.community_id===e)?.id;if(!n)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);let o=await chunkTKL4UUHE_cjs.b(this,B).getChainInfo({chainId:n});if(!o)throw rpcErrors.rpcErrors.invalidParams("getNativeBalance: not valid chainId: "+e);return {chainInfo:o,chainIdString:n}},Ye=new WeakSet,Or=function(e){return e.reduce((r,n)=>({...r,[`${n.contract_id}-${n.id}`]:{address:n.contract_id,description:n.description??"",logoUri:n.thumbnail_url,logoSmall:$e(n.content),name:n.name,symbol:"",tokenId:`${n.inner_id}`,tokenUri:n.detail_url,collectionName:n.collection_name,balance:BigInt(n.amount),balanceDisplayValue:`${n.amount}`,type:n.is_erc721?vmModuleTypes.TokenType.ERC721:vmModuleTypes.TokenType.ERC1155,metadata:{description:n.description??"",properties:""}}}),{})};var Ba=zod.z.tuple([X,X]).rest(X).refine(t=>Et(t,"chainId"),{message:'All transactions must use the same "chainId"'}).refine(t=>Et(t,"from"),{message:'All transactions must use the same "from" address'}).refine(t=>Da(t,"nonce")||_a(t,"nonce"),{message:'Each transaction needs a different "nonce". Make them different, or leave them empty for all transactions.'});function _a(t,e){return !Et(t,e)}function Da(t,e){return t.every(r=>r[e]===void 0||r[e]==="")}function Et(t,e){return new Set(t.map(n=>n[e])).size===1}var Wr=t=>Ba.safeParse(t);var jr=async(t,e)=>{if(t[0].nonce)return;let r=await Ae({from:t[0].from,provider:e});return Promise.all(t.map(async(n,o)=>{n.nonce=String(r+o);}))};var Ke=new Map,qr=(t,e,r)=>(Ke.set(t,{signingRequests:e,displayData:r}),{updateTx:({maxFeeRate:n,maxTipRate:o},a)=>{let s=Ke.get(t);if(!s)throw rpcErrors.rpcErrors.resourceNotFound();let{signingRequests:i}=s,l={signingRequests:i.map((p,m)=>{if(a===void 0||a===m){let{signingData:d}=p;return {signingData:{...d,data:{...d.data,maxFeePerGas:n??d.data.maxFeePerGas,maxPriorityFeePerGas:o??d.data.maxPriorityFeePerGas}},displayData:p.displayData}}return p}),displayData:r};return Ke.set(t,l),l},cleanup:()=>Ke.delete(t)});var zr=async({rpcMethod:t,dAppUrl:e,params:r,chainId:n,proxyApiUrl:o,provider:a,populateMissingGas:s})=>{let i;try{i=await zt({proxyApiUrl:o,chainId:n,params:r,domain:e,withGasEstimation:s});}catch(u){return console.error("simulateTransactionBatch error",u),{isSimulationSuccessful:!1,alert:G[vmModuleTypes.AlertType.WARNING],scans:[]}}let c=await Promise.all(i.map(async(u,g)=>{let y=r[g],v=await lt({chainId:n,params:r[g],provider:a,rpcMethod:t,simulationResult:u});return s&&!y.gas&&v.estimatedGasLimit&&(y.gas=`0x${v.estimatedGasLimit.toString(16)}`),{transaction:y,...v}})),l=c.every(u=>u.isSimulationSuccessful),p=Fa(c),m=La(c),d=Ga(c);return {isSimulationSuccessful:l,alert:p,balanceChange:m,tokenApprovals:d,scans:c.map(u=>(u.tokenApprovals&&(u.tokenApprovals.isEditable=!1),u))}},Fa=t=>{let e={[vmModuleTypes.AlertType.INFO]:0,[vmModuleTypes.AlertType.WARNING]:1,[vmModuleTypes.AlertType.DANGER]:2};return t.reduce((r,{alert:n})=>n&&(!r||e[n.type]>e[r.type])?n:r,void 0)},Ga=t=>{let e=t.reduce((r,{tokenApprovals:n})=>(n&&n.approvals.forEach(o=>{let a=r.approvals.find(s=>o.token.address===s.token.address&&o.spenderAddress===s.spenderAddress);if(!a){r.approvals.push({...o});return}a.value=o.value,a.usdPrice=o.usdPrice;}),r),{approvals:[],isEditable:!1});return Ma(e,t),ct(e)?void 0:e},La=t=>{let e=t.reduce((r,{balanceChange:n})=>(n&&(n.ins.forEach(o=>{let a=Jr(r.ins,o);a?a.items.push(...o.items):r.ins.push(o);}),n.outs.forEach(o=>{let a=Jr(r.outs,o);a?a.items.push(...o.items):r.outs.push({...o});})),r),{ins:[],outs:[]});return ct(e)?void 0:e},Jr=(t,e)=>t.find(r=>W(r.token)&&W(e.token)?r.token.symbol===e.token.symbol:!W(r.token)&&!W(e.token)?r.token.address===e.token.address:!1),Ma=(t,e)=>{for(let r of t.approvals)for(let n of e)if(!(!n.isSimulationSuccessful||!n.balanceChange||!n.balanceChange.outs.some(a=>!W(a.token)&&!W(r.token)&&a.token.address===r.token.address)))if(!n.tokenApprovals)t.approvals=t.approvals.filter(a=>a.spenderAddress!==r.spenderAddress&&r.token.address!==a.token.address);else {let a=n.tokenApprovals.approvals.find(s=>s.spenderAddress===r.spenderAddress&&s.token.address===r.token.address);if(!a)continue;r.usdPrice=a.usdPrice,r.value=a.value;}};var Yr=async({request:t,network:e,approvalController:r,proxyApiUrl:n})=>{let{params:o}=t,{data:a,success:s,error:i}=Wr(o);if(!s)return console.error("invalid params",i),{error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:i}})};let c=await w({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3});try{await jr(a,c);}catch(x){return console.error("Unable to calculate nonce",x),{error:rpcErrors.rpcErrors.internal({message:"Unable to calculate nonce",data:{originalError:x}})}}let l=a.every(x=>Number(x.gas)>0),{alert:p,balanceChange:m,isSimulationSuccessful:d,tokenApprovals:u,scans:g}=await zr({rpcMethod:t.method,proxyApiUrl:n,chainId:e.chainId,params:a,dAppUrl:t.dappInfo.url,provider:c,populateMissingGas:!l});if(!g.every(({transaction:x})=>Number(x.gas)>0))return console.error("Gas limit is missing in some transactions"),{error:rpcErrors.rpcErrors.internal({message:"Gas limit is missing in some transactions"})};let v={title:"Approve Transaction Batch",details:[{title:"Transaction Details",items:[_e("Website",t.dappInfo),Y("From",a[0].from)]}],network:{chainId:e.chainId,name:e.chainName,logoUri:e.logoUri},isSimulationSuccessful:d,balanceChange:m,alert:p,tokenApprovals:u,networkFeeSelector:!0},E=g.map(x=>De(t,e,x.transaction,x)),{cleanup:T,updateTx:k}=qr(t.requestId,E,v),P=await r.requestBatchApproval({request:t,signingRequests:E,displayData:v,updateTx:k});if(T(),"error"in P)return {error:P.error};if(P.result.length!==a.length)return {error:rpcErrors.rpcErrors.internal({message:`Invalid number of signatures. Expected ${a.length}, got ${P.result.length}`})};let Re=[];for(let[x,Ze]of P.result.entries()){let Ie=x===P.result.length-1,pe=await Le(c,Ze),Zr=Ge({provider:c,txHash:pe,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,requestId:t.requestId});if(!Ie&&!await Zr)return {error:rpcErrors.rpcErrors.internal({message:`Transaction ${x+1} failed! Batch execution stopped`})};Re.push(pe);}return {result:Re}};var le,Se,_,$,Xr=class{constructor({approvalController:e,environment:r,appInfo:n}){chunkTKL4UUHE_cjs.c(this,le,void 0);chunkTKL4UUHE_cjs.c(this,Se,void 0);chunkTKL4UUHE_cjs.c(this,_,void 0);chunkTKL4UUHE_cjs.c(this,$,void 0);let{glacierApiUrl:o,proxyApiUrl:a}=kr(r);chunkTKL4UUHE_cjs.d(this,le,new Oe({glacierApiUrl:o,headers:ut(n)})),chunkTKL4UUHE_cjs.d(this,Se,new ze({proxyApiUrl:a})),chunkTKL4UUHE_cjs.d(this,_,a),chunkTKL4UUHE_cjs.d(this,$,e);}getProvider(e){return w({chainId:e.chainId,chainName:e.chainName,rpcUrl:e.rpcUrl,multiContractAddress:e.utilityAddresses?.multicall,pollingInterval:1e3})}getAddress({accountIndex:e,xpub:r,walletType:n}){return Hr({accountIndex:e,xpub:r,walletType:n})}getBalances({addresses:e,network:r,currency:n,customTokens:o,storage:a,tokenTypes:s}){return hr({addresses:e,currency:n,network:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_),customTokens:o,balanceServices:[chunkTKL4UUHE_cjs.b(this,le),chunkTKL4UUHE_cjs.b(this,Se)],storage:a,tokenTypes:s})}getManifest(){let e=vmModuleTypes.parseManifest(Wt);return e.success?e.data:void 0}getNetworkFee(e){let{chainId:r,chainName:n,rpcUrl:o,utilityAddresses:a,caipId:s}=e;return St({chainId:r,chainName:n,rpcUrl:o,multiContractAddress:a?.multicall,caipId:s,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_)})}getTransactionHistory(e){let{network:r,address:n,nextPageToken:o,offset:a}=e,{chainId:s,isTestnet:i,networkToken:c,explorerUrl:l=""}=r;return Ot({chainId:s,isTestnet:i,networkToken:c,explorerUrl:l,address:n,nextPageToken:o,offset:a,glacierService:chunkTKL4UUHE_cjs.b(this,le)})}getTokens(e){let{chainId:r}=e;return Pe({chainId:r,proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_)})}async onRpcRequest(e,r){switch(e.method){case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION:return pr({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,$),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_)});case vmModuleTypes.RpcMethod.ETH_SEND_TRANSACTION_BATCH:return rr(chunkTKL4UUHE_cjs.b(this,$))?Yr({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,$),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_)}):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} requires BatchApprovalController`)};case vmModuleTypes.RpcMethod.PERSONAL_SIGN:case vmModuleTypes.RpcMethod.ETH_SIGN:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V1:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V3:case vmModuleTypes.RpcMethod.SIGN_TYPED_DATA_V4:return Lr({request:e,network:r,approvalController:chunkTKL4UUHE_cjs.b(this,$),proxyApiUrl:chunkTKL4UUHE_cjs.b(this,_)});default:return Ha(e.method)?Mr(e,r):{error:rpcErrors.rpcErrors.methodNotSupported(`Method ${e.method} not supported`)}}}};le=new WeakMap,Se=new WeakMap,_=new WeakMap,$=new WeakMap;var Ha=t=>t.startsWith("eth_")||["web3_clientVersion","web3_sha3","net_version","net_peerCount","net_listening"].includes(t);
|
|
44
44
|
|
|
45
45
|
exports.ERC20TransactionType = O;
|
|
46
46
|
exports.EvmModule = Xr;
|