@vechain/vechain-kit 2.4.2 → 3.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/AccountModal-CK-qcPlQ.js +1 -0
  2. package/dist/AccountModal-ChuVFqPc.js +20 -0
  3. package/dist/AccountModal-ChuVFqPc.js.map +1 -0
  4. package/dist/AccountModal-DNK0IbiE.cjs +1 -0
  5. package/dist/AccountModal-DjAS4w6z.cjs +20 -0
  6. package/dist/AccountModal-DjAS4w6z.cjs.map +1 -0
  7. package/dist/BaseModal-CWAI9-Bi.js +2 -0
  8. package/dist/BaseModal-CWAI9-Bi.js.map +1 -0
  9. package/dist/BaseModal-yevRjczw.cjs +2 -0
  10. package/dist/BaseModal-yevRjczw.cjs.map +1 -0
  11. package/dist/ConnectModal-BXbiUwnz.js +1 -0
  12. package/dist/ConnectModal-C50EF9gE.js +2 -0
  13. package/dist/ConnectModal-C50EF9gE.js.map +1 -0
  14. package/dist/ConnectModal-CvkkVALe.cjs +1 -0
  15. package/dist/ConnectModal-DmIkWb1i.cjs +2 -0
  16. package/dist/ConnectModal-DmIkWb1i.cjs.map +1 -0
  17. package/dist/DisconnectConfirmContent-B4qahKqQ.cjs +2 -0
  18. package/dist/DisconnectConfirmContent-B4qahKqQ.cjs.map +1 -0
  19. package/dist/DisconnectConfirmContent-C9qLnI-m.js +2 -0
  20. package/dist/DisconnectConfirmContent-C9qLnI-m.js.map +1 -0
  21. package/dist/LegalDocumentsModal-5sNOrJI9.js +1 -0
  22. package/dist/LegalDocumentsModal-aWgfKwIL.js +2 -0
  23. package/dist/LegalDocumentsModal-aWgfKwIL.js.map +1 -0
  24. package/dist/LegalDocumentsModal-fnhM40y6.cjs +2 -0
  25. package/dist/LegalDocumentsModal-fnhM40y6.cjs.map +1 -0
  26. package/dist/LegalDocumentsModal-g54lP0U7.cjs +1 -0
  27. package/dist/PrivyCrossAppProvider-B6oIXeWL.js +2 -0
  28. package/dist/PrivyCrossAppProvider-B6oIXeWL.js.map +1 -0
  29. package/dist/PrivyCrossAppProvider-C6aL4Qor.cjs +1 -0
  30. package/dist/PrivyCrossAppProvider-Ccu2yH99.js +1 -0
  31. package/dist/PrivyCrossAppProvider-DSuzrbqs.cjs +2 -0
  32. package/dist/PrivyCrossAppProvider-DSuzrbqs.cjs.map +1 -0
  33. package/dist/PrivyWalletProvider-BkqWSj75.cjs +2 -0
  34. package/dist/PrivyWalletProvider-BkqWSj75.cjs.map +1 -0
  35. package/dist/PrivyWalletProvider-DToo_u0W.js +2 -0
  36. package/dist/PrivyWalletProvider-DToo_u0W.js.map +1 -0
  37. package/dist/ShareButtons-B92JZp47.js +2 -0
  38. package/dist/ShareButtons-B92JZp47.js.map +1 -0
  39. package/dist/ShareButtons-CRMNerbz.cjs +2 -0
  40. package/dist/ShareButtons-CRMNerbz.cjs.map +1 -0
  41. package/dist/UpgradeSmartAccountModal-BAzmVxeJ.js +2 -0
  42. package/dist/UpgradeSmartAccountModal-BAzmVxeJ.js.map +1 -0
  43. package/dist/UpgradeSmartAccountModal-BGjTzYAm.cjs +1 -0
  44. package/dist/UpgradeSmartAccountModal-CpZo27Uk.js +1 -0
  45. package/dist/UpgradeSmartAccountModal-IMcihO0d.cjs +2 -0
  46. package/dist/UpgradeSmartAccountModal-IMcihO0d.cjs.map +1 -0
  47. package/dist/VechainKitThemeProvider-BM5258oA.cjs +75 -0
  48. package/dist/VechainKitThemeProvider-BM5258oA.cjs.map +1 -0
  49. package/dist/VechainKitThemeProvider-Di9a04Es.js +75 -0
  50. package/dist/VechainKitThemeProvider-Di9a04Es.js.map +1 -0
  51. package/dist/assets/index.cjs +1 -1
  52. package/dist/assets/index.d.cts +1 -1
  53. package/dist/assets/{index.d.mts → index.d.ts} +1 -1
  54. package/dist/assets/index.js +1 -0
  55. package/dist/{assets-BL24r-Yp.mjs → assets-CXk1qRDd.js} +5 -5
  56. package/dist/assets-CXk1qRDd.js.map +1 -0
  57. package/dist/{assets-DNJsQD7_.cjs → assets-YPd7adzM.cjs} +7 -7
  58. package/dist/assets-YPd7adzM.cjs.map +1 -0
  59. package/dist/chunk-DjWAcSYV.cjs +1 -0
  60. package/dist/components/index.cjs +1 -0
  61. package/dist/components/index.d.cts +6 -0
  62. package/dist/components/index.d.ts +6 -0
  63. package/dist/components/index.js +1 -0
  64. package/dist/components-QKLypcU1.cjs +2 -0
  65. package/dist/components-QKLypcU1.cjs.map +1 -0
  66. package/dist/components-k36uDisW.js +2 -0
  67. package/dist/components-k36uDisW.js.map +1 -0
  68. package/dist/hooks/index.cjs +1 -0
  69. package/dist/hooks/index.d.cts +6 -0
  70. package/dist/hooks/index.d.ts +6 -0
  71. package/dist/hooks/index.js +1 -0
  72. package/dist/hooks-C8eXQYIN.cjs +8 -0
  73. package/dist/hooks-C8eXQYIN.cjs.map +1 -0
  74. package/dist/hooks-DuTew9oP.js +8 -0
  75. package/dist/hooks-DuTew9oP.js.map +1 -0
  76. package/dist/{index-CpRbZET6.d.mts → index-BGQS0a81.d.ts} +564 -1581
  77. package/dist/index-BGQS0a81.d.ts.map +1 -0
  78. package/dist/index-Bqw0Cz5n.d.cts +587 -0
  79. package/dist/index-Bqw0Cz5n.d.cts.map +1 -0
  80. package/dist/index-BugHmddr.d.ts +587 -0
  81. package/dist/index-BugHmddr.d.ts.map +1 -0
  82. package/dist/{index-D4rz985m.d.cts → index-C8wbz8af.d.cts} +561 -1578
  83. package/dist/index-C8wbz8af.d.cts.map +1 -0
  84. package/dist/{index-CWViOs1U.d.mts → index-COoeacay.d.ts} +5 -5
  85. package/dist/index-COoeacay.d.ts.map +1 -0
  86. package/dist/{index-u3CPquCV.d.cts → index-CmGg4iaS.d.cts} +4 -4
  87. package/dist/{index-CWViOs1U.d.mts.map → index-CmGg4iaS.d.cts.map} +1 -1
  88. package/dist/index-DI_IPiLX.d.ts +324 -0
  89. package/dist/index-DI_IPiLX.d.ts.map +1 -0
  90. package/dist/index-DVxlUr9t.d.cts +324 -0
  91. package/dist/index-DVxlUr9t.d.cts.map +1 -0
  92. package/dist/index.cjs +1 -221
  93. package/dist/index.d.cts +6 -3
  94. package/dist/index.d.ts +6 -0
  95. package/dist/index.js +1 -0
  96. package/dist/network-Cs9YqDJ1.d.cts +536 -0
  97. package/dist/network-Cs9YqDJ1.d.cts.map +1 -0
  98. package/dist/network-yA5VWcPq.d.ts +536 -0
  99. package/dist/network-yA5VWcPq.d.ts.map +1 -0
  100. package/dist/providers/index.cjs +1 -0
  101. package/dist/providers/index.d.cts +3 -0
  102. package/dist/providers/index.d.ts +3 -0
  103. package/dist/providers/index.js +1 -0
  104. package/dist/providers-DImdr6Kk.cjs +124 -0
  105. package/dist/providers-DImdr6Kk.cjs.map +1 -0
  106. package/dist/providers-kA0lotaM.js +124 -0
  107. package/dist/providers-kA0lotaM.js.map +1 -0
  108. package/dist/ssrUtils-C_5ZY26i.cjs +2 -0
  109. package/dist/ssrUtils-C_5ZY26i.cjs.map +1 -0
  110. package/dist/ssrUtils-DSwxhTtm.js +2 -0
  111. package/dist/ssrUtils-DSwxhTtm.js.map +1 -0
  112. package/dist/utils/index.cjs +1 -1
  113. package/dist/utils/index.d.cts +2 -2
  114. package/dist/utils/index.d.ts +3 -0
  115. package/dist/utils/index.js +1 -0
  116. package/dist/utils-B2Eg9TD3.js +2 -0
  117. package/dist/utils-B2Eg9TD3.js.map +1 -0
  118. package/dist/utils-jW13BhAb.cjs +2 -0
  119. package/dist/utils-jW13BhAb.cjs.map +1 -0
  120. package/package.json +46 -9
  121. package/dist/assets/index.mjs +0 -1
  122. package/dist/assets-BL24r-Yp.mjs.map +0 -1
  123. package/dist/assets-DNJsQD7_.cjs.map +0 -1
  124. package/dist/index-CpRbZET6.d.mts.map +0 -1
  125. package/dist/index-D4rz985m.d.cts.map +0 -1
  126. package/dist/index-u3CPquCV.d.cts.map +0 -1
  127. package/dist/index.cjs.map +0 -1
  128. package/dist/index.d.mts +0 -3
  129. package/dist/index.mjs +0 -221
  130. package/dist/index.mjs.map +0 -1
  131. package/dist/utils/index.d.mts +0 -3
  132. package/dist/utils/index.mjs +0 -1
  133. package/dist/utils-BQ9mZctf.cjs +0 -2
  134. package/dist/utils-BQ9mZctf.cjs.map +0 -1
  135. package/dist/utils-BxZj2QIg.mjs +0 -2
  136. package/dist/utils-BxZj2QIg.mjs.map +0 -1
@@ -0,0 +1,8 @@
1
+ import{u as e}from"./VechainKitThemeProvider-Di9a04Es.js";import{H as t,W as n,Y as r,_ as i,ct as a,g as o,it as s,j as c,k as l,r as u,s as d}from"./utils-B2Eg9TD3.js";import{O as f,a as p,g as m,h,n as g,o as _,t as v,y}from"./assets-CXk1qRDd.js";import{d as b,o as x,r as S}from"./ssrUtils-DSwxhTtm.js";import{B as ee,E as C,F as w,G as te,H as ne,J as re,K as T,L as E,N as D,O,Q as k,R as ie,S as A,T as j,V as ae,W as oe,_ as se,a as ce,j as le,n as ue,nt as de,rt as fe,u as pe,v as me,y as he}from"./PrivyWalletProvider-DToo_u0W.js";import{a as ge}from"./PrivyCrossAppProvider-B6oIXeWL.js";import _e,{useCallback as M,useEffect as N,useMemo as P,useState as F}from"react";import{Fragment as I,jsx as L}from"react/jsx-runtime";import{BigNumber as ve}from"bignumber.js";import{Interface as ye,ethers as be,namehash as xe,toBeHex as Se,toUtf8String as Ce,zeroPadValue as we}from"ethers";import{ABIContract as R,Address as z,Clause as B,ERC20_ABI as Te,Revision as Ee,Units as V,VET as H}from"@vechain/sdk-core";import{useTranslation as De}from"react-i18next";import{useQueries as Oe,useQuery as U,useQueryClient as W}from"@tanstack/react-query";import{useCreateWallet as ke,useLoginWithOAuth as Ae,useLoginWithPasskey as je,useMfaEnrollment as Me,usePrivy as Ne,useSetWalletRecovery as Pe}from"@privy-io/react-auth";import{ThorClient as Fe,ThorClient as Ie}from"@vechain/sdk-network";import{useThor as Le,useWallet as Re,useWalletModal as ze,useWalletModal as Be}from"@vechain/dapp-kit-react";import{IERC20__factory as Ve,OracleVechainEnergy__factory as He,SocialLoginSmartAccountFactory__factory as G,SocialLoginSmartAccount__factory as Ue,UniswapV2Router02__factory as We,VetDomainsRegistry__factory as Ge,VetDomainsReverseRegistrar__factory as Ke,VeworldSubdomainClaimer__factory as qe,X2EarnApps__factory as Je,XAllocationPool__factory as Ye,XAllocationVoting__factory as Xe}from"@vechain/vechain-contract-types";import{concat as Ze,decodeEventLog as Qe,encodeFunctionData as $e,formatEther as et,keccak256 as tt,namehash as nt,parseEther as rt,parseUnits as it,toBytes as at,zeroAddress as K}from"viem";import{getAvatar as ot,getB3trBalance as st,getErc20Balance as ct,getIsPerson as lt,getTokenInfo as ut,getVot3Balance as dt}from"@vechain/contract-getters";import{z as q}from"zod";import ft from"browser-image-compression";const pt=()=>{let[e,t]=he(me.ECOSYSTEM_SHORTCUTS,[]);return{shortcuts:e,addShortcut:n=>{e.some(e=>e.url===n.url)||t([...e,n])},removeShortcut:n=>{t(e.filter(e=>e.url!==n))},isShortcut:t=>e.some(e=>e.url===t)}},mt=async e=>{let t=new URL(`/api/v1/apps/${e}`,h),n=await fetch(t,{headers:{"privy-app-id":e}});if(!n.ok)throw Error(`Failed to fetch Privy app info`);return n.json()},ht=e=>[`VECHAIN_KIT_PRIVY_APP_INFO`,...Array.isArray(e)?e:[e]],gt=e=>{let t=Array.isArray(e)?e:[e];return U({queryKey:ht(e),queryFn:async()=>{let e=await Promise.all(t.map(e=>mt(e)));return Object.fromEntries(e.map((e,n)=>{let i=t[n],a=r.find(e=>e.id===i);return[i,{...e,website:a?.website}]}))},enabled:t.length>0,retry:(e,t)=>{if(t instanceof Error){let e=t.message.toLowerCase();if(e.includes(`cancel`)||e.includes(`abort`))return!1}return e<2},gcTime:1e3*60*5,staleTime:1e3*60})},_t=async()=>{try{let e=new URL(`summary.json`,m),t=await fetch(e);if(!t.ok)throw Error(`Failed to fetch Privy status`);return(await t.json()).page.status??`No data`}catch(e){return console.error(`Error fetching data:`,e),`Error fetching data`}},vt=()=>U({queryKey:[`PRIVY_STATUS`],queryFn:_t,retry:(e,t)=>{if(t instanceof Error){let e=t.message.toLowerCase();if(e.includes(`cancel`)||e.includes(`abort`))return!1}return e<2},gcTime:1e3*60*5,staleTime:1e3*60}),yt=async(e,t,n)=>{let r=tt(Ze([`0x571e15b4bbf879cf28e5075190137be8e18500e3d38543bf0cbcdb54e00b02cc`,tt(at(n))])),i=await e.contracts.load(a(t).vetDomainsContractAddress,Ge.abi).read.recordExists(r);if(!i)throw Error(`Failed to get ENS record exists for ${n}`);return i[0]},J=e=>[`VECHAIN_KIT_ENS_RECORD_VE_WORLD_EXISTS`,e],bt=t=>{let n=k(),{network:r}=e();return U({queryKey:J(t),queryFn:()=>yt(n,r.type,t),enabled:!!n&&!!t,retry:(e,t)=>{if(t instanceof Error){let e=t.message.toLowerCase();if(e.includes(`cancel`)||e.includes(`abort`))return!1}return e<2},gcTime:1e3*60*5,staleTime:1e3*60})},xt=10*d.SECOND,St=e=>[`VECHAIN_KIT`,`TX_RECEIPT`,e],Ct=(e,t=5)=>{let n=k();return U({queryKey:St(e),queryFn:async()=>{if(!n)throw Error(`Thor client not available`);let r=await n.transactions.waitForTransaction(e,{timeoutMs:t*xt,intervalMs:3e3});if(!r)throw Error(`Transaction receipt not found`);return r},enabled:!!n&&!!e})},wt=async(e,t,n,r)=>{let i=await e.transactions.estimateGas(t,n,r);if(i.reverted)throw Error(`Failed to estimate gas`);let a=i?.totalGas??0;return(!a||Number.isNaN(a))&&(a=0),Math.ceil(a)},Y=({signerAccountAddress:t,clauses:n,onTxConfirmed:r,onTxFailedOrCancelled:i,suggestedMaxGas:a,privyUIOptions:o,gasPadding:s,delegationUrl:c})=>{let l=k(),{signer:u,requestTransaction:d}=E(),{connection:f}=j(),{feeDelegation:p}=e(),m=re(),h=ue(),g=M(async(e,n,r)=>{let i=typeof e==`function`?await e():e??[];if(f.isConnectedWithPrivy){if(!h)throw Error(`Privy is not configured. Please configure the privy prop in VeChainKitContext to use this feature.`);return await h.sendTransaction({txClauses:i,...r,delegationUrl:n})}if(!t)throw Error(`signerAccountAddress is required`);let o=0;try{l&&(o=await wt(l,[...i],t,{revision:Ee.NEXT,...s?{gasPadding:s}:{}}))}catch(e){console.error(`Gas estimation failed`,e)}return(await d(i,{signer:f.isConnectedWithDappKit&&!f.isInAppBrowser&&t?t:u.address,gas:a??o,...p?.delegateAllTransactions||n?{delegator:{url:n??p?.delegatorUrl??``,signer:t}}:{}})).txid},[t,a,m,h,o,p,l,u,s,c,d,f.isConnectedWithDappKit,f.isInAppBrowser]),[_,v]=F(null),[y,b]=F(!1),[x,S]=F(null),ee=M(async(e,t)=>{if(!e&&!n)throw Error(`clauses are required`);try{v(null),b(!0),S(null),D(void 0),v(await g(e??[],t,{...o}))}catch(e){S(e&&typeof e==`object`&&`message`in e?e.message:String(e)),i?.(e instanceof Error?e:Error(String(e)))}finally{b(!1)}},[g,n,o,c]),{data:C,isLoading:w,error:te}=Ct(_??``),ne=M(async e=>{if(!(!e.reverted||!e.meta.txID||!l))return await l.transactions.getRevertReason(e.meta.txID)},[l]),[T,D]=F(),O=P(()=>{if(y)return`pending`;if(x)return`error`;if(_){if(w)return`waitingConfirmation`;if(te)return`error`;if(C)return C.reverted?`error`:`success`}return`ready`},[w,x,y,_,C,te]);N(()=>{if(O===`success`||O===`error`){if(x&&!T){D({type:`UserRejectedError`,reason:x});return}if(C?.reverted&&!T?.type){(async()=>{let e=await ne(C);D({type:`RevertReasonError`,reason:e?`Transaction reverted with: `+e:`Transaction reverted`})})();return}C&&!C.reverted&&r?.()}},[O,C,r,ne,x]);let ie=M(()=>{v(null),b(!1),S(null),D(void 0)},[]);return{sendTransaction:ee,isTransactionPending:P(()=>y||w||O===`pending`||O===`waitingConfirmation`,[y,w,O]),isWaitingForWalletConfirmation:P(()=>O===`pending`,[y,O]),txReceipt:C??null,status:O,resetStatus:ie,error:T}},X=(e,t)=>[`VECHAIN_KIT`,`VET_DOMAINS`,`AVATAR`,e,t],Tt=t=>{let{network:n}=e();return U({queryKey:X(t??``,n.type),queryFn:async()=>t?ot(t,{networkUrl:n.nodeUrl}):null,enabled:!!t&&!!n.type,retry:(e,t)=>{if(t instanceof Error){let e=t.message.toLowerCase();if(e.includes(`cancel`)||e.includes(`abort`))return!1}return e<2},gcTime:1e3*60*5,staleTime:1e3*60})},Et=(t,n)=>{let r=W(),{network:i}=e();return{refresh:async()=>{await Promise.all([r.invalidateQueries({queryKey:X(t??``,i.type)}),r.invalidateQueries({queryKey:le(t,i.type)}),r.invalidateQueries({queryKey:O(n)})])}}},Dt=q.object({name:q.string()}),Ot=q.object({domains:q.array(Dt)}),kt=async(e,t,n)=>{if(!t)throw Error(`Address is required`);let r=a(e).graphQlIndexerUrl,i=`query Registrations {
2
+ domains(
3
+ where: ${n?`{owner: "${t.toLowerCase()}", parent_: {name: "${n}"}}`:`{owner: "${t.toLowerCase()}"}`}
4
+ ) {
5
+ name
6
+ }
7
+ }`,o=await fetch(r,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({operationName:`Registrations`,query:i,extensions:{}})});if(!o.ok)throw Error(`Failed to fetch domains`);let s=await o.json();return s.data&&s.data.domains&&(s.data.domains=s.data.domains.filter(e=>!e.name.endsWith(`addr.reverse`))),Ot.parse(s.data)},Z=(e,t)=>[`VECHAIN_KIT`,`VET_DOMAINS`,e,t],At=(t,n)=>{let{network:r}=e();return U({queryKey:Z(t,n),queryFn:()=>kt(r.type,t,n),enabled:!!t&&!!r.type,retry:(e,t)=>{if(t instanceof Error){let e=t.message.toLowerCase();if(e.includes(`cancel`)||e.includes(`abort`)||e===`address is required`)return!1}return e<2},gcTime:1e3*60*5,staleTime:1e3*60})},jt=async(e,t,n,r,i,a)=>{await Promise.all([e.invalidateQueries({queryKey:D(t)}),e.invalidateQueries({queryKey:D(n)}),e.invalidateQueries({queryKey:J(r)}),e.invalidateQueries({queryKey:Z(t,`.vet`)}),e.invalidateQueries({queryKey:Z(t,`.veworld.vet`)}),e.invalidateQueries({queryKey:le(n)})]),await Promise.all([e.refetchQueries({queryKey:D(t)}),e.refetchQueries({queryKey:D(n)}),e.refetchQueries({queryKey:Z(t,`.vet`)}),e.refetchQueries({queryKey:Z(t,`.veworld.vet`)}),e.refetchQueries({queryKey:X(r+`.`+i,a)}),e.refetchQueries({queryKey:le(n)}),e.refetchQueries({queryKey:J(r)}),e.refetchQueries({queryKey:O(t)})])},Mt=qe.createInterface(),Q=Ke.createInterface(),Nt=(e,t,r,i,o)=>{let s=[];if(!e)throw Error(`Invalid subdomain`);let c=`${e}.${t}`;if(s.push({to:a(o.type).vetDomainsReverseRegistrarAddress,value:`0x0`,data:Q.encodeFunctionData(`setName`,[``]),comment:`Unsetting your current VeChain nickname of the account ${n(i?.address??``,4,4)}`,abi:Q.getFunction(`setName`)}),r){s.push({to:a(o.type).vetDomainsReverseRegistrarAddress,value:`0x0`,data:Q.encodeFunctionData(`setName`,[c]),comment:`Setting your VeChain nickname to ${c}`,abi:Q.getFunction(`setName`)});let e=new be.Interface([`function setAddr(bytes32 node, address addr)`]),t=be.namehash(c);s.push({to:a(o.type).vetDomainsPublicResolverAddress,value:`0x0`,data:e.encodeFunctionData(`setAddr`,[t,i?.address||``]),comment:`Setting the address for ${c} to ${n(i?.address??``,4,4)}`,abi:e.getFunction(`setAddr`)})}else if(Ft(t))s.push({to:a(o.type).veWorldSubdomainClaimerContractAddress,value:`0x0`,data:Mt.encodeFunctionData(`claim`,[e,a(o.type).vetDomainsPublicResolverAddress]),comment:`Claim VeChain subdomain: ${e}.${t}`,abi:Mt.getFunction(`claim`)}),s.push({to:a(o.type).vetDomainsReverseRegistrarAddress,value:`0x0`,data:Q.encodeFunctionData(`setName`,[e+`.`+t]),comment:`Set ${e}.${t} as the VeChain nickname of the account ${n(i?.address??``,4,4)}`,abi:Q.getFunction(`setName`)});else throw Error(`This hook only supports .veworld.vet subdomains`);return s},Pt=({subdomain:t,domain:n,onSuccess:r,onError:i,alreadyOwned:a=!1})=>{let o=W(),{account:s}=j(),{network:c}=e(),{refresh:l}=Et(t+`.`+n,s?.address??``),u=M(()=>Nt(t,n,a,s,c),[t,n,a,s,c]),d=M(async()=>{let e=`${t}.${n}`;await jt(o,s?.address??``,e,t,n,c.type),l(),r?.()},[r,t,n,o,s,c.type,l]),f=Y({signerAccountAddress:s?.address??``,privyUIOptions:{title:`Sign to claim your VeChain nickname`,description:`Claim ${t}.${n} as your VeChain nickname`,buttonText:`Sign to continue`},onTxConfirmed:d,onTxFailedOrCancelled:()=>{i?.()}});return{...f,clauses:u,sendTransaction:async()=>f.sendTransaction(u())}},Ft=e=>e.endsWith(`veworld.vet`),It=Ke.createInterface(),Lt=(e,t,r,i)=>{let o=[];if(!e)throw Error(`Invalid domain`);if(t){o.push({to:a(i.type).vetDomainsReverseRegistrarAddress,value:`0x0`,data:It.encodeFunctionData(`setName`,[e]),comment:`Setting your VeChain nickname to ${e}`,abi:It.getFunction(`setName`)});let t=new be.Interface([`function setAddr(bytes32 node, address addr)`]),s=be.namehash(e);o.push({to:a(i.type).vetDomainsPublicResolverAddress,value:`0x0`,data:t.encodeFunctionData(`setAddr`,[s,r?.address||``]),comment:`Setting the address for ${e} to ${n(r?.address??``,4,4)}`,abi:t.getFunction(`setAddr`)})}else throw Error(`Primary .vet domains are not supported yet`);return o},Rt=({domain:t,onSuccess:n,onError:r,alreadyOwned:i=!1})=>{let{network:a}=e(),o=W(),{account:s}=j(),{refresh:c}=Et(t,s?.address??``),l=M(()=>Lt(t,i,s,a),[t,i,s,a]),u=M(async()=>{await jt(o,s?.address??``,t,``,t.endsWith(`.vet`)?t:`${t}.vet`,a.type),c(),n?.()},[n,t,o,s,a.type,c]),d=Y({signerAccountAddress:s?.address??``,privyUIOptions:{title:`Sign to claim your VeChain nickname`,description:`Claim ${t} as your VeChain nickname`,buttonText:`Sign to continue`},onTxConfirmed:u,onTxFailedOrCancelled:r});return{...d,clauses:l,sendTransaction:async()=>d.sendTransaction(l())}},zt=e=>[`VECHAIN_KIT_DOMAIN`,e,`IS_DOMAIN_PROTECTED`],Bt=R.ofAbi(qe.abi),Vt=async(e,t,n)=>{let r=a(t).veWorldSubdomainClaimerContractAddress;return(await e.contracts.load(r,Bt.abi).read.isDomainProtected(n))[0]},Ht=(t,n=!0)=>{let r=k(),{network:i}=e();return U({queryKey:zt(t),queryFn:()=>Vt(r,i.type,t),enabled:!!r&&!!t&&n&&!!i.type,retry:(e,t)=>{if(t instanceof Error){let e=t.message.toLowerCase();if(e.includes(`cancel`)||e.includes(`abort`))return!1}return e<2},gcTime:1e3*60*5,staleTime:1e3*60})},Ut=new ye([`function resolver(bytes32 node) returns (address resolverAddress)`,`function setText(bytes32 node, string key, string value) external`]),Wt=(e,t)=>{let n=[];for(let{domain:r,key:i,value:a}of t){if(!r)throw Error(`Domain is required`);if(!e)throw Error(`Resolver address is required`);let t=xe(r);n.push({to:e,data:Ut.encodeFunctionData(`setText`,[t,i,a]),value:`0`,comment:`Update ${i} record`})}return n},Gt=({onSuccess:e,onError:t,signerAccountAddress:n,resolverAddress:r}={})=>{let i=M(e=>{if(!r)throw Error(`Resolver address is required`);return Wt(r,e)},[r]),a=Y({signerAccountAddress:n,onTxConfirmed:async()=>{await e?.()},onTxFailedOrCancelled:async()=>{await t?.()},privyUIOptions:{title:`Update Profile Information`,description:`Update the profile information associated with your domain`,buttonText:`Sign to continue`}});return{...a,clauses:i,sendTransaction:async e=>a.sendTransaction(i(e))}},Kt=e=>[`VECHAIN_KIT`,`RESOLVER_ADDRESS`,e],qt=t=>{let{network:n}=e();return T({address:a(n.type).vetDomainsContractAddress,abi:Ge.abi,method:`resolver`,args:[t?nt(t):`0x`],queryOptions:{select:e=>e[0],enabled:!!t}})},Jt=new ye([`function resolver(bytes32 node) returns (address resolverAddress)`,`function text(bytes32 node, string key) returns (string avatar)`]),Yt=new ye([`function tokenURI(uint256 tokenId) view returns (string)`,`function uri(uint256 id) view returns (string)`]),Xt=async(e,t,n)=>{if(!n)throw Error(`Name is required`);let r=xe(n);try{let n=new URL(`accounts/*`,t),[{data:i,reverted:o}]=await(await fetch(n,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({clauses:[{to:a(e).vetDomainsContractAddress,data:Jt.encodeFunctionData(`resolver`,[r])}]})})).json();if(o)return null;let{resolverAddress:s}=Jt.decodeFunctionResult(`resolver`,i),[{data:c,reverted:l}]=await(await fetch(n,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({clauses:[{to:s,data:Jt.encodeFunctionData(`text`,[r,`avatar`])}]})})).json();if(l||c===`0x`)return null;try{let{avatar:n}=Jt.decodeFunctionResult(`text`,c),r=n===``?null:n;return r?Qt(r,e,t):null}catch(e){return console.error(`Failed to decode avatar data:`,e),null}}catch(e){throw console.error(`Error fetching avatar using legacy API:`,e),e}},Zt=(e,t)=>[`VECHAIN_KIT`,`VET_DOMAINS`,`AVATAR`,`LEGACY`,e,t];async function Qt(e,t,n){try{if(e.startsWith(`http`)||e.startsWith(`ipfs://`)||e.startsWith(`ar://`))return o(e,t)||null;let r=e.match(/eip155:(\d+)\/(?:erc721|erc1155):([^/]+)\/(\d+)/);if(r){let[,i,a,s]=r,c=e.includes(`erc1155`);if(!i||!a||s===void 0)return null;let l=[{to:a,data:Yt.encodeFunctionData(c?`uri`:`tokenURI`,[BigInt(s||0)])}],u=new URL(`accounts/*`,n),[{data:d,reverted:f}]=await fetch(u,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({clauses:l})}).then(e=>e.json());if(f)return console.error(`Failed to fetch tokenURI`),null;let p=``;try{p=Yt.decodeFunctionResult(c?`uri`:`tokenURI`,d)[0]}catch(e){console.error(`Failed to decode avatar data:`,e),p=Ce(d)}p=o(p,t)||p,c&&(p=p.replace(`{id}`,we(Se(BigInt(s||0)),32).slice(2)));let m=await fetch(p);if(!m.ok)return console.error(`Failed to fetch metadata`),null;let h=await m.json(),g=h.image||h.image_url||h.image_data;return g?o(g,t)||g:(console.error(`No image URL in metadata`),null)}return null}catch(e){return console.error(`Error parsing avatar record:`,e),null}}const $t=t=>{let{network:n}=e(),r=n.nodeUrl??a(n.type).nodeUrl;return U({queryKey:Zt(t??``,n.type),queryFn:async()=>t?Xt(n.type,r,t):null,enabled:!!t&&!!r&&!!n.type})},en=Ke.createInterface(),tn=(e,t)=>{let r=[];return r.push({to:a(t.type).vetDomainsReverseRegistrarAddress,value:`0x0`,data:en.encodeFunctionData(`setName`,[``]),comment:`Unsetting your current VeChain nickname of the account ${n(e?.address??``,4,4)}`,abi:en.getFunction(`setName`)}),r},nn=({onSuccess:t,onError:n})=>{let r=W(),{account:i}=j(),{network:a}=e(),o=M(()=>tn(i,a),[i,a]),s=M(async()=>{await jt(r,i?.address??``,``,``,``,a.type),t?.()},[t,r,i,a.type]),c=Y({signerAccountAddress:i?.address??``,privyUIOptions:{title:`Sign to unset your VeChain nickname`,description:`Unset your current VeChain nickname`,buttonText:`Sign to continue`},onTxConfirmed:s,onTxFailedOrCancelled:n});return{...c,clauses:o,sendTransaction:async()=>c.sendTransaction(o())}},rn=async(e,t)=>{if(!t)throw Error(`Address is required`);let n=await e.accounts.getAccount(z.of(t));return{balance:et(BigInt(n.balance)).toString(),energy:et(BigInt(n.energy)).toString()}},an=e=>[`VECHAIN_KIT_BALANCE`,e],on=e=>{let t=k();return U({queryKey:an(e),queryFn:()=>rn(t,e),enabled:!!t&&!!e&&z.isValid(e),refetchInterval:1e4})},sn=e=>[`VEBETTERDAO_BALANCE`,e,`B3TR`],cn=n=>{let{network:r}=e();return U({queryKey:sn(n),queryFn:async()=>{if(!n)throw Error(`Address is required`);let e=await st(n,{networkUrl:r.nodeUrl});if(!e)throw Error(`Failed to get b3tr balance`);let i=e[0];return t(i)},enabled:!!n&&!!r.type})},ln=e=>[`VEBETTERDAO_BALANCE`,e,`VOT3`],un=n=>{let{network:r}=e();return U({queryKey:ln(n),queryFn:async()=>{if(!n)throw Error(`Address is required`);let e=await dt(n,{networkUrl:r.nodeUrl});if(!e)throw Error(`Failed to get vot3 balance`);let i=e[0];return t(i)},enabled:!!n&&!!r.type})},dn=(e,t)=>[`VECHAIN_KIT`,`BALANCE`,`ERC20`,e,t],fn=(n,r)=>{let{network:i}=e();return U({queryKey:dn(n,r),queryFn:async()=>{if(!r)throw Error(`Address is required`);let e=await ct(n,r,{networkUrl:i.nodeUrl});if(!e)throw Error(`Failed to get vot3 balance`);let a=e[0];return t(a)},enabled:!!r&&!!i.type})},pn=async(e,t)=>ut(e,{networkUrl:t}),mn=e=>[`VECHAIN_KIT_CUSTOM_TOKEN_INFO`,e],hn=t=>{let{network:n}=e();return U({queryKey:mn(t),queryFn:async()=>{if(!t)throw Error(`Token address is required`);if(!n.nodeUrl)throw Error(`Network node URL is required`);return pn(t,n.nodeUrl)},enabled:!!n.type&&!!t,retry:(e,t)=>{if(t instanceof Error){let e=t.message.toLowerCase();if(e.includes(`cancel`)||e.includes(`abort`)||e===`token address is required`||e===`network node url is required`)return!1}return e<2},gcTime:1e3*60*5,staleTime:1e3*60})},gn=()=>{let[t,n]=he(me.CUSTOM_TOKENS,[]),{network:r}=e(),i=async e=>{if(!s(e)&&!c(e)){if(!r.nodeUrl)throw Error(`Network node URL is required`);let i={...await pn(e,r.nodeUrl),address:e};n([...t,i])}},o=e=>{n(t.filter(t=>t.address!==e))},s=e=>t.some(t=>l(t.address,e)),c=e=>{let t={vet:`0x`,vtho:a(r.type).vthoContractAddress,b3tr:a(r.type).b3trContractAddress,vot3:a(r.type).vot3ContractAddress,veDelegate:a(r.type).veDelegate};return Object.values(t).includes(e)};return{customTokens:t,addToken:i,removeToken:o,isTokenIncluded:s,isDefaultToken:c}},_n=(e,t)=>[`VECHAIN_KIT_BALANCE`,t,`CUSTOM_TOKEN`,e],vn=n=>{let{network:r}=e(),{customTokens:i}=gn();return Oe({queries:i.map(e=>({queryKey:_n(e.address,n),queryFn:async()=>{if(!e.address)throw Error(`Token address is required`);if(!n)throw Error(`Address is required`);if(!r.nodeUrl)throw Error(`Network node URL is required`);let i=await ct(e.address,n,{networkUrl:r.nodeUrl});if(!i)throw Error(`Failed to get token balance`);let a=t(i[0]);return{...e,...a}}}))})},yn=t=>{let{network:n}=e(),r=a(n.type),{data:i,isLoading:o}=on(t),{data:s,isLoading:c}=cn(t),{data:l,isLoading:u}=un(t),{data:d,isLoading:f}=fn(r.veDelegateTokenContractAddress,t),{data:p,isLoading:m}=fn(r.gloDollarContractAddress,t),h=vn(t),g=h.map(e=>e.data).filter(Boolean),_=h.some(e=>e.isLoading);return{balances:P(()=>{if(!t)return[];let e={vet:`0x`,vtho:r.vthoContractAddress,b3tr:r.b3trContractAddress,vot3:r.vot3ContractAddress,veDelegate:r.veDelegate,USDGLO:r.gloDollarContractAddress},n=[{address:e.vet,symbol:`VET`,balance:i?.balance||`0`},{address:e.vtho,symbol:`VTHO`,balance:i?.energy||`0`},{address:e.b3tr,symbol:`B3TR`,balance:s?.scaled??`0`},{address:e.vot3,symbol:`VOT3`,balance:l?.scaled??`0`},{address:e.veDelegate,symbol:`veDelegate`,balance:d?.scaled??`0`},{address:e.USDGLO,symbol:`USDGLO`,balance:p?.scaled??`0`}],a=g.map(e=>({address:e?.address||``,symbol:e?.symbol||``,balance:e?.scaled||`0`}));return[...n,...a]},[t,i,s,l,d,p,g,n.type]),isLoading:o||c||u||f||m||_}},bn={B3TR:`0x623374722d757364000000000000000000000000000000000000000000000000`,VET:`0x7665742d75736400000000000000000000000000000000000000000000000000`,VTHO:`0x7674686f2d757364000000000000000000000000000000000000000000000000`,GBP:`0x6762702d75736400000000000000000000000000000000000000000000000000`,EUR:`0x657572742d757364000000000000000000000000000000000000000000000000`},xn=async(e,t,n)=>{let r=await e.contracts.load(a(n).oracleContractAddress,He.abi).read.getLatestValue(bn[t]);if(!r)throw Error(`Failed to get price of ${t}`);return new ve(r[0].toString()).div(0xe8d4a51000).toNumber()},Sn=e=>[`VECHAIN_KIT_PRICE`,e],$=t=>{let n=k(),{network:r}=e();return U({queryKey:Sn(t),queryFn:async()=>xn(n,t,r.type),enabled:!!n&&!!r.type,retry:(e,t)=>{if(t instanceof Error){let e=t.message.toLowerCase();if(e.includes(`cancel`)||e.includes(`abort`))return!1}return e<2},gcTime:1e3*60*5,staleTime:1e3*60})},Cn=()=>{let{network:t}=e(),n=a(t.type),{data:r,isLoading:i}=$(`VET`),{data:o,isLoading:s}=$(`VTHO`),{data:c,isLoading:l}=$(`B3TR`),{data:u,isLoading:d}=$(`EUR`),{data:f,isLoading:p}=$(`GBP`);return{prices:P(()=>{let e={vet:`0x`,vtho:n.vthoContractAddress,b3tr:n.b3trContractAddress,vot3:n.vot3ContractAddress,veDelegate:n.veDelegate,USDGLO:n.gloDollarContractAddress};return{[e.vet]:r||0,[e.vtho]:o||0,[e.b3tr]:c||0,[e.vot3]:c||0,[e.veDelegate]:c||0,[e.USDGLO]:1}},[r,o,c,n.vthoContractAddress,n.b3trContractAddress,n.vot3ContractAddress,n.veDelegate,n.gloDollarContractAddress]),exchangeRates:P(()=>({eurUsdPrice:u||1,gbpUsdPrice:f||1}),[u,f]),isLoading:i||s||l||d||p}},wn=(e,t,n)=>{switch(t){case`eur`:return e/n.eurUsdPrice;case`gbp`:return e/n.gbpUsdPrice;default:return e}},Tn=(e,t=`en`,n)=>{let r={style:`currency`,minimumFractionDigits:2,maximumFractionDigits:2,currency:n?.currency??`usd`,...n};return new Intl.NumberFormat(de[t],r).format(e)},En=(e,t)=>Tn(e,fe.resolvedLanguage,{notation:`compact`,compactDisplay:`short`,currency:t?.currency??`usd`,...t}),Dn=[`usd`,`eur`,`gbp`],On=()=>{let{currentCurrency:t,setCurrency:n}=e();return N(()=>{b(`vechain_kit_currency`,t)},[t]),{currentCurrency:t,allCurrencies:Dn,changeCurrency:e=>{if(!Dn.includes(e)){console.error(`Invalid currency: ${e}`);return}n(e)}}},kn=({address:e=``})=>{let{balances:t,isLoading:n}=yn(e),{prices:r,exchangeRates:i,isLoading:a}=Cn(),{currentCurrency:o}=On(),s=P(()=>t.map(e=>{let t=r[e.address]||0,n=Number(e.balance)*t,a=wn(n,o,i);return{...e,priceUsd:t,valueUsd:n,valueInCurrency:a}}),[t,r,o,i]),c=P(()=>[...s].sort((e,t)=>t.valueInCurrency-e.valueInCurrency),[s]);return{tokens:s,sortedTokens:c,tokensWithBalance:P(()=>c.filter(e=>Number(e.balance)>0),[c]),isLoading:n||a}},An=({address:e=``})=>{let{tokensWithBalance:t,isLoading:n}=kn({address:e}),{currentCurrency:r}=On(),i=P(()=>t.reduce((e,t)=>e+t.valueInCurrency,0),[t]);return{totalBalanceInCurrency:i,totalBalanceUsd:P(()=>t.reduce((e,t)=>e+t.valueUsd,0),[t]),formattedBalance:P(()=>En(i,{currency:r}),[i,r]),isLoading:n,hasAnyBalance:t.length>0}},jn=Xe.abi,Mn=`currentRoundId`,Nn=e=>oe({abi:jn,address:e,method:Mn}),Pn=()=>{let{network:t}=e(),n=a(t.type).xAllocationVotingContractAddress;return T({abi:jn,address:n,method:Mn,args:[],queryOptions:{select:e=>e[0].toString()}})},Fn=(e,t)=>[`VECHAIN_KIT`,`IS_PERSON`,e,t],In=t=>{let{network:n}=e();return U({queryKey:Fn(t??``,n.type),queryFn:async()=>{if(!t)throw Error(`User address is required`);return lt(t,{networkUrl:n.nodeUrl})},enabled:!!t&&!!n.type,retry:(e,t)=>{if(t instanceof Error){let e=t.message.toLowerCase();if(e.includes(`cancel`)||e.includes(`abort`)||e===`user address is required`)return!1}return e<2},gcTime:1e3*60*5,staleTime:1e3*60})},Ln=Xe.abi,Rn=`getAppsOfRound`,zn=(e,t)=>te({abi:Ln,address:a(t).xAllocationVotingContractAddress,method:Rn,args:[BigInt(e??0)]}),Bn=t=>{let{network:n}=e(),r=a(n.type).xAllocationVotingContractAddress;return T({abi:Ln,address:r,method:Rn,args:[BigInt(t??0)],queryOptions:{enabled:!!t,select:e=>e[0].map(e=>({id:e.id.toString(),teamWalletAddress:e.teamWalletAddress,name:e.name,metadataURI:e.metadataURI,createdAtTimestamp:e.createdAtTimestamp.toString()}))}})},Vn=Ye.abi,Hn=e=>[`VECHAIN_KIT`,`XApps`,`Shares`,e],Un=(t,n)=>{let r=k(),{network:i}=e(),o=a(i.type).xAllocationPoolContractAddress;return U({queryKey:Hn(n),queryFn:async()=>{if(!r)throw Error(`Thor client not available`);return(await u({thor:r,calls:t.map(e=>({abi:Vn,functionName:`getAppShares`,address:o,args:[n,e]}))})).map((e,n)=>({app:t[n],share:Number(e[0]||0)/100,unallocatedShare:Number(e[1]||0)/100}))},enabled:!!r&&!!n&&!!t.length})},Wn=e=>{let{data:t}=Bn(e),n=Un(t?.map(e=>e.id)??[],e);return{data:P(()=>n.data?.map(e=>({percentage:e.share+e.unallocatedShare,id:t?.find(t=>t.id===e.app)?.id??``,app:t?.find(t=>t.id===e.app)??{}})).sort((e,t)=>Number(t.percentage)-Number(e.percentage))??[],[n.data,t]),isLoading:n.isLoading}},Gn=()=>{let e=W(),{account:t}=j();return{refresh:async()=>{let n=t?.address??``;await Promise.all([e.invalidateQueries({queryKey:[`VECHAIN_KIT_BALANCE`,n]}),e.invalidateQueries({queryKey:[`VECHAIN_KIT_PRICE`]})])}}},Kn=()=>{let{switchWallet:e}=E(),{connection:t}=j(),[n,r]=F(!1),{getStoredWallets:i,setActiveWallet:a,removeWallet:o}=C(),s=t.isInAppBrowser;return{switchWallet:M(async()=>{if(s){if(!e)return;r(!0);try{await e()}catch{}finally{r(!1)}}else return Promise.resolve()},[e,s]),isSwitching:n,getStoredWallets:i,setActiveWallet:M(e=>{a(e),x()&&window.dispatchEvent(new CustomEvent(`wallet_switched`,{detail:{address:e}}))},[a]),removeWallet:o,isInAppBrowser:s}},qn=async(e,t)=>{let n=o(e,t)||``,r=await fetch(n,{signal:AbortSignal.timeout(2e4)});if(!r.ok)throw Error(`HTTP error! status: ${r.status}`);return await r.json()},Jn=Je.abi,Yn=t=>{let n=k(),{network:r}=e();return U({queryKey:[`xAppMetaData`,t],queryFn:async()=>{if(!n)throw Error(`Thor client not available`);let e=a(r.type).x2EarnAppsContractAddress,i=n.contracts.load(e,Jn),o=(await i.read.app(t))[0][3]?.toString()||``,[s]=await i.read.baseURI();return await qn(`${s}${o}`,r.type)},enabled:!!n&&!!t})},Xn=async(e,t,n=!1)=>{if(!t)throw Error(`No URI provided`);let r=o(t,e);if(!r)throw Error(`Invalid URI`);let i=await(await fetch(r,{headers:{"X-Project-Id":`vechain-kit`}})).text();return n?JSON.parse(i):i},Zn=(e,t)=>[`VECHAIN_KIT`,`IPFS_METADATA`,e,t],Qn=(t,n=!1)=>{let{network:r}=e();return U({queryKey:Zn(r.type,t),queryFn:()=>Xn(r.type,t,n),enabled:!!t&&!!r.type,retry:(e,t)=>{if(t instanceof Error){let e=t.message.toLowerCase();if(e.includes(`cancel`)||e.includes(`abort`)||e===`no uri provided`||e===`invalid uri`)return!1}return e<2},staleTime:1/0})},$n=1024*1024*10,er=async(e,t)=>{if(!t)throw Error(`IPFS URI is required`);let n=await fetch(o(t,e)??``,{headers:{"X-Project-Id":`vechain-kit`}});if(!n.ok)throw Error(`HTTP error! status: ${n.status}`);let r=await n.blob();if(![`image/jpeg`,`image/jpg`,`image/png`,`image/gif`,`image/bmp`,`image/tiff`,`image/webp`,`image/svg+xml`].includes(r.type))throw Error(`Unsupported MIME type: ${r.type}`);if(r.size>$n)throw Error(`Image size exceeds maximum allowed size`);return new Promise((e,t)=>{let n=new FileReader;n.readAsDataURL(r),n.onloadend=()=>{e({image:n.result,mime:r.type,mediaType:i(r.type)})},n.onerror=()=>{t(Error(`Error occurred while reading blob.`))}})},tr=(e,t)=>[`VECHAIN_KIT`,`IPFS_IMAGE`,e,t],nr=t=>{let{network:n}=e();return U({queryKey:tr(n.type,t),queryFn:()=>er(n.type,t),enabled:!!t&&!!n.type,retry:(e,t)=>{if(t instanceof Error){let e=t.message.toLowerCase();if(e.includes(`cancel`)||e.includes(`abort`)||e===`ipfs uri is required`)return!1}return e<2},staleTime:1/0})},rr=t=>{let{network:n}=e();return Oe({queries:t.map(e=>({queryKey:tr(n.type,e),queryFn:()=>er(n.type,e),enabled:!!e&&!!n.type,retry:(e,t)=>{if(t instanceof Error){let e=t.message.toLowerCase();if(e.includes(`cancel`)||e.includes(`abort`)||e===`ipfs uri is required`)return!1}return e<2},staleTime:1/0}))})},ir=(t,n=!1)=>{let{network:r}=e();return Oe({queries:t.map(e=>({queryKey:Zn(r.type,e),queryFn:async()=>Xn(r.type,e,n),enabled:!!e&&!!r.type,retry:(e,t)=>{if(t instanceof Error){let e=t.message.toLowerCase();if(e.includes(`cancel`)||e.includes(`abort`)||e===`no uri provided`||e===`invalid uri`)return!1}return e<2},staleTime:1/0}))})},ar={maxSizeMB:.4,maxWidthOrHeight:1920,useWebWorker:!0},or=async e=>{let t=[];try{for(let n of e){let e=await ft(n.file,ar);t.push(e)}return t}catch(e){throw console.error(`compress error`,e),e}},sr=({compressImages:e,defaultImages:t})=>{let[n,r]=F(t??[]);N(()=>{t&&r(t)},[t]);let[i,a]=F([]),o=M(e=>r(t=>t.filter((t,n)=>n!==e)),[]);return{uploadedImages:n,setUploadedImages:r,onUpload:M(async(t,n=!0)=>{a([]);let i=[];for(let n of t){let t=n;e&&(t=await ft(n,ar));let r={file:t,image:URL.createObjectURL(n)};i.push(r)}r(e=>[...i,...n?e.filter(e=>!i.some(t=>t.file.name===e.file.name)):[]])},[e]),onRemove:o,invalidDateError:i}},cr=({compressImage:e,defaultImage:t})=>{let[n,r]=F(t);N(()=>{t&&r(t)},[t]);let i=M(()=>r(void 0),[]);return{uploadedImage:n,setUploadedImage:r,onUpload:M(async t=>{let n=t;e&&(n=await ft(n,ar));let i={file:n,image:URL.createObjectURL(n)};return r(i),i},[e]),onRemove:i}},lr=(e,t)=>{let{account:n}=j(),{t:r}=De(),{sendTransaction:i,isTransactionPending:a,isWaitingForWalletConfirmation:o,txReceipt:s,status:c,resetStatus:l,error:u}=Y({signerAccountAddress:n?.address??``,privyUIOptions:{title:r(`ConfirmSwapTitle`,{defaultValue:`Confirm Swap`}),description:r(`ConfirmSwapDescription`,{defaultValue:`Please confirm the swap transaction in your wallet`}),buttonText:r(`Confirm`,{defaultValue:`Confirm`})}});return{executeSwap:M(async()=>{if(!e||!t)throw Error(`Missing swap parameters or quote`);if(!t.aggregator)throw Error(`Aggregator not found for quote from ${t.aggregatorName}`);let n=await t.aggregator.buildSwapTransaction(e,t);if(n.length===0)throw Error(`Failed to build swap transaction`);await i(n)},[e,t,i]),isTransactionPending:a,isWaitingForWalletConfirmation:o,txReceipt:s,status:c,resetStatus:l,error:u}},ur=e=>e===`0x`||e===K,dr=(e,t,n,r)=>{let i={},a=r.toLowerCase();for(let t of e)try{let e=Qe({abi:Te,eventName:`Transfer`,topics:t.topics,data:t.data}),n=e.args.from.toLowerCase(),r=e.args.to.toLowerCase(),o=e.args.value,s=typeof o==`bigint`?o:BigInt(o);if(n!==a&&r!==a)continue;let c=t.address.toLowerCase(),l=i[c]??{inflow:0n,outflow:0n};n===a&&(l.outflow+=s),r===a&&(l.inflow+=s),i[c]=l}catch{continue}if(n!==void 0){let e=BigInt(n);if(e>0n){let t=i[K]??{inflow:0n,outflow:0n};t.outflow+=e,i[K]=t}}for(let e of t){if(e.recipient.toLowerCase()!==a)continue;let t=BigInt(e.amount);if(t<=0n)continue;let n=i[K]??{inflow:0n,outflow:0n};n.inflow+=t,i[K]=n}return i},fr=async(e,t,n,r)=>{try{if(n.length===0)return{gasCostVTHO:0,success:!1,error:`No clauses found for simulation`};let i=await r.transactions.simulateTransaction(n,{caller:e.userAddress}),a=!1,o,s=2e5,c={};for(let t=0;t<i.length;t++){let r=i[t];r.reverted&&(a=!0,o=r.vmError||`Transaction reverted`),s+=r.gasUsed;let l=n[t],u=dr(r.events,r.transfers,l?.value,e.userAddress);for(let[e,t]of Object.entries(u)){let n=c[e]??{inflow:0n,outflow:0n};c[e]={inflow:n.inflow+t.inflow,outflow:n.outflow+t.outflow}}}if(a)return{gasCostVTHO:0,success:!1,error:o||`Transaction reverted`};let l=s/1e5,u=ur(e.fromTokenAddress),d=ur(e.toTokenAddress),f=BigInt(e.amountIn);if(u){let e=c[K]??{inflow:0n,outflow:0n};if(e.outflow>f)return{gasCostVTHO:l,success:!1,error:`VET outflow mismatch: expected ${f.toString()}, got ${e.outflow.toString()}`};for(let[e,t]of Object.entries(c))if(e!==K&&t.outflow>0n)return{gasCostVTHO:l,success:!1,error:`Unexpected token outflow: token ${e} has outflow ${t.outflow.toString()}, expected 0`}}else{let t=e.fromTokenAddress.toLowerCase(),n=c[t]??{inflow:0n,outflow:0n};if(n.outflow>f)return{gasCostVTHO:l,success:!1,error:`Token outflow mismatch: expected ${f.toString()}, got ${n.outflow.toString()}`};for(let[e,n]of Object.entries(c))if(e!==t&&n.outflow>0n)return{gasCostVTHO:l,success:!1,error:`Unexpected token outflow: ${e===K?`VET`:e} has outflow ${n.outflow.toString()}, expected 0`}}if(t.minimumOutputAmount&&t.minimumOutputAmount>0n)if(d){let e=c[K]??{inflow:0n,outflow:0n};if(e.inflow<t.minimumOutputAmount)return{gasCostVTHO:l,success:!1,error:`VET inflow mismatch: expected ${t.minimumOutputAmount.toString()}, got ${e.inflow.toString()}`}}else{let n=c[e.toTokenAddress.toLowerCase()]??{inflow:0n,outflow:0n};if(n.inflow<t.minimumOutputAmount)return{gasCostVTHO:l,success:!1,error:`Token inflow mismatch: expected ${t.minimumOutputAmount.toString()}, got ${n.inflow.toString()}`}}return{gasCostVTHO:l,success:!0}}catch(e){return{gasCostVTHO:0,success:!1,error:e instanceof Error?e.message:`Simulation failed`}}},pr=e=>e.startsWith(`0x`)?BigInt(e).toString():e,mr=(e,t)=>({name:e,type:`function`,inputs:t.map(e=>({name:e.name,type:e.type,internalType:e.internalType,components:e.components})),outputs:[],stateMutability:`nonpayable`}),hr=(e,t)=>{if(Array.isArray(e)&&e.length>0){let n=e[0];if(typeof n==`object`&&`name`in n&&`type`in n&&n.type===`function`)return e;if(typeof n==`object`&&`name`in n&&`type`in n&&!(`stateMutability`in n||`outputs`in n))return[mr(t,e)]}return e},gr=e=>{try{let t=e.functionName||e.name;if(!t)throw Error(`Function name is required (either functionName or name must be provided)`);return $e({abi:hr(e.abi,t),functionName:t,args:e.args})}catch(t){console.error(`Failed to encode function call:`,t);let n=e.functionName||e.name||`unknown`;throw Error(`Failed to encode function call ${n}: ${t instanceof Error?t.message:`Unknown error`}`)}},_r=e=>{let t=gr(e.functionCall);return{to:e.to,value:pr(e.value),data:t,comment:e.comment||`Swap on aggregator`}},vr=e=>{let t={name:e.name,getIcon:e.getIcon,async getQuote(n,r){try{let r=new URLSearchParams({fromAddress:n.fromTokenAddress,toAddress:n.toTokenAddress,amountIn:n.amountIn,recipient:n.userAddress,slippageBps:String((n.slippageTolerance||1)*100),network:e.network}),i=new URL(e.apiBaseUrl);i.search=r.toString();let a=await fetch(i);if(!a.ok)throw Error(`API request failed: ${a.status} ${a.statusText}`);let o=await a.json(),s=o.clauses.map(_r),c=BigInt(o.amountOut),l=BigInt(o.amountOutMin);return{aggregatorName:e.name,aggregator:t,outputAmount:c,minimumOutputAmount:l,priceImpact:0,data:{clauses:s,path:o.path}}}catch(n){return console.error(`${e.name} getQuote failed:`,n),{aggregatorName:e.name,aggregator:t,outputAmount:0n,priceImpact:0,minimumOutputAmount:0n,data:{clauses:[],path:[]}}}},async simulateSwap(e,t,n){try{return fr(e,t,await this.buildSwapTransaction(e,t),n)}catch(e){return{gasCostVTHO:0,success:!1,error:e instanceof Error?e.message:`Failed to build swap transaction for simulation`}}},async buildSwapTransaction(t,n){if(!n.data||typeof n.data!=`object`||!(`clauses`in n.data))throw Error(`Invalid quote data: clauses not found`);let r=n.data.clauses;if(r.length===0)throw Error(`No clauses found in quote`);if(e.supportedAddresses&&e.supportedAddresses.length>0){let t=e.supportedAddresses.map(e=>e.toLowerCase());if(r=r.filter(e=>e.to?t.includes(e.to.toLowerCase()):!1),r.length===0)throw Error(`No clauses found matching supported addresses`)}if(!n.minimumOutputAmount||n.minimumOutputAmount===0n)throw Error(`Invalid quote: minimumOutputAmount is missing or zero`);return r}};return t},yr={main:{supportedAddresses:[`0xE5fA980a6EfE5B79C2150a529da06AeF455963b6`,`0x7C755EC0165fCD926cC6faB10E7BB16a72E9f34A`]},test:{supportedAddresses:[]},solo:{supportedAddresses:[]}},br=e=>e===`0x`||e===`0x0000000000000000000000000000000000000000`,xr=e=>new URL(`api/quote/vck`,f).toString(),Sr=e=>{let t=yr[e]??yr.main,n=vr({name:`VeTrade.vet`,apiBaseUrl:xr(e),network:e,getIcon:(e=`20px`)=>_e.createElement(v,{boxSize:e}),supportedAddresses:t.supportedAddresses});return{...n,async simulateSwap(e,t,n){try{return fr(e,t,await this.buildSwapTransaction(e,t),n)}catch(e){return{gasCostVTHO:0,success:!1,error:e instanceof Error?e.message:`Simulation failed`}}},async buildSwapTransaction(e,r){let i=[],a=await n.buildSwapTransaction(e,r);if(!a||a.length===0)throw Error(`Failed to build swap transaction`);if(br(e.fromTokenAddress))a[0].value=e.amountIn;else{if(t.supportedAddresses.length===0)throw Error(`No supported addresses configured for VeTrade on this network`);let n=R.ofAbi(Ve.abi),o=z.of(e.fromTokenAddress),s=BigInt(e.amountIn);i.push(B.callFunction(o,n.getFunction(`approve`),[a[0].to,s.toString()],H.of(0n,V.wei),{comment:`Approve ${r.aggregatorName} to access ${e.fromTokenAddress}`}))}return i.push(...a),i}}},Cr=e=>e===`0x`||e===`0x0000000000000000000000000000000000000000`,wr=()=>BigInt(Math.floor(Date.now()/1e3)+1200),Tr=e=>{let t={name:e.name,getIcon:e.getIcon,async getQuote(n,r){let i=[Cr(n.fromTokenAddress)?e.wrappedVET:n.fromTokenAddress,Cr(n.toTokenAddress)?e.wrappedVET:n.toTokenAddress],a=BigInt(n.amountIn);try{let[o]=await r.contracts.load(e.routerAddress,We.abi).read.getAmountsOut(a,i),s=Array.isArray(o)?o:[o],c=s[s.length-1];if(!c||c===0n)throw Error(`Output amount is zero or invalid`);if(typeof c!=`bigint`)throw Error(`Output amount is not a valid bigint`);let l=n.slippageTolerance||1,u=c*BigInt(1e4-l*100)/BigInt(1e4);return{aggregatorName:e.name,aggregator:t,outputAmount:c,priceImpact:0,minimumOutputAmount:u,data:{path:i,routerAddress:e.routerAddress}}}catch(n){return console.error(`${e.name} getQuote failed:`,n),{aggregatorName:e.name,aggregator:t,outputAmount:0n,priceImpact:0,minimumOutputAmount:0n,data:{path:i,routerAddress:e.routerAddress}}}},async simulateSwap(e,t,n){return fr(e,t,await this.buildSwapTransaction(e,t),n)},async buildSwapTransaction(t,n){if(!n.data||typeof n.data!=`object`||!(`path`in n.data))throw Error(`Invalid quote data`);let r=wr();if(!n.minimumOutputAmount||n.minimumOutputAmount===0n)throw Error(`Invalid quote: minimumOutputAmount is missing or zero`);let i=n.minimumOutputAmount,a=BigInt(t.amountIn);if(i===0n)throw Error(`Invalid quote: minimumOutputAmount is zero`);let o=Cr(t.fromTokenAddress),s=Cr(t.toTokenAddress),c=R.ofAbi(We.abi),l=[];if(o)l.push(B.callFunction(z.of(e.routerAddress),c.getFunction(`swapExactETHForTokens`),[i.toString(),n.data.path,t.userAddress,r.toString()],H.of(a,V.wei),{comment:`Swap on ${n.aggregatorName}`}));else{let o=R.ofAbi(Ve.abi),u=z.of(t.fromTokenAddress),d=z.of(e.routerAddress);l.push(B.callFunction(u,o.getFunction(`approve`),[d.toString(),a.toString()],H.of(0n,V.wei),{comment:`Swap on ${n.aggregatorName}`})),s?l.push(B.callFunction(d,c.getFunction(`swapExactTokensForETH`),[a.toString(),i.toString(),n.data.path,t.userAddress,r.toString()],H.of(0n,V.wei),{comment:`Swap on ${n.aggregatorName}`})):l.push(B.callFunction(d,c.getFunction(`swapExactTokensForTokens`),[a.toString(),i.toString(),n.data.path,t.userAddress,r.toString()],H.of(0n,V.wei),{comment:`Swap on ${n.aggregatorName}`}))}return l}};return t},Er={main:{routerAddress:`0xf21Dd7108D93af56FaB07423EfB90F4a3604DA89`,wrappedVET:`0xf9b02b47694fd635A413F16dC7B38aF06Cc16fe5`},test:{routerAddress:K,wrappedVET:K},solo:{routerAddress:K,wrappedVET:K}},Dr=e=>{let t=Er[e]??Er.main;return Tr({name:`BetterSwap.io`,routerAddress:t.routerAddress,wrappedVET:t.wrappedVET,getIcon:(e=`20px`)=>_e.createElement(g,{boxSize:e})})},Or=e=>[Sr(e),Dr(e)],kr=(e,t,n,r,i=1,a=!0)=>{let o=k(),{connection:s}=j(),c=e?.address??null,l=t?.address??null,{data:u}=hn(c===`0x`||c===K||!c?``:c),{data:d}=hn(l===`0x`||l===K||!l?``:l),f=P(()=>!c||c===`0x`||c===K||!u?18:Number(u?.decimals??18),[c,u?.decimals]),p=P(()=>!l||l===`0x`||l===K||!d?18:Number(d?.decimals??18),[l,d?.decimals]),m=P(()=>{if(!c||!l||!n||!r)return null;let e;try{e=it(n,f)}catch(e){return console.error(`Failed to parse amount:`,n,e),null}return e<=0n?null:{fromTokenAddress:c,toTokenAddress:l,amountIn:e.toString(),userAddress:r,slippageTolerance:i}},[c,l,n,r,i,f]),{data:h,isLoading:g,error:_}=U({queryKey:[`unified-swap-quotes`,m,s.network],queryFn:async()=>{if(!m||!o||!s.network)return{quotes:[],best:null};let e=Or(s.network).map(async e=>{try{let t=await e.getQuote(m,o);try{let n=await e.simulateSwap(m,t,o);return{...t,aggregator:e,reverted:!n.success,revertReason:n.error,gasCostVTHO:n.gasCostVTHO}}catch(n){return console.error(`Failed to simulate swap for ${e.name}:`,n),{...t,aggregator:e,reverted:!0,revertReason:n instanceof Error?n.message:`Simulation failed`,gasCostVTHO:0}}}catch(t){return console.error(`Failed to get quote from ${e.name}:`,t),null}}),t=(await Promise.all(e)).filter(e=>e!==null&&e.outputAmount!==0n),n=null;if(t.length>0){let e=t.filter(e=>!(e.reverted??!1));n=(e.length>0?e:t).reduce((e,t)=>{let n=BigInt(e.outputAmount||`0`);return BigInt(t.outputAmount||`0`)>n?t:e})}return{quotes:t,best:n}},enabled:a&&m!==null&&o!=null,refetchInterval:1e4});return{bestQuote:h?.best??null,quotes:h?.quotes??[],isLoading:g,error:_,from:e?{...e,address:c??``,decimals:f}:null,to:t?{...t,address:l??``,decimals:p}:null}},Ar={open:()=>{console.warn(`DAppKit is not configured. Add dappKit prop to VeChainKitContext to enable wallet modal.`)},close:()=>{},onConnectionStatusChange:()=>{}},jr=()=>{let t=!!e().dappKit,n=null;try{n=ze()}catch{}return!t||!n?Ar:n},Mr=()=>{let{loginMethods:t}=e(),n=t?.length===1&&t[0].method===`dappkit`,{openConnectModal:r,closeConnectModal:i,isConnectModalOpen:a}=A(),{open:o,close:s}=jr();return{open:n?o:e=>r(e),close:n?s:i,isOpen:n?!1:a}},Nr=({children:e})=>L(I,{children:e}),Pr=()=>{let{openAccountModal:e,closeAccountModal:t,isAccountModalOpen:n}=A();return{open:()=>e(),close:t,isOpen:n}},Fr=({children:e})=>L(I,{children:e}),Ir=()=>{let{openTransactionModal:e,closeTransactionModal:t,isTransactionModalOpen:n}=A();return{open:e,close:t,isOpen:n}},Lr=({children:e})=>L(I,{children:e}),Rr=()=>{let{openTransactionToast:e,closeTransactionToast:t,isTransactionToastOpen:n}=A();return{open:e,close:t,isOpen:n}},zr=({children:e})=>L(I,{children:e}),Br=()=>{let{connection:e}=j(),{openConnectModal:t,closeConnectModal:n,isConnectModalOpen:r,openAccountModal:i,closeAccountModal:a,isAccountModalOpen:o}=A();return{open:n=>{e.isConnected?i(void 0,n):t()},close:()=>{o&&a(),r&&n()},isOpen:r||o}},Vr=({children:e})=>L(I,{children:e}),Hr=()=>{let{openAccountModal:e,closeAccountModal:t,isAccountModalOpen:n,setAccountModalContent:r}=A();return{open:t=>{e({type:`choose-name`,props:{setCurrentContent:r,onBack:()=>r(`main`),initialContentSource:`main`}},t)},close:()=>{t()},isOpen:n}},Ur=({children:e})=>L(I,{children:e}),Wr=()=>{let{openAccountModal:e,closeAccountModal:t,isAccountModalOpen:n,setAccountModalContent:r}=A();return{open:t=>{e({type:`send-token`,props:{setCurrentContent:r}},t)},close:()=>{t()},isOpen:n}},Gr=({children:e})=>L(I,{children:e}),Kr=()=>{let{openAccountModal:e,closeAccountModal:t,isAccountModalOpen:n,setAccountModalContent:r}=A();return{open:t=>{e({type:`swap-token`,props:{setCurrentContent:r,fromTokenAddress:t?.fromTokenAddress,toTokenAddress:t?.toTokenAddress}},{isolatedView:t?.isolatedView})},close:()=>{t()},isOpen:n}},qr=({children:e})=>L(I,{children:e}),Jr=()=>{let{openAccountModal:e,closeAccountModal:t,isAccountModalOpen:n}=A();return{open:t=>{e(`ecosystem`,t)},close:()=>{t()},isOpen:n}},Yr=({children:e})=>L(I,{children:e}),Xr=()=>{let{openAccountModal:e,closeAccountModal:t,isAccountModalOpen:n}=A();return{open:t=>{e(`notifications`,t)},close:()=>{t()},isOpen:n}},Zr=({children:e})=>L(I,{children:e}),Qr=()=>{let{openAccountModal:e,closeAccountModal:t,isAccountModalOpen:n,setAccountModalContent:r}=A();return{open:t=>{e({type:`faq`,props:{onGoBack:()=>r(`main`),showLanguageSelector:!1}},t)},close:()=>{t()},isOpen:n}},$r=({children:e})=>L(I,{children:e}),ei=()=>{let{openAccountModal:e,closeAccountModal:t,isAccountModalOpen:n,setAccountModalContent:r}=A();return{open:()=>{e({type:`account-customization`,props:{setCurrentContent:r}})},close:()=>{t()},isOpen:n}},ti=({children:e})=>L(I,{children:e}),ni=()=>{let{openAccountModal:e,closeAccountModal:t,isAccountModalOpen:n}=A();return{open:t=>{e(`receive-token`,t)},close:()=>{t()},isOpen:n}},ri=({children:e})=>L(I,{children:e}),ii=()=>{let{privy:t,loginMethods:n}=e(),r=t?.appId===s,i=e=>n?Array.isArray(e)?e.some(e=>n.some(t=>t.method===e)):n.some(t=>t.method===e):!0,a=P(()=>n?n.length===0||i(`ecosystem`):!0,[n]),o=P(()=>i(`vechain`),[n]),c=P(()=>i(`dappkit`),[n]),l=P(()=>i(`passkey`),[n]),u=P(()=>i(`email`),[n]),d={showGoogleLogin:P(()=>i(`google`),[n]),showEmailLogin:u,showPasskey:l,showVeChainLogin:o,showDappKit:c,showEcosystem:a,showMoreLogin:P(()=>i(`more`),[n]),showGithubLogin:P(()=>i(`github`),[n]),isOfficialVeChainApp:!1};return t?r?{...d,isOfficialVeChainApp:!0}:{...d}:{...d,showGoogleLogin:!1,showEmailLogin:!1,showPasskey:!1,showMoreLogin:!1}},ai=e=>{let{openUpgradeSmartAccountModal:t,closeUpgradeSmartAccountModal:n,isUpgradeSmartAccountModalOpen:r}=A();return{open:()=>t(e),close:n,isOpen:r}},oi=({children:e})=>L(I,{children:e}),si=()=>{let{openAccountModal:e,closeAccountModal:t,isAccountModalOpen:n}=A();return{open:t=>{e(`profile`,t)},close:()=>{t()},isOpen:n}},ci=({children:e})=>L(I,{children:e}),li=()=>{let{isolatedView:e,closeAccountModal:t}=A();return{isolatedView:e,closeAccountModal:t}},ui=()=>{let{openAccountModal:e,closeAccountModal:t,isAccountModalOpen:n}=A();return{open:t=>{e(`settings`,t)},close:()=>{t()},isOpen:n}},di=({children:e})=>L(I,{children:e}),fi=[{id:`welcome`,title:`Welcome to the VeChain`,description:`Welcome! Here you can manage your wallet, send tokens, and interact with the VeChain blockchain and its applications.`,timestamp:Date.now(),status:`success`,isRead:!1}],pi=()=>{let{account:e}=j(),t=M(e=>{let t=e?.toLowerCase();return{notifications:`vechain_kit_notifications_${t}`,archived:`vechain_kit_archived_notifications_${t}`,initialized:`vechain_kit_notifications_initialized_${t}`}},[]),n=M(()=>{if(!e?.address||!x())return;let n=t(e.address);S(n.initialized)||(b(n.notifications,JSON.stringify(fi)),b(n.initialized,`true`))},[e?.address,t]);N(()=>{n()},[n]);let r=M(()=>{if(!e?.address||!x())return[];let n=S(t(e.address).notifications);return n?JSON.parse(n):[]},[e?.address,t]),i=M(()=>{if(!e?.address||!x())return[];let n=S(t(e.address).archived);return n?JSON.parse(n):[]},[e?.address,t]),a=M(n=>{if(!e?.address||!x())return;let i=t(e.address),a=r(),o=S(i.archived),s=o?JSON.parse(o):[];if([...a,...s].some(e=>e.title===n.title))return;let c={...n,id:n.id||Math.random().toString(36).substring(7),timestamp:Date.now(),isRead:!1};b(i.notifications,JSON.stringify([c,...a]))},[e?.address,r,t]),o=M(n=>{if(!e?.address||!x())return;let i=t(e.address),a=r().filter(e=>e.id!==n);b(i.notifications,JSON.stringify(a))},[e?.address,r,t]);return{getNotifications:r,getArchivedNotifications:i,addNotification:a,clearAllNotifications:M(()=>{if(!e?.address||!x())return;let n=t(e.address),a=r();b(n.archived,JSON.stringify([...i(),...a])),b(n.notifications,JSON.stringify([]))},[e?.address,r,i,t]),markAsRead:M(n=>{if(!e?.address||!x())return;let a=t(e.address),o=r(),s=i(),c=o.find(e=>e.id===n),l=o.filter(e=>e.id!==n);if(c){let e=[{...c,isRead:!0},...s];b(a.notifications,JSON.stringify(l)),b(a.archived,JSON.stringify(e))}},[e?.address,r,i,t]),deleteNotification:o}},mi=async(e,t,n,r)=>{let i=await e.contracts.load(a(r).accountFactoryAddress,G.abi).read.upgradeRequiredForAccount(t,BigInt(n));if(!i)throw Error(`Failed to get upgrade required for contract address ${t}`);return i[0]},hi=(e,t,n)=>[`VECHAIN_KIT`,`SMART_ACCOUNT`,`FACTORY`,`NEEDS_UPGRADE_FOR_ACCOUNT`,e,t,n],gi=(t,n)=>{let r=k(),{network:i}=e();return U({queryKey:hi(t,n,i.type),queryFn:async()=>mi(r,t,n,i.type),enabled:!!r&&!!i&&!!t&&!!n&&t!==``})},_i=()=>{let{t:e}=De(),{account:t,connection:n,smartAccount:r}=j(),{addNotification:i,getNotifications:a}=pi(),{data:o}=gi(r?.address??``,3);N(()=>{if(!n.isConnectedWithPrivy||!t?.address)return;let r=a(),s=`smart_account_upgrade_${t.address.toLowerCase()}`;!r.some(e=>e.id===s)&&o&&i({id:s,title:e(`Account Upgrade Required`),description:e(`A new upgrade is available for your smart account. Please head over to the 'Access and Security' section to upgrade it.`),status:`warning`})},[n.isConnectedWithPrivy,t?.address,o]),N(()=>{!n.isConnectedWithPrivy||!t?.address||a().some(e=>e.id===`smart_account_${t.address.toLowerCase()}`)||i({id:`smart_account_${t.address.toLowerCase()}`,title:e(`Smart Account detected`),description:e(`You have an active smart account associated to this wallet. It has been set as your main identity.`),status:`info`})},[n.isConnectedWithPrivy,t?.address]),N(()=>{if(!n.isConnectedWithPrivy||!t?.address)return;let r=a(),o=r.some(e=>e.id===`multiclause_warning_${t.address.toLowerCase()}`),s=r.some(e=>e.id===`multiclause_support_${t.address.toLowerCase()}`);o&&!s&&i({id:`multiclause_support_${t.address.toLowerCase()}`,title:e(`Multiclause Transactions Are Now Supported`),description:e(`Good news! Multiclause transactions are now fully supported for smart accounts. You can now enjoy a better user experience, lower gas costs, and enchanced security.`),status:`info`})},[n.isConnectedWithPrivy,t?.address])},vi=()=>{let[e,t]=F(!1),[n,r]=F(null),[i,a]=F(null),{connection:o,account:s}=j(),{requestCertificate:c}=E(),l=ue();return{signMessage:M(async e=>{if(!s)throw Error(`Account not found`);t(!0),a(null),r(null);try{let t=null;if(o.isConnectedWithDappKit)t=(await c({purpose:`agreement`,payload:{type:`text`,content:e}},{signer:s.address})).signature;else{if(!l)throw Error(`Privy is not configured. Please configure the privy prop in VeChainKitContext to use this feature.`);t=await l.signMessage(e)}return r(t),t}catch(e){let t=e instanceof Error?e:Error(String(e));throw a(t),t}finally{t(!1)}},[o,l,s?.address]),isSigningPending:e,signature:n,error:i,reset:M(()=>{t(!1),r(null),a(null)},[])}},yi=()=>{let[e,t]=F(!1),[n,r]=F(null),[i,a]=F(null),{signer:o}=E(),{connection:s}=j(),c=ue();return{signTypedData:M(async(e,n)=>{t(!0),a(null),r(null);try{let t;if(s.isConnectedWithDappKit){let r={...e.domain,salt:e.domain?.salt?Buffer.from(e.domain.salt).toString(`hex`):void 0};t=await o.signTypedData(r,e.types,e.message,void 0,n)}else{if(!c)throw Error(`Privy is not configured. Please configure the privy prop in VeChainKitContext to use this feature.`);t=await c.signTypedData(e)}return r(t),t}catch(e){if(e&&typeof e==`object`&&`statusCode`in e&&e.statusCode===4001){let e=Error(`User denied signature request`);throw a(e),e}let t=e instanceof Error?e:Error(typeof e==`object`?JSON.stringify(e):String(e));throw console.error(t),a(t),t}finally{t(!1)}},[s,c]),isSigningPending:e,signature:n,error:i,reset:M(()=>{t(!1),r(null),a(null)},[])}},bi=()=>{let{loginWithPasskey:e}=je();return{loginWithPasskey:async()=>{try{await e()}catch(e){throw e}}}};let xi=!1;const Si=()=>{let{createWallet:e}=ke(),{initOAuth:t}=Ae({onComplete:M(async({isNewUser:t})=>{if(t&&!xi){xi=!0;try{await e()}catch(e){throw xi=!1,console.error(`Failed to create wallet:`,e),e}}},[e])});return{initOAuth:async({provider:e})=>{try{await t({provider:e})}catch(e){throw e}}}},Ci=()=>{let{login:e}=w(),{setConnectionCache:t}=ie(),{data:n}=gt([s]);return{login:async()=>{try{await e(s),t({name:`VeChain`,logoUrl:n?.[s]?.logo_url,appId:s,website:y})}catch(e){throw ge({error:e,mobileBrowserPopupMessage:`Your mobile browser blocked the login window. Please click 'Try again' to open the login window or change your browser settings.`,rejectedMessage:`Login request was cancelled.`,defaultMessage:`There was an unexpected issue logging in with VeChain. Please try again or contact support.`})}}}},wi=`vechain-kit-app-hub-apps`,Ti=`vechain-kit-app-hub-apps-expiry`,Ei=()=>[`VECHAIN_KIT`,`appHub`,`apps`],Di=async()=>{if(typeof window<`u`)try{let e=S(wi),t=S(Ti);if(e&&t){let n=parseInt(t,10);if(Date.now()<n)return JSON.parse(e)}}catch{console.warn(`Invalid app-hub cache, fetching fresh data`)}let e=new URL(`contents/apps`,p),t=await fetch(e);if(!t.ok)throw Error(`Failed to fetch app directories`);let n=(await t.json()).map(async e=>{if(e.type!==`dir`)return null;let t=new URL(`master/apps/${e.name}/manifest.json`,_),n=await fetch(t);if(!n.ok)return console.warn(`Failed to fetch manifest for ${e.name}`),null;try{let t=await n.json(),r=new URL(`master/apps/${e.name}/logo.png`,_);return{id:e.name,name:t.name,description:t.desc,url:t.href,logo:r.toString(),category:t.category,tags:t.tags||[],isVeWorldSupported:t.isVeWorldSupported||!1,repo:t.repo,contracts:t.contracts,veBetterDaoId:t.veBetterDaoId}}catch(t){return console.warn(`Error parsing manifest for ${e.name}:`,t),null}}),r=(await Promise.all(n)).filter(e=>e!==null);if(typeof window<`u`)try{b(wi,JSON.stringify(r)),b(Ti,(Date.now()+864e5).toString())}catch(e){console.warn(`Failed to cache app-hub data:`,e)}return r},Oi=()=>U({queryKey:Ei(),queryFn:async()=>{try{return await Di()}catch(e){let t=localStorage.getItem(wi);if(t)return JSON.parse(t);throw e}},staleTime:1e3*60*60,retry:2}),ki=()=>{let{currentLanguage:t,setLanguage:n}=e();return{currentLanguage:t,setLanguage:n}},Ai=()=>{let{currentCurrency:t,setCurrency:n}=e();return{currentCurrency:t,setCurrency:n}},ji=()=>{let[e,t]=F(!0),n=`vechain_kit_feature_announcement_closed`;return N(()=>{S(n)&&t(!1)},[]),{isVisible:e,closeAnnouncement:()=>{b(n,`true`),t(!1)}}},Mi=()=>{let[e,t]=F(!0);return N(()=>{if(!x()){t(!1);return}let e=()=>{t(window.matchMedia(`(display-mode: standalone)`).matches||window.standalone||document.referrer.includes(`android-app://`))};return e(),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`resize`,e)}},[]),e},Ni=()=>{N(()=>{let e=document.querySelector(`.chakra-modal__content`);e&&(e.scrollTop=0)},[])},Pi=async(e,t,n)=>{if(!n)throw Error(`Network type is required`);if(!t)throw Error(`Version is required`);let r=e.contracts.load(a(n).accountFactoryAddress,G.abi),i;switch(t){case 1:case 2:i=r.read.accountImplementationV1();break;case 3:i=r.read.accountImplementationV3();break;default:throw Error(`Invalid version, must be between 1 and 3`)}let o=await i;if(!o)throw Error(`Failed to get account implementation address`);return o[0].toString()},Fi=(e,t)=>[`VECHAIN_KIT`,`SMART_ACCOUNT`,`FACTORY`,`IMPLEMENTATION_ADDRESS`,e,t],Ii=t=>{let n=k(),{network:r}=e();return U({queryKey:Fi(t,r.type),queryFn:async()=>Pi(n,t,r.type),enabled:!!n&&!!t&&!!r})},Li=async(e,t)=>{if(!t)throw Error(`Network type is required`);let n=await e.contracts.load(a(t).accountFactoryAddress,G.abi).read.currentAccountImplementationVersion();if(!n)throw Error(`Failed to get current account implementation version`);return parseInt(n[0].toString())},Ri=e=>[`VECHAIN_KIT`,`SMART_ACCOUNT`,`FACTORY`,`CURRENT_ACCOUNT_IMPLEMENTATION_VERSION`,e],zi=()=>{let t=k(),{network:n}=e();return U({queryKey:Ri(n.type),queryFn:async()=>Li(t,n.type),enabled:!!t&&!!n})},Bi=async(e,t,n)=>{if(!t)throw Error(`Owner address is required`);if(!n)throw Error(`Network type is required`);let r=await e.contracts.load(a(n).accountFactoryAddress,G.abi).read.getAccountAddress(t);if(!r)throw Error(`Failed to get account address of ${t}`);return r[0].toString()},Vi=(e,t)=>[`VECHAIN_KIT`,`SMART_ACCOUNT`,`FACTORY`,`ADDRESS`,e,t],Hi=t=>{let n=k(),{network:r}=e();return U({queryKey:Vi(t,r.type),queryFn:async()=>Bi(n,t,r.type),enabled:!!n&&!!t&&!!r})},Ui=async(e,t)=>{if(!t)throw Error(`Account address is required`);let n=await e.accounts.getAccount(z.of(String(t)));if(!n)throw Error(`Account not found`);return n.hasCode},Wi=e=>[`VECHAIN_KIT`,`SMART_ACCOUNT`,`IS_DEPLOYED`,e],Gi=e=>{let t=re(),n=Fe.at(t);return U({queryKey:Wi(e),queryFn:async()=>Ui(n,e),enabled:!!n&&!!e})},Ki=async(e,t,n,r,i)=>{let o=await e.contracts.load(a(i).accountFactoryAddress,G.abi).read.upgradeRequired(t,n,BigInt(r));if(!o)throw Error(`Failed to get upgrade required of contract address ${a(i).accountFactoryAddress}`);return o[0]},qi=(e,t,n,r)=>[`VECHAIN_KIT`,`SMART_ACCOUNT`,`FACTORY`,`UPGRADE_REQUIRED`,e,t,n,r],Ji=(t,n,r)=>{let i=k(),{network:a}=e();return U({queryKey:qi(t,n,r,a.type),queryFn:async()=>Ki(i,t,n,r,a.type),enabled:!!i&&!!t&&!!n&&!!a.type})},Yi=()=>{let t=W(),{connectedWallet:n,smartAccount:r}=j(),{network:i}=e();return{refresh:async()=>{let e=n?.address??``,a=r?.address??``;await Promise.all([t.cancelQueries({queryKey:Vi(e,i.type)}),t.cancelQueries({queryKey:ne(a,e,i.type)}),t.cancelQueries({queryKey:ce(e,i.type)}),t.cancelQueries({queryKey:Ri(i.type)}),t.cancelQueries({queryKey:qi(a,e,3,i.type)}),t.cancelQueries({queryKey:hi(a,3,i.type)}),t.cancelQueries({queryKey:Fi(3,i.type)})]),await Promise.all([t.refetchQueries({queryKey:Vi(e,i.type)}),t.refetchQueries({queryKey:ne(a,e,i.type)}),t.refetchQueries({queryKey:ce(e,i.type)}),t.refetchQueries({queryKey:Ri(i.type)}),t.refetchQueries({queryKey:qi(a,e,3,i.type)}),t.refetchQueries({queryKey:hi(a,3,i.type)}),t.refetchQueries({queryKey:Fi(3,i.type)})])}}},Xi=()=>{let e=W(),{smartAccount:t}=j();return{refresh:async()=>{let n=t?.address??``;await Promise.all([e.cancelQueries({queryKey:ee(n)}),e.cancelQueries({queryKey:Wi(n)})]),await Promise.all([e.refetchQueries({queryKey:ee(n)}),e.refetchQueries({queryKey:Wi(n)})])}}},Zi=Ue.createInterface(),Qi=({smartAccountAddress:e,targetVersion:t,onSuccess:r,onError:i})=>{let{refresh:a}=Yi(),{refresh:o}=Xi(),{data:s}=Ii(t),l=M(async()=>{if(!e||!c(e))throw Error(`Invalid smart account address`);if(!s)throw Error(`Unable to fetch implementation address for version ${t}`);return[{to:e,value:`0x0`,data:Zi.encodeFunctionData(`upgradeToAndCall`,[s,`0x`]),comment:`Upgrade account to version ${t}`,abi:Zi.getFunction(`upgradeToAndCall`).format(`json`)}]},[e,s,t]),u=Y({privyUIOptions:{title:`Upgrade Smart Account`,description:`Upgrading your account at ${n(e)} to version ${t}`,buttonText:`Sign to continue`},onTxConfirmed:async()=>{await Promise.all([a(),o()]),r?.()},onTxFailedOrCancelled:async()=>{i?.()}});return{...u,sendTransaction:async()=>u.sendTransaction(await l())}},$i=()=>[`VECHAIN_KIT`,`CURRENT_BLOCK`],ea=10*d.SECOND,ta=()=>{let e=k();return U({queryKey:$i(),queryFn:async()=>{if(!e)throw Error(`Thor client not available`);let t=await e.blocks.getBestBlockExpanded();if(!t)throw Error(`Failed to fetch current block`);return t},staleTime:1e3*60,refetchInterval:ea,enabled:!!e})},na=1e3,ra=async({thor:e,order:t=`asc`,offset:n=0,limit:r=na,from:i=0,to:a=e.blocks.getHeadBlock()?.number,filterCriteria:o})=>{let s=await e.logs.filterEventLogs({range:{from:i,to:a,unit:`block`},options:{offset:n,limit:r},order:t,criteriaSet:o});if(!s)throw Error(`Failed to fetch events`);return s},ia=async({nodeUrl:e,thor:t,order:n=`asc`,from:r=0,to:i,filterCriteria:a})=>{let o=[],s=0;for(;;){let c=await ra({nodeUrl:e,thor:t,filterCriteria:a,from:r,to:i??2**53-1,limit:na,order:n,offset:s});if(o.push(...c),c.length<na)return o;s+=na}},aa=Ve.createInterface(),oa=(e,t,n,r)=>{if(!e||!t||!c(e))throw Error(`Invalid receiver address or amount`);let i=[];return i.push({to:n,value:`0x0`,data:aa.encodeFunctionData(`transfer`,[e,rt(t)]),comment:`Transfer ${t} ${r} to ${e}`,abi:aa.getFunction(`transfer`)}),i},sa=({fromAddress:e,receiverAddress:t,amount:r,tokenAddress:i,tokenName:a,onSuccess:o,onError:s})=>{let{refresh:c}=Gn(),l=P(()=>oa(t,r,i,a),[t,r,i,a]),u=Y({signerAccountAddress:e,privyUIOptions:{title:`Confirm Transfer`,description:`Transfer ${r} ${a} to ${n(t)}`,buttonText:`Sign to continue`},onTxConfirmed:async()=>{c(),o?.()},onTxFailedOrCancelled:async e=>{s?.(e instanceof Error?e.message:String(e))}});return{...u,clauses:l,sendTransaction:async()=>u.sendTransaction(l)}},ca=(e,t)=>{if(!e||!t||!c(e))throw Error(`Invalid receiver address or amount`);if(isNaN(Number(t)))throw Error(`Invalid amount`);let n=[];try{n.push({to:e,value:rt(t).toString(),data:`0x`,comment:`Transfer ${t} VET to ${e}`})}catch(e){throw console.error(`Error building clauses:`,e),Error(`Invalid amount format`)}return n},la=({fromAddress:e,receiverAddress:t,amount:r,onSuccess:i,onError:a})=>{let{refresh:o}=Gn(),s=P(()=>ca(t,r),[t,r]),c=Y({signerAccountAddress:e,privyUIOptions:{title:`Confirm Transfer`,description:`Transfer ${r} VET to ${n(t)}`,buttonText:`Sign to continue`},onTxConfirmed:async()=>{o(),i?.()},onTxFailedOrCancelled:async e=>{a?.(e instanceof Error?e.message:String(e))}});return{...c,clauses:s,sendTransaction:async()=>c.sendTransaction(s)}},ua=({clauseBuilder:e,refetchQueryKeys:t,invalidateCache:n=!0,onSuccess:r,onFailure:i,suggestedMaxGas:a,gasPadding:o,delegationUrl:s})=>{let{account:c}=j(),l=W(),u=M(async()=>{n&&t?.forEach(async e=>{await l.cancelQueries({queryKey:e}),await l.refetchQueries({queryKey:e})}),r?.()},[n,r,l,t]),d=Y({signerAccountAddress:c?.address,onTxConfirmed:u,suggestedMaxGas:a,onTxFailedOrCancelled:i,gasPadding:o,delegationUrl:s}),f=M(async t=>{d.sendTransaction(e(t),s)},[e,d,s]);return{...d,sendTransaction:f}},da=(e,t)=>{let n=Qe({abi:t,data:e.data.toString(),topics:e.topics.map(e=>e.toString())});return{meta:e.meta,decodedData:n}},fa=({eventName:e,filterParams:t})=>[e,t?JSON.stringify(t):`all`],pa=({abi:e,contractAddress:t,eventName:n,filterParams:r,mapResponse:i,nodeUrl:a})=>{let o=k();return U({queryFn:M(async()=>{if(!o)return[];let s=o.contracts.load(t,e).getEventAbi(n),c=s.encodeFilterTopicsNoNull(r??{}),l=(await ia({thor:o,nodeUrl:a,filterCriteria:[{criteria:{address:t,topic0:c[0]??void 0,topic1:c[1]??void 0,topic2:c[2]??void 0,topic3:c[3]??void 0,topic4:c[4]??void 0},eventAbi:s}]})).map(t=>da(t,e));if(l.some(({decodedData:e})=>e.eventName!==n))throw Error(`Unknown event`);return l.map(e=>i({meta:e.meta,decodedData:e.decodedData}))},[o,t,e,n,r,i,a]),queryKey:P(()=>fa({eventName:n,filterParams:r}),[n,r]),enabled:!!o})},ma=({clauses:t,enabled:n=!0,tokens:r,sendingAmount:i,sendingTokenSymbol:a})=>{let{connectedWallet:o,account:s}=j(),{data:c}=ae(o?.address??``),{feeDelegation:l}=e(),{balances:u}=yn(s?.address??``),{updatePreferences:d}=se();return U({queryKey:[`gas-estimation`,JSON.stringify(t),JSON.stringify(r),i,a],queryFn:async()=>{let e=null;for(let n of r)try{let r=await pe(c?.address??``,l?.genericDelegatorUrl??``,t,n,`medium`),o=r.transactionCost,s=Number(u.find(e=>e.symbol===n)?.balance||0),f=o+(i&&a&&n===a?Number(i):0);if(s>=f)return d({gasTokenToUse:n}),{...r,usedToken:n};e=Error(`Insufficient ${n} balance: has ${s}, needs ${f}`)}catch(t){e=t}throw e||Error(`All gas tokens failed estimation or have insufficient balance`)},enabled:n&&t.length>0&&!!c?.address&&!!l?.genericDelegatorUrl&&r.length>0&&u.length>0,staleTime:30*1e3,gcTime:300*1e3,refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1,retry:!1,retryDelay:1e3})},ha=({clauses:t,tokens:n,enabled:r=!0})=>{let{connectedWallet:i}=j(),{data:a}=ae(i?.address??``),{feeDelegation:o}=e();return U({queryKey:[`gas-estimation-all-tokens`,JSON.stringify(t),JSON.stringify(n)],queryFn:async()=>{let e={};return await Promise.all(n.map(async n=>{try{e[n]={cost:(await pe(a?.address??``,o?.genericDelegatorUrl??``,t,n,`medium`)).transactionCost||0,loading:!1}}catch(t){e[n]={cost:0,loading:!1,error:t instanceof Error?t.message:`Unknown error`}}})),e},enabled:r&&t.length>0&&!!a?.address&&!!o?.genericDelegatorUrl&&n.length>0,staleTime:30*1e3,gcTime:300*1e3,refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1})};export{_i as $,Z as $n,Qn as $t,Gi as A,dn as An,zr as At,Ni as B,Xt as Bn,lr as Bt,Xi as C,yn as Cn,Kr as Ct,Ji as D,mn as Dn,Hr as Dt,qi as E,gn as En,Ur as Et,Ri as F,cn as Fn,Pr as Ft,Di as G,Wt as Gn,ir as Gt,ji as H,$t as Hn,or as Ht,zi as I,rn as In,Nr as It,Ci as J,Ht as Jn,tr as Jt,Ei as K,Gt as Kn,$n as Kt,Pi as L,an as Ln,Mr as Lt,Vi as M,ln as Mn,Lr as Mt,Hi as N,un as Nn,Ir as Nt,Ui as O,pn as On,Vr as Ot,Li as P,sn as Pn,Fr as Pt,vi as Q,kt as Qn,Zn as Qt,Fi as R,on as Rn,jr as Rt,Qi as S,$ as Sn,qr as St,Ki as T,vn as Tn,Wr as Tt,Ai as U,Kt as Un,ar as Ut,Mi as V,Zt as Vn,cr as Vt,ki as W,qt as Wn,sr as Wt,bi as X,Rt as Xn,rr as Xt,Si as Y,Lt as Yn,nr as Yt,yi as Z,Pt as Zn,Xn as Zt,sa as _,En as _n,Qr as _t,Ne as a,Hn as an,wt as ar,ui as at,$i as b,xn as bn,Yr as bt,ha as c,Bn as cn,J as cr,si as ct,fa as d,Nn as dn,vt as dr,ii as dt,qn as en,At as er,mi as et,pa as f,Pn as fn,mt as fr,ri as ft,oa as g,wn as gn,$r as gt,la as h,On as hn,pt as hr,ei as ht,Me as i,Wn as in,Y as ir,di as it,Bi as j,fn as jn,Rr as jt,Wi as k,hn as kn,Br as kt,ma as l,Fn as ln,bt as lr,oi as lt,ca as m,kn as mn,gt as mr,ti as mt,Re as n,Kn as nn,X as nr,gi as nt,Pe as o,Un as on,St as or,li as ot,ua as p,An as pn,ht as pr,ni as pt,Oi as q,zt as qn,er as qt,Be as r,Gn as rn,Tt as rr,pi as rt,Le as s,zn as sn,Ct as sr,ci as st,Ie as t,Yn as tn,Et as tr,hi as tt,da as u,In as un,_t as ur,ai as ut,ia as v,Cn as vn,Zr as vt,Yi as w,_n as wn,Gr as wt,ta as x,Sn as xn,Jr as xt,ra as y,bn as yn,Xr as yt,Ii as z,nn as zn,kr as zt};
8
+ //# sourceMappingURL=hooks-DuTew9oP.js.map