@stakekit/widget 0.0.292 → 0.0.294

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 (151) hide show
  1. package/dist/bundle/{DateTime-BBRIKkPv.js → DateTime-CMMZj2i-.js} +54 -54
  2. package/dist/bundle/{assets-vw12jo1v.js → assets-Bc9gJ-IT.js} +6 -6
  3. package/dist/bundle/{cardano-connector-DCWdS4Lt.js → cardano-connector-4FH7sm5s.js} +2 -2
  4. package/dist/bundle/{configured-chains-Bc6_pgMo.js → configured-chains-DF5IpaPp.js} +1 -1
  5. package/dist/bundle/{cosmos-connector-meta-Br67nymZ.js → cosmos-connector-meta-BKRBGzAs.js} +1 -1
  6. package/dist/bundle/index.bundle.css +1 -1
  7. package/dist/bundle/index.bundle.js +15768 -15242
  8. package/dist/bundle/{ledger-connector-wZ-AWITi.js → ledger-connector-Em3Ex6Ns.js} +5 -5
  9. package/dist/bundle/{network-D8-Flo2u.js → network-D2ajkWp0.js} +1 -1
  10. package/dist/bundle/{reward-rate-chart-B41r4AU4.js → reward-rate-chart-6q6gJawR.js} +4 -4
  11. package/dist/bundle/{solana-connector-CXe_nU4I.js → solana-connector-DHrdMGZC.js} +3 -3
  12. package/dist/bundle/{stellar-connector-Cdl9Hnba.js → stellar-connector-DkR_jg41.js} +2 -2
  13. package/dist/bundle/{styles.css-BJ7-ORZP.js → styles.css-DQG3ba8V.js} +6 -6
  14. package/dist/bundle/{substrate-connector-DFeFqV_q.js → substrate-connector-CzewVoQ6.js} +1 -1
  15. package/dist/bundle/{ton-connector-CWmOukzn.js → ton-connector-CcahoFeW.js} +3 -3
  16. package/dist/bundle/{transaction-BwhgjU0e.js → transaction-BGiGADTK.js} +1 -1
  17. package/dist/bundle/{transaction-CUoDE6CU.js → transaction-BvpQWKqm.js} +1 -1
  18. package/dist/bundle/{transaction-B8S7Vgaq.js → transaction-CD_QhA6u.js} +2 -2
  19. package/dist/bundle/{transaction-DxrR2BHC.js → transaction-CiEShf7a.js} +1 -1
  20. package/dist/bundle/{tron-connector--M_0_Iy7.js → tron-connector-Dy_36o_J.js} +3 -3
  21. package/dist/bundle/{utils-CoW929-6.js → utils-BMTuLksW.js} +1 -1
  22. package/dist/bundle/{wallet-manager-C3rmOq7t.js → wallet-manager-BLaLHs2U.js} +11 -11
  23. package/dist/package/{DateTime-DJZXpaqx.js → DateTime-CGVpQQm9.js} +24 -2
  24. package/dist/package/{assets-BuIo5TOF.js → assets-CEn8BPdT.js} +1 -1
  25. package/dist/package/{cardano-connector-DIZuipB7.js → cardano-connector-BDWTBXaS.js} +2 -2
  26. package/dist/package/{configured-chains-B6PD9hvx.js → configured-chains-CRuy8tse.js} +1 -1
  27. package/dist/package/{cosmos-connector-meta-CgvZWkLV.js → cosmos-connector-meta-B-ke1Dvw.js} +1 -1
  28. package/dist/package/index.package.css +162 -162
  29. package/dist/package/index.package.js +4126 -3050
  30. package/dist/package/{ledger-connector-B3kEcKjM.js → ledger-connector-BQDRUjOJ.js} +5 -5
  31. package/dist/package/{network-B4Qs3uRl.js → network-K03Uj00V.js} +1 -1
  32. package/dist/package/{reward-rate-chart-B42ZCby7.js → reward-rate-chart-DBx39GdL.js} +2 -2
  33. package/dist/package/{solana-connector-VG2pC1EJ.js → solana-connector-fL70NOkD.js} +3 -3
  34. package/dist/package/{stellar-connector-DO9tJUOg.js → stellar-connector-C_33sqO5.js} +2 -2
  35. package/dist/package/{styles.css-DwJjrmLr.js → styles.css-BOghDWGq.js} +1 -1
  36. package/dist/package/{substrate-connector-P80MVt5T.js → substrate-connector-Cr7LEt2o.js} +1 -1
  37. package/dist/package/{ton-connector-3rqiqNZO.js → ton-connector-81-rUhzX.js} +3 -3
  38. package/dist/package/{transaction-DTbU7sxm.js → transaction-BHIZ9rKF.js} +1 -1
  39. package/dist/package/{transaction-CuMGfUeE.js → transaction-C5e_gCK6.js} +1 -1
  40. package/dist/package/{transaction-V39s0qKU.js → transaction-DMMfLvk1.js} +2 -2
  41. package/dist/package/{transaction-Do_oUKxl.js → transaction-DgdU5pHH.js} +1 -1
  42. package/dist/package/{tron-connector-CKUZFHDh.js → tron-connector-Cuez3U16.js} +3 -3
  43. package/dist/package/{wallet-manager-CioQJQ5H.js → wallet-manager-DWFwmdLb.js} +2 -2
  44. package/dist/types/domain/earn/contract.d.ts +1 -0
  45. package/dist/types/generated/yield-provider-ids.d.ts +86 -0
  46. package/dist/types/index.bundle.d.ts +2 -2
  47. package/dist/types/index.package.d.ts +2 -2
  48. package/dist/types/public-api/types.d.ts +21 -3
  49. package/dist/website/assets/AlertController-Dd3t1FDe.js +1 -0
  50. package/dist/website/assets/{CaipNetworkUtil-CIgzbD6k.js → CaipNetworkUtil-CyIDQhS0.js} +1 -1
  51. package/dist/website/assets/DateTime-ByC3zr_K.js +1 -0
  52. package/dist/website/assets/{HelpersUtil-BokHy7la.js → HelpersUtil-Bpil3MMz.js} +1 -1
  53. package/dist/website/assets/ModalController-BhWRBcfd.js +5 -0
  54. package/dist/website/assets/{albedo.module-Dn9vkw3f.js → albedo.module-DkOe0Unb.js} +1 -1
  55. package/dist/website/assets/assets-DXO6qW6R.js +2 -0
  56. package/dist/website/assets/{axios-Dl6BaS8Y.js → axios-rFNl7rAx.js} +2 -2
  57. package/dist/website/assets/{base-signer-b1ff2VPI-DF_m1Hx-.js → base-signer-b1ff2VPI-DEykpag5.js} +1 -1
  58. package/dist/website/assets/{basic-Bt_YnOIC.js → basic-By5_muQ4.js} +1 -1
  59. package/dist/website/assets/bignumber-FohbSRh0.js +1 -0
  60. package/dist/website/assets/blakejs-x6iaQxOd.js +3 -0
  61. package/dist/website/assets/bn-Ck4DeaX2.js +1 -0
  62. package/dist/website/assets/{browser-ponyfill-_v4sZCld.js → browser-ponyfill-lHyeX8iJ.js} +1 -1
  63. package/dist/website/assets/{bs58-CiFyCgrv.js → bs58-gzsgdke5.js} +1 -1
  64. package/dist/website/assets/{build-DM4Sawu1.js → build-ClRxYQRR.js} +1 -1
  65. package/dist/website/assets/{build-Butjcagw.js → build-TBrHU398.js} +1 -1
  66. package/dist/website/assets/{build-B5AnTSOq.js → build-Tl3I8dhV.js} +1 -1
  67. package/dist/website/assets/{cardano-connector-BC5bF4Y2.js → cardano-connector-8El4Ztf_.js} +9 -9
  68. package/dist/website/assets/{configured-chains-Bp7rWkOZ.js → configured-chains-DQ_M8-li.js} +1 -1
  69. package/dist/website/assets/core-BiDQVY37.js +2 -0
  70. package/dist/website/assets/{cosmos-connector-meta-CZFaunIB.js → cosmos-connector-meta-DRTieEt0.js} +1 -1
  71. package/dist/website/assets/dist-BVuLBvyS.js +7 -0
  72. package/dist/website/assets/{dist-BKdXTi2f.js → dist-Bo7ZdXT8.js} +3 -3
  73. package/dist/website/assets/{dist-7PipG_eL.js → dist-DlLKQSrv.js} +3 -3
  74. package/dist/website/assets/dist-ZKTSEBXW.js +1 -0
  75. package/dist/website/assets/{elliptic-j9CClrcl.js → elliptic-BdE4gFqn.js} +2 -2
  76. package/dist/website/assets/{esm-DVfwo40P.js → esm-BjyHrLEJ.js} +1 -1
  77. package/dist/website/assets/events-CMzhc0tf.js +1 -0
  78. package/dist/website/assets/{extrinsic-encoding-B3zynq2U.js → extrinsic-encoding-BIj1XBpl.js} +1 -1
  79. package/dist/website/assets/{features-LE43LGiF.js → features-Cy1CFK9a.js} +1 -1
  80. package/dist/website/assets/{fhevm-relayer-DXLb4mIw-bVmGMiQn.js → fhevm-relayer-DXLb4mIw-Bbrz0cha.js} +5 -3
  81. package/dist/website/assets/freighter.module-DsmrpiWT.js +1 -0
  82. package/dist/website/assets/index-7hHJ2eI5.js +558 -0
  83. package/dist/website/assets/index-zFAIWvcU.css +1 -0
  84. package/dist/website/assets/{index.es-D6B6PG3M.js → index.es-BGzDKZr_.js} +1 -1
  85. package/dist/website/assets/index.es-BHs2-Pa6.js +1 -0
  86. package/dist/website/assets/{index.es-wqX1ruQA.js → index.es-Bpga9r91.js} +5 -5
  87. package/dist/website/assets/{kms_lib-mPebVu09.js → kms_lib-BgnOy0xU.js} +1 -1
  88. package/dist/website/assets/{kms_lib-Bh_Z1nH6.js → kms_lib-w0jRi8cP.js} +1 -1
  89. package/dist/website/assets/{ledger-connector-BOOoTKx_.js → ledger-connector-CNNjVgC1.js} +3 -3
  90. package/dist/website/assets/{lib-es-5LFNYQ9J.js → lib-es-DmH9FYVZ.js} +1 -1
  91. package/dist/website/assets/lobstr.module-BUAItZUt.js +1 -0
  92. package/dist/website/assets/{nacl-fast-BI97gFtf.js → nacl-fast-B5R4wpqG.js} +1 -1
  93. package/dist/website/assets/{nacl-util-DCWJejqG.js → nacl-util-6167mj42.js} +1 -1
  94. package/dist/website/assets/{network-CEcIzsgc.js → network-BVzpe0Ii.js} +1 -1
  95. package/dist/website/assets/{polkadot-ledger-transaction-DaDP252u.js → polkadot-ledger-transaction-Dp6EFfyV.js} +1 -1
  96. package/dist/website/assets/registry-BgQw-qJW.js +1 -0
  97. package/dist/website/assets/{reward-rate-chart-COP_M115.js → reward-rate-chart-CO_yI4og.js} +4 -4
  98. package/dist/website/assets/{safe-buffer-Dz6e-rwu.js → safe-buffer-BUgQmBOp.js} +1 -1
  99. package/dist/website/assets/{safe-connector-DG2cXEO5.js → safe-connector-BObu9WgG.js} +2 -2
  100. package/dist/website/assets/{solana-connector-DSpWnxwA.js → solana-connector-CVuV_EKp.js} +1 -1
  101. package/dist/website/assets/{src-Zq1Jw-Sn.js → src-DbdC_Alu.js} +1 -1
  102. package/dist/website/assets/{src-hSPfFTzN.js → src-Dl7INWvU.js} +1 -1
  103. package/dist/website/assets/state-D5Nw1L4F.js +1 -0
  104. package/dist/website/assets/{stellar-connector-BAbbdkSK.js → stellar-connector-Ba7Jcrbg.js} +1 -1
  105. package/dist/website/assets/styles.css-NtRiu07M.js +1 -0
  106. package/dist/website/assets/substrate-connector-hQ3vc47X.js +2 -0
  107. package/dist/website/assets/tfhe-BACovsAk.js +1 -0
  108. package/dist/website/assets/{tfhe-DuWT_ao1.js → tfhe-BSAXrnM6.js} +1 -1
  109. package/dist/website/assets/ton-connector-CU1xiP2u.js +2264 -0
  110. package/dist/website/assets/tracking-variants-CtfEiKNR.js +93 -0
  111. package/dist/website/assets/{transaction-BH4ssPh3.js → transaction-B5hUD0AE.js} +1 -1
  112. package/dist/website/assets/{transaction-BVuftLt1.js → transaction-BWEzzOww.js} +1 -1
  113. package/dist/website/assets/transaction-BmFUkzQv.js +2 -0
  114. package/dist/website/assets/{transaction-1KdJeqcp.js → transaction-C_iyacpP.js} +1 -1
  115. package/dist/website/assets/{tron-connector-CJURHEQe.js → tron-connector-gXtlAAuG.js} +7 -7
  116. package/dist/website/assets/{tx-Bkou_ALe.js → tx-Cosvp39i.js} +1 -1
  117. package/dist/website/assets/{utils-CH0e59XB.js → utils-meUBO1X1.js} +1 -1
  118. package/dist/website/assets/{viem-BQ_7aeKB.js → viem-8-EtcU49.js} +1 -1
  119. package/dist/website/assets/{w3m-modal-BLY--NNS.js → w3m-modal-HS9RLkN8.js} +2 -2
  120. package/dist/website/assets/wallet-manager-BQrZx180.js +5 -0
  121. package/dist/website/assets/{web-4qAQ-Ymk.js → web-azgm2Psf.js} +1 -1
  122. package/dist/website/assets/{wui-list-item-1gzb5UQJ.js → wui-list-item-CfZ1WQql.js} +1 -1
  123. package/dist/website/assets/{xbull.module-B4N1LGQD.js → xbull.module-DQx6rh7x.js} +1 -1
  124. package/dist/website/index.html +19 -19
  125. package/package.json +3 -2
  126. package/dist/website/assets/AlertController-CH5fpr36.js +0 -1
  127. package/dist/website/assets/DateTime-DR7XeJxF.js +0 -1
  128. package/dist/website/assets/ModalController-CWwEAkfw.js +0 -5
  129. package/dist/website/assets/assets-Dk5ppLtc.js +0 -2
  130. package/dist/website/assets/bignumber-CziKLYjt.js +0 -1
  131. package/dist/website/assets/blakejs-Dx-Zt5zT.js +0 -3
  132. package/dist/website/assets/bn-CJG5j3KW.js +0 -1
  133. package/dist/website/assets/core-uatW2d6Y.js +0 -2
  134. package/dist/website/assets/dist-CELdgNh9.js +0 -1
  135. package/dist/website/assets/dist-omv2KNC4.js +0 -5
  136. package/dist/website/assets/events-D2w4OsQJ.js +0 -1
  137. package/dist/website/assets/freighter.module-CaBNS6Y-.js +0 -1
  138. package/dist/website/assets/index-3l3n0-cX.js +0 -540
  139. package/dist/website/assets/index-Dpi1HuAK.css +0 -1
  140. package/dist/website/assets/index.es-DCi2xZ1b.js +0 -1
  141. package/dist/website/assets/lobstr.module-GQjJAf8P.js +0 -1
  142. package/dist/website/assets/registry-DVfYVrCY.js +0 -1
  143. package/dist/website/assets/state-B8Vu3fYx.js +0 -1
  144. package/dist/website/assets/styles.css-BK5OO2Hh.js +0 -1
  145. package/dist/website/assets/substrate-connector-CwnGlD2K.js +0 -2
  146. package/dist/website/assets/tfhe-PDJAG8Bv.js +0 -1
  147. package/dist/website/assets/ton-connector-DMNOeieX.js +0 -2264
  148. package/dist/website/assets/tracking-variants-CuRpr0B_.js +0 -85
  149. package/dist/website/assets/transaction-CbxrIerN.js +0 -2
  150. package/dist/website/assets/wallet-manager-D8tOJ1jy.js +0 -5
  151. package/dist/website/mockServiceWorker.js +0 -460
@@ -1,7 +1,7 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/kms_lib-mPebVu09.js","assets/dist-D6L6gF64.js","assets/rolldown-runtime-BcKkbAw3.js","assets/kms_lib-Bh_Z1nH6.js","assets/wasmBaseUrl-C7910Wg_.js","assets/dist-Cuadm9-o.js","assets/__vite-browser-external-rzXbT8Yi.js","assets/tfhe-DuWT_ao1.js","assets/preload-helper-BLdHbfdN.js","assets/dist-CELdgNh9.js","assets/tfhe-PDJAG8Bv.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/kms_lib-BgnOy0xU.js","assets/dist-D6L6gF64.js","assets/rolldown-runtime-BcKkbAw3.js","assets/kms_lib-w0jRi8cP.js","assets/wasmBaseUrl-C7910Wg_.js","assets/dist-Cuadm9-o.js","assets/__vite-browser-external-rzXbT8Yi.js","assets/tfhe-BSAXrnM6.js","assets/preload-helper-BLdHbfdN.js","assets/dist-ZKTSEBXW.js","assets/tfhe-BACovsAk.js"])))=>i.map(i=>d[i]);
2
2
  import{n as e,t}from"./dist-Cuadm9-o.js";import{t as n}from"./preload-helper-BLdHbfdN.js";import{n as r}from"./verifyHash-BT12fjb2.js";import{Cn as i,Dt as a,Et as o,ar as s,dn as c,er as l,fr as u,mn as d,sr as f}from"./call-ttPZjh8C.js";import{C as p,S as m,x as ee}from"./formatUnits-ELraYs2w.js";import{t as te}from"./serializeTransaction-B0heK9j9.js";import{A as ne,D as re,E as ie,F as ae,I as oe,L as se,M as ce,N as le,V as ue,j as de,k as fe,q as pe,w as me,z as he}from"./_u64-BLNH_r32.js";import{c as ge,i as _e,l as ve,n as ye,o as be,r as xe,t as Se}from"./hmac-DY3QYcUU.js";import{a as Ce,t as h}from"./secp256k1-DzmNkGSQ.js";import{i as we}from"./esm-CjTnkPtf.js";import{d as Te,i as Ee,n as De,s as Oe}from"./_esm-DOPbMym1.js";import{t as ke}from"./encodePacked-CQW34oK6.js";import{t as Ae}from"./custom-Pz1kgS0m.js";import{F as je,I as Me,M as Ne,V as Pe,X as Fe,a as Ie,c as Le,n as Re,o as ze,r as Be}from"./validation-ClSvPh6P-BSUH7TNc.js";ye(),ve(),se();var Ve=Uint8Array.from([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),He=Uint8Array.from(Array(16).fill(0).map((e,t)=>t)),Ue=He.map(e=>(9*e+5)%16),We=(()=>{let e=[[He],[Ue]];for(let t=0;t<4;t++)for(let n of e)n.push(n[t].map(e=>Ve[e]));return e})(),Ge=We[0],Ke=We[1],qe=[[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8],[12,13,11,15,6,9,9,7,12,15,11,13,7,8,7,7],[13,15,14,11,7,7,6,8,13,14,13,12,5,5,6,9],[14,11,12,14,8,6,5,5,15,12,15,14,9,9,8,6],[15,12,13,13,9,5,8,6,14,11,12,11,8,6,5,5]].map(e=>Uint8Array.from(e)),Je=Ge.map((e,t)=>e.map(e=>qe[t][e])),Ye=Ke.map((e,t)=>e.map(e=>qe[t][e])),Xe=Uint32Array.from([0,1518500249,1859775393,2400959708,2840853838]),Ze=Uint32Array.from([1352829926,1548603684,1836072691,2053994217,0]);function Qe(e,t,n,r){return e===0?t^n^r:e===1?t&n|~t&r:e===2?(t|~n)^r:e===3?t&r|n&~r:t^(n|~r)}var $e=new Uint32Array(16),et=class extends ge{constructor(){super(64,20,8,!0),this.h0=1732584193,this.h1=-271733879,this.h2=-1732584194,this.h3=271733878,this.h4=-1009589776}get(){let{h0:e,h1:t,h2:n,h3:r,h4:i}=this;return[e,t,n,r,i]}set(e,t,n,r,i){this.h0=e|0,this.h1=t|0,this.h2=n|0,this.h3=r|0,this.h4=i|0}process(e,t){for(let n=0;n<16;n++,t+=4)$e[n]=e.getUint32(t,!0);let n=this.h0|0,r=n,i=this.h1|0,a=i,o=this.h2|0,s=o,c=this.h3|0,l=c,u=this.h4|0,d=u;for(let e=0;e<5;e++){let t=4-e,f=Xe[e],p=Ze[e],m=Ge[e],ee=Ke[e],te=Je[e],ne=Ye[e];for(let t=0;t<16;t++){let r=ue(n+Qe(e,i,o,c)+$e[m[t]]+f,te[t])+u|0;n=u,u=c,c=ue(o,10)|0,o=i,i=r}for(let e=0;e<16;e++){let n=ue(r+Qe(t,a,s,l)+$e[ee[e]]+p,ne[e])+d|0;r=d,d=l,l=ue(s,10)|0,s=a,a=n}}this.set(this.h1+o+l|0,this.h2+c+d|0,this.h3+u+r|0,this.h4+n+a|0,this.h0+i+s|0)}roundClean(){de($e)}destroy(){this.destroyed=!0,de(this.buffer),this.set(0,0,0,0,0)}},tt=le(()=>new et);xe(),se();var nt=h.ProjectivePoint,rt=we(_e);function it(e){me(e);let t=e.length===0?`0`:fe(e);return BigInt(`0x`+t)}function at(e){if(typeof e!=`bigint`)throw Error(`bigint expected`);return oe(e.toString(16).padStart(64,`0`))}var ot=pe(`Bitcoin seed`),st={private:76066276,public:76067358},ct=2147483648,lt=e=>tt(_e(e)),ut=e=>ae(e).getUint32(0,!1),dt=e=>{if(!Number.isSafeInteger(e)||e<0||e>2**32-1)throw Error(`invalid number, should be from 0 to 2**32-1, got `+e);let t=new Uint8Array(4);return ae(t).setUint32(0,e,!1),t},ft=class e{get fingerprint(){if(!this.pubHash)throw Error(`No publicKey set!`);return ut(this.pubHash)}get identifier(){return this.pubHash}get pubKeyHash(){return this.pubHash}get privateKey(){return this.privKeyBytes||null}get publicKey(){return this.pubKey||null}get privateExtendedKey(){let e=this.privateKey;if(!e)throw Error(`No private key`);return rt.encode(this.serialize(this.versions.private,ce(new Uint8Array([0]),e)))}get publicExtendedKey(){if(!this.pubKey)throw Error(`No public key`);return rt.encode(this.serialize(this.versions.public,this.pubKey))}static fromMasterSeed(t,n=st){if(me(t),8*t.length<128||8*t.length>512)throw Error(`HDKey: seed length must be between 128 and 512 bits; 256 bits is advised, got `+t.length);let r=Se(be,ot,t);return new e({versions:n,chainCode:r.slice(32),privateKey:r.slice(0,32)})}static fromExtendedKey(t,n=st){let r=rt.decode(t),i=ae(r),a=i.getUint32(0,!1),o={versions:n,depth:r[4],parentFingerprint:i.getUint32(5,!1),index:i.getUint32(9,!1),chainCode:r.slice(13,45)},s=r.slice(45),c=s[0]===0;if(a!==n[c?`private`:`public`])throw Error(`Version mismatch`);return c?new e({...o,privateKey:s.slice(1)}):new e({...o,publicKey:s})}static fromJSON(t){return e.fromExtendedKey(t.xpriv)}constructor(e){if(this.depth=0,this.index=0,this.chainCode=null,this.parentFingerprint=0,!e||typeof e!=`object`)throw Error(`HDKey.constructor must not be called directly`);if(this.versions=e.versions||st,this.depth=e.depth||0,this.chainCode=e.chainCode||null,this.index=e.index||0,this.parentFingerprint=e.parentFingerprint||0,!this.depth&&(this.parentFingerprint||this.index))throw Error(`HDKey: zero depth with non-zero index/parent fingerprint`);if(e.publicKey&&e.privateKey)throw Error(`HDKey: publicKey and privateKey at same time.`);if(e.privateKey){if(!h.utils.isValidPrivateKey(e.privateKey))throw Error(`Invalid private key`);this.privKey=typeof e.privateKey==`bigint`?e.privateKey:it(e.privateKey),this.privKeyBytes=at(this.privKey),this.pubKey=h.getPublicKey(e.privateKey,!0)}else if(e.publicKey)this.pubKey=nt.fromHex(e.publicKey).toRawBytes(!0);else throw Error(`HDKey: no public or private key provided`);this.pubHash=lt(this.pubKey)}derive(e){if(!/^[mM]'?/.test(e))throw Error(`Path must start with "m" or "M"`);if(/^[mM]'?$/.test(e))return this;let t=e.replace(/^[mM]'?\//,``).split(`/`),n=this;for(let e of t){let t=/^(\d+)('?)$/.exec(e),r=t&&t[1];if(!t||t.length!==3||typeof r!=`string`)throw Error(`invalid child index: `+e);let i=+r;if(!Number.isSafeInteger(i)||i>=2147483648)throw Error(`Invalid index`);t[2]===`'`&&(i+=ct),n=n.deriveChild(i)}return n}deriveChild(t){if(!this.pubKey||!this.chainCode)throw Error(`No publicKey or chainCode set`);let n=dt(t);if(t>=2147483648){let e=this.privateKey;if(!e)throw Error(`Could not derive hardened child key`);n=ce(new Uint8Array([0]),e,n)}else n=ce(this.pubKey,n);let r=Se(be,this.chainCode,n),i=it(r.slice(0,32)),a=r.slice(32);if(!h.utils.isValidPrivateKey(i))throw Error(`Tweak bigger than curve order`);let o={versions:this.versions,chainCode:a,depth:this.depth+1,parentFingerprint:this.fingerprint,index:t};try{if(this.privateKey){let e=Ce(this.privKey+i,h.CURVE.n);if(!h.utils.isValidPrivateKey(e))throw Error(`The tweak was out of range or the resulted private key is invalid`);o.privateKey=e}else{let e=nt.fromHex(this.pubKey).add(nt.fromPrivateKey(i));if(e.equals(nt.ZERO))throw Error(`The tweak was equal to negative P, which made the result key invalid`);o.publicKey=e.toRawBytes(!0)}return new e(o)}catch{return this.deriveChild(t+1)}}sign(e){if(!this.privateKey)throw Error(`No privateKey set!`);return me(e,32),h.sign(e,this.privKey).toCompactRawBytes()}verify(e,t){if(me(e,32),me(t,64),!this.publicKey)throw Error(`No publicKey set!`);let n;try{n=h.Signature.fromCompact(t)}catch{return!1}return h.verify(n,e,this.publicKey)}wipePrivateData(){return this.privKey=void 0,this.privKeyBytes&&=(this.privKeyBytes.fill(0),void 0),this}toJSON(){return{xpriv:this.privateExtendedKey,xpub:this.publicExtendedKey}}serialize(e,t){if(!this.chainCode)throw Error(`No chainCode set`);return me(t,33),ce(dt(e),new Uint8Array([this.depth]),dt(this.parentFingerprint),dt(this.index),this.chainCode,t)}};ye(),se();function pt(e,t,n,r){ie(e);let{c:i,dkLen:a,asyncTick:o}=ne({dkLen:32,asyncTick:10},r);if(re(i),re(a),re(o),i<1)throw Error(`iterations (c) should be >= 1`);let s=he(t),c=he(n),l=new Uint8Array(a),u=Se.create(e,s);return{c:i,dkLen:a,asyncTick:o,DK:l,PRF:u,PRFSalt:u._cloneInto().update(c)}}function mt(e,t,n,r,i){return e.destroy(),t.destroy(),r&&r.destroy(),de(i),n}function ht(e,t,n,r){let{c:i,dkLen:a,DK:o,PRF:s,PRFSalt:c}=pt(e,t,n,r),l,u=new Uint8Array(4),d=ae(u),f=new Uint8Array(s.outputLen);for(let e=1,t=0;t<a;e++,t+=s.outputLen){let n=o.subarray(t,t+s.outputLen);d.setInt32(0,e,!1),(l=c._cloneInto(l)).update(u).digestInto(f),n.set(f.subarray(0,n.length));for(let e=1;e<i;e++){s._cloneInto(l).update(f).digestInto(f);for(let e=0;e<n.length;e++)n[e]^=f[e]}}return mt(s,c,o,l,f)}xe();function gt(e){if(typeof e!=`string`)throw TypeError(`invalid mnemonic type: `+typeof e);return e.normalize(`NFKD`)}function _t(e){let t=gt(e),n=t.split(` `);if(![12,15,18,21,24].includes(n.length))throw Error(`Invalid mnemonic`);return{nfkd:t,words:n}}var vt=e=>gt(`mnemonic`+e);function yt(e,t=``){return ht(be,_t(e).nfkd,vt(t),{c:2048,dkLen:64})}async function bt(e){let{domain:t,message:n,primaryType:r,signature:i,types:a}=e;return m({hash:Oe({domain:t,message:n,primaryType:r,types:a}),signature:i})}function xt(){return f(h.utils.randomPrivateKey())}function St(e){if(typeof e==`string`){if(!c(e,{strict:!1}))throw new i({address:e});return{address:e,type:`json-rpc`}}if(!c(e.address,{strict:!1}))throw new i({address:e.address});return{address:e.address,nonceManager:e.nonceManager,sign:e.sign,signAuthorization:e.signAuthorization,signMessage:e.signMessage,signTransaction:e.signTransaction,signTypedData:e.signTypedData,source:`custom`,type:`local`}}var Ct=!1;async function wt({hash:e,privateKey:t,to:n=`object`}){let{r:i,s:a,recovery:o}=h.sign(e.slice(2),t.slice(2),{lowS:!0,extraEntropy:u(Ct,{strict:!1})?l(Ct):Ct}),c={r:s(i,{size:32}),s:s(a,{size:32}),v:o?28n:27n,yParity:o};return n===`bytes`||n===`hex`?r({...c,to:n}):c}async function Tt(e){let{chainId:t,nonce:n,privateKey:r,to:i=`object`}=e,a=e.contractAddress??e.address,o=await wt({hash:ee({address:a,chainId:t,nonce:n}),privateKey:r,to:i});return i===`object`?{address:a,chainId:t,nonce:n,...o}:o}async function Et({message:e,privateKey:t}){return await wt({hash:Te(e),privateKey:t,to:`hex`})}async function Dt(e){let{privateKey:t,transaction:n,serializer:r=te}=e,i=n.type===`eip4844`?{...n,sidecars:!1}:n;return await r(n,await wt({hash:d(await r(i)),privateKey:t}))}async function Ot(e){let{privateKey:t,...n}=e;return await wt({hash:Oe(n),privateKey:t,to:`hex`})}function kt(e,t={}){let{nonceManager:n}=t,r=f(h.getPublicKey(e.slice(2),!1));return{...St({address:p(r),nonceManager:n,async sign({hash:t}){return wt({hash:t,privateKey:e,to:`hex`})},async signAuthorization(t){return Tt({...t,privateKey:e})},async signMessage({message:t}){return Et({message:t,privateKey:e})},async signTransaction(t,{serializer:n}={}){return Dt({privateKey:e,transaction:t,serializer:n})},async signTypedData(t){return Ot({...t,privateKey:e})}}),publicKey:r,source:`privateKey`}}function At(e,{accountIndex:t=0,addressIndex:n=0,changeIndex:r=0,path:i,...a}={}){let o=e.derive(i||`m/44'/60'/${t}'/${r}/${n}`);return{...kt(f(o.privateKey),a),getHdKey:()=>o,source:`hd`}}function jt(e,{passphrase:t,...n}={}){let r=yt(e,t);return At(ft.fromMasterSeed(r),n)}t();var Mt=class extends Ne{constructor(e,t){super(je.EncryptionFailed,e,t),this.name=`EncryptionFailedError`}},Nt=class extends Ne{constructor(e,t){super(je.EncryptOffloadUnavailable,e,t),this.name=`EncryptOffloadUnavailableError`}},Pt=class extends Ne{constructor(e,t){super(je.DecryptionFailed,e,t),this.name=`DecryptionFailedError`}};function Ft(e,t){return{"x-zama-sdk-version":`3.7.0`,"x-zama-sdk-layer":e.state.layer,"x-zama-sdk-runtime":e.runtime,...t!==void 0&&{"x-zama-sdk-operation":t}}}function It(e,t){return Object.assign({},e,{operation:e?.operation??t})}var Lt=`0.13.2`,Rt=`@fhevm/sdk`,zt=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Bt=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Vt,Ht,Ut,Wt=class e extends Error{constructor(t){let n,r,i,{cause:a}=t;a instanceof e?(r=t.docsUrl??a.docsUrl,n=t.details??a.details,i=t.version??a.version):(r=t.docsUrl,n=t.details??a?.message,i=t.version??void 0);let o=t.message??`An error occurred.`,s=[...t.metaMessages?[...t.metaMessages,``]:[],...r===void 0?[]:[`Docs: ${r}`],...n===void 0?[]:[`Details: ${n}`],...i===void 0?[]:[`Version: ${i}`]];s.length>0&&(o+=`
3
3
  `+s.join(`
4
- `)),super(o,t.cause?{cause:t.cause}:void 0),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:`ErrorBase`}),Vt.set(this,void 0),Ht.set(this,void 0),Ut.set(this,void 0),Object.setPrototypeOf(this,new.target.prototype),zt(this,Vt,n,`f`),zt(this,Ht,r,`f`),zt(this,Ut,i,`f`),this.name=t.name??this.name}get docsUrl(){return Bt(this,Ht,`f`)}get details(){return Bt(this,Vt,`f`)}get version(){return Bt(this,Ut,`f`)}};Vt=new WeakMap,Ht=new WeakMap,Ut=new WeakMap;var Gt=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Kt,g=class e extends Wt{constructor(t){let n;n=t.cause instanceof e?t.docsPath??t.cause.docsPath:t.docsPath;let r;n!==void 0&&(n.startsWith(`/`)||(n=`/`+n),r=`${e.DEFAULT_DOCS_BASE_URL}${n}${t.docsSlug===void 0?``:`#${t.docsSlug}`}`),super({...t,name:`FhevmErrorBase`,version:e.FULL_VERSION,docsUrl:r}),Kt.set(this,void 0)}get docsPath(){return Gt(this,Kt,`f`)}};Kt=new WeakMap,Object.defineProperty(g,"PKG_NAME",{enumerable:!0,configurable:!0,writable:!0,value:Rt}),Object.defineProperty(g,"VERSION",{enumerable:!0,configurable:!0,writable:!0,value:Lt}),Object.defineProperty(g,"DEFAULT_DOCS_BASE_URL",{enumerable:!0,configurable:!0,writable:!0,value:`https//docs.zama.org`}),Object.defineProperty(g,"FULL_VERSION",{enumerable:!0,configurable:!0,writable:!0,value:`${g.PKG_NAME}@${g.VERSION}`});var qt=class extends g{constructor(e){super({message:e.message??(e.handle===void 0?`FHEVM Handle is invalid.`:`FHEVM Handle "${e.handle}" is invalid.`),name:`FhevmHandleError`})}},_=class extends Wt{constructor({subject:e,property:t,index:n,type:r,value:i,expectedValue:a,expectedType:o},s){let c=r===`undefined`,l=Array.isArray(o)?o.join(`|`):o,u=a===void 0?void 0:Array.isArray(a)?a.join(`|`):a,d;d=t==null||t===``?n===void 0?e:`${e}[${n}]`:n===void 0?`${e}.${t}`:`${e}.${t}[${n}]`;let f;if(c)f=u===void 0?`missing ${d}, expected ${l}`:`missing ${d}, expected ${u}`;else{f=d;let e=r===void 0||r===`unknown`||r===`undefined`,t=r!==void 0&&(Array.isArray(o)?o.includes(r):r===o);u===void 0&&i===void 0&&(e||!t)?(f+=` has unexpected type, expected ${l}`,e||(f+=`, got ${r}`)):i===void 0?f+=u===void 0?` is invalid, expected valid ${l}`:` has unexpected value, expected '${u}'`:u===void 0?f=`${d} is invalid. '${i}' is not a valid ${l}`:f+=` has unexpected value '${i}', expected '${u}'`}super({...s,message:f,name:`InvalidPropertyError`})}};function Jt(e,t){return!(typeof e!=`object`||!e||!(t in e)||e[t]===void 0||e[t]===null)}function v(e,t,n,r){if(!Jt(e,t))throw new _({subject:n,property:t,expectedType:r.expectedType??`non-nullable`,type:$t(e,t)},r)}function Yt(e,t){return Jt(e,t)?Array.isArray(e[t]):!1}function Xt(e,t,n,r){if(!Yt(e,t))throw new _({subject:n,property:t,expectedType:r.expectedType??`Array`,type:$t(e,t)},r)}function Zt(e,t){return Jt(e,t)?typeof e[t]==`boolean`:!1}function Qt(e,t,n,r){if(!Zt(e,t))throw new _({subject:n,property:t,expectedType:`boolean`,type:$t(e,t)},r);if(r.expectedValue!==void 0&&e[t]!==r.expectedValue)throw new _({subject:n,property:t,expectedType:`boolean`,expectedValue:String(r.expectedValue),type:typeof e[t],value:String(e[t])},r)}function $t(e,t){return Jt(e,t)?typeof e[t]:`undefined`}var en=class extends Wt{constructor(e){super({...e,name:`InternalError`,message:e.message??`internal error`})}};function y(e,t){if(!e)throw new en({message:t??`Assertion failed`})}function tn(e,t){return e===void 0?``:t.length===0?e:e.endsWith(t)?e.slice(0,-t.length):e}function nn(e,t){return e===void 0?``:t.length===0?e:e.startsWith(t)?e.substring(t.length):e}function rn(e){return typeof e==`string`&&e.startsWith(`0x`)}function an(e){return typeof e==`string`&&!e.startsWith(`0x`)}function on(e){return e.startsWith(`0x`)?e:`0x${e}`}function b(e){return e.startsWith(`0x`)?e.substring(2):e}function sn(e){return e==null||typeof e!=`string`?!1:e.length>0}function cn(e){if(!sn(e))throw new en({message:`Expected a non-empty string, got ${typeof e==`string`?`an empty string`:typeof e}`})}function ln(e,t){return Jt(e,t)?typeof e[t]==`string`:!1}function x(e,t,n,r){if(!ln(e,t))throw new _({subject:n,property:t,expectedType:`string`,expectedValue:r.expectedValue,type:$t(e,t)},r);if(r.expectedValue!==void 0){if(Array.isArray(r.expectedValue)){for(let n=0;n<r.expectedValue.length;++n)if(e[t]===r.expectedValue[n])return;throw new _({subject:n,property:t,expectedType:`string`,expectedValue:r.expectedValue,type:typeof e[t],value:e[t]},r)}if(e[t]!==r.expectedValue)throw new _({subject:n,property:t,expectedType:`string`,expectedValue:r.expectedValue,type:typeof e[t],value:e[t]},r)}}function un(e,t,n,r){Xt(e,t,n,r);let i=e[t];for(let e=0;e<i.length;++e)if(typeof i[e]!=`string`)throw new _({subject:n,index:e,property:t,expectedType:`string`,type:typeof i[e]},r)}function S(e,t){try{return JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t,t)}catch{return``}}var C=class extends Wt{constructor({subject:e,index:t,type:n,expectedType:r,metaMessages:i},a){let o=n===void 0||n===`unknown`||n===`undefined`,s=Array.isArray(r)?r.join(`|`):r,c=``;e!==void 0&&(c+=t===void 0?`${e} `:`${e}[${String(t)}] `),c+=`expected ${s}`,o||(c+=`, got ${n}`),super({...a,message:c,name:`InvalidTypeError`,metaMessages:i})}},dn=65535,fn=4294967295,pn=18446744073709551615n,mn=340282366920938463463374607431768211455n,hn=1461501637330902918203684832716283019655932542975n,w=115792089237316195423570985008687907853269984665640564039457584007913129639935n,gn={bool:1,uint8:255,uint16:dn,uint32:fn,uint64:pn,uint128:mn,uint160:hn,uint256:w,address:hn};Object.freeze(gn);var _n=BigInt(2**53-1);function vn(e,t){if(typeof e==`number`)return e;if(e>_n){let n=t?.subject===void 0?``:` (${t.subject})`;throw Error(`Value${n} ${e} exceeds Number.MAX_SAFE_INTEGER`)}return Number(e)}var yn={1:255,2:dn,4:fn,8:pn,16:mn,20:hn,32:w};Object.freeze(yn);function bn(e,t){return typeof e==`number`&&Number.isInteger(e)&&e>=0&&(t===void 0||e<=t)}function xn(e,t){return typeof e==`bigint`&&e>=0&&(t===void 0||e<=t)}function Sn(e,t){return typeof e==`string`&&$n(e,t)!==void 0}function Cn(e,t){return Tn(e,t===void 0?void 0:gn[t])}function wn(e,t){return Tn(e,t===void 0?void 0:yn[t])}function Tn(e,t){return bn(e,t)||xn(e,t)}function En(e){return Tn(e,255)}function Dn(e){return Tn(e,fn)}function On(e){return Tn(e,pn)}function kn(e){return Tn(e,w)}function An(e){return`0x${e.toString(16)}`}function jn(e){let t=e.toString(16);return t.length%2==0?t:`0${t}`}function Mn(e){if(!kn(e))throw new C({expectedType:`uint256`},{});let t=new ArrayBuffer(32),n=new DataView(t),r=BigInt(e);return n.setBigUint64(24,r&18446744073709551615n,!1),n.setBigUint64(16,r>>64n&18446744073709551615n,!1),n.setBigUint64(8,r>>128n&18446744073709551615n,!1),n.setBigUint64(0,r>>192n&18446744073709551615n,!1),new Uint8Array(t)}function Nn(e){if(!Dn(e))throw new C({expectedType:`uint32`},{});let t=new ArrayBuffer(32),n=new DataView(t),r=Number(e);return n.setUint32(28,r,!1),new Uint8Array(t)}function Pn(e){if(!On(e))throw new C({expectedType:`uint64`},{});let t=new ArrayBuffer(32),n=new DataView(t),r=BigInt(e);return n.setBigUint64(24,r,!1),new Uint8Array(t)}function Fn(e,t){if(!Tn(e,t.max))throw new C({subject:t.subject,type:typeof e,expectedType:`uint`},t)}function In(e,t,n){if(!Cn(e,t))throw new C({subject:n.subject,type:typeof e,expectedType:t},n)}function T(e,t){if(!bn(e,t.max))throw new C({subject:t.subject,type:typeof e,expectedType:`uintNumber`},t)}function Ln(e,t){if(!xn(e,t.max))throw new C({subject:t.subject,type:typeof e,expectedType:`uintBigInt`},t)}function Rn(e,t){if(!Sn(e,t.max))throw new C({subject:t.subject,type:typeof e,expectedType:`uintString`},t)}function zn(e,t){if(!On(e))throw new C({subject:t.subject,type:typeof e,expectedType:`uint64`},t)}function Bn(e,t){if(!kn(e))throw new C({subject:t.subject,type:typeof e,expectedType:`uint256`},t)}function Vn(e,t){switch(t){case`uint8`:case`uint16`:case`uint32`:return Number(e);case`uint64`:case`uint128`:case`uint160`:case`uint256`:return BigInt(e)}}var Hn=[`uint8`,`uint16`,`uint32`,`uint64`,`uint128`,`uint160`,`uint256`];function Un(e){return typeof e==`string`&&Hn.includes(e)}function Wn(e,t={}){if(!Un(e))throw new C({subject:t.subject,type:typeof e,expectedType:Hn},t)}function Gn(e,t,n){return In(e,t,n),e}function Kn(e,t){return Fn(e,t??{}),e}function qn(e,t){return T(e,{max:255,...t}),e}function Jn(e,t){return Ln(e,{max:fn,...t}),e}function Yn(e,t){return Ln(e,{max:pn,...t}),e}function Xn(e,t){return Ln(e,{max:w,...t}),e}function Zn(e,t){return Jt(e,t)?bn(e[t]):!1}function Qn(e,t,n,r){if($t(e,t)!==`bigint`||!xn(e[t]))throw new _({subject:n,property:t,type:$t(e,t),expectedType:`uintBigInt`},r)}function $n(e,t){let n;try{n=BigInt(e)}catch{return}if(!(n<0n||n.toString()!==e||t!==void 0&&n>BigInt(t)))return n}function er(e,t){if(t>e)throw RangeError(`count ${t} cannot exceed n ${e}`);let n=Array.from({length:e},(e,t)=>t);for(let r=0;r<t;r++){let t=r+Math.floor(Math.random()*(e-r)),i=n[r],a=n[t];n[r]=a,n[t]=i}return n.slice(0,t)}function tr(e,t){let n=t?.subject??`seconds`,r=typeof e==`string`?$n(e,w):BigInt(Kn(e,{max:w,...t}));if(r===void 0)throw Error(`${n} is not a valid non-negative integer number of seconds, got ${String(e)}`);if(r%86400n!=0n)throw Error(`${n} must be a whole number of days (a multiple of 86400 seconds), got ${r}`);return vn(r/86400n,{subject:n})}var nr=class extends Wt{constructor(e,t){super({...t,message:`SHA-256 mismatch for ${e.subject}: expected ${e.expected}, got ${e.actual}`,name:`Sha256VerificationError`})}};Object.freeze({bytes1:1,bytes2:2,bytes4:4,bytes8:8,bytes20:20,bytes21:21,bytes32:32,bytes65:65});var rr=/^0x[a-fA-F0-9]*$/,ir=/^[a-fA-F0-9]*$/;function ar(e,t){return e==null||!(e instanceof Uint8Array)?!1:t===void 0||e.length===t}function or(e){return ar(e,32)}function sr(e,t){return!rn(e)||t!==void 0&&e.length!==2*t+2||(e.length-2)%2!=0?!1:rr.test(e)}function cr(e){return sr(e,20)}function lr(e,t){return!(!an(e)||t!==void 0&&e.length!==2*t||e.length%2!=0||!ir.test(e))}function ur(e,t){if(!ar(e,t?.byteLength))throw new C({subject:t?.subject,expectedType:`bytes${t?.byteLength??``}`},t??{})}function dr(e,t){ur(e,{byteLength:32,...t})}function fr(e,t){return ur(e,{byteLength:21,...t}),e}function pr(e,t){if(!sr(e,t.byteLength))throw new C({subject:t.subject,type:typeof e,expectedType:`bytes${t.byteLength??``}Hex`},t)}function mr(e,t){if(!ar(e)&&!sr(e))throw new C({subject:t.subject,type:typeof e,expectedType:`Bytes | BytesHex`},t)}function hr(e,t){pr(e,{byteLength:32,...t})}function gr(e,t){return pr(e,t??{}),e}function _r(e,t){return pr(e,{byteLength:32,...t}),e}function vr(e,t){if(!lr(e,t.byteLength))throw new C({subject:t.subject,type:typeof e,expectedType:`bytes${t.byteLength??``}HexNo0x`},t)}function yr(e,t){return vr(e,{byteLength:32,...t}),e}function br(e,t){if(!Array.isArray(e))throw new C({subject:t.subject,type:typeof e,expectedType:`bytes${t.byteLength??``}Hex[]`},t);for(let n=0;n<e.length;++n)if(!sr(e[n],t.byteLength))throw new C({subject:t.subject,index:n,type:typeof e[n],expectedType:`bytes${t.byteLength??``}Hex`},t)}function xr(e,t){br(e,{byteLength:65,...t})}function Sr(e,t,n){return Jt(e,t)?sr(e[t],n):!1}function Cr(e,t,n,r){if(!Sr(e,t,r.byteLength))throw new _({subject:n,property:t,expectedType:`bytes${r.byteLength??``}Hex`,type:$t(e,t)},r)}function wr(e,t,n,r){Cr(e,t,n,{byteLength:65,...r})}function Tr(e,t,n){return Jt(e,t)?lr(e[t],n):!1}function Er(e,t,n,r){if(!Tr(e,t,r.byteLength))throw new _({subject:n,property:t,expectedType:`bytes${r.byteLength??``}HexNo0x`,type:$t(e,t)},r)}function Dr(e,t,n,r){Xt(e,t,n,r);let i=e[t];for(let e=0;e<i.length;++e)if(!sr(i[e],r.byteLength))throw new _({subject:n,index:e,property:t,expectedType:`bytes${r.byteLength??``}Hex`,type:typeof i[e]},r)}function Or(e,t,n,r){Dr(e,t,n,{byteLength:32,...r})}function kr(e,t,n,r){Xt(e,t,n,r);let i=e[t];for(let e=0;e<i.length;++e)if(!lr(i[e]))throw new _({subject:n,index:e,property:t,expectedType:`bytes${r.byteLength??``}HexNo0x`,type:typeof i[e]},r)}var Ar={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,b:11,c:12,d:13,e:14,f:15,A:10,B:11,C:12,D:13,E:14,F:15};Object.freeze(Ar);var jr=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`));Object.freeze(jr);var Mr=new Uint8Array([48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102]);function Nr(e){if(!e||e.length===0)return``;let t=``;for(let n of e)t+=n.toString(16).padStart(2,`0`);return t}function Pr(e){return`0x${Nr(e)}`}function Fr(e){if(!or(e))throw Error(`Invalid bytes32 argument`);return`0x${Nr(e)}`}function Ir(e,t){let n=t===!0?e.length*2:e.length*2+2,r=new Uint8Array(n),i=0;t!==!0&&(r[0]=48,r[1]=120,i=2);let a=i;for(let t of e)r[a]=Mr[t>>4],r[a+1]=Mr[t&15],a+=2;return new TextDecoder().decode(r)}async function Lr(e,t,n){let r=yr(b(t.trim()).toLowerCase(),{subject:`SHA-256 digest`});if(typeof crypto>`u`||crypto.subtle===void 0)throw Error(`Web Crypto API is not available`);let i=await crypto.subtle.digest(`SHA-256`,e),a=Ir(new Uint8Array(i),!0);if(a!==r)throw new nr({subject:n?.subject??`bytes`,expected:r,actual:a},{})}function Rr(e){if(e.length%2!=0)throw Error(`Invalid hex string: odd length`);let t=e.replace(/^(0x)/,``).match(/.{1,2}/g);return t?Uint8Array.from(t.map(e=>parseInt(e,16))):new Uint8Array}function zr(e){let t=b(e);if(t.length%2!=0||t.length>40)throw Error(`Invalid bytes20 hex string`);return Rr(`0x`+t.padStart(40,`0`))}function Br(e){let t=b(e);if(t.length%2!=0||t.length>64)throw Error(`Invalid bytes32 hex string`);return Rr(`0x`+t.padStart(64,`0`))}function Vr(e,t){let n=t?.strict===!0,r=e[0]===`0`&&e[1]===`x`?2:0,i=e.length-r;if(i%2!=0)throw new C({subject:t?.subject,expectedType:`bytesHex`,metaMessages:[`hex string length must be even`]},t??{});if(t?.byteLength!==void 0&&i!==t.byteLength)throw new C({subject:t.subject,expectedType:`bytesHex`,metaMessages:[`expected ${t.byteLength} bytes, got ${i/2}`]},t);let a=new Uint8Array(i/2);for(let i=0;i<a.length;i++){let o=Ar[e[r+i*2]],s=Ar[e[r+i*2+1]];if(o===void 0||s===void 0){if(n)throw new C({subject:t.subject,expectedType:`bytesHex`,metaMessages:[`invalid hex character at position ${r+i*2}`]},t);a[i]=(o??0)<<4|(s??0);continue}a[i]=o<<4|s}return a}function Hr(e){if(!e||e.length===0)return BigInt(0);let t=BigInt(0);for(let n of e)t=t<<BigInt(8)|BigInt(n);return t}function Ur(e,t){let n=t?.byteLength;if(!wn(e,n))throw new C({subject:t?.subject,type:typeof e,expectedType:`uintBigInt`},t??{});let r=e.toString(16);return n!==void 0&&(r=r.padStart(n*2,`0`)),r.length%2==0?`0x`+r:`0x0`+r}function Wr(e,t){if(ar(e))return t?.copy===!0?new Uint8Array(e):e;if(typeof e==`string`)return Vr(e,{strict:!0});throw new C({subject:t?.subject,expectedType:[`bytes`,`bytesHex`,`bytesHexNo0x`]},t??{})}function Gr(...e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function Kr(e){return`0x`+e.map(e=>e.substring(2)).join(``)}function qr(e){if(e instanceof Uint8Array)return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);let t=Object.prototype.toString.call(e);if(ArrayBuffer.isView(e)&&t===`[object Uint8Array]`)return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);if(t===`[object ArrayBuffer]`)return new Uint8Array(e);throw TypeError(`Unsupported bytes type: ${t}`)}function Jr(e,t){if(t>=e.length)throw RangeError(`Position ${t} out of bounds for bytes of length ${e.length}`);return e[t]}function Yr(e,t){let n=Zr(e,t,1);return parseInt(n,16)}function Xr(e,t){let n=Zr(e,t,8);return BigInt(n)}function Zr(e,t,n){let r=2+t*2;if(r+2*n>e.length)throw RangeError(`Position ${t} with length ${n} out of bounds`);return`0x${e.slice(r,r+2*n)}`}function Qr(e){let t=e>0?Math.ceil(e/4)*4:0,n=new ArrayBuffer(t),r=new Uint8Array(new Uint16Array([1]).buffer)[0]===1;return new Uint32Array(n).fill(r?4022250974:3735928559),new Uint8Array(n).subarray(0,e)}var $r=BigInt(2**32-1),ei=BigInt(32);function ti(e,t=!1){return t?{h:Number(e&$r),l:Number(e>>ei&$r)}:{h:Number(e>>ei&$r)|0,l:Number(e&$r)|0}}function ni(e,t=!1){let n=e.length,r=new Uint32Array(n),i=new Uint32Array(n);for(let a=0;a<n;a++){let{h:n,l:o}=ti(e[a],t);[r[a],i[a]]=[n,o]}return[r,i]}var ri=(e,t,n)=>e<<n|t>>>32-n,ii=(e,t,n)=>t<<n|e>>>32-n,ai=(e,t,n)=>t<<n-32|e>>>64-n,oi=(e,t,n)=>e<<n-32|t>>>64-n;function si(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`}function ci(e,t=``){if(!Number.isSafeInteger(e)||e<0){let n=t&&`"${t}" `;throw Error(`${n}expected integer >= 0, got ${e}`)}}function li(e,t,n=``){let r=si(e),i=e?.length,a=t!==void 0;if(!r||a&&i!==t){let o=n&&`"${n}" `,s=a?` of length ${t}`:``,c=r?`length=${i}`:`type=${typeof e}`;throw Error(o+`expected Uint8Array`+s+`, got `+c)}return e}function ui(e,t=!0){if(e.destroyed)throw Error(`Hash instance has been destroyed`);if(t&&e.finished)throw Error(`Hash#digest() has already been called`)}function di(e,t){li(e,void 0,`digestInto() output`);let n=t.outputLen;if(e.length<n)throw Error(`"digestInto() output" expected to be of length >=`+n)}function fi(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function pi(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}var mi=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function hi(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function gi(e){for(let t=0;t<e.length;t++)e[t]=hi(e[t]);return e}var _i=mi?e=>e:gi;function vi(e,t={}){let n=(t,n)=>e(n).update(t).digest(),r=e(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.create=t=>e(t),Object.assign(n,t),Object.freeze(n)}var yi=BigInt(0),bi=BigInt(1),xi=BigInt(2),Si=BigInt(7),Ci=BigInt(256),wi=BigInt(113),Ti=[],Ei=[],Di=[];for(let e=0,t=bi,n=1,r=0;e<24;e++){[n,r]=[r,(2*n+3*r)%5],Ti.push(2*(5*r+n)),Ei.push((e+1)*(e+2)/2%64);let i=yi;for(let e=0;e<7;e++)t=(t<<bi^(t>>Si)*wi)%Ci,t&xi&&(i^=bi<<(bi<<BigInt(e))-bi);Di.push(i)}var Oi=ni(Di,!0),ki=Oi[0],Ai=Oi[1],ji=(e,t,n)=>n>32?ai(e,t,n):ri(e,t,n),Mi=(e,t,n)=>n>32?oi(e,t,n):ii(e,t,n);function Ni(e,t=24){let n=new Uint32Array(10);for(let r=24-t;r<24;r++){for(let t=0;t<10;t++)n[t]=e[t]^e[t+10]^e[t+20]^e[t+30]^e[t+40];for(let t=0;t<10;t+=2){let r=(t+8)%10,i=(t+2)%10,a=n[i],o=n[i+1],s=ji(a,o,1)^n[r],c=Mi(a,o,1)^n[r+1];for(let n=0;n<50;n+=10)e[t+n]^=s,e[t+n+1]^=c}let t=e[2],i=e[3];for(let n=0;n<24;n++){let r=Ei[n],a=ji(t,i,r),o=Mi(t,i,r),s=Ti[n];t=e[s],i=e[s+1],e[s]=a,e[s+1]=o}for(let t=0;t<50;t+=10){for(let r=0;r<10;r++)n[r]=e[t+r];for(let r=0;r<10;r++)e[t+r]^=~n[(r+2)%10]&n[(r+4)%10]}e[0]^=ki[r],e[1]^=Ai[r]}pi(n)}var Pi=class e{state;pos=0;posOut=0;finished=!1;state32;destroyed=!1;blockLen;suffix;outputLen;enableXOF=!1;rounds;constructor(e,t,n,r=!1,i=24){if(this.blockLen=e,this.suffix=t,this.outputLen=n,this.enableXOF=r,this.rounds=i,ci(n,`outputLen`),!(0<e&&e<200))throw Error(`only keccak-f1600 function is supported`);this.state=new Uint8Array(200),this.state32=fi(this.state)}clone(){return this._cloneInto()}keccak(){_i(this.state32),Ni(this.state32,this.rounds),_i(this.state32),this.posOut=0,this.pos=0}update(e){ui(this),li(e);let{blockLen:t,state:n}=this,r=e.length;for(let i=0;i<r;){let a=Math.min(t-this.pos,r-i);for(let t=0;t<a;t++)n[this.pos++]^=e[i++];this.pos===t&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:e,suffix:t,pos:n,blockLen:r}=this;e[n]^=t,t&128&&n===r-1&&this.keccak(),e[r-1]^=128,this.keccak()}writeInto(e){ui(this,!1),li(e),this.finish();let t=this.state,{blockLen:n}=this;for(let r=0,i=e.length;r<i;){this.posOut>=n&&this.keccak();let a=Math.min(n-this.posOut,i-r);e.set(t.subarray(this.posOut,this.posOut+a),r),this.posOut+=a,r+=a}return e}xofInto(e){if(!this.enableXOF)throw Error(`XOF is not possible for this instance`);return this.writeInto(e)}xof(e){return ci(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(di(e,this),this.finished)throw Error(`digest() was already called`);return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,pi(this.state)}_cloneInto(t){let{blockLen:n,suffix:r,outputLen:i,rounds:a,enableXOF:o}=this;return t||=new e(n,r,i,o,a),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=a,t.suffix=r,t.outputLen=i,t.enableXOF=o,t.destroyed=this.destroyed,t}},Fi=((e,t,n,r={})=>vi(()=>new Pi(t,e,n),r))(1,136,32),Ii=class extends Wt{constructor(e,t){super({...t,message:e.address===void 0?`Address is invalid.`:`Address "${e.address}" is invalid.`,name:`AddressError`})}},Li=class extends Wt{constructor(e,t){super({...t,message:e.address===void 0?`Checksummed address is invalid.`:`Checksummed address "${e.address}" is invalid.`,name:`ChecksummedAddressError`})}};function Ri(e){let t=b(e),n=new Uint8Array(20);for(let e=0;e<20;e++)n[e]=parseInt(t.slice(e*2,e*2+2),16);return n}function zi(e){try{return Zi(e)===e}catch{return!1}}function Bi(e,t){if(!zi(e))throw typeof e==`string`?new Li({address:e},t):new C({subject:t.subject,type:typeof e,expectedType:`checksummedAddress`},t)}function Vi(e,t){return Bi(e,t??{}),e}function Hi(e,t){if(!Array.isArray(e))throw new C({subject:t.subject,type:typeof e,expectedType:`checksummedAddress[]`},t);for(let n=0;n<e.length;++n)if(!zi(e[n]))throw new Li({address:String(e)},t)}function Ui(e){if(!cr(e))return!1;let t=b(e),n=t.toLowerCase();return t===n||Qi(n)===e}function Wi(e,t){return E(e,t??{}),e}function E(e,t){if(!Ui(e))throw new Ii({address:String(e)},t)}function Gi(e,t){if(!Array.isArray(e))throw new C({subject:t.subject,type:typeof e,expectedType:`address[]`},t);for(let n=0;n<e.length;++n)if(!Ui(e[n]))throw new Ii({address:String(e)},t)}function Ki(e,t){return Jt(e,t)?Ui(e[t]):!1}function qi(e,t,n,r){if(!Ki(e,t)){let i=$t(e,t);throw new _({subject:n,property:t,type:i,expectedType:`address`,value:i===`string`?String(e[t]):void 0},r)}}function Ji(e,t){return Jt(e,t)?zi(e[t]):!1}function Yi(e,t,n,r){if(!Ji(e,t)){let i=$t(e,t);throw new _({subject:n,property:t,type:i,expectedType:`checksummedAddress`,value:i===`string`?String(e[t]):void 0},r)}}function Xi(e,t,n,r){Xt(e,t,n,r);let i=e[t];for(let e=0;e<i.length;++e)Bi(i[e],r)}function Zi(e){if(cr(e))return Qi(b(e).toLowerCase())}function D(e){return Qi(b(e).toLowerCase())}function Qi(e){let t=Pr(Fi(new TextEncoder().encode(e))),n=`0x`;for(let r=0;r<40;r++){let i=e[r];if(i>=`a`&&i<=`f`){let e=parseInt(t[r+2],16);n+=e>=8?i.toUpperCase():i}else n+=i}return n}function $i(e){if(e instanceof Error)return e;let t=e.message??`Non-Error value caught in exception handler`,n=e.name??`ErrorWrapper`,r=e.cause??e,i=Error(t,{cause:r});return i.name=n,i}function ea(e,t){throw new en({message:t})}function ta(e){let t;for(t=typeof e==`string`?e:e instanceof Error?e.message:String(e);t.startsWith(`"`)||t.startsWith(`'`);)t=t.slice(1);for(;t.endsWith(`"`)||t.endsWith(`'`);)t=t.slice(0,-1);return t}function na(e,t){if(typeof e!=`boolean`)throw new C({subject:t.subject,type:typeof e,expectedType:`boolean`},t)}function ra(e,t){return na(e,t??{}),e}function ia(e,t){if(typeof e==`boolean`)return e;if(e===1||e===1n||e===`true`)return!0;if(e===0||e===0n||e===`false`)return!1;throw new C({subject:t.subject,type:typeof e,expectedType:`boolean`},t)}var aa=2,oa={ebool:0,euint8:2,euint16:3,euint32:4,euint64:5,euint128:6,eaddress:7,euint256:8},sa={0:`ebool`,2:`euint8`,3:`euint16`,4:`euint32`,5:`euint64`,6:`euint128`,7:`eaddress`,8:`euint256`},ca={bool:`ebool`,uint8:`euint8`,uint16:`euint16`,uint32:`euint32`,uint64:`euint64`,uint128:`euint128`,uint256:`euint256`,address:`eaddress`},la={0:2,2:8,3:16,4:32,5:64,6:128,7:160,8:256},ua={2:0,8:2,16:3,32:4,64:5,128:6,160:7,256:8},da={0:`bool`,2:`uint256`,3:`uint256`,4:`uint256`,5:`uint256`,6:`uint256`,7:`address`,8:`uint256`},fa={euint8:255,euint16:dn,euint32:fn,euint64:pn,euint128:mn,euint256:w};Object.freeze(oa),Object.freeze(la),Object.freeze(ua),Object.freeze(da),Object.freeze(fa);function pa(e){return typeof e==`number`&&e in sa}function ma(e){return typeof e==`string`&&e in oa}function ha(e){return typeof e==`number`&&e in ua}function ga(e){return _a(e,{}),e}function _a(e,t){if(!ha(e))throw new C({subject:t.subject,expectedType:Object.keys(ua).join(`|`)},t)}function va(e,t){if(!Array.isArray(e))throw new C({type:typeof e,expectedType:`EncryptionBits[]`},t);for(let n=0;n<e.length;++n)if(!ha(e[n]))throw new C({subject:t.subject,index:n,type:typeof e[n],expectedType:`EncryptionBits`},t)}function ya(e){return ua[e]}function ba(e){return sa[e]}function xa(e){return ca[e]}function Sa(e){return e.substring(1)}function Ca(e){return ma(e)?Sa(e):e}function wa(e){return da[e]}function Ta(e){let t=la[e];return Da(t),t}function Ea(e){let t=la[oa[e]];return Da(t),t}function Da(e){y(e>=aa,`Invalid FheType encryption bit width: ${e}. Minimum encryption bit width is ${aa} bits.`)}function Oa(e,t){let n=e;switch(n){case`ebool`:return t!==0n;case`eaddress`:return D(Wi(Ur(t,{byteLength:20})));case`euint8`:case`euint16`:case`euint32`:return Ln(t,{max:BigInt(fa[n]),subject:`value`}),Number(t);case`euint64`:case`euint128`:case`euint256`:return Ln(t,{max:BigInt(fa[n]),subject:`value`}),t;default:return ea(n,`Unknown fheTypeName: ${n}`)}}function ka(e,t){return Oa(e,Hr(t))}function Aa(e,t,n){switch(e){case`ebool`:return ra(t,n);case`eaddress`:return Wi(t,n);case`euint8`:case`euint16`:case`euint32`:return T(t,{...n,max:gn[Sa(e)]}),t;case`euint64`:case`euint128`:case`euint256`:return Ln(t,{...n,max:gn[Sa(e)]}),t;default:return ea(e,`Unknown fheTypeName: ${e}`)}}function ja(e,t,n){switch(e){case`ebool`:return ra(t,n);case`eaddress`:return E(t,n??{}),t;case`euint8`:case`euint16`:case`euint32`:return Fn(t,{...n,max:gn[e]}),Number(t);case`euint64`:case`euint128`:case`euint256`:return Fn(t,{...n,max:gn[e]}),BigInt(t);default:return ea(e,`Unknown fheTypeName: ${e}`)}}var Ma=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},O=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},k,Na,Pa=Symbol(`FhevmHandle.token`),Fa=0,Ia=21,La=22,Ra=30,za=31,Ba=class{constructor(e,t){if(k.set(this,void 0),Na.set(this,void 0),e!==Pa)throw Error(`Unauthorized`);Ma(this,k,t.handleBytes32Hex,`f`),Ma(this,Na,t.handleBytes32,`f`)}get bytes32Hex(){return O(this,k,`f`)}get bytes32HexNo0x(){return b(O(this,k,`f`))}get bytes32(){return O(this,Na,`f`)===void 0&&Ma(this,Na,Br(O(this,k,`f`)),`f`),new Uint8Array(O(this,Na,`f`))}get hash21(){return Zr(O(this,k,`f`),Fa,21)}get chainId(){return Xr(O(this,k,`f`),La)}get fheTypeId(){return Yr(O(this,k,`f`),Ra)}get fheType(){return ba(this.fheTypeId)}get clearType(){return Sa(this.fheType)}get version(){return Yr(O(this,k,`f`),za)}get isComputed(){return this.index===255}get index(){return Yr(O(this,k,`f`),Ia)}get isExternal(){return!this.isComputed}get encryptionBits(){return Ta(this.fheTypeId)}get solidityPrimitiveTypeName(){return wa(this.fheTypeId)}toString(){return O(this,k,`f`)}toJSON(){return O(this,k,`f`)}};k=new WeakMap,Na=new WeakMap,Object.freeze(Ba),Object.freeze(Ba.prototype);function Va(e){return Ya(e),new Ba(Pa,{handleBytes32Hex:e})}function Ha(e){return Xa(e),new Ba(Pa,{handleBytes32Hex:e})}function Ua(e){let t=Fr(e);return Za(e),new Ba(Pa,{handleBytes32Hex:t,handleBytes32:new Uint8Array(e)})}function Wa(e){return e instanceof Ba?e:typeof e==`object`&&e&&`bytes32Hex`in e?(hr(e.bytes32Hex,{}),Va(e.bytes32Hex)):typeof e==`string`?(hr(e,{}),Va(e)):(dr(e,{}),Ua(e))}function Ga(e,t,n){let r=n?.actualName===void 0?``:` (${n.actualName})`,i=n?.expectedName===void 0?``:` (${n.expectedName})`;if(e.length!==t.length)throw new qt({message:`Unexpected handles list sizes: ${e.length}${r} != ${t.length}${i}`});let a=t.map(e=>Wa(e));for(let t=0;t<e.length;++t){let n=e[t],o=a[t];if(n.bytes32Hex!==o.bytes32Hex)throw new qt({message:`Unexpected handle[${t}]: ${n.bytes32Hex}${r} != ${o.bytes32Hex}${i}`})}}function Ka({index:e,chainId:t,hash21:n,fheTypeId:r,version:i}){let a=qn(i??0),o=Pn(t).subarray(24,32),s=fr(Rr(n)),c=new Uint8Array(32);return c.set(s,0),c[21]=qn(e??255),c.set(o,22),c[30]=r,c[31]=a,Ua(c)}function qa(e,t){if(e.length===0)return;let n=t??e[0]?.chainId;for(let r of e)if(r.chainId!==n)throw new qt({message:`Handle (${r.bytes32Hex}) has chainId ${r.chainId}, expected ${t}`})}function Ja(e,t,n){if(!pa(e))throw new qt({...n,message:`FHEVM Handle is invalid. Unknown FheType: ${e}`});if(t!==0)throw new qt({...n,message:`FHEVM Handle is invalid. Unknown version: ${t}`})}function Ya(e,t){Ja(Yr(e,Ra),Yr(e,za),t)}function Xa(e,t){if(Ya(e,t),Yr(e,Ia)===255)throw new qt({message:`Expected an input handle (index < 255) but got a computed handle (index = 255)`,handle:e})}function Za(e,t){Ja(Jr(e,Ra),Jr(e,za),t)}var Qa=2048;function $a(e){let t=0;for(let n of e)if(t+=n.encryptionBits,t>Qa)throw Error(`Cannot decrypt more than ${Qa} encrypted bits in a single request`);return t}var eo=class extends g{constructor(e){super({...e,name:`UnknownSignerError`,message:`Invalid address found: ${e.unknownAddress} is not in the list of ${e.type} signers`})}},to=class extends g{constructor(e){super({...e,name:`ThresholdSignerError`,message:`${e.type} signers threshold is not reached`})}},no=class extends g{constructor(e){super({...e,name:`DuplicateSignerError`,message:`Duplicate ${e.type} signer address found: ${e.duplicateAddress} appears multiple times in recovered addresses`})}},ro=256,io=ro,ao;function oo(e=11){if(!ao||io+e>ro*2){ao=``,io=0;for(let e=0;e<ro;e++)ao+=(256+Math.random()*256|0).toString(16).substring(1)}let t=io;return io+=e,ao.substring(t,t+e)}var so=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},co=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},lo,uo,fo,po,mo,ho,go=Symbol(`CoreFhevmClient.token`);function _o(e,t){if(Object.keys(e).length===0)throw Error(`Missing ${t} module`);return e}function vo(e,t){let n=new Set;return r=>{if(n.has(r))return e;let i=r(e),a=Object.keys(i);if(a.length!==1||a[0]===void 0)throw Error(`Factory must return exactly one key`);let o=a[0],s=t.get(o);if(s===void 0)throw Error(`Unknown module: ${o}`);if(s.factory!==void 0)throw Error(`Already extended: ${o}`);let c=i[o];if(c===void 0)throw Error(`Missing ${o} in factory result`);return Object.assign(s.placeholder,c),Object.freeze(s.placeholder),s.factory=r,n.add(r),e}}var yo=class{constructor(e,t,n){if(lo.set(this,void 0),uo.set(this,void 0),fo.set(this,void 0),po.set(this,void 0),mo.set(this,{}),ho.set(this,{}),e!==go)throw Error(`Unauthorized`);so(this,fo,n.ethereum,`f`),so(this,po,n.relayer,`f`),so(this,lo,oo(),`f`),so(this,uo,{...n.config,logger:n.config.logger?{...n.config.logger}:void 0,auth:n.config.auth?{...n.config.auth}:void 0,moduleVersions:Ie(n.config.moduleVersions)},`f`);let r=co(this,ho,`f`),i=co(this,mo,`f`);this.verify=e=>{if(e!==t)throw Error(`Unauthorized`)};let a=new Map([[`decrypt`,{placeholder:r}],[`encrypt`,{placeholder:i}]]);this.extend=vo(this,a),this.hasModule=e=>a.get(e)?.factory!==void 0,Object.freeze(this)}get uid(){return co(this,lo,`f`)}get config(){return co(this,uo,`f`)}get ethereum(){return co(this,fo,`f`)}get relayer(){return co(this,po,`f`)}get decrypt(){return _o(co(this,ho,`f`),`decrypt`)}get encrypt(){return _o(co(this,mo,`f`),`encrypt`)}};lo=new WeakMap,uo=new WeakMap,fo=new WeakMap,po=new WeakMap,mo=new WeakMap,ho=new WeakMap,Object.freeze(yo),Object.freeze(yo.prototype);function bo(e,t){return new yo(go,e,t)}function xo(e){return e instanceof yo}function So(e,t){if(!xo(e))throw new C({subject:t.subject,type:typeof e,expectedType:`FhevmRuntime`},t)}function Co(e,t){return wo(e,t,{}),e}function wo(e,t,n){So(e,n),e[t]}function To(e){let{actualOwner:t,expectedOwner:n,name:r}=e,i=t.deref();if(i===void 0)throw Error(`${r} owner has been garbage collected`);if(i!==n)throw Error(`${r} has not the expected owner`)}var Eo=[{inputs:[],name:`getVersion`,outputs:[{internalType:`string`,name:``,type:`string`}],stateMutability:`pure`,type:`function`}],Do=[{inputs:[],name:`getFHEVMExecutorAddress`,outputs:[{internalType:`address`,name:``,type:`address`}],stateMutability:`view`,type:`function`}],Oo=[{inputs:[{internalType:`address`,name:`delegator`,type:`address`},{internalType:`address`,name:`delegate`,type:`address`},{internalType:`address`,name:`contractAddress`,type:`address`},{internalType:`bytes32`,name:`handle`,type:`bytes32`}],name:`isHandleDelegatedForUserDecryption`,outputs:[{internalType:`bool`,name:``,type:`bool`}],stateMutability:`view`,type:`function`}],ko=[{inputs:[],name:`getThreshold`,outputs:[{internalType:`uint256`,name:``,type:`uint256`}],stateMutability:`view`,type:`function`}],Ao=[{inputs:[],name:`getKmsSigners`,outputs:[{internalType:`address[]`,name:``,type:`address[]`}],stateMutability:`view`,type:`function`}],jo=[{inputs:[],name:`getCurrentKmsContextId`,outputs:[{internalType:`uint256`,name:``,type:`uint256`}],stateMutability:`view`,type:`function`}],Mo=[{inputs:[],name:`getCurrentKmsContextAndEpoch`,outputs:[{internalType:`uint256`,name:`contextId`,type:`uint256`},{internalType:`uint256`,name:`epochId`,type:`uint256`}],stateMutability:`view`,type:`function`}],No=[{inputs:[],name:`getCoprocessorSigners`,outputs:[{internalType:`address[]`,name:``,type:`address[]`}],stateMutability:`view`,type:`function`}],Po=[{inputs:[{internalType:`bytes32`,name:`handle`,type:`bytes32`},{internalType:`address`,name:`account`,type:`address`}],name:`persistAllowed`,outputs:[{internalType:`bool`,name:``,type:`bool`}],stateMutability:`view`,type:`function`}],Fo=[{inputs:[{internalType:`bytes32`,name:`handle`,type:`bytes32`}],name:`isAllowedForDecryption`,outputs:[{internalType:`bool`,name:``,type:`bool`}],stateMutability:`view`,type:`function`}],Io=[{type:`function`,name:`getContextSignersAndThresholdFromExtraData`,inputs:[{name:`extraData`,type:`bytes`}],outputs:[{name:`signers`,type:`address[]`},{name:`threshold`,type:`uint256`}],stateMutability:`view`}],Lo=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Ro=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},zo,Bo,Vo=class e{constructor(e,t){zo.set(this,void 0),Bo.set(this,void 0),Lo(this,zo,e,`f`),Lo(this,Bo,t,`f`),Object.freeze(this)}static verify(t,n){if(!(t instanceof e))throw Error(`Invalid TrustedValue`);if(n!==Ro(t,Bo,`f`))throw Error(`Token mismatch`);return Ro(t,zo,`f`)}toString(){return`TrustedValue`}toJSON(){return`TrustedValue`}};zo=new WeakMap,Bo=new WeakMap,Object.freeze(Vo.prototype),Object.freeze(Vo);function Ho(e,t){return new Vo(e,t)}function Uo(e,t){return Vo.verify(e,t)}function Wo(e,t){return Ho(e,t)}var A=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Go,j,Ko,qo,Jo=class{constructor(e,t){Object.defineProperty(this,"resolvedKind",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"value",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"pendingKind",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"pendingOp",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metadata",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"ready",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"owner",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_pending",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_pendingChained",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.owner=new WeakRef(e),this.resolvedKind=void 0,this.value=void 0,this.pendingKind=void 0,this.pendingOp=void 0,this.metadata=t,this._pendingChained=!1}};function Yo(e,t){if(e!==t)throw Error(`FheEncryptionKey relayerUrl mismatch: expected "${t}" but got "${e}". The FheEncryptionKey must originate from the same relayer.`)}function Xo(e){if(e.resolvedKind===`wasm`&&e.pendingKind!==void 0)throw Error(`Debug: resolvedKind is 'wasm' but pendingKind is `+JSON.stringify(e.pendingKind))}var Zo=class{constructor(){Go.add(this),j.set(this,new Map)}get(e){return A(this,j,`f`).get(e)}has(e){return A(this,j,`f`).has(e)}remove(e){let t=A(this,j,`f`).get(e);return t!==void 0&&A(this,Go,`m`,Ko).call(this,t),A(this,j,`f`).delete(e)}clear(){for(let e of A(this,j,`f`).values())A(this,Go,`m`,Ko).call(this,e);A(this,j,`f`).clear()}setBytes(e,t,n){A(this,j,`f`).has(t)||(Yo(n.metadata.relayerUrl,t),this.ensureBytes({owner:e,relayerUrl:t,fetcher:()=>Promise.resolve(n),metadata:n.metadata}))}ensureBytes(e){let{owner:t,relayerUrl:n,fetcher:r,metadata:i}=e;if(A(this,j,`f`).has(n))return;let a=new Jo(t,i),o=r();a.pendingKind=`bytes`,a.pendingOp=`fetching`,a._pending=o,a.ready=A(this,Go,`m`,qo).call(this,n,a,`bytes`,o),A(this,j,`f`).set(n,a)}ensureWasm(e){let{relayerUrl:t,deserializeFn:n}=e,r=A(this,j,`f`).get(t);if(r===void 0||r.resolvedKind===`wasm`||r.pendingKind===`wasm`)return;if(Xo(r),r._pendingChained)throw Error(`Debug: _pending was already chained from`);r._pendingChained=!0;let i=r._pending.then(e=>(Xo(r),n(e)));r.pendingKind=`wasm`,r.pendingOp=`converting`,r._pending=i,r.ready=A(this,Go,`m`,qo).call(this,t,r,`wasm`,i)}async resolveBytes(e){let{relayerUrl:t,serializeFn:n}=e,r=A(this,j,`f`).get(t);if(r===void 0)return;if(r.resolvedKind===`bytes`)return r.value;if(r.resolvedKind===`wasm`){if(n===void 0)throw Error(`Cannot convert wasm to bytes: serialize function not provided`);return n(r.value)}if(r.pendingKind===void 0)return;await r.ready;let i=r.resolvedKind;if(i===`bytes`)return r.value;if(i===`wasm`){if(n===void 0)throw Error(`Cannot convert wasm to bytes: serialize function not provided`);return n(r.value)}}};j=new WeakMap,Go=new WeakSet,Ko=function(e){e.ready=Promise.resolve(),e.pendingKind=void 0,e.pendingOp=void 0},qo=function(e,t,n,r){let i=r.then(r=>{t.ready===i&&(Yo(r.metadata.relayerUrl,e),t.resolvedKind=n,t.value=r,t.pendingKind=void 0,t.pendingOp=void 0,Xo(t))},n=>{if(t.ready===i)throw t.pendingKind=void 0,t.pendingOp=void 0,A(this,j,`f`).get(e)===t&&A(this,j,`f`).delete(e),n});return i};var Qo=new Zo,$o=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},M=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},es,ts,ns,rs,is,as=Symbol(`FhevmClientFrozenContext.token`),os=class{constructor(e,t){if(es.set(this,void 0),ts.set(this,void 0),ns.set(this,void 0),rs.set(this,void 0),is.set(this,void 0),e!==as)throw Error(`Use createFhevmClientFrozenContext() instead`);$o(this,es,Object.freeze({...t.hostContractVersions??{}}),`f`),$o(this,ts,t.protocolVersion,`f`),$o(this,ns,t.pubKeyCrsVersion,`f`),$o(this,rs,t.tfheVersion,`f`),$o(this,is,t.tkmsVersion,`f`),Object.freeze(this)}hasHostContractVersion(e){return M(this,es,`f`)[e]!==void 0}hostContractVersion(e){let t=M(this,es,`f`)[e];if(t===void 0)throw Error(`FhevmClientFrozenContext: host contract version '${e}' was not resolved in this context.`);return t}tryHostContractVersion(e){return M(this,es,`f`)[e]}get hasProtocolVersion(){return M(this,ts,`f`)!==void 0}get protocolVersion(){if(M(this,ts,`f`)===void 0)throw Error(`FhevmClientFrozenContext: protocolVersion was not resolved in this context.`);return M(this,ts,`f`)}get tryProtocolVersion(){return M(this,ts,`f`)}get hasPubKeyCrsVersion(){return M(this,ns,`f`)!==void 0}get pubKeyCrsVersion(){if(M(this,ns,`f`)===void 0)throw Error(`FhevmClientFrozenContext: pubKeyCrsVersion was not resolved in this context.`);return M(this,ns,`f`)}get tryPubKeyCrsVersion(){return M(this,ns,`f`)}get hasProtocolContext(){return M(this,ts,`f`)!==void 0&&M(this,ns,`f`)!==void 0}get protocolContext(){return Object.freeze({protocolVersion:this.protocolVersion,pubKeyCrsVersion:this.pubKeyCrsVersion})}get hasTfheVersion(){return M(this,rs,`f`)!==void 0}get tfheVersion(){if(M(this,rs,`f`)===void 0)throw Error(`FhevmClientFrozenContext: tfheVersion was not resolved in this context.`);return M(this,rs,`f`)}get tryTfheVersion(){return M(this,rs,`f`)}get hasTkmsVersion(){return M(this,is,`f`)!==void 0}get tkmsVersion(){if(M(this,is,`f`)===void 0)throw Error(`FhevmClientFrozenContext: tkmsVersion was not resolved in this context.`);return M(this,is,`f`)}get tryTkmsVersion(){return M(this,is,`f`)}toJSON(){return{hostContractVersions:M(this,es,`f`),protocolVersion:M(this,ts,`f`),pubKeyCrsVersion:M(this,ns,`f`),tfheVersion:M(this,rs,`f`),tkmsVersion:M(this,is,`f`)}}};es=new WeakMap,ts=new WeakMap,ns=new WeakMap,rs=new WeakMap,is=new WeakMap,Object.freeze(os),Object.freeze(os.prototype);function ss(e){return new os(as,e)}function cs(e){us(e,{});let t=e.toJSON(),n={},r=Object.entries(t.hostContractVersions??{});for(let[e,t]of r)t!==void 0&&(n[e]={...t});return ss({hostContractVersions:n,protocolVersion:t.protocolVersion===void 0?void 0:{...t.protocolVersion},pubKeyCrsVersion:t.pubKeyCrsVersion===void 0?void 0:{...t.pubKeyCrsVersion},tfheVersion:t.tfheVersion,tkmsVersion:t.tkmsVersion})}function ls(e){return e instanceof os}function us(e,t){if(!ls(e))throw new C({subject:t.subject,type:typeof e,expectedType:`FhevmClientFrozenContext`},t)}var N=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},P=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},ds,F,fs,ps,ms,hs,gs,_s,vs,ys=Symbol(`CoreFhevmHostClient.token`),bs=Symbol(`CoreFhevmHostClient.getFrozenContext`),xs=Symbol(`CoreFhevmHostClient.setFrozenContext`),Ss=Symbol(`CoreFhevmHostClient.getFrozenContextPromise`),Cs=Symbol(`CoreFhevmHostClient.setFrozenContextPromise`),ws=`Fhevm context has not been resolved. Await client.ready before.`,Ts=class{constructor(e,t,n){if(ds.set(this,void 0),F.set(this,void 0),fs.set(this,void 0),ps.set(this,void 0),ms.set(this,void 0),hs.set(this,void 0),gs.set(this,void 0),_s.set(this,void 0),vs.set(this,void 0),e!==ys)throw Error(`Unauthorized`);N(this,ps,n.runtime,`f`),N(this,ds,oo(),`f`),N(this,F,void 0,`f`),N(this,fs,void 0,`f`),N(this,ms,n.client===void 0?void 0:Wo(n.client,t),`f`),N(this,hs,n.chain,`f`),N(this,gs,Ls(n.options),`f`),N(this,_s,new Set,`f`),N(this,vs,void 0,`f`),P(this,ps,`f`).verify(t),Object.defineProperties(this,{uid:{get:()=>P(this,ds,`f`),configurable:!1,enumerable:!0},protocolVersion:{get:()=>{if(P(this,F,`f`)===void 0)throw Error(ws);return P(this,F,`f`).protocolVersion},configurable:!1,enumerable:!0},tfheVersion:{get:()=>{if(P(this,F,`f`)===void 0)throw Error(ws);return P(this,F,`f`).tfheVersion},configurable:!1,enumerable:!0},tkmsVersion:{get:()=>{if(P(this,F,`f`)===void 0)throw Error(ws);return P(this,F,`f`).tkmsVersion},configurable:!1,enumerable:!0},chain:{get:()=>P(this,hs,`f`),configurable:!1,enumerable:!0},options:{get:()=>P(this,gs,`f`),configurable:!1,enumerable:!0},trustedClient:{get:()=>P(this,ms,`f`),configurable:!1,enumerable:!0},client:{get:()=>P(this,ms,`f`)===void 0?void 0:Uo(P(this,ms,`f`),t),configurable:!1,enumerable:!0},runtime:{get:()=>P(this,ps,`f`),configurable:!1,enumerable:!0},ethereum:{get:()=>P(this,ps,`f`).ethereum,configurable:!1,enumerable:!0},verify:{value:e=>{if(e!==t)throw Error(`Unauthorized`)},configurable:!1,enumerable:!1,writable:!1},[bs]:{value:()=>P(this,F,`f`),configurable:!1,enumerable:!1,writable:!1},[xs]:{value:e=>{N(this,F,e,`f`)},configurable:!1,enumerable:!1,writable:!1},[Ss]:{value:()=>P(this,fs,`f`),configurable:!1,enumerable:!1,writable:!1},[Cs]:{value:e=>{N(this,fs,e,`f`)},configurable:!1,enumerable:!1,writable:!1},extend:{value:e=>Is(this,e,e=>{P(this,_s,`f`).add(e),N(this,vs,void 0,`f`)}),configurable:!1,enumerable:!1,writable:!1},init:{value:()=>(N(this,vs,P(this,vs,`f`)??Promise.all([...P(this,_s,`f`)].map(e=>e(this))).then(()=>{}),`f`),P(this,vs,`f`)),configurable:!1,enumerable:!1,writable:!1},ready:{get:()=>this.init(),configurable:!1,enumerable:!0}})}};ds=new WeakMap,F=new WeakMap,fs=new WeakMap,ps=new WeakMap,ms=new WeakMap,hs=new WeakMap,gs=new WeakMap,_s=new WeakMap,vs=new WeakMap,Object.freeze(Ts),Object.freeze(Ts.prototype);function Es(e){return e instanceof Ts}function Ds(e){return Es(e)?e.trustedClient!==void 0:!1}function Os(e){return Ns(e,{}),e}function ks(e){return Ps(e,{}),e}function As(e,t){return js(e,t),e}function js(e,t){let n=ks(e);if(n.chain===void 0)throw Error(`Fhevm client chain is undefined`);wo(n.runtime,t,{})}function Ms(e){let t=ks(e);if(t.chain===void 0)throw Error(`Fhevm client chain is undefined`);So(t.runtime,{})}function Ns(e,t){if(!Es(e))throw new C({subject:t.subject,type:typeof e,expectedType:`CoreFhevm`},t)}function Ps(e,t){if(!Ds(e))throw new C({subject:t.subject,type:typeof e,expectedType:`CoreClientFhevm`},t)}function I(e){return Ps(e,{}),e.trustedClient}function Fs(e,t){let n=t.options?.fheEncryptionKey;if(n!==void 0){let e=t.chain?.fhevm.relayerUrl;Qo.setBytes(t.runtime,e??n.metadata.relayerUrl,n)}return new Ts(ys,e,t)}function Is(e,t,n){let{actions:r,runtime:i,init:a}=t(e);if(i!==e.runtime)throw Error(`actionsFactory must return the same runtime instance (id=${e.uid})`);a!==void 0&&n(a);for(let[t,n]of Object.entries(r))t in e||Object.defineProperty(e,t,{value:n,writable:!1,configurable:!1,enumerable:!0});return e}function Ls(e){return Object.freeze({batchRpcCalls:e?.batchRpcCalls??!1,moduleVersions:Ie(e?.moduleVersions)})}async function L(e){let t=Os(e);await t.ready;let n=zs(t);if(n===void 0)throw Error(`initPublicAction: no resolved FhevmClientFrozenContext after "ready". A client created via createFhevm*Client() always resolves and stores its context during init, so this is an internal invariant violation (client not built through the SDK, or init did not complete).`);return cs(n)}function Rs(e,t){Os(e)[xs](t)}function zs(e){return Os(e)[bs]()}function Bs(e,t){Os(e)[Cs](t)}function Vs(e){return Os(e)[Ss]()}var Hs=864e5,Us=9e5;function Ws(e){let t=new Map,{executeFn:n,cacheKeyFn:r,ttlMs:i,maxSize:a=100,nowFn:o=Date.now}=e;function s(e,s){if(i===0)return n(e,s);let c=r(e,s),l=t.get(c);if(l!==void 0){if(i!==void 0&&o()-l.timestamp>i||s.forceRefresh===!0)t.delete(c);else return l.promise}let u=n(e,s).then(e=>{let n=t.get(c);return n?.promise===u&&t.set(c,{promise:Promise.resolve(e),timestamp:n.timestamp,settled:!0}),e},e=>{throw t.get(c)?.promise===u&&t.delete(c),e});return t.size>=a&&(t=Gs(t)),t.set(c,{promise:u,timestamp:o(),settled:!1}),u}function c(e){let n=e?.includeInflight===!0,r=e?.key;if(r!==void 0){let e=t.get(r);e!==void 0&&(n||e.settled)&&t.delete(r)}else t=n?new Map:Gs(t)}return{execute:s,clear:c}}function Gs(e){let t=new Map;for(let[n,r]of e)r.settled||t.set(n,r);return t}var Ks=Ws({executeFn:Ys,cacheKeyFn:qs,ttlMs:Hs});function qs(e,t){return`${e.runtime.uid.toLowerCase()}:${t.address.toLowerCase()}`}function Js(e,t){return Ks.execute(e,t)}async function Ys(e,t){let n=I(e),r=t.address,i=await e.runtime.ethereum.readContract(n,{address:r,abi:Eo,args:[],functionName:Eo[0].name});try{cn(i)}catch(e){throw Error(`Invalid Version.`,{cause:e})}return Xs(i)}function Xs(e){let t=`Invalid version format: "${e}". Expected "<contractName> v<major>.<minor>.<patch>".`,n=e.lastIndexOf(` v`);if(n<1)throw Error(t);let r=e.slice(0,n),i=e.slice(n+2).split(`.`);if(i.length!==3)throw Error(t);let[a,o,s]=i,c=Number(a),l=Number(o),u=Number(s);if(T(c,{}),T(l,{}),T(u,{}),r!==`ACL`&&r!==`FHEVMExecutor`&&r!==`InputVerifier`&&r!==`KMSVerifier`&&r!==`HCULimit`&&r!==`ProtocolConfig`)throw Error(t);return Object.freeze({version:e,contractName:r,major:c,minor:l,patch:u})}function Zs(e,t){return e.major<t.major||e.major===t.major&&e.minor<t.minor}function Qs(e,t){return e.major===t.major&&e.minor===t.minor&&e.patch===t.patch}function $s(e,t){if(e.contractName!==t)throw Error(`Invalid contract name. Expecting '${t}', got ${e.contractName}.`)}var ec=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},R=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},tc,z,nc,rc,ic,ac,oc=Symbol(`KmsExtraData.token`),sc=class{constructor(e,t){if(tc.add(this),z.set(this,void 0),nc.set(this,void 0),rc.set(this,void 0),ic.set(this,void 0),e!==oc)throw Error(`Unauthorized`);ec(this,nc,Xn(t.kmsContextId),`f`),ec(this,rc,Xn(t.kmsEpochId),`f`),ec(this,z,t.version===void 0?void 0:qn(t.version),`f`),ec(this,ic,gr(t.kmsExtraData),`f`),R(this,tc,`m`,ac).call(this)}get version(){return R(this,z,`f`)}get isFutureVersion(){return R(this,z,`f`)===void 0}get kmsContextId(){return R(this,nc,`f`)}get kmsEpochId(){return R(this,rc,`f`)}get bytesHex(){return R(this,ic,`f`)}lt(e){return R(this,z,`f`)!==void 0&&R(this,z,`f`)<e}le(e){return R(this,z,`f`)!==void 0&&R(this,z,`f`)<=e}gt(e){return R(this,z,`f`)===void 0||R(this,z,`f`)>e}ge(e){return R(this,z,`f`)===void 0||R(this,z,`f`)>=e}};z=new WeakMap,nc=new WeakMap,rc=new WeakMap,ic=new WeakMap,tc=new WeakSet,ac=function(){if(R(this,z,`f`)===void 0){if(R(this,nc,`f`)!==0n)throw Error(`kmsContextId must be 0 for unknown kms extraData`);if(R(this,rc,`f`)!==0n)throw Error(`kmsEpochId must be 0 for unknown kms extraData`);return}switch(R(this,z,`f`)){case 0:if(R(this,nc,`f`)!==0n)throw Error(`kmsContextId must be 0 for v0 kms extraData`);if(R(this,rc,`f`)!==0n)throw Error(`kmsEpochId must be 0 for v0 kms extraData`);return;case 1:if(R(this,nc,`f`)===0n)throw Error(`kmsContextId cannot be 0 for v1 kms extraData`);if(R(this,rc,`f`)!==0n)throw Error(`kmsEpochId must be 0 for v1 kms extraData`);return;case 2:if(R(this,nc,`f`)===0n)throw Error(`kmsContextId cannot be 0 for v2 kms extraData`);if(R(this,rc,`f`)===0n)throw Error(`kmsEpochId cannot be 0 for v2 kms extraData`);return;default:throw Error(`Unsupported kms extraData version ${R(this,z,`f`)}`)}};function cc(e){let t=e===`0x`?`0x00`:e;if(t.length<4)throw Error(`Unsupported kms extraData length ${e.length}: must be more than 4 bytes`);let n=qn(Number(`0x`+t.slice(2,4)));if(n===0)return new sc(oc,{version:0,kmsContextId:0n,kmsEpochId:0n,kmsExtraData:`0x00`});if(n===1){if(e.length!=68)throw Error(`Invalid kms extraData length for v1: expected 68, got ${e.length}`);let t=_r(`0x${e.slice(4,68)}`);return new sc(oc,{version:1,kmsContextId:Xn(BigInt(t)),kmsEpochId:0n,kmsExtraData:e})}if(n===2){if(e.length!=132)throw Error(`Invalid extraData length for v2: expected 132, got ${e.length}`);let t=_r(`0x${e.slice(4,68)}`),n=Xn(BigInt(t)),r=_r(`0x${e.slice(68,132)}`);return new sc(oc,{version:2,kmsContextId:n,kmsEpochId:Xn(BigInt(r)),kmsExtraData:e})}return new sc(oc,{version:void 0,kmsContextId:0n,kmsEpochId:0n,kmsExtraData:e})}function lc(e){return e.version===0?`0x`:e.bytesHex}function uc(){return new sc(oc,{version:0,kmsContextId:0n,kmsEpochId:0n,kmsExtraData:`0x00`})}function dc(e){let t=`1`.padStart(2,`0`),n=e.kmsContextId.toString(16).padStart(64,`0`);return new sc(oc,{version:1,kmsContextId:e.kmsContextId,kmsEpochId:0n,kmsExtraData:`0x${t}${n}`})}function fc(e){let t=`2`.padStart(2,`0`),n=e.kmsContextId.toString(16).padStart(64,`0`),r=e.kmsEpochId.toString(16).padStart(64,`0`);return new sc(oc,{version:2,kmsContextId:e.kmsContextId,kmsEpochId:e.kmsEpochId,kmsExtraData:`0x${t}${n}${r}`})}function pc(e){if(e.kmsEpochId!==0n&&e.kmsContextId===0n)throw Error(`kmsContextId cannot be 0 if kmsEpochId is not 0`)}function mc(e){return pc(e),e.kmsEpochId===0n?e.kmsContextId===0n?uc():dc({kmsContextId:e.kmsContextId}):fc({kmsContextId:e.kmsContextId,kmsEpochId:e.kmsEpochId})}function hc(e){return _c(e,{}),e}function gc(e){return e instanceof sc}function _c(e,t){if(!gc(e))throw new C({subject:t.subject,type:typeof e,expectedType:`KmsExtraData`},t)}function vc(e,t){e!==`0x00`&&e!==`0x`&&(pr(e,t),cc(e))}function yc(e,t){let n=hc(e);return Zs(t,{major:0,minor:2})?n.version!==void 0&&n.version<=0:Zs(t,{major:0,minor:4})?n.version!==void 0&&n.version<=1:!Qs(t,{major:0,minor:4,patch:0})||n.version!==void 0&&n.version<=2}var bc=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},B=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},xc,Sc,Cc,wc,Tc,Ec,Dc,Oc,kc=Symbol(`KmsSignersContext.token`),Ac=Symbol(`KmsSignersContext.verify`),jc=class e{constructor(e,t,n){if(xc.set(this,void 0),Sc.set(this,void 0),Cc.set(this,void 0),wc.set(this,void 0),Tc.set(this,void 0),Ec.set(this,void 0),Dc.set(this,void 0),Oc.set(this,void 0),e!==kc)throw Error(`Unauthorized`);bc(this,xc,t,`f`),bc(this,Sc,n.address,`f`),bc(this,Cc,n.kmsContextId,`f`),bc(this,wc,n.kmsEpochId,`f`),bc(this,Tc,[...n.kmsSigners],`f`),bc(this,Dc,n.kmsSignerThreshold,`f`),bc(this,Oc,n.kmsMpcThreshold,`f`),bc(this,Ec,new Set(B(this,Tc,`f`).map(e=>e.toLowerCase())),`f`),Object.freeze(B(this,Tc,`f`)),Object.freeze(this)}get kmsVerifierAddress(){return B(this,Sc,`f`)}get id(){return B(this,Cc,`f`)}get epochId(){return B(this,wc,`f`)}get signers(){return B(this,Tc,`f`)}get threshold(){return B(this,Dc,`f`)}get mpcThreshold(){return B(this,Oc,`f`)}has(e){return B(this,Ec,`f`).has(e.toLowerCase())}static[(xc=new WeakMap,Sc=new WeakMap,Cc=new WeakMap,wc=new WeakMap,Tc=new WeakMap,Ec=new WeakMap,Dc=new WeakMap,Oc=new WeakMap,Ac)](t,n){if(!(t instanceof e))throw Error(`Invalid KmsSignersContext instance`);To({actualOwner:B(t,xc,`f`),expectedOwner:n,name:`KmsSignersContext`})}toJSON(){return{kmsVerifierAddress:B(this,Sc,`f`),id:B(this,Cc,`f`),epochId:B(this,wc,`f`),signers:B(this,Tc,`f`),threshold:B(this,Dc,`f`),...B(this,Oc,`f`)?{mpcThreshold:B(this,Oc,`f`)}:{}}}};Object.freeze(jc.prototype),Object.freeze(jc);function Mc(e,t){let{kmsVerifierAddress:n,kmsContextId:r,kmsEpochId:i,kmsSigners:a,kmsSignerThreshold:o,kmsMpcThreshold:s}=t;return pc({kmsContextId:t.kmsContextId,kmsEpochId:t.kmsEpochId}),new jc(kc,e,{address:D(n),kmsContextId:r,kmsEpochId:i,kmsSignerThreshold:Number(o),kmsSigners:a.map(D),kmsMpcThreshold:s})}function Nc(e){return Ic(e,{}),mc({kmsContextId:e.id,kmsEpochId:e.epochId})}function Pc(e,t){let n=new Set;t.forEach(e=>{if(n.has(e.toLowerCase()))throw new no({duplicateAddress:e,type:`kms`});n.add(e.toLowerCase())});for(let n of t)if(!e.has(n.toLowerCase()))throw new eo({unknownAddress:n,type:`kms`});if(t.length<e.threshold)throw new to({type:`kms`})}function Fc(e){return e instanceof jc}function Ic(e,t){if(!Fc(e))throw new C({subject:t.subject,type:typeof e,expectedType:`KmsSignersContext`},t)}var Lc=Ws({executeFn:zc,cacheKeyFn:(e,t)=>`${e.runtime.uid.toLowerCase()}:${t.kmsVerifierAddress.toLowerCase()}`,ttlMs:Us});function Rc(e,t){return Lc.execute(e,t)}async function zc(e,t){let n=I(e),r=await e.runtime.ethereum.readContract(n,{address:t.kmsVerifierAddress,abi:jo,args:[],functionName:jo[0].name});try{Bn(r,{})}catch(e){throw Error(`Invalid KMS Context Id.`,{cause:e})}return BigInt(r)}Ws({executeFn:Bc,cacheKeyFn:(e,t)=>`${e.runtime.uid.toLowerCase()}:${t.protocolConfigAddress.toLowerCase()}`,ttlMs:Us});async function Bc(e,t){if(Zs(t.fhevmContext.hostContractVersion(`ProtocolConfig`),{major:0,minor:2}))throw Error(`ProtocolConfig.getCurrentKmsContextAndEpoch() requires ProtocolConfig >= v0.2.0 (protocol v0.14.0)`);let n=I(e),r=await e.runtime.ethereum.readContract(n,{address:t.protocolConfigAddress,abi:Mo,args:[],functionName:Mo[0].name});if(!Array.isArray(r)||r.length<2)throw Error(`Invalid getCurrentKmsContextAndEpoch result.`);let i=r[0],a=r[1];try{Bn(i,{})}catch(e){throw Error(`Invalid KMS Context Id.`,{cause:e})}try{Bn(a,{})}catch(e){throw Error(`Invalid KMS Epoch Id.`,{cause:e})}return Object.freeze({contextId:BigInt(i),epochId:BigInt(a)})}var Vc=Ws({executeFn:Uc,cacheKeyFn:(e,t)=>{let n=t.extraData.kmsContextId.toString(16).padStart(64,`0`);return`${e.runtime.uid.toLowerCase()}:${t.kmsVerifierAddress.toLowerCase()}:${n}`},ttlMs:Us});function Hc(e,t){return _c(t.extraData,{}),Vc.execute(e,t)}async function Uc(e,t){if(Zs(t.fhevmContext.hostContractVersion(`KMSVerifier`),{major:0,minor:2}))throw Error(`getContextSignersAndThresholdFromExtraData requires KMSVerifier >= v0.2.0`);let n=I(e),r=t.extraData.bytesHex,i=await e.runtime.ethereum.readContract(n,{address:t.kmsVerifierAddress,abi:Io,args:[r],functionName:Io[0].name});if(!Array.isArray(i)||i.length<2)throw Error(`Invalid getContextSignersAndThresholdFromExtraData result.`);let a=i[0],o=i[1];try{Hi(a,{})}catch(e){throw Error(`Invalid kms signers addresses.`,{cause:e})}if(!En(o))throw Error(`Invalid threshold.`);return Object.freeze({threshold:Number(o),signers:a})}async function Wc(e,t){if(t===!0)return Promise.all(e.map(e=>e()));let n=[];for(let t of e)n.push(await t());return n}var Gc=Ws({executeFn:qc,cacheKeyFn:(e,t)=>`${e.runtime.uid.toLowerCase()}:${t.kmsVerifierAddress.toLowerCase()}`,ttlMs:Us});function Kc(e,t){return Gc.execute(e,t)}async function qc(e,t){if(!Zs(t.fhevmContext.hostContractVersion(`KMSVerifier`),{major:0,minor:2}))throw Error(`getContextSignersAndThreshold requires KMSVerifier < v0.2.0`);let n=await Wc([()=>Jc(e,t),()=>Yc(e,t)],e.options.batchRpcCalls),r=n[0],i=n[1];if(!En(r))throw Error(`Invalid KMSVerifier kms signers threshold.`);try{Hi(i,{})}catch(e){throw Error(`Invalid KMSVerifier kms signers addresses.`,{cause:e})}return Object.freeze({threshold:qn(Number(r)),signers:i})}async function Jc(e,t){let n=I(e),r=await e.runtime.ethereum.readContract(n,{address:t.kmsVerifierAddress,abi:ko,args:[],functionName:ko[0].name});if(!En(r))throw Error(`Invalid threshold.`);return Number(r)}async function Yc(e,t){let n=I(e),r=await e.runtime.ethereum.readContract(n,{address:t.kmsVerifierAddress,abi:Ao,args:[],functionName:Ao[0].name});try{Hi(r,{})}catch(e){throw Error(`Invalid kms signers addresses.`,{cause:e})}return r}async function Xc(e,t){return Zs(t.fhevmContext.hostContractVersion(`KMSVerifier`),{major:0,minor:2})?Qc(e,t):$c(e,t)}async function Zc(e,t){_c(t.extraData,{});let n=t.fhevmContext.hostContractVersion(`KMSVerifier`);if(!yc(t.extraData,n))throw Error(`KmsExtraData ${t.extraData.bytesHex} is not compatible with ${n.contractName} ${n.version}`);return Zs(n,{major:0,minor:2})?el(e,t):tl(e,t)}async function Qc(e,t){return el(e,t)}async function $c(e,t){let n=dc({kmsContextId:await Rc(e,t)});return tl(e,{...t,extraData:n})}async function el(e,t){let n=await Kc(e,t);return Mc(new WeakRef(e.runtime),{...t,kmsContextId:0n,kmsEpochId:0n,kmsSigners:n.signers,kmsSignerThreshold:n.threshold,kmsMpcThreshold:void 0})}async function tl(e,t){let{signers:n,threshold:r}=await Hc(e,t);return Mc(new WeakRef(e.runtime),{...t,kmsContextId:t.extraData.kmsContextId,kmsEpochId:t.extraData.kmsEpochId,kmsSigners:n,kmsSignerThreshold:r,kmsMpcThreshold:void 0})}var nl=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},V=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},rl,il,al,ol,sl,cl=class{constructor(e,t){rl.set(this,void 0),il.set(this,void 0),nl(this,il,e,`f`),nl(this,rl,t,`f`)}get type(){return V(this,rl,`f`)}get value(){return V(this,il,`f`)}toString(){return`TypedValue<${V(this,rl,`f`)}>`}toJSON(){return{type:V(this,rl,`f`)}}};rl=new WeakMap,il=new WeakMap,Object.freeze(cl.prototype);function ll(e,t){return e instanceof cl?t?.type===void 0||e.type===t.type:!1}function ul(e,t){let n=t.type===void 0?`TypedValue`:`TypedValue<${t.type}>`;if(!(t.type===void 0?ll(e):ll(e,{type:t.type})))throw new C({subject:t.subject,type:typeof e,expectedType:n},t)}function dl(e){if(typeof e!=`object`||!e||e===void 0)throw new C({subject:`input`,type:typeof e,expectedType:`{ type, value }`},{});if(ll(e))return e;let t=e.type,n,r;if(t===`bool`)r=`bool`,n=ia(e.value,{});else if(t===`address`||t===`uint160`){if(r=`address`,typeof e.value==`string`)n=Wi(e.value);else{let t=Gn(e.value,`uint160`,{});n=Wi(Ur(BigInt(t),{byteLength:20}))}}else{if(Wn(t,{}),t===`uint160`)throw new C({subject:`input.type`,type:t,expectedType:`ValueTypeName`},{});r=t,n=Vn(Gn(e.value,t,{}),t)}let i=new cl(n,r);return Object.freeze(i),i}var fl=class{constructor(){al.add(this),ol.set(this,[])}addBool(e){return V(this,al,`m`,sl).call(this,`bool`,e)}addUint8(e){return V(this,al,`m`,sl).call(this,`uint8`,e)}addUint16(e){return V(this,al,`m`,sl).call(this,`uint16`,e)}addUint32(e){return V(this,al,`m`,sl).call(this,`uint32`,e)}addUint64(e){return V(this,al,`m`,sl).call(this,`uint64`,e)}addUint128(e){return V(this,al,`m`,sl).call(this,`uint128`,e)}addUint256(e){return V(this,al,`m`,sl).call(this,`uint256`,e)}addAddress(e){return V(this,al,`m`,sl).call(this,`address`,e)}addTypedValue(e){if(!ll(e))throw new C({subject:`typedValue`,type:typeof e,expectedType:`TypedValue`},{});return V(this,ol,`f`).push(e),this}build(){return Object.freeze([...V(this,ol,`f`)])}};ol=new WeakMap,al=new WeakSet,sl=function(e,t){if(ll(t,{type:e}))V(this,ol,`f`).push(t);else if(typeof t==`object`){let n=t;if(n.type!==e)throw new C({subject:`value`,type:n.type,expectedType:e},{});V(this,ol,`f`).push(dl({type:e,value:n.value}))}else V(this,ol,`f`).push(dl({type:e,value:t}));return this};function pl(e){switch(ul(e,{}),e.type){case`uint8`:case`uint16`:case`uint32`:case`uint64`:case`uint128`:case`uint256`:case`address`:return Ur(BigInt(e.value),{byteLength:32});case`bool`:return Ur(e.value?1n:0n,{byteLength:32})}}var ml=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},hl=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},gl,_l,vl,yl=Symbol(`ClearValue.token`),bl=Symbol(`ClearValue.verifyOrigin`),xl=class{constructor(e,t){if(gl.set(this,void 0),_l.set(this,void 0),vl.set(this,void 0),e!==yl)throw Error(`Unauthorized`);ml(this,_l,t.handle,`f`),ml(this,gl,t.value,`f`),ml(this,vl,t.originToken,`f`)}get value(){return hl(this,gl,`f`)}get type(){return hl(this,_l,`f`).fheType.substring(1)}get handle(){return hl(this,_l,`f`)}get typedValue(){return{type:this.type,value:this.value}}[(gl=new WeakMap,_l=new WeakMap,vl=new WeakMap,bl)](e){return hl(this,vl,`f`)===e}toString(){return`ClearValue<${hl(this,_l,`f`).fheType}>`}toJSON(){return{handle:hl(this,_l,`f`).bytes32Hex,fheType:hl(this,_l,`f`).fheType}}};Object.freeze(xl.prototype);function Sl(e,t){return e instanceof xl&&e[bl](t)}function Cl(e,t){return wl(e,{originToken:t}),dl(e.typedValue)}function wl(e,t){if(!Sl(e,t.originToken))throw new C({subject:t.subject,type:typeof e,expectedType:`ClearValue`},t)}function Tl(e){let t=new xl(yl,{handle:e.handle,value:Aa(e.handle.fheType,e.value),originToken:e.originToken});return Object.freeze(t),t}function El(e){let{orderedValues:t,orderedHandles:n,originToken:r}=e;if(n.length!==t.length)throw new C({subject:`orderedClearValues`,type:`Array(${t.length})`,expectedType:`Array(${n.length}) — must match orderedHandles length`},{});let i=n.map((e,n)=>Tl({handle:e,value:t[n],originToken:r}));return Object.freeze(i)}function Dl(e){return BigInt(typeof e==`boolean`?e?`0x01`:`0x00`:e)}function Ol(e,t){let n=t.orderedClearValues,r=[],i=[];for(let e of n){let t=e.handle.fheTypeId,n=Dl(e.value);switch(r.push(`uint256`),t){case 7:i.push(`0x${n.toString(16).padStart(40,`0`)}`);break;case 0:if(n!==BigInt(0)&&n!==BigInt(1))throw Error(`Invalid ebool clear text value ${n}. Expecting 0 or 1.`);i.push(n);break;case 2:case 3:case 4:case 5:case 6:case 8:i.push(n);break;default:ea(t,`Unsupported Fhevm primitive type id: ${t}`)}}return{abiTypes:r,abiValues:i,abiEncodedClearValues:e.runtime.ethereum.encode({types:r,values:i})}}async function kl(e,t){let{domain:n,types:r,primaryType:i,signatures:a,message:o}=t;xr(a,{subject:`signatures`});let s=r[i];if(s===void 0)throw Error(`Primary type "${i}" not found in types`);return await Promise.all(a.map(t=>e.runtime.ethereum.recoverTypedDataAddress({signature:t,domain:n,primaryType:i,types:{[i]:[...s]},message:o})))}function Al(e){let{chainId:t,verifyingContractAddressDecryption:n}=e;zn(t,{}),E(n,{});let r={name:`Decryption`,version:`1`,chainId:BigInt(t),verifyingContract:D(n)};return Object.freeze(r),r}function jl(e,t,n){x(e,`name`,t,{expectedValue:`Decryption`,...n}),x(e,`version`,t,{expectedValue:`1`,...n}),Qn(e,`chainId`,t,n),Yi(e,`verifyingContract`,t,n)}var Ml={EIP712Domain:[{name:`name`,type:`string`},{name:`version`,type:`string`},{name:`chainId`,type:`uint256`},{name:`verifyingContract`,type:`address`}],PublicDecryptVerification:[{name:`ctHandles`,type:`bytes32[]`},{name:`decryptedResult`,type:`bytes`},{name:`extraData`,type:`bytes`}]};Object.freeze(Ml),Object.freeze(Ml.EIP712Domain),Object.freeze(Ml.PublicDecryptVerification),Ml.EIP712Domain.forEach(Object.freeze),Ml.PublicDecryptVerification.forEach(Object.freeze);async function Nl(e,t){let{kmsSignersContext:n,orderedHandles:r,orderedAbiEncodedClearValues:i}=t,a=lc(Nc(n)),o={ctHandles:r.map(e=>e.bytes32Hex),decryptedResult:i,extraData:a};Pc(n,await kl(e,{domain:Al({chainId:e.chain.fhevm.gateway.id,verifyingContractAddressDecryption:e.chain.fhevm.gateway.contracts.decryption.address}),types:Ml,primaryType:`PublicDecryptVerification`,signatures:t.kmsPublicDecryptEip712Signatures,message:o}))}var Pl=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Fl=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Il,Ll,Rl,zl,Bl=Symbol(`PublicDecryptionProof.token`),Vl=class{constructor(e,t){if(Il.set(this,void 0),Ll.set(this,void 0),Rl.set(this,void 0),zl.set(this,void 0),e!==Bl)throw Error(`Unauthorized`);if(t.orderedClearValues.length===0)throw Error(`PublicDecryptionProof requires at least one clear value`);Pl(this,Il,t.decryptionProof,`f`),Pl(this,Ll,Object.freeze([...t.orderedClearValues]),`f`),Pl(this,zl,t.extraData,`f`),Pl(this,Rl,t.orderedAbiEncodedClearValues,`f`)}get decryptionProof(){return Fl(this,Il,`f`)}get orderedClearValues(){return Fl(this,Ll,`f`)}get orderedAbiEncodedClearValues(){return Fl(this,Rl,`f`)}get extraData(){return Fl(this,zl,`f`)}};Il=new WeakMap,Ll=new WeakMap,Rl=new WeakMap,zl=new WeakMap,Object.freeze(Vl),Object.freeze(Vl.prototype);async function Hl(e,t){await Nl(e,t);let{orderedHandles:n,orderedAbiEncodedClearValues:r,kmsPublicDecryptEip712Signatures:i,kmsSignersContext:a,originToken:o}=t,s=lc(Nc(a)),c=Kr([e.runtime.ethereum.encodePacked({types:[`uint8`],values:[i.length]}),e.runtime.ethereum.encodePacked({types:Array(i.length).fill(`bytes`),values:i}),s]),l=n.map(e=>e.solidityPrimitiveTypeName),u=e.runtime.ethereum.decode({types:l,encodedData:r});if(u.length!==n.length)throw Error(`Invalid decrypted result.`);let d=El({orderedHandles:n,orderedValues:n.map((e,t)=>ja(e.fheType,u[t])),originToken:o});return new Vl(Bl,{decryptionProof:c,orderedClearValues:d,orderedAbiEncodedClearValues:Ol(e,{orderedClearValues:d}).abiEncodedClearValues,extraData:s})}var Ul=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Wl=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Gl,Kl,ql=class extends g{constructor(e){super(e),Gl.set(this,void 0),Kl.set(this,void 0),Ul(this,Gl,e.contractAddress,`f`),Ul(this,Kl,e.contractName,`f`)}get contractAddress(){return Wl(this,Gl,`f`)}get contractName(){return Wl(this,Kl,`f`)}};Gl=new WeakMap,Kl=new WeakMap;var Jl=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Yl=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Xl,Zl=class extends ql{constructor({contractAddress:e,handles:t}){let n=t.join(`, `);super({message:t.length===1?`Handle ${t[0]} is not allowed for public decryption`:`${t.length} handles are not allowed for public decryption: ${n}`,name:`AclPublicDecryptionError`,contractAddress:e,contractName:`ACL`}),Xl.set(this,void 0),Jl(this,Xl,t,`f`)}get handles(){return Yl(this,Xl,`f`)}};Xl=new WeakMap;var Ql=class extends ql{constructor({contractAddress:e,message:t}){super({message:t,name:`AclUserDecryptionError`,contractAddress:e,contractName:`ACL`})}};async function $l(e,t){let{aclAddress:n,handles:r}=t;return await Wc(r.map(t=>()=>eu(e,{aclAddress:n,handle:t})),e.options.batchRpcCalls)}async function eu(e,t){let{aclAddress:n,handle:r}=t,i=I(e),a=await e.runtime.ethereum.readContract(i,{address:n,abi:Fo,args:[r.bytes32Hex],functionName:Fo[0].name});if(typeof a!=`boolean`)throw Error(`Invalid isAllowedForDecryption result.`);return a}async function tu(e,t){let{aclAddress:n,handles:r}=t,i=await $l(e,t),a=r.filter((e,t)=>i[t]!==!0).map(e=>e.bytes32Hex);if(a.length>0)throw new Zl({contractAddress:n,handles:a})}async function nu(e,t){let{handles:n,options:r,originToken:i,fhevmContext:a}=t,o=await Xc(e,{kmsVerifierAddress:e.chain.fhevm.contracts.kmsVerifier.address,protocolConfigAddress:e.chain.fhevm.contracts.protocolConfig?.address,fhevmContext:a}),s=Nc(o),c=n,l={auth:e.runtime.config.auth,...r};if(c.length===0)throw Error(`handles must not be empty, at least one handle is required`);$a(c),qa(c,BigInt(e.chain.id)),await tu(e,{aclAddress:e.chain.fhevm.contracts.acl.address,handles:c});let{orderedAbiEncodedClearValues:u,kmsPublicDecryptEip712Signatures:d}=await e.runtime.relayer.fetchPublicDecrypt(e,{payload:{orderedHandles:c,extraData:s.bytesHex},options:l,fhevmContext:a});return await Hl(e,{originToken:i,orderedHandles:c,orderedAbiEncodedClearValues:u,kmsPublicDecryptEip712Signatures:d,kmsSignersContext:o})}async function ru(e,t){let n=Wa(t.encryptedValue),r=await L(e),i=Symbol(`decryptPublicValues`);return Cl((await nu(e,{...t,handles:[n],originToken:i,fhevmContext:r})).orderedClearValues[0],i)}async function iu(e,t){let n=t.encryptedValues.map(Wa),r=await L(e),i=Symbol(`decryptPublicValues`);return(await nu(e,{...t,handles:n,originToken:i,fhevmContext:r})).orderedClearValues.map(e=>Cl(e,i))}async function au(e,t){let n=t.encryptedValues.map(Wa),r=await L(e),i=Symbol(`decryptPublicValues`),a=await nu(e,{...t,handles:n,originToken:i,fhevmContext:r}),o=a.orderedClearValues.map(e=>Cl(e,i));return Object.freeze({clearValues:o,checkSignaturesArgs:Object.freeze({handlesList:Object.freeze(n.map(e=>e.bytes32Hex)),abiEncodedCleartexts:a.orderedAbiEncodedClearValues,decryptionProof:a.decryptionProof})})}var ou=class extends g{constructor(e){super({...e,message:e.message??`FHEVM InputProof is invalid.`,name:`InputProofError`})}},su=class extends g{constructor(e){super({...e,name:`TooManyHandlesError`,message:`Trying to pack ${e.numberOfHandles} handles. Packing more than 256 variables in a single input ciphertext is unsupported`})}},cu=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},lu=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},uu,du,fu,pu,mu,hu=Symbol(`InputProof.token`),gu=class{constructor(e,t){if(uu.set(this,void 0),du.set(this,void 0),fu.set(this,void 0),pu.set(this,void 0),mu.set(this,void 0),e!==hu)throw Error(`Unauthorized`);let{inputProofBytesHex:n,coprocessorSignatures:r,inputHandles:i,extraData:a,signedHandleAccess:o}=t;y(i.length>0),y(r.length>0),cu(this,uu,n,`f`),cu(this,fu,r,`f`),cu(this,du,i,`f`),cu(this,pu,a,`f`),o!==void 0&&cu(this,mu,{...o},`f`),Object.freeze(lu(this,fu,`f`)),Object.freeze(lu(this,du,`f`)),Object.freeze(lu(this,mu,`f`)),Object.freeze(this)}get bytesHex(){return lu(this,uu,`f`)}get coprocessorSignatures(){return lu(this,fu,`f`)}get inputHandles(){return lu(this,du,`f`)}get extraData(){return lu(this,pu,`f`)}get verified(){return lu(this,mu,`f`)!==void 0}get signedHandleAccess(){return lu(this,mu,`f`)}};uu=new WeakMap,du=new WeakMap,fu=new WeakMap,pu=new WeakMap,mu=new WeakMap,Object.freeze(gu),Object.freeze(gu.prototype);function _u({coprocessorEip712Signatures:e,inputHandles:t,extraData:n,signedHandleAccess:r}){if(t.length===0)throw new ou({message:`Input proof must contain at least one external handle`});r!==void 0&&(Bi(r.userAddress,{}),Bi(r.contractAddress,{})),xr(e,{}),pr(n,{});let i=t.length,a=e.length;if(i>255)throw new su({numberOfHandles:i});y(a<=255);let o=jn(i),s=jn(i);y(o.length===2),y(s.length===2);let c=``;return c+=jn(t.length),c+=jn(e.length),t.forEach(e=>c+=e.bytes32HexNo0x),e.forEach(e=>c+=b(e)),c+=b(n),y(c.length===(2+i*32+a*65)*2+(n.length-2)),new gu(hu,{inputProofBytesHex:`0x${c}`,coprocessorSignatures:[...e],inputHandles:t,extraData:n,signedHandleAccess:r})}var vu=`CiphertextVerification`,yu={CiphertextVerification:[{name:`ctHandles`,type:`bytes32[]`},{name:`userAddress`,type:`address`},{name:`contractAddress`,type:`address`},{name:`contractChainId`,type:`uint256`},{name:`extraData`,type:`bytes`}]};Object.freeze(yu),Object.freeze(yu.CiphertextVerification),yu.CiphertextVerification.forEach(Object.freeze);function bu({gatewayChainId:e,verifyingContractAddressInputVerification:t}){zn(e,{}),E(t,{});let n={name:`InputVerification`,version:`1`,chainId:BigInt(e),verifyingContract:D(t)};return Object.freeze(n),n}var xu=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Su=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Cu,wu,Tu,Eu,Du,Ou=Symbol(`CoprocessorSignersContext.token`),ku=Symbol(`CoprocessorSignersContext.verify`),Au=class e{constructor(e,t,n){if(Cu.set(this,void 0),wu.set(this,void 0),Tu.set(this,void 0),Eu.set(this,void 0),Du.set(this,void 0),e!==Ou)throw Error(`Unauthorized`);xu(this,Cu,t,`f`),xu(this,wu,n.address,`f`),xu(this,Tu,[...n.coprocessorSigners],`f`),xu(this,Du,n.coprocessorSignerThreshold,`f`),xu(this,Eu,new Set(Su(this,Tu,`f`).map(e=>e.toLowerCase())),`f`),Object.freeze(Su(this,Tu,`f`)),Object.freeze(this)}get address(){return Su(this,wu,`f`)}get signers(){return Su(this,Tu,`f`)}get threshold(){return Su(this,Du,`f`)}has(e){return Su(this,Eu,`f`).has(e)}static[(Cu=new WeakMap,wu=new WeakMap,Tu=new WeakMap,Eu=new WeakMap,Du=new WeakMap,ku)](t,n){if(!(t instanceof e))throw Error(`Invalid CoprocessorSignersContext instance`);To({actualOwner:Su(t,Cu,`f`),expectedOwner:n,name:`CoprocessorSignersContext`})}toJSON(){return{address:Su(this,wu,`f`),signers:Su(this,Tu,`f`),threshold:Su(this,Du,`f`)}}};Object.freeze(Au.prototype),Object.freeze(Au);function ju(e,t){return new Au(Ou,e,t)}function Mu(e,t){let n=`coprocessor`,r=new Set;t.forEach(e=>{if(r.has(e.toLowerCase()))throw new no({duplicateAddress:e,type:n});r.add(e.toLowerCase())});for(let r of t)if(!e.has(r.toLowerCase()))throw new eo({unknownAddress:r,type:n});if(t.length<e.threshold)throw new to({type:n})}var Nu=Ws({executeFn:Fu,cacheKeyFn:(e,t)=>`${e.runtime.uid.toLowerCase()}:${t.address.toLowerCase()}`,ttlMs:Us});function Pu(e,t){return Nu.execute(e,t)}async function Fu(e,t){let n=await Wc([()=>Iu(e,t),()=>Lu(e,t)],e.options.batchRpcCalls),r=n[0],i=n[1];if(!En(r))throw Error(`Invalid InputVerifier coprocessor signers threshold.`);try{Hi(i,{})}catch(e){throw Error(`Invalid InputVerifier coprocessor signers addresses.`,{cause:e})}return Object.freeze({threshold:qn(Number(r)),signers:i})}async function Iu(e,t){let n=I(e),r=t.address,i=await e.runtime.ethereum.readContract(n,{address:r,abi:ko,args:[],functionName:ko[0].name});if(!En(i))throw Error(`Invalid threshold.`);return Number(i)}async function Lu(e,t){let n=I(e),r=t.address,i=await e.runtime.ethereum.readContract(n,{address:r,abi:No,args:[],functionName:No[0].name});try{Hi(i,{})}catch(e){throw Error(`Invalid coprocessor signers addresses.`,{cause:e})}return i}async function Ru(e,t){let n=await Pu(e,t);return ju(new WeakRef(e.runtime),{...t,coprocessorSigners:n.signers,coprocessorSignerThreshold:n.threshold})}async function zu(e,t){let n={ctHandles:t.handles.map(e=>e.bytes32Hex),userAddress:t.userAddress,contractAddress:t.contractAddress,contractChainId:t.chainId,extraData:t.extraData},r=await kl(e,{domain:bu({gatewayChainId:e.chain.fhevm.gateway.id,verifyingContractAddressInputVerification:e.chain.fhevm.gateway.contracts.inputVerification.address}),primaryType:vu,types:yu,signatures:t.coprocessorSignatures,message:n});Mu(await Ru(e,{address:e.chain.fhevm.contracts.inputVerifier.address,fhevmContext:t.fhevmContext}),r)}async function Bu(e,t){let n=t.signedHandleAccess??t.inputProof.signedHandleAccess;if(n===void 0)throw new ou({message:`Missing signedHandleAccess argument.`});let r=t.inputProof.inputHandles[0].chainId;return await zu(e,{chainId:r,coprocessorSignatures:t.inputProof.coprocessorSignatures,extraData:t.inputProof.extraData,handles:t.inputProof.inputHandles,userAddress:n.userAddress,contractAddress:n.contractAddress,fhevmContext:t.fhevmContext}),t.inputProof}var H=class extends g{constructor(e){super({...e,message:e.message??`FHEVM ZkProof is invalid.`,name:`ZkProofError`})}},Vu=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},U=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Hu,Uu,Wu,Gu,Ku,qu,Ju,Yu,Xu,Zu=Symbol(`ZkProof.token`),Qu=Symbol(`ZkProof.getUnsafeRawBytes`),$u=`ZK-w_rct`,ed=`ZK-w_hdl`,td=class{constructor(e,t){if(Hu.set(this,void 0),Uu.set(this,void 0),Wu.set(this,void 0),Gu.set(this,void 0),Ku.set(this,void 0),qu.set(this,void 0),Ju.set(this,void 0),Yu.set(this,void 0),Xu.set(this,void 0),e!==Zu)throw Error(`Unauthorized`);Vu(this,Hu,t.chainId,`f`),Vu(this,Uu,t.aclContractAddress,`f`),Vu(this,Wu,t.contractAddress,`f`),Vu(this,Gu,t.userAddress,`f`),Vu(this,Ku,t.ciphertextWithZkProof,`f`),Vu(this,qu,Object.freeze([...t.encryptionBits]),`f`),Vu(this,Ju,Object.freeze(U(this,qu,`f`).map(e=>ya(ga(e)))),`f`),Vu(this,Xu,t.extraData,`f`),Object.freeze(this)}get chainId(){return U(this,Hu,`f`)}get aclContractAddress(){return U(this,Uu,`f`)}get contractAddress(){return U(this,Wu,`f`)}get userAddress(){return U(this,Gu,`f`)}get ciphertextWithZkProof(){return new Uint8Array(U(this,Ku,`f`))}get encryptionBits(){return U(this,qu,`f`)}get fheTypeIds(){return U(this,Ju,`f`)}[(Hu=new WeakMap,Uu=new WeakMap,Wu=new WeakMap,Gu=new WeakMap,Ku=new WeakMap,qu=new WeakMap,Ju=new WeakMap,Yu=new WeakMap,Xu=new WeakMap,Qu)](e){if(e!==Zu)throw Error(`Unauthorized`);return U(this,Ku,`f`)}toString(){return`ZkProof(chainId=${String(U(this,Hu,`f`))}, contract=${U(this,Wu,`f`)}, user=${U(this,Gu,`f`)}, types=${U(this,Ju,`f`).length}, bytes=${String(U(this,Ku,`f`).length)})`}getInputHandles(){return U(this,Yu,`f`)===void 0&&(Vu(this,Yu,od({ciphertextWithZkProof:U(this,Ku,`f`),aclContractAddress:U(this,Uu,`f`),fheTypeIds:U(this,Ju,`f`),chainId:U(this,Hu,`f`)}),`f`),Object.freeze(U(this,Yu,`f`))),U(this,Yu,`f`)}getExtraData(){return U(this,Xu,`f`)}toJSON(){return{chainId:U(this,Hu,`f`)<=2**53-1?Number(U(this,Hu,`f`)):U(this,Hu,`f`),aclContractAddress:U(this,Uu,`f`),contractAddress:U(this,Wu,`f`),userAddress:U(this,Gu,`f`),ciphertextWithZkProof:Ir(U(this,Ku,`f`)),encryptionBits:U(this,qu,`f`),fheTypeIds:U(this,Ju,`f`)}}};Object.freeze(td),Object.freeze(td.prototype);function nd(e){return e instanceof td}function rd(e,t){if(!nd(e))throw new C({subject:t.subject,type:typeof e,expectedType:`ZkProof`,metaMessages:t.metaMessages},t)}async function id(e,t,n){if(e instanceof td)return e;zn(e.chainId,{});let r=BigInt(e.chainId);E(e.aclContractAddress,{}),E(e.contractAddress,{}),E(e.userAddress,{});let i=D(e.aclContractAddress),a=D(e.contractAddress),o=D(e.userAddress),s=Wr(e.ciphertextWithZkProof,{subject:`ciphertextWithZkProof`,copy:n?.copy!==!1});if(s.length===0)throw new H({message:`ciphertextWithZkProof argument should not be empty`});return new td(Zu,{chainId:r,aclContractAddress:i,contractAddress:a,userAddress:o,ciphertextWithZkProof:s,encryptionBits:await sd(e.encryptionBits,s,n?.zkProofParser),extraData:t})}function ad(e,t){if(e.length!==t.length)throw new H({message:`Encryption count mismatch, expected ${t.length}, got ${e.length}.`});for(let n=0;n<e.length;++n)if(e[n]!==t[n])throw new H({message:`Encryption type mismatch at index ${n}.`})}function od(e,t){let n=Fr(Fi(Gr(new TextEncoder().encode($u),e.ciphertextWithZkProof))),r=[];for(let[i,a]of e.fheTypeIds.entries()){let o=cd(Br(n),e.aclContractAddress,e.chainId,i);r.push(Ka({hash21:o,chainId:e.chainId,fheTypeId:a,...t?.version===void 0?{}:{version:t.version},index:i}))}return r}async function sd(e,t,n){if(e!=null)return va(e,{subject:`encryptionBits`}),n!=null&&ad((await n.parserFn.parseTFHEProvenCompactCiphertextList({ciphertextWithZkProof:t,tfheVersion:n.tfheVersion})).encryptionBits,e),e;if(n!=null)return(await n.parserFn.parseTFHEProvenCompactCiphertextList({ciphertextWithZkProof:t,tfheVersion:n.tfheVersion})).encryptionBits;throw new H({message:`Missing encryption bits`})}function cd(e,t,n,r){let i=new Uint8Array([r]),a=Ri(t),o=Pn(n);return Fr(Fi(Gr(new TextEncoder().encode(ed),e,i,a,o))).slice(0,44)}async function ld(e,t){let{zkProof:n,options:r,fhevmContext:i}=t;rd(n,{});let a={auth:e.runtime.config.auth,...r},o=n.getInputHandles();if(o.length===0)throw new ou({message:`Input proof must contain at least one external handle`});let{handles:s,coprocessorEip712Signatures:c}=await e.runtime.relayer.fetchCoprocessorSignatures(e,{payload:{zkProof:n},options:a,fhevmContext:i});return Ga(o,s),await Bu(e,{inputProof:_u({coprocessorEip712Signatures:c,inputHandles:o,extraData:n.getExtraData(),signedHandleAccess:{userAddress:n.userAddress,contractAddress:n.contractAddress}}),fhevmContext:i})}var ud={EIP712Domain:[{name:`name`,type:`string`},{name:`version`,type:`string`},{name:`chainId`,type:`uint256`},{name:`verifyingContract`,type:`address`}],UserDecryptRequestVerification:[{name:`publicKey`,type:`bytes`},{name:`contractAddresses`,type:`address[]`},{name:`startTimestamp`,type:`uint256`},{name:`durationDays`,type:`uint256`},{name:`extraData`,type:`bytes`}]};Object.freeze(ud),Object.freeze(ud.EIP712Domain),Object.freeze(ud.UserDecryptRequestVerification),ud.EIP712Domain.forEach(Object.freeze),ud.UserDecryptRequestVerification.forEach(Object.freeze);async function dd(e,t){let n=await kl(e,{domain:Al({chainId:e.chain.id,verifyingContractAddressDecryption:e.chain.fhevm.gateway.contracts.decryption.address}),types:ud,primaryType:`UserDecryptRequestVerification`,signatures:[t.signature],message:t.message});if(n.length!==1)throw new to({type:`kms`});if(n[0]!==t.signer)throw new eo({unknownAddress:n[0],type:`kms`})}var fd={EIP712Domain:[{name:`name`,type:`string`},{name:`version`,type:`string`},{name:`chainId`,type:`uint256`},{name:`verifyingContract`,type:`address`}],DelegatedUserDecryptRequestVerification:[{name:`publicKey`,type:`bytes`},{name:`contractAddresses`,type:`address[]`},{name:`delegatorAddress`,type:`address`},{name:`startTimestamp`,type:`uint256`},{name:`durationDays`,type:`uint256`},{name:`extraData`,type:`bytes`}]};Object.freeze(fd),Object.freeze(fd.EIP712Domain),Object.freeze(fd.DelegatedUserDecryptRequestVerification),fd.EIP712Domain.forEach(Object.freeze),fd.DelegatedUserDecryptRequestVerification.forEach(Object.freeze);async function pd(e,t){let n=await kl(e,{domain:Al({chainId:e.chain.id,verifyingContractAddressDecryption:e.chain.fhevm.gateway.contracts.decryption.address}),types:fd,primaryType:`DelegatedUserDecryptRequestVerification`,signatures:[t.signature],message:t.message});if(n.length!==1)throw new to({type:`kms`});if(n[0]!==t.signer)throw new eo({unknownAddress:n[0],type:`kms`})}function md(e){return Array.isArray(e)?e:[e]}function hd(e){Object.freeze(e);for(let t of Object.values(e))typeof t==`object`&&t&&!Array.isArray(t)&&!Object.isFrozen(t)&&hd(t);return e}function gd(e,t){if(e===t)return!0;if(Array.isArray(t))return Array.isArray(e)&&e.length===t.length&&t.every((t,n)=>gd(e[n],t));if(typeof t!=`object`||!t)return e===t;if(typeof e!=`object`||!e||Array.isArray(e))return!1;let n=e,r=t,i=Object.keys(n),a=Object.keys(r);return i.length===a.length&&a.every(e=>Object.hasOwn(n,e)&&gd(n[e],r[e]))}function _d(e){let{verifyingContractAddressDecryption:t,chainId:n,publicKey:r,contractAddresses:i,startTimestamp:a,durationDays:o,extraData:s}=e,c=xd(r);zn(n,{}),E(t,{}),Gi(i,{}),T(a,{}),T(o,{}),_c(s,{});let l=i.map(D),u={domain:Al({chainId:n,verifyingContractAddressDecryption:t}),types:ud,primaryType:`UserDecryptRequestVerification`,message:{publicKey:c,contractAddresses:l,startTimestamp:a.toString(),durationDays:o.toString(),extraData:s.bytesHex}};return Object.freeze(u),Object.freeze(u.domain),Object.freeze(u.types),Object.freeze(u.types.EIP712Domain),Object.freeze(u.types.UserDecryptRequestVerification),Object.freeze(u.message),Object.freeze(u.message.contractAddresses),u}function vd(e,t,n){yd(e,t,`UserDecryptRequestVerification`,n)}function yd(e,t,n,r){v(e,`domain`,t,r),jl(e.domain,`${t}.domain`,r),v(e,`types`,t,r);let i=n===`DelegatedUserDecryptRequestVerification`?fd:ud;if(!gd(e.types,i))throw Error(`Unexpected KmsUserDecryptEip712V1Types`);x(e,`primaryType`,t,{expectedValue:n,...r}),v(e,`message`,t,r);let a=e.message;bd(a,`${t}.message`,r)}function bd(e,t,n){Cr(e,`publicKey`,t,n),Xi(e,`contractAddresses`,t,n),x(e,`startTimestamp`,t,n),x(e,`durationDays`,t,n),Cr(e,`extraData`,t,n),vc(e.extraData,n),Rn(e.startTimestamp,{max:w}),Rn(e.durationDays,{max:w})}function xd(e){if(e==null)throw Error(`Missing publicKey argument.`);let t,n=e;if(typeof n==`string`)t=gr(on(n));else if(n instanceof Uint8Array)t=Ir(n);else throw Error(`Invalid publicKey argument.`);return t}function Sd(e){let{verifyingContractAddressDecryption:t,chainId:n,publicKey:r,contractAddresses:i,startTimestamp:a,durationDays:o,extraData:s,delegatorAddress:c}=e,l=wd(r);Gi(i,{}),T(a,{}),T(o,{}),E(c,{}),_c(s,{});let u=i.map(D),d=D(c),f={types:fd,primaryType:`DelegatedUserDecryptRequestVerification`,domain:Al({chainId:n,verifyingContractAddressDecryption:t}),message:{publicKey:l,contractAddresses:u,delegatorAddress:d,startTimestamp:a.toString(),durationDays:o.toString(),extraData:s.bytesHex}};return Object.freeze(f),Object.freeze(f.domain),Object.freeze(f.types),Object.freeze(f.types.EIP712Domain),Object.freeze(f.types.DelegatedUserDecryptRequestVerification),Object.freeze(f.message),Object.freeze(f.message.contractAddresses),f}function Cd(e,t,n){yd(e,t,`DelegatedUserDecryptRequestVerification`,n),Yi(e.message,`delegatorAddress`,`${t}.message`,n)}function wd(e){if(e==null)throw Error(`Missing publicKey argument.`);let t,n=e;if(typeof n==`string`)t=gr(on(n));else if(n instanceof Uint8Array)t=Ir(n);else throw Error(`Invalid publicKey argument.`);return t}async function Td(e,t){let{tkmsPrivateKey:n,tkmsPublicKeyBytesHex:r}=t;if(await e.runtime.decrypt.getTkmsPublicKeyHex({tkmsPrivateKey:n,tkmsVersion:e.tkmsVersion})!==r)throw Error(`invalid TransportKeyPairKeyPair`)}var Ed=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},W=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Dd,Od,kd,Ad,jd=Symbol(`TransportKeyPair.token`),Md=Symbol(),Nd=Symbol(),Pd=class{constructor(e,t,n){if(Dd.set(this,void 0),Od.set(this,void 0),kd.set(this,void 0),Ad.set(this,void 0),e!==jd)throw Error(`Unauthorized`);Ed(this,Ad,new WeakRef(t),`f`),Ed(this,Dd,n.publicKeyBytesHex,`f`),Ed(this,Od,n.privateKeyBytes,`f`),Ed(this,kd,n.tkmsVersion,`f`)}get publicKey(){return W(this,Dd,`f`)}get tkmsVersion(){return W(this,kd,`f`)}async[(Dd=new WeakMap,Od=new WeakMap,kd=new WeakMap,Ad=new WeakMap,Md)](e,t,n){if(e!==jd)throw Error(`Unauthorized`);if(t!==W(this,Ad,`f`).deref())throw Error(`Invalid runtime`);let r=Co(t,`decrypt`),i=await r.decrypt.deserializeTkmsPrivateKey({tkmsPrivateKeyBytes:W(this,Od,`f`),tkmsVersion:n});try{await Td({runtime:r,tkmsVersion:n},{tkmsPrivateKey:i,tkmsPublicKeyBytesHex:W(this,Dd,`f`)})}catch(e){throw i.free(),e}return i}[Nd](e){if(e!==jd)throw Error(`Unauthorized`);return W(this,kd,`f`)===void 0?{publicKey:W(this,Dd,`f`),privateKey:Ir(W(this,Od,`f`),!1)}:{publicKey:W(this,Dd,`f`),privateKey:Ir(W(this,Od,`f`),!1),tkmsVersion:W(this,kd,`f`)}}toJSON(){return W(this,kd,`f`)===void 0?{publicKey:W(this,Dd,`f`)}:{publicKey:W(this,Dd,`f`),tkmsVersion:W(this,kd,`f`)}}};Object.freeze(Pd),Object.freeze(Pd.prototype);function Fd(e){return e instanceof Pd}function Id(e,t){if(!Fd(e))throw new C({subject:t.subject,type:typeof e,expectedType:`TransportKeyPair`},t)}async function Ld(e,t){let n=t.fhevmContext.tkmsVersion,r=await e.runtime.decrypt.generateTkmsPrivateKey({tkmsVersion:n});try{let t=await e.runtime.decrypt.serializeTkmsPrivateKey({tkmsPrivateKey:r,tkmsVersion:n}),i=await e.runtime.decrypt.getTkmsPublicKeyHex({tkmsPrivateKey:r,tkmsVersion:n});return new Pd(jd,e.runtime,{privateKeyBytes:t,publicKeyBytesHex:i,tkmsVersion:n})}finally{r.free()}}function Rd(e,t){let{value:n}=t;if(Fd(n))return n;let r=`TransportKeyPair`,i={};v(n,`publicKey`,r,{expectedType:`Bytes | BytesHex`,...i}),v(n,`privateKey`,r,{expectedType:`Bytes | BytesHex`,...i});let a=n.publicKey,o=n.privateKey,s=n.tkmsVersion,c;typeof s==`string`&&s.trim().length>0&&(c=s),mr(a,{subject:`${r}.publicKey`}),mr(o,{subject:`${r}.privateKey`});let l=typeof o==`string`?Vr(o,{strict:!0}):o,u=typeof a==`string`?a:Ir(a,!1);return new Pd(jd,e.runtime,{privateKeyBytes:l,publicKeyBytesHex:u,tkmsVersion:c})}function zd(e){return Id(e.transportKeyPair,{}),e.transportKeyPair[Nd](jd)}async function Bd(e,t){let{transportKeyPair:n,fhevmContext:r}=t;return Id(n,{}),await n[Md](jd,e.runtime,r.tkmsVersion)}var Vd=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Hd=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Ud,Wd,Gd,Kd=Symbol(`SignedDecryptionPermitV1.token`),qd=365,Jd=10,Yd=class{constructor(e,t){if(Ud.set(this,void 0),Wd.set(this,void 0),Gd.set(this,void 0),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:1}),e!==Kd)throw Error(`Unauthorized`);Vd(this,Ud,t.eip712,`f`),Vd(this,Wd,t.signature,`f`),Vd(this,Gd,t.signerAddress,`f`)}get eip712(){return Hd(this,Ud,`f`)}get signature(){return Hd(this,Wd,`f`)}get signerAddress(){return Hd(this,Gd,`f`)}assertNotExpired(){nf(Hd(this,Ud,`f`).message,qd)}get transportPublicKey(){return Hd(this,Ud,`f`).message.publicKey}get encryptedDataOwnerAddress(){return this.eip712.primaryType===`DelegatedUserDecryptRequestVerification`?this.eip712.message.delegatorAddress:this.signerAddress}get isDelegated(){return this.eip712.primaryType===`DelegatedUserDecryptRequestVerification`}};Ud=new WeakMap,Wd=new WeakMap,Gd=new WeakMap,Object.freeze(Yd),Object.freeze(Yd.prototype);function Xd(e){return e instanceof Yd}async function Zd(e,t){let{signerAddress:n,signer:r,delegatorAddress:i}=t;E(n,{});let a=D(n);if(i!==void 0&&a.toLowerCase()===i.toLowerCase())throw Error(`signerAddress and delegatorAddress must be different. Use a non-delegated permit to decrypt your own values.`);let o=await Qd(e,t);return await tf(e,{signature:await e.runtime.ethereum.signTypedData(r,{account:a,...o}),signerAddress:a,eip712:o})}async function Qd(e,t){let{contractAddresses:n,startTimestamp:r,durationSeconds:i,transportKeyPair:a,delegatorAddress:o,fhevmContext:s}=t,c=tr(i,{subject:`durationSeconds`});Id(a,{}),o!==void 0&&E(o,{});let l=Nc(await Xc(e,{kmsVerifierAddress:e.chain.fhevm.contracts.kmsVerifier.address,protocolConfigAddress:e.chain.fhevm.contracts.protocolConfig?.address,fhevmContext:s})),u={verifyingContractAddressDecryption:e.chain.fhevm.gateway.contracts.decryption.address,chainId:e.chain.id,contractAddresses:n,durationDays:c,startTimestamp:r,extraData:l,publicKey:a.publicKey},d=o===void 0?_d(u):Sd({...u,delegatorAddress:o});return ef(d),d}async function $d(e,t){let{transportKeyPair:n,permit:r}=t;Id(n,{});let i=`permit-v1`,a={};v(r,`eip712`,i,a),wr(r,`signature`,i,a),qi(r,`signerAddress`,i,a);let o=r.eip712;x(o,`primaryType`,`${i}.eip712`,a);let s=o.primaryType,c=D(r.signerAddress);if(s===`UserDecryptRequestVerification`){if(vd(o,`${i}.eip712`,a),o.message.publicKey.toLowerCase()!==n.publicKey.toLowerCase())throw Error(`The permit's publicKey does not match the TransportKeyPair's publicKey. Ensure the permit was signed with the same key pair.`);return await tf(e,{signature:r.signature,eip712:o,signerAddress:c})}if(s===`DelegatedUserDecryptRequestVerification`){if(Cd(o,`${i}.eip712`,a),o.message.publicKey.toLowerCase()!==n.publicKey.toLowerCase())throw Error(`The permit's publicKey does not match the TransportKeyPair's publicKey. Ensure the permit was signed with the same key pair.`);return await tf(e,{signature:r.signature,eip712:o,signerAddress:c})}throw Error(`Unknown permit primaryType: ${s}`)}function ef(e){if(e.message.contractAddresses.length===0)throw Error(`contractAddresses is empty`);if(e.message.contractAddresses.length>Jd)throw Error(`contractAddresses max length of ${Jd} exceeded`);let t=Number(e.message.durationDays);if(!bn(t))throw Error(`durationDays is not a valid unsigned integer.`);if(t<1)throw Error(`durationDays must be at least 1 day, got ${t}`);if(t>qd)throw Error(`durationDays is above max duration of ${qd}`);if(!Sn(e.message.startTimestamp,115792089237316195423570985008687907853269984665640564039457584007913129639935n))throw Error(`startTimestamp is not a valid Uint256`)}async function tf(e,t){let{signerAddress:n,eip712:r,signature:i}=t;return ef(r),r.primaryType===`UserDecryptRequestVerification`?(await dd(e,{signer:n,message:r.message,signature:i}),new Yd(Kd,t)):(await pd(e,{signer:n,message:r.message,signature:i}),new Yd(Kd,t))}function nf({startTimestamp:e,durationDays:t},n){let r=BigInt(t);if(r===0n)throw Error(`durationDays is zero`);if(r>BigInt(n))throw Error(`durationDays is above max duration of ${n}`);let i=BigInt(e),a=BigInt(Math.floor(Date.now()/1e3));if(i>a)throw Error(`startTimestamp is set in the future`);if(i+r*BigInt(86400)<a)throw Error(`request has expired`)}async function rf(e,t){let n=await L(e);return Qd(e,{...t,fhevmContext:n})}async function af(e,t){let n=await L(e);return Zd(e,{...t,fhevmContext:n})}var of=Symbol(`viem.token`);function sf(e){return Uo(e,of)}function cf(e){return bo(of,e)}async function lf(e){return Vi(await bt(e))}function uf(e){return ke(e.types,e.values)}function df(e){let t=e.types.map(e=>({type:e}));return a(t,e.values)}function ff(e){let t=e.types.map(e=>({type:e}));return[...o(t,e.encodedData)]}async function pf(e,t){return sf(e).readContract(t)}async function mf(e){let t=await sf(e).getChainId();return BigInt(t)}async function hf(e,t){let{account:n,primaryType:r,types:i,domain:a,message:o}=t,s=e;if(typeof s.signTypedData!=`function`)throw Error(`signer does not support signTypedData`);return await s.signTypedData({account:n,domain:a,types:i,primaryType:r,message:o})}var gf=()=>Object.freeze({ethereum:Object.freeze({decode:ff,encode:df,encodePacked:uf,recoverTypedDataAddress:lf,signTypedData:hf,getChainId:mf,readContract:pf})});function _f(e){let t=Error(`Aborted`,{cause:e});return t.name=`AbortError`,t}function vf(e,t){return t?.throwIfAborted(),new Promise((n,r)=>{let i=setTimeout(n,e);t?.addEventListener(`abort`,()=>{clearTimeout(i),r(_f(t.reason))},{once:!0})})}async function yf(e){return typeof e.bytes==`function`?qr(await e.bytes()):qr(await e.arrayBuffer())}var bf=new Set([`message`,`cause`,`stack`,`name`]);function xf(e){let t=[],n=e;for(;typeof n==`object`&&n;){let e=n;if(typeof e.message!=`string`)break;let r=typeof e.name==`string`?e.name:`Error`,i={};for(let t of Object.keys(e)){if(bf.has(t))continue;let n=e[t];(typeof n==`string`||typeof n==`number`)&&(i[t]=n)}t.push({name:r,message:e.message,props:i}),n=e.cause}return t}function Sf(e){let t=xf(e);return t.length===0?[String(e)]:t.map((e,t)=>{let n=t===0,r=Object.entries(e.props);if(n){let t=r.length>0?` [${r.map(([e,t])=>`${e}=${t}`).join(`, `)}]`:``;return`${e.name}: ${e.message}${t}`}{let t=` [${[[`name`,e.name],...r].map(([e,t])=>`${e}=${t}`).join(`, `)}]`;return`Cause: ${e.message}${t}`}})}async function Cf(e){let t,n=Math.max(0,Math.min(1e3,e.retries??3)),r=Math.max(100,e.retryDelayMs??1e3),{url:i,init:a}=e;for(let e=0;e<=n;e++){a?.signal?.throwIfAborted();try{return await fetch(i,a)}catch(i){if(i.name===`AbortError`)throw i;t=i,e<n&&await vf(r,a?.signal??void 0)}}throw t}var wf;function Tf(){return wf??=Ef(),wf}async function Ef(){try{let e=await fetch(`data:text/plain;base64,YQ==`);if(!e.ok)return!1;let t=await e.arrayBuffer();return t.byteLength===1&&new Uint8Array(t)[0]===97}catch{return!1}}var Df=/^[!#$%&'*+\-.^_`|~0-9a-z]+$/,Of=/[\r\n\0]/;function kf(e){let t=e.toLowerCase();if(!Df.test(t))throw Error(`normalizeHeaderName: invalid header name ${JSON.stringify(e)}`);return t}function Af(e){if(Of.test(e))throw Error(`validateHeaderValue: header value contains CR, LF, or NUL`);return e}function jf(e){if(typeof e!=`object`||!e||Array.isArray(e))return{};let t=new Map,n={};for(let[r,i]of Object.entries(e)){let e=kf(r),a=t.get(e);if(a!==void 0)throw Error(`normalizeHeaders: keys '${a}' and '${r}' both lower-case to '${e}'`);t.set(e,r),typeof i==`string`&&(n[e]=Af(i))}return n}function Mf(e,t){if(t)switch(t.type){case`BearerToken`:e.headers.authorization=`Bearer ${Af(t.token)}`;break;case`ApiKeyHeader`:{let n=sn(t.header)?kf(t.header):`x-api-key`;e.headers[n]=Af(t.value);break}case`ApiKeyCookie`:{let n=sn(t.cookie)?kf(t.cookie):`x-api-key`,r=Af(t.value);typeof window<`u`?(document.cookie=`${n}=${r}; path=/; SameSite=Lax; Secure; HttpOnly;`,e.credentials=`include`):e.headers.cookie=`${n}=${r};`;break}}return e}var Nf=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Pf,Ff=class e extends Wt{constructor(t){let n;n=t.cause instanceof e?t.docsPath??t.cause.docsPath:t.docsPath;let r;n!==void 0&&(n.startsWith(`/`)||(n=`/`+n),r=`${e.DEFAULT_DOCS_BASE_URL}${n}${t.docsSlug===void 0?``:`#${t.docsSlug}`}`),super({...t,name:`RelayerErrorBase`,version:e.FULL_VERSION,docsUrl:r}),Pf.set(this,void 0)}get docsPath(){return Nf(this,Pf,`f`)}};Pf=new WeakMap,Object.defineProperty(Ff,"PKG_NAME",{enumerable:!0,configurable:!0,writable:!0,value:Rt}),Object.defineProperty(Ff,"VERSION",{enumerable:!0,configurable:!0,writable:!0,value:Lt}),Object.defineProperty(Ff,"DEFAULT_DOCS_BASE_URL",{enumerable:!0,configurable:!0,writable:!0,value:`https//docs.zama.org`}),Object.defineProperty(Ff,"FULL_VERSION",{enumerable:!0,configurable:!0,writable:!0,value:`${Ff.PKG_NAME}@${Ff.VERSION}`});function If(e,t){switch(e){case`INPUT_PROOF`:return t?`Input proof`:`input proof`;case`PUBLIC_DECRYPT`:return t?`Public decryption`:`public decryption`;case`USER_DECRYPT`:return t?`User decryption`:`user decryption`;case`DELEGATED_USER_DECRYPT`:return t?`Delegated user decryption`:`delegated user decryption`;case`KEY_URL`:return t?`Key url`:`key url`;default:ea(e,`Unknown operation: ${e}`)}}var Lf=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Rf=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},zf,Bf,Vf,Hf=class extends Ff{constructor(e){let t=[...e.metaMessages??[],`url: ${e.url}`,`operation: ${e.operation}`,...e.jobId===void 0?[]:[`jobId: ${e.jobId}`]];super({...e,metaMessages:t}),zf.set(this,void 0),Bf.set(this,void 0),Vf.set(this,void 0),Lf(this,zf,e.url,`f`),Lf(this,Bf,e.operation,`f`),Lf(this,Vf,e.jobId,`f`)}get url(){return Rf(this,zf,`f`)}get jobId(){return Rf(this,Vf,`f`)}get operation(){return Rf(this,Bf,`f`)}};zf=new WeakMap,Bf=new WeakMap,Vf=new WeakMap;var Uf=class extends Hf{constructor(e){super({...e,name:`RelayerAbortError`,message:`${If(e.operation,!0)}: Request aborted`})}},Wf=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Gf=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Kf,qf,Jf,Yf,Xf,Zf,Qf,$f=class extends Ff{constructor(e){let t=[...e.metaMessages??[],`url: ${e.url}`,`method: ${e.fetchMethod}`,`operation: ${e.operation}`,`retryCount: ${e.retryCount}`,...e.jobId===void 0?[]:[`jobId: ${e.jobId}`]];super({...e,metaMessages:t,name:e.name}),Kf.set(this,void 0),qf.set(this,void 0),Jf.set(this,void 0),Yf.set(this,void 0),Xf.set(this,void 0),Zf.set(this,void 0),Qf.set(this,void 0),Wf(this,Kf,e.fetchMethod,`f`),Wf(this,qf,e.url,`f`),Wf(this,Yf,e.operation,`f`),Wf(this,Zf,e.elapsed,`f`),Wf(this,Xf,e.retryCount,`f`),Wf(this,Qf,e.state,`f`),Wf(this,Jf,e.jobId,`f`)}get url(){return Gf(this,qf,`f`)}get operation(){return Gf(this,Yf,`f`)}get fetchMethod(){return Gf(this,Kf,`f`)}get jobId(){return Gf(this,Jf,`f`)}get retryCount(){return Gf(this,Xf,`f`)}get elapsed(){return Gf(this,Zf,`f`)}get state(){return Gf(this,Qf,`f`)}get isAbort(){return this.cause!==void 0&&this.cause.name===`AbortError`}};Kf=new WeakMap,qf=new WeakMap,Jf=new WeakMap,Yf=new WeakMap,Xf=new WeakMap,Zf=new WeakMap,Qf=new WeakMap;var ep=class extends $f{constructor({cause:e,...t}){super({...t,name:`RelayerFetchError`,message:t.message,...e===void 0?{}:{cause:$i(e)},...e===void 0?{}:{metaMessages:Sf(e)}})}},tp=class extends $f{constructor(e){super({...e,name:`RelayerMaxRetryError`,message:`${If(e.operation,!0)}: Maximum polling retry limit exceeded (${e.retryCount} attempts)`,details:`After ${e.retryCount} polling attempts, the retry limit was exceeded. The operation may still complete on the server - consider checking the result later.`})}},np=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},rp=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},ip,ap,op=class extends Hf{constructor(e){let t=[...e.metaMessages??[],...e.status===void 0?[]:[`status: ${e.status}`],...e.state===void 0?[]:[`state: ${e.state}`]];super({...e,metaMessages:t,name:`RelayerRequestInternalError`,message:e.message??`${If(e.operation,!0)}: Relayer SDK internal error`}),ip.set(this,void 0),ap.set(this,void 0),np(this,ip,e.status,`f`),np(this,ap,e.state,`f`)}get status(){return rp(this,ip,`f`)}get state(){return rp(this,ap,`f`)}};ip=new WeakMap,ap=new WeakMap;var sp=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},cp=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},lp,up=class extends $f{constructor(e){let t=[`status: ${e.status}`];super({...e,metaMessages:t}),lp.set(this,void 0),sp(this,lp,e.status,`f`)}get status(){return cp(this,lp,`f`)}};lp=new WeakMap;var dp=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},fp=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},pp,mp=class extends up{constructor(e){let t=[`label: ${e.relayerApiError.label}`,`message: ${e.relayerApiError.message}`];super({...e,metaMessages:t,name:`RelayerResponseApiError`,message:`${If(e.operation,!0)}: Relayer API error [${e.relayerApiError.label}]: ${e.relayerApiError.message}`}),pp.set(this,void 0),dp(this,pp,e.relayerApiError,`f`)}get relayerApiError(){return fp(this,pp,`f`)}};pp=new WeakMap;var hp=class extends up{constructor(e){super({...e,name:`RelayerResponseInputProofRejectedError`,message:`Relayer rejected the input proof`})}},gp=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},_p=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},vp,yp=class extends up{constructor(e){super({...e,cause:$i(e.cause),name:`RelayerResponseInvalidBodyError`,message:`${If(e.operation,!0)}: Relayer response body does not match the expected schema`}),vp.set(this,void 0),gp(this,vp,e.bodyJson,`f`)}get bodyJson(){return _p(this,vp,`f`)}};vp=new WeakMap;var bp=class extends up{constructor({responseMessage:e,...t}){super({...t,name:`RelayerResponseStatusError`,message:`${If(t.operation,!0)}: Relayer returned unexpected response status: ${t.status}`,details:e??`The Relayer server returned an unexpected response status (${t.status}). This status ${t.status} is not part of the expected API contract and may indicate a server configuration issue.`})}},xp=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Sp=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Cp,wp=class extends Ff{constructor(e){super({...e,name:`RelayerStateError`}),Cp.set(this,void 0),xp(this,Cp,{...e.state},`f`),Object.freeze(Sp(this,Cp,`f`))}get state(){return Sp(this,Cp,`f`)}};Cp=new WeakMap;var Tp=class extends Hf{constructor(e){super({...e,name:`RelayerTimeoutError`,message:`${If(e.operation,!0)}: Request timed out after ${e.timeoutMs}ms`})}};function Ep(e,t,n){x(e,`status`,t,{expectedValue:`succeeded`,...n}),x(e,`requestId`,t,n),v(e,`result`,t,n),Qt(e.result,`accepted`,`${t}.result`,n),e.result.accepted?Dp(e.result,`${t}.result`,n):Op(e.result,`${t}.result`,n)}function Dp(e,t,n){Qt(e,`accepted`,t,{expectedValue:!0,...n}),Cr(e,`extraData`,t,n),Or(e,`handles`,t,n),Dr(e,`signatures`,t,n)}function Op(e,t,n){Qt(e,`accepted`,t,{expectedValue:!1,...n}),Cr(e,`extraData`,t,n)}function kp(e,t,n){x(e,`status`,t,{expectedValue:`succeeded`,...n}),x(e,`requestId`,t,n),v(e,`result`,t,n),Ap(e.result,`${t}.result`,!1,n)}function Ap(e,t,n,r){kr(e,`signatures`,t,r),Er(e,`decryptedValue`,t,r),(Object.prototype.hasOwnProperty.call(e,`extraData`)||n)&&Cr(e,`extraData`,t,r)}function jp(e,t,n){if(x(e,`label`,t,n),e.label!==`malformed_json`&&e.label!==`request_error`&&e.label!==`not_ready_for_decryption`&&e.label!==`not_allowed_on_host_acl`)throw new _({subject:t,property:`label`,expectedType:`string`,expectedValue:[`malformed_json`,`request_error`,`not_ready_for_decryption`,`not_allowed_on_host_acl`],type:typeof e.label,value:e.label},n);x(e,`message`,t,n)}function Mp(e,t,n){if(x(e,`label`,t,n),e.label!==`missing_fields`&&e.label!==`validation_failed`)throw new _({subject:t,property:`label`,expectedType:`string`,expectedValue:[`missing_fields`,`validation_failed`],type:typeof e.label,value:e.label},n);x(e,`message`,t,n),Xt(e,`details`,t,n);let r=e.details;for(let e=0;e<r.length;++e){let i=r[e];x(i,`field`,`${t}.details[${e}]`,n),x(i,`issue`,`${t}.details[${e}]`,n)}}function Np(e,t,n){x(e,`label`,t,{expectedValue:`not_found`,...n}),x(e,`message`,t,n)}function Pp(e,t,n){x(e,`label`,t,{expectedValue:[`rate_limited`,`protocol_overload`],...n}),x(e,`message`,t,n)}function Fp(e,t,n){x(e,`label`,t,{expectedValue:`internal_server_error`,...n}),x(e,`message`,t,n)}function Ip(e,t,n){x(e,`label`,t,{expectedValue:[`protocol_paused`,`insufficient_balance`,`insufficient_allowance`,`gateway_not_reachable`,`readiness_check_timed_out`,`response_timed_out`],...n}),x(e,`message`,t,n)}function Lp(e,t,n){x(e,`status`,t,{expectedValue:`failed`,...n}),v(e,`error`,t,n),Rp(e.error,`${t}.error`,n)}function Rp(e,t,n){if(x(e,`label`,t,{}),e.label===`malformed_json`||e.label===`request_error`||e.label===`not_ready_for_decryption`||e.label===`not_allowed_on_host_acl`)jp(e,t,n);else if(e.label===`missing_fields`||e.label===`validation_failed`)Mp(e,t,n);else if(e.label===`not_found`)Np(e,t,n);else if(e.label===`rate_limited`||e.label===`protocol_overload`)Pp(e,t,n);else if(e.label===`internal_server_error`)Fp(e,t,n);else if(e.label===`readiness_check_timed_out`||e.label===`response_timed_out`||e.label===`protocol_paused`||e.label===`insufficient_balance`||e.label===`insufficient_allowance`||e.label===`gateway_not_reachable`)Ip(e,t,n);else throw new _({subject:t,property:`label`,expectedType:`string`,expectedValue:[`malformed_json`,`request_error`,`not_ready_for_decryption`,`not_allowed_on_host_acl`,`missing_fields`,`validation_failed`,`rate_limited`,`internal_server_error`,`protocol_paused`,`insufficient_balance`,`insufficient_allowance`,`protocol_overload`,`gateway_not_reachable`,`readiness_check_timed_out`,`response_timed_out`],type:typeof e.label,value:e.label},n)}function zp(e,t,n){if(Lp(e,t,n),e.error.label===`malformed_json`||e.error.label===`request_error`||e.error.label===`not_ready_for_decryption`||e.error.label===`not_allowed_on_host_acl`)jp(e.error,`${t}.error`,n);else if(e.error.label===`missing_fields`||e.error.label===`validation_failed`)Mp(e.error,`${t}.error`,n);else throw new _({subject:`${t}.error`,property:`label`,expectedType:`string`,expectedValue:[`malformed_json`,`request_error`,`not_ready_for_decryption`,`not_allowed_on_host_acl`,`missing_fields`,`validation_failed`],type:typeof e.error.label,value:e.error.label},n)}function Bp(e,t,n){Lp(e,t,n),Np(e.error,`${t}.error`,n)}function Vp(e,t,n){Lp(e,t,n),Pp(e.error,`${t}.error`,n)}function Hp(e,t,n){Lp(e,t,n),Fp(e.error,`${t}.error`,n)}function Up(e,t,n){Lp(e,t,n),Ip(e.error,`${t}.error`,n)}function Wp(e,t,n){x(e,`status`,t,{expectedValue:`queued`,...n}),x(e,`requestId`,t,n),v(e,`result`,t,n),x(e.result,`jobId`,`${t}.result`,n)}function Gp(e,t,n){x(e,`status`,t,{expectedValue:`queued`,...n}),x(e,`requestId`,t,n)}function Kp(e,t,n){x(e,`status`,t,{expectedValue:`succeeded`,...n}),x(e,`requestId`,t,n),v(e,`result`,t,n),qp(e.result,`${t}.result`,n)}function qp(e,t,n){Xt(e,`result`,t,n);for(let r=0;r<e.result.length;++r){let i=e.result[r],a=`${t}.result[${r}]`;Er(i,`payload`,a,n),Er(i,`signature`,a,{...n,byteLength:65})}Yp(e.result,t,!1,n),Jp(e.result)}function Jp(e){for(let t of e)Object.prototype.hasOwnProperty.call(t,`extraData`)||(t.extraData=`0x`)}function Yp(e,t,n,r){let i;for(let a=0;a<e.length;++a){let o=e[a],s=`${t}.result[${a}]`,c=Object.prototype.hasOwnProperty.call(o,`extraData`);if(n&&!c)throw new _({subject:s,property:`extraData`,expectedType:`bytesHex`,type:`undefined`},r);if(i===void 0)i=c;else if(c!==i)throw new _({subject:s,property:`extraData`,expectedType:i?`bytesHex`:`undefined`,type:c?`unknown`:`undefined`},r)}if(i===!0)for(let n=0;n<e.length;++n)Cr(e[n],`extraData`,`${t}.result[${n}]`,r)}async function Xp(e){let t;try{t=await e.text()}catch{return{}}if(t.length===0)return{};try{let e=JSON.parse(t),n=typeof e==`object`&&e&&`error`in e?e.error:e,r=ln(n,`message`)&&sn(n.message)?n.message:void 0,i=ln(n,`label`)&&sn(n.label)?n.label:void 0;if(r!==void 0||i!==void 0)return{message:r,label:i}}catch{}return{}}var G=class e{constructor(t){if(Object.defineProperty(this,"_debug",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_fetchMethod",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_elapsed",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_jobId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_jobIdTimestamp",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_state",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_relayerOperation",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_internalAbortController",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_internalAbortSignal",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_externalAbortSignal",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_terminateReason",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_terminateError",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_retryCount",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_fetchRetries",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_fetchRetryDelayInMilliseconds",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_totalSteps",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_step",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_retryAfterTimeoutID",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_url",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_payload",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_fhevmAuth",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_customHeaders",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_retryAfterTimeoutPromiseFuncReject",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_onProgress",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_requestMaxDurationInMs",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_requestStartTimestamp",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_requestGlobalTimeoutID",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_throwErrorIfNoRetryAfter",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_handleExternalSignalAbort",{enumerable:!0,configurable:!0,writable:!0,value:t=>{let n=t.currentTarget;this._assert(this instanceof e,`this instanceof RelayerAsyncRequest`),this._assert(n===this._externalAbortSignal,`signal === this._externalAbortSignal`),this._assert(!this._state.terminated,`!this._state.terminated`),this._assert(!this._state.aborted,`!this._state.aborted`),this._assert(!this._state.canceled,`!this._state.canceled`),this.cancel()}}),Object.defineProperty(this,"_handleInternalSignalAbort",{enumerable:!0,configurable:!0,writable:!0,value:t=>{let n=t.currentTarget;this._assert(this instanceof e,`this instanceof RelayerAsyncRequest`),this._assert(n===this._internalAbortSignal,`signal === this._internalAbortSignal`),this._assert(!this._state.terminated,`!this._state.terminated`),this._assert(!this._state.aborted,`!this._state.aborted`),this._state.aborted=!0,n.reason!==`cancel`&&this._assert(!this._state.canceled,`!this._state.canceled`),this._postAsyncOnProgressCallback({type:`abort`,url:this._url,step:this._step,totalSteps:this._totalSteps,...this._fetchMethod===void 0?{}:{method:this._fetchMethod},...this._jobId===void 0?{}:{jobId:this._jobId},operation:this._relayerOperation,retryCount:this._retryCount}),this._terminate(`abort`,new Uf({operation:this._relayerOperation,jobId:this._jobId,url:this._url}))}}),t.relayerOperation!==`INPUT_PROOF`&&t.relayerOperation!==`PUBLIC_DECRYPT`&&t.relayerOperation!==`USER_DECRYPT`&&t.relayerOperation!==`DELEGATED_USER_DECRYPT`)throw new _({subject:`RelayerAsyncRequestParams`,property:`relayerOperation`,expectedType:`string`,value:t.relayerOperation,expectedValue:`INPUT_PROOF | PUBLIC_DECRYPT | USER_DECRYPT | DELEGATED_USER_DECRYPT`},{});this._fetchRetries=t.options?.fetchRetries??e.FETCH_RETRY,this._fetchRetryDelayInMilliseconds=t.options?.fetchRetryDelayInMilliseconds??e.FETCH_RETRY_AFTER_MS,this._step=0,this._totalSteps=1,this._elapsed=0,this._relayerOperation=t.relayerOperation,this._internalAbortController=new AbortController,this._internalAbortSignal=this._internalAbortController.signal,this._internalAbortSignal.addEventListener(`abort`,this._handleInternalSignalAbort),this._externalAbortSignal=t.options?.signal,this._externalAbortSignal&&this._externalAbortSignal.addEventListener(`abort`,this._handleExternalSignalAbort),this._url=t.url,this._payload=t.payload,this._debug=t.options?.debug===!0,this._fhevmAuth=t.options?.auth,this._customHeaders=jf(t.options?.headers),this._onProgress=t.options?.onProgress,this._state={aborted:!1,canceled:!1,failed:!1,fetching:!1,running:!1,succeeded:!1,terminated:!1,timeout:!1},this._retryCount=0,this._retryAfterTimeoutID=void 0,this._requestGlobalTimeoutID=void 0,this._terminateReason=void 0,this._throwErrorIfNoRetryAfter=t.throwErrorIfNoRetryAfter??!1,this._requestMaxDurationInMs=t.options?.timeout??e.DEFAULT_GLOBAL_REQUEST_TIMEOUT_MS,this._trace(`constructor()`,`{ fetchRetries: ${this._fetchRetries}, fetchRetryDelayInMilliseconds: ${this._fetchRetryDelayInMilliseconds} }`)}async run(e){if(this._trace(`run`,`existingJobId=${e?.existingJobId}`),this._state.terminated)throw new wp({message:`Relayer.run() failed. Request already terminated.`,state:{...this._state}});if(this._state.canceled)throw new wp({message:`Relayer.run() failed. Request already canceled.`,state:{...this._state}});if(this._state.succeeded)throw new wp({message:`Relayer.run() failed. Request already succeeded.`,state:{...this._state}});if(this._state.failed)throw new wp({message:`Relayer.run() failed. Request already failed.`,state:{...this._state}});if(this._state.aborted)throw new wp({message:`Relayer.run() failed. Request already aborted.`,state:{...this._state}});if(this._state.timeout)throw new wp({message:`Relayer.run() failed. Request already timeout.`,state:{...this._state}});if(this._externalAbortSignal?.aborted===!0)throw new wp({message:`Relayer.run() failed. External AbortSignal already aborted (reason:${this._externalAbortSignal.reason}).`,state:{...this._state}});if(this._internalAbortSignal?.aborted===!0)throw new wp({message:`Relayer.run() failed. Internal AbortSignal already aborted (reason:${this._internalAbortSignal.reason}).`,state:{...this._state}});if(this._state.running)throw new wp({message:`Relayer.run() failed. Request already running.`,state:{...this._state}});this._state.running=!0,this._requestStartTimestamp=Date.now(),this._setGlobalRequestTimeout(this._requestMaxDurationInMs);try{let t=await this._runPostLoop(e);return this._state.succeeded=!0,this._terminate(`succeeded`),t}catch(e){throw this._state.failed=!0,e.name===`AbortError`&&(this._assert(this._state.aborted,`this._state.aborted`),this._assert(this._state.terminated,`this._state.terminated`)),this._terminate(`failed`,e),e}}_canContinue(){return!(this._state.canceled||this._state.terminated||this._state.succeeded||this._state.aborted)}cancel(){if(!this._canContinue()){this._trace(`cancel`,`!this._canContinue()`);return}this._state.canceled=!0,this._internalAbortController?.abort(`cancel`),this._assert(this._state.aborted,`this._state.aborted`),this._assert(this._state.terminated,`this._state.terminated`)}get state(){return{...this._state}}get canceled(){return this._state.canceled}get terminated(){return this._state.terminated}get terminateReason(){return this._terminateReason}get terminateError(){return this._terminateError}get running(){return this._state.running}get fetching(){return this._state.fetching}get failed(){return this._state.failed}get aborted(){return this._state.aborted}get timeout(){return this._state.timeout}get succeeded(){return this._state.succeeded}get startTimeMs(){return this._requestStartTimestamp}get elapsedTimeMs(){if(this._requestStartTimestamp!==void 0)return Date.now()-this._requestStartTimestamp}get retryCount(){return this._retryCount}async _runPostLoop(t){if(this._assert(this._fetchMethod===void 0,`this._fetchMethod === undefined`),this._fetchMethod=`POST`,this._totalSteps=1,this._step=0,sn(t?.existingJobId))return this._setJobIdOnce(t.existingJobId),await this._runGetLoop();let n=0,r=0;for(;r<e.MAX_POST_RETRY;){++r,this._assertCanContinueAfterAwait(),this._elapsed=this._jobId===void 0?0:Date.now()-this._jobIdTimestamp,n++;let e=await this._fetchWithRetry(()=>this._fetchPost(),n);if(e===void 0)continue;if(n=0,e.status===403){let{message:t}=await Xp(e);this._throwUnexpectedStatusError(403,t)}let t=e.status;switch(t){case 202:{let n=await this._getResponseJson(e);try{Wp(n,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:t,cause:e,bodyJson:S(n)})}let r=this._getRetryAfterHeaderValueInMs(e);return this._setJobIdOnce(n.result.jobId),this._postAsyncOnProgressCallback({type:`queued`,url:this._url,method:`POST`,status:t,requestId:n.requestId,jobId:this.jobId,operation:this._relayerOperation,retryCount:this._retryCount,retryAfterMs:r,elapsed:this._elapsed,step:this._step,totalSteps:this._totalSteps}),await this._setRetryAfterTimeout(r),await this._runGetLoop()}case 400:{let n=await this._getResponseJson(e);try{zp(n,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:t,cause:e,bodyJson:S(n)})}this._throwRelayerResponseApiError({status:t,relayerApiError:n.error})}case 401:{let{message:n}=await Xp(e);this._throwUnauthorizedError(t,n)}case 429:{let n=await this._getResponseJson(e);try{Vp(n,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:t,cause:e,bodyJson:S(n)})}let r=this._getRetryAfterHeaderValueInMs(e);this._postAsyncOnProgressCallback({type:`throttled`,operation:this._relayerOperation,url:this._url,method:`POST`,status:t,retryAfterMs:r,retryCount:this._retryCount,elapsed:this._elapsed,relayerApiError:n.error,step:this._step,totalSteps:this._totalSteps}),await this._setRetryAfterTimeout(r);continue}case 500:{let n=await this._getResponseJson(e);try{Hp(n,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:t,cause:e,bodyJson:S(n)})}this._throwRelayerResponseApiError({status:t,relayerApiError:n.error})}case 503:{let n=await this._getResponseJson(e);try{Up(n,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:t,cause:e,bodyJson:S(n)})}this._throwRelayerResponseApiError({status:t,relayerApiError:n.error})}default:(e=>{throw new bp({fetchMethod:`POST`,status:e,url:this._url,operation:this._relayerOperation,elapsed:this._elapsed,retryCount:this._retryCount,state:{...this._state}})})(t)}}this._throwMaxRetryError({fetchMethod:`POST`})}async _runGetLoop(){this._assert(this._fetchMethod===`POST`,`this._fetchMethod === 'POST'`),this._assert(this._jobId!==void 0,`this._jobId !== undefined`),this._assert(this._jobIdTimestamp!==void 0,`this._jobIdTimestamp !== undefined`),this._fetchMethod=`GET`;let t=0,n=0;for(;n<e.MAX_GET_RETRY;){++n,this._assertCanContinueAfterAwait(),this._elapsed=Date.now()-this._jobIdTimestamp,t++;let e=await this._fetchWithRetry(()=>this._fetchGet(),t);if(e===void 0)continue;if(t=0,e.status===403){let{message:t}=await Xp(e);this._throwUnexpectedStatusError(403,t)}let r=e.status;switch(r){case 200:{let t=await this._getResponseJson(e);this._step=this._totalSteps;try{if(this._relayerOperation===`INPUT_PROOF`){Ep(t,`body`,{});let e=t.result;if(!e.accepted)throw new hp({url:this._url,fetchMethod:`GET`,jobId:this.jobId,operation:this._relayerOperation,retryCount:this._retryCount,status:r,state:{...this._state},elapsed:this._elapsed});let n=e,i=n.handles.map(Ha),a={extraData:n.extraData,signatures:n.signatures,handles:Object.freeze(i)};return this._postAsyncOnProgressCallback({type:`succeeded`,url:this._url,method:`GET`,status:r,jobId:this.jobId,requestId:t.requestId,operation:this._relayerOperation,retryCount:this._retryCount,elapsed:this._elapsed,result:a,step:this._step,totalSteps:this._totalSteps}),a}if(this._relayerOperation===`PUBLIC_DECRYPT`){kp(t,`body`,{});let e=t.result;return this._postAsyncOnProgressCallback({type:`succeeded`,url:this._url,method:`GET`,status:r,jobId:this.jobId,requestId:t.requestId,operation:this._relayerOperation,retryCount:this._retryCount,elapsed:this._elapsed,result:e,step:this._step,totalSteps:this._totalSteps}),e}if(this._relayerOperation===`USER_DECRYPT`){Kp(t,`body`,{});let e=t.result.result;return this._postAsyncOnProgressCallback({type:`succeeded`,url:this._url,method:`GET`,status:r,jobId:this.jobId,requestId:t.requestId,operation:this._relayerOperation,retryCount:this._retryCount,elapsed:this._elapsed,result:e,step:this._step,totalSteps:this._totalSteps}),e}if(this._relayerOperation===`DELEGATED_USER_DECRYPT`){Kp(t,`body`,{});let e=t.result.result;return this._postAsyncOnProgressCallback({type:`succeeded`,url:this._url,method:`GET`,status:r,jobId:this.jobId,requestId:t.requestId,operation:this._relayerOperation,retryCount:this._retryCount,elapsed:this._elapsed,result:e,step:this._step,totalSteps:this._totalSteps}),e}ea(this._relayerOperation,`Unknown operation: ${this._relayerOperation}`)}catch(e){if(e instanceof hp)throw e;this._throwResponseInvalidBodyError({status:r,cause:e,bodyJson:S(t)})}}case 202:{let t=await this._getResponseJson(e);try{Gp(t,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:r,cause:e,bodyJson:S(t)})}let n=this._getRetryAfterHeaderValueInMs(e);this._postAsyncOnProgressCallback({type:`queued`,url:this._url,method:`GET`,status:r,requestId:t.requestId,operation:this._relayerOperation,jobId:this.jobId,retryAfterMs:n,retryCount:this._retryCount,elapsed:this._elapsed,step:this._step,totalSteps:this._totalSteps}),await this._setRetryAfterTimeout(n);continue}case 400:{let t=await this._getResponseJson(e);try{zp(t,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:r,cause:e,bodyJson:S(t)})}this._throwRelayerResponseApiError({status:r,relayerApiError:t.error})}case 401:{let{message:t}=await Xp(e);this._throwUnauthorizedError(r,t)}case 404:{let t=await this._getResponseJson(e);try{Bp(t,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:r,cause:e,bodyJson:S(t)})}this._throwRelayerResponseApiError({status:r,relayerApiError:t.error})}case 500:{let t=await this._getResponseJson(e);try{Hp(t,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:r,cause:e,bodyJson:S(t)})}this._throwRelayerResponseApiError({status:r,relayerApiError:t.error})}case 503:{let t=await this._getResponseJson(e);try{Up(t,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:r,cause:e,bodyJson:S(t)})}this._throwRelayerResponseApiError({status:r,relayerApiError:t.error})}default:(e=>{throw new bp({fetchMethod:`GET`,status:e,url:this._url,jobId:this.jobId,operation:this._relayerOperation,elapsed:this._elapsed,retryCount:this._retryCount,state:{...this._state}})})(r)}}this._throwMaxRetryError({fetchMethod:`GET`})}async _getResponseJson(e){try{let t=await e.json();return this._assertCanContinueAfterAwait(),t}catch(e){this._throwFetchError({message:`JSON parsing failed.`,cause:e})}}_getRetryAfterHeaderValueInMs(t){if(!t.headers.has(`Retry-After`)){if(this._throwErrorIfNoRetryAfter)throw Error(`Missing 'Retry-After' header key`);return e.DEFAULT_RETRY_AFTER_MS}try{let n=Number.parseInt(t.headers.get(`Retry-After`));if(Tn(n)){let t=n*1e3;return t<e.MINIMUM_RETRY_AFTER_MS?e.MINIMUM_RETRY_AFTER_MS:t}}catch{}if(this._throwErrorIfNoRetryAfter)throw Error(`Invalid 'Retry-After' header key`);return e.DEFAULT_RETRY_AFTER_MS}_setJobIdOnce(e){this._assert(e!==void 0,`jobId !== undefined`),this._assert(this._jobId===void 0,`this._jobId === undefined`),this._jobId=e,this._jobIdTimestamp=Date.now()}get jobId(){return this._assert(this._jobId!==void 0,`this._jobId !== undefined`),this._jobId}async _fetchWithRetry(e,t){try{return await e()}catch(e){if(e.name===`AbortError`||t>=this._fetchRetries)throw e;await this._setRetryAfterTimeout(this._fetchRetryDelayInMilliseconds,{skipIncrementRetryCount:!0});return}}async _fetchPost(){this._assert(this._fetchMethod===`POST`,`this._fetchMethod === "POST"`),this._assert(this._jobId===void 0,`this._jobId === undefined`),this._assert(!this._state.terminated,`!this._state.terminated`),this._assert(!this._state.fetching,`!this._state.fetching`),this._trace(`_fetchPost`,this._url);let e=Mf({method:`POST`,headers:{...this._customHeaders,"content-type":`application/json`,"zama-sdk-version":Lt,"zama-sdk-name":Rt},body:JSON.stringify(this._payload),...this._internalAbortSignal?{signal:this._internalAbortSignal}:{}},this._fhevmAuth);this._state.fetching=!0;let t;try{t=await fetch(this._url,e)}catch(e){if(this._state.fetching=!1,this._trace(`_fetchPost`,Sf(e).join(`. `)),e.name===`AbortError`)throw e;this._throwFetchError({message:`Fetch POST failed.`,cause:e})}return this._state.fetching=!1,this._assert(!this._state.terminated,`!this._state.terminated`),this._assertCanContinueAfterAwait(),this._trace(`_fetchPost`,`return response Ok`),t}async _fetchGet(){this._assert(this._fetchMethod===`GET`,`this._fetchMethod === "GET"`),this._assert(this._jobId!==void 0,`this._jobId !== undefined`),this._assert(!this._state.terminated,`!this._state.terminated`),this._assert(!this._state.fetching,`!this._state.fetching`),this._trace(`_fetchGet`,`jobId=${this.jobId}`);let e=Mf({method:`GET`,headers:{...this._customHeaders,"zama-sdk-version":Lt,"zama-sdk-name":Rt},...this._internalAbortSignal?{signal:this._internalAbortSignal}:{}},this._fhevmAuth);this._state.fetching=!0;let t;try{t=await fetch(`${this._url}/${this.jobId}`,e)}catch(e){if(this._state.fetching=!1,this._trace(`_fetchGet`,`jobId=${this.jobId}, ${Sf(e).join(`. `)}`),e.name===`AbortError`)throw e;this._throwFetchError({message:`Fetch GET failed.`,cause:e})}return this._state.fetching=!1,this._assert(!this._state.terminated,`!this._state.terminated`),this._assertCanContinueAfterAwait(),this._trace(`_fetchGet`,`jobId=${this.jobId}, return response Ok, status=${t.status}`),t}_terminate(e,t){if(this._state.terminated){this._trace(`_terminate`,`reason=${e}. Already terminated with reason='${this._terminateReason}'. IGNORE`),this._assert(this._terminateReason!==void 0,`this._terminateReason !== undefined`),this._assert(this._internalAbortSignal===void 0,`this._signal === undefined`),this._assert(this._requestGlobalTimeoutID===void 0,`this._requestGlobalTimeoutID === undefined`),this._assert(this._retryAfterTimeoutID===void 0,`this._retryAfterTimeoutID === undefined`),this._assert(this._retryAfterTimeoutPromiseFuncReject===void 0,`this._retryAfterTimeoutPromiseFuncReject === undefined`);return}this._trace(`_terminate`,`reason=${e}`),this._terminateReason=e,this._terminateError=t,this._state.terminated=!0,this._tryClearRetryAfterTimeout(t),this._tryClearGlobalRequestTimeout();let n=this._internalAbortSignal,r=this._externalAbortSignal;this._externalAbortSignal=void 0,this._internalAbortSignal=void 0,this._internalAbortController=void 0,r&&r.removeEventListener(`abort`,this._handleExternalSignalAbort),n&&n.removeEventListener(`abort`,this._handleInternalSignalAbort),this._trace(`_terminate`,`reason=${e} completed.`)}async _setRetryAfterTimeout(e,t){let{skipIncrementRetryCount:n=!1}=t??{};if(this._assert(!this._state.terminated,`!this._state.terminated`),this._assert(this._retryAfterTimeoutID===void 0,`this._retryAfterTimeoutID === undefined`),this._trace(`_setRetryAfterTimeout`,`delayMs=${e}`),this._retryAfterTimeoutID!==void 0)return Promise.reject(Error(`retry-after already running.`));let r=new Promise((t,r)=>{this._retryAfterTimeoutPromiseFuncReject=r;let i=()=>{this._retryAfterTimeoutID=void 0,this._retryAfterTimeoutPromiseFuncReject=void 0,t()};n||this._retryCount++,this._retryAfterTimeoutID=setTimeout(i,e)});return this._assert(this._retryAfterTimeoutID!==void 0,`this._retryAfterTimeoutID !== undefined`),this._assert(this._retryAfterTimeoutPromiseFuncReject!==void 0,`this._retryAfterTimeoutPromiseFuncReject !== undefined`),r}_tryClearRetryAfterTimeout(e){if(this._retryAfterTimeoutID===void 0){this._assert(this._retryAfterTimeoutPromiseFuncReject===void 0,`this._retryAfterTimeoutPromiseFuncReject === undefined`);return}this._assert(this._retryAfterTimeoutPromiseFuncReject!==void 0,`this._retryAfterTimeoutPromiseFuncReject !== undefined`);let t=this._retryAfterTimeoutPromiseFuncReject,n=this._retryAfterTimeoutID;this._retryAfterTimeoutID=void 0,this._retryAfterTimeoutPromiseFuncReject=void 0,clearTimeout(n),t(e??Error(`_tryClearRetryAfterTimeout`))}_setGlobalRequestTimeout(e){this._assert(this._requestGlobalTimeoutID===void 0,`this._requestGlobalTimeoutID === undefined`);let t=()=>{this._requestGlobalTimeoutID=void 0,this._handleGlobalRequestTimeout()};this._requestGlobalTimeoutID=setTimeout(t,e)}_handleGlobalRequestTimeout(){this._assert(this instanceof e,`this instanceof RelayerAsyncRequest`),this._assert(!this._state.terminated,`!this._state.terminated`),this._assert(!this._state.timeout,`!this._state.timeout`),this._state.timeout=!0,this._postAsyncOnProgressCallback({type:`timeout`,url:this._url,...this._fetchMethod===void 0?{}:{method:this._fetchMethod},...this._jobId===void 0?{}:{jobId:this._jobId},operation:this._relayerOperation,retryCount:this._retryCount,step:this._step,totalSteps:this._totalSteps}),this._terminate(`timeout`,new Tp({operation:this._relayerOperation,jobId:this._jobId,url:this._url,timeoutMs:this._requestMaxDurationInMs}))}_tryClearGlobalRequestTimeout(){if(this._requestGlobalTimeoutID===void 0)return;let e=this._requestGlobalTimeoutID;this._requestGlobalTimeoutID=void 0,clearTimeout(e)}_postAsyncOnProgressCallback(e){let t=this._onProgress;t&&queueMicrotask(()=>{t(e)})}_throwUnauthorizedError(e,t){this._throwRelayerResponseApiError({status:e,relayerApiError:{label:`unauthorized`,message:t??`Unauthorized, missing or invalid Zama Fhevm API Key.`}})}_throwUnexpectedStatusError(e,t){throw new bp({fetchMethod:this._fetchMethod,status:e,url:this._url,...this._jobId===void 0?{}:{jobId:this._jobId},operation:this._relayerOperation,elapsed:this._elapsed,retryCount:this._retryCount,state:{...this._state},...t===void 0?{}:{responseMessage:t}})}_throwRelayerResponseApiError(e){let t=JSON.parse(JSON.stringify(e.relayerApiError)),n={type:`failed`,url:this._url,method:this._fetchMethod,status:e.status,...this._jobId===void 0?{}:{jobId:this._jobId},operation:this._relayerOperation,retryCount:this._retryCount,elapsed:this._elapsed,relayerApiError:t,step:this._step,totalSteps:this._totalSteps};throw this._postAsyncOnProgressCallback((this._relayerOperation===`INPUT_PROOF`||this._relayerOperation===`PUBLIC_DECRYPT`||this._relayerOperation,n)),new mp({url:this._url,fetchMethod:this._fetchMethod,status:e.status,jobId:this._jobId,operation:this._relayerOperation,retryCount:this._retryCount,relayerApiError:e.relayerApiError,elapsed:this._elapsed,state:{...this._state}})}_assert(e,t){e||this._throwInternalError(`Assertion failed: ${t}`)}_throwInternalError(e){throw new op({operation:this._relayerOperation,url:this._url,message:e,state:JSON.stringify(this._state),jobId:this._jobId})}_throwMaxRetryError(e){let t=this._jobIdTimestamp===void 0?0:Date.now()-this._jobIdTimestamp;throw new tp({operation:this._relayerOperation,url:this._url,state:{...this._state},retryCount:this._retryCount,jobId:this._jobId,fetchMethod:e.fetchMethod,elapsed:t})}_throwResponseInvalidBodyError(e){throw new yp({...e,fetchMethod:this._fetchMethod,url:this._url,jobId:this._jobId,operation:this._relayerOperation,state:{...this._state},retryCount:this._retryCount,elapsed:this._elapsed})}_throwFetchError(e){throw new ep({...e,elapsed:this._elapsed,url:this._url,jobId:this._jobId,operation:this._relayerOperation,state:{...this._state},retryCount:this._retryCount,fetchMethod:this._fetchMethod})}_assertCanContinueAfterAwait(){this._canContinue()||this._throwInternalError(`cannot continue.`)}_trace(e,t){this._debug}};Object.defineProperty(G,"DEFAULT_RETRY_AFTER_MS",{enumerable:!0,configurable:!0,writable:!0,value:2500}),Object.defineProperty(G,"MINIMUM_RETRY_AFTER_MS",{enumerable:!0,configurable:!0,writable:!0,value:1e3}),Object.defineProperty(G,"DEFAULT_GLOBAL_REQUEST_TIMEOUT_MS",{enumerable:!0,configurable:!0,writable:!0,value:36e5}),Object.defineProperty(G,"MAX_GET_RETRY",{enumerable:!0,configurable:!0,writable:!0,value:1440}),Object.defineProperty(G,"MAX_POST_RETRY",{enumerable:!0,configurable:!0,writable:!0,value:G.MAX_GET_RETRY}),Object.defineProperty(G,"FETCH_RETRY_AFTER_MS",{enumerable:!0,configurable:!0,writable:!0,value:1e3}),Object.defineProperty(G,"FETCH_RETRY",{enumerable:!0,configurable:!0,writable:!0,value:3});var Zp=class extends Wt{constructor(e,t){super({...t,message:e.message??(e.url===void 0?`Url is invalid.`:`Url "${e.url}" is invalid.`),...e.cause===void 0?{}:{cause:$i(e.cause)},name:`InvalidUrlError`})}};function Qp(e,t){if(typeof e!=`string`||e.length===0)throw new Zp({message:`Invalid relayerUrl: must be a non-empty string.`},{});let n;try{n=new URL(e)}catch(e){throw new Zp({message:`Invalid relayerUrl: cannot parse as URL}.`,cause:e},{})}if(n.protocol!==`https:`&&n.protocol!==`http:`)throw new Zp({message:`Invalid relayerUrl protocol: ${n.protocol} (expected http: or https:).`},{});if(n.username!==``||n.password!==``)throw new Zp({message:`Invalid relayerUrl: URL must not contain credentials (user:pass@host).`},{});if(t&&n.protocol===`http:`&&n.hostname!==`localhost`&&n.hostname!==`127.0.0.1`&&n.hostname!==`[::1]`)throw new Zp({message:`Invalid relayerUrl: HTTPS is required when auth credentials are provided.`},{});return n.pathname.endsWith(`/`)||(n.pathname+=`/`),n}function $p(e,t){y(e.pathname.endsWith(`/`));let n=tn(nn(t,`/`),`/`);return tn(new URL(n,e).toString(),`/`)}async function em(e,t){let{options:n,payload:r}=t,i={ciphertextWithInputVerification:Nr(r.zkProof.ciphertextWithZkProof),contractAddress:r.zkProof.contractAddress,contractChainId:An(r.zkProof.chainId),extraData:r.zkProof.getExtraData(),userAddress:r.zkProof.userAddress},a=n?.auth!==void 0,o=await new G({relayerOperation:`INPUT_PROOF`,url:$p(Qp(e.chain.fhevm.relayerUrl,a),`v2/input-proof`),payload:i,options:n}).run();return{handles:o.handles,coprocessorEip712Signatures:o.signatures,extraData:o.extraData}}async function tm(e,t){let{options:n,payload:r}=t,i=r.handleContractPairs[0];if(i===void 0)throw Error(`Empty handle contract pairs`);let a=i.handle.chainId.toString(),o={handleContractPairs:r.handleContractPairs.map(e=>({handle:e.handle.bytes32Hex,contractAddress:e.contractAddress})),startTimestamp:r.kmsDecryptEip712Message.startTimestamp,durationDays:r.kmsDecryptEip712Message.durationDays,contractsChainId:a,contractAddresses:r.kmsDecryptEip712Message.contractAddresses,delegatorAddress:r.kmsDecryptEip712Message.delegatorAddress,delegateAddress:r.kmsDecryptEip712Signer,signature:b(r.kmsDecryptEip712Signature),extraData:r.kmsDecryptEip712Message.extraData,publicKey:b(r.kmsDecryptEip712Message.publicKey)},s=n?.auth!==void 0;return(await new G({relayerOperation:`DELEGATED_USER_DECRYPT`,url:$p(Qp(e.chain.fhevm.relayerUrl,s),`v2/delegated-user-decrypt`),payload:o,options:n}).run()).map(e=>({signature:e.signature,payload:e.payload,extraData:b(e.extraData)}))}async function nm(e,t){let{options:n,payload:r}=t,i={ciphertextHandles:r.orderedHandles.map(e=>e.bytes32Hex),extraData:r.extraData},a=n?.auth!==void 0,o=await new G({relayerOperation:`PUBLIC_DECRYPT`,url:$p(Qp(e.chain.fhevm.relayerUrl,a),`v2/public-decrypt`),payload:i,options:n}).run();return{orderedAbiEncodedClearValues:on(o.decryptedValue),kmsPublicDecryptEip712Signatures:o.signatures.map(on),extraData:o.extraData}}async function rm(e,t){let{options:n}=t,r=Qp(e.relayerUrl,n?.auth!==void 0),i=Mf({method:`GET`,headers:{...jf(n?.headers),"zama-sdk-version":Lt,"zama-sdk-name":Rt}},n?.auth);y(r.pathname.endsWith(`/`));let a=$p(r,`v2/keyurl`),o;try{o=await Cf({url:a,init:i,retries:n?.fetchRetries,retryDelayMs:n?.fetchRetryDelayInMilliseconds})}catch(e){if(e.name===`AbortError`)throw e;im({url:a,message:`Fetch ${a} failed!`,cause:e})}if(!o.ok){let{message:e}=await Xp(o);im({url:a,message:e===void 0?`HTTP error! status: ${o.status} on ${o.url}`:`HTTP error! status: ${o.status} on ${o.url}: ${e}`})}let s;try{s=await o.json()}catch(e){im({url:a,message:`JSON parsing failed.`,cause:e})}am(a,s);let c=s.response;return om(c,`response`),{publicKeySource:{id:c.fheKeyInfo[0].fhePublicKey.dataId,url:c.fheKeyInfo[0].fhePublicKey.urls[0]},crsSource:{id:c.crs[2048].dataId,url:c.crs[2048].urls[0],capacity:2048},metadata:{relayerUrl:e.relayerUrl,chainId:e.chainId}}}function im(e){throw new ep({url:e.url,fetchMethod:`GET`,operation:`KEY_URL`,retryCount:0,elapsed:0,message:e.message,cause:e.cause})}function am(e,t){(typeof t!=`object`||!t)&&im({url:e,message:`Unexpected response JSON.`}),`response`in t&&t.response!==null&&t.response!==void 0||im({url:e,message:`Unexpected response JSON format: missing 'response' property.`})}function om(e,t){if(Xt(e,`fheKeyInfo`,t,{}),e.fheKeyInfo.length!==1)throw Error(`Unexpected 'fheKeyInfo' array length.`);let n=e.fheKeyInfo[0],r=`${t}.fheKeyInfo[0]`;v(n,`fhePublicKey`,r,{});let i=n.fhePublicKey,a=`${r}.fhePublicKey`;if(x(i,`dataId`,a,{}),un(i,`urls`,a,{}),i.urls.length!==1)throw Error(`Unexpected '${a}.urls' array length.`);if(v(e,`crs`,t,{}),v(e.crs,`2048`,`${t}.crs`,{}),x(e.crs[2048],`dataId`,`${t}.crs[2048]`,{}),un(e.crs[2048],`urls`,`${t}.crs[2048]`,{}),e.crs[2048].urls.length!==1)throw Error(`Unexpected '${t}.crs[2048].urls' array length.`)}var sm=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},cm=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},lm,um=class extends Wt{constructor(e){super({...e,name:`FetchError`,message:e.message??`fetch error`}),lm.set(this,void 0),sm(this,lm,e.url,`f`)}get url(){return cm(this,lm,`f`)}};lm=new WeakMap;async function dm(e,t){if(e.crsSource.capacity!==2048)throw new um({url:e.crsSource.url,message:`Invalid pke crs capacity ${e.crsSource.capacity.toString()}. Expecting 2048.`});let[n,r]=await Promise.all([fm({url:e.publicKeySource.url,...t}),fm({url:e.crsSource.url,...t})]);return Object.freeze({publicKeyBytes:Object.freeze({id:e.publicKeySource.id,bytes:n}),crsBytes:Object.freeze({id:e.crsSource.id,capacity:e.crsSource.capacity,bytes:r}),metadata:Object.freeze({...e.metadata})})}async function fm(e){let t=e.url;if(e.init?.method!==void 0&&e.init.method!==`GET`)throw new um({url:t,message:`Invalid fetch method: expected 'GET', got '${e.init.method}'`});let n=await Cf({url:t,init:e.init,retries:e.retries,retryDelayMs:e.retryDelayMs});if(!n.ok)throw new um({url:t,message:`HTTP error! status: ${n.status} on ${n.url}`});return await yf(n)}async function pm(e,t){let{options:n}=t,r=await rm(e,{options:n}),i=n?.signal===void 0?void 0:{signal:n.signal};return await dm(r,{retries:n?.fetchRetries,retryDelayMs:n?.fetchRetryDelayInMilliseconds,init:i})}async function mm(e,t){let{options:n,payload:r}=t,i=r.handleContractPairs[0];if(i===void 0)throw Error(`Empty handle contract pairs`);let a=i.handle.chainId.toString(),o={handleContractPairs:r.handleContractPairs.map(e=>({handle:e.handle.bytes32Hex,contractAddress:e.contractAddress})),requestValidity:{startTimestamp:r.kmsDecryptEip712Message.startTimestamp,durationDays:r.kmsDecryptEip712Message.durationDays},contractsChainId:a,contractAddresses:r.kmsDecryptEip712Message.contractAddresses,userAddress:r.kmsDecryptEip712Signer,signature:b(r.kmsDecryptEip712Signature),extraData:r.kmsDecryptEip712Message.extraData,publicKey:b(r.kmsDecryptEip712Message.publicKey)},s=n?.auth!==void 0;return(await new G({relayerOperation:`USER_DECRYPT`,url:$p(Qp(e.chain.fhevm.relayerUrl,s),`v2/user-decrypt`),payload:o,options:n}).run()).map(e=>({signature:e.signature,payload:e.payload,extraData:b(e.extraData)}))}async function hm(e,t){let{options:n,payload:r}=t;if(r.handleContractPairs[0]===void 0)throw Error(`Empty handle contract pairs`);let i={attestationType:`eip712-unified-user-decrypt-v1`,attestedPayload:{version:`2.0`,type:`user_decryption`,handles:r.handleContractPairs.map(e=>({ctHandle:e.handle.bytes32Hex,contractAddress:e.contractAddress,ownerAddress:e.ownerAddress})),userAddress:r.kmsDecryptEip712Message.userAddress,allowedContracts:r.kmsDecryptEip712Message.allowedContracts,requestValidity:{startTimestamp:r.kmsDecryptEip712Message.startTimestamp,durationSeconds:r.kmsDecryptEip712Message.durationSeconds},publicKey:r.kmsDecryptEip712Message.publicKey,extraData:r.kmsDecryptEip712Message.extraData},signature:r.kmsDecryptEip712Signature},a=n?.auth!==void 0;return(await new G({relayerOperation:`USER_DECRYPT`,url:$p(Qp(e.chain.fhevm.relayerUrl,a),`v3/user-decrypt`),payload:i,options:n}).run()).map(e=>({signature:e.signature,payload:e.payload,extraData:b(e.extraData)}))}async function gm(e,t){return t.version===1?await mm(e,t):await hm(e,t)}var _m=()=>Object.freeze({relayer:Object.freeze({fetchFheEncryptionKeySource:rm,fetchFheEncryptionKeyBytes:pm,fetchCoprocessorSignatures:em,fetchPublicDecrypt:nm,fetchUserDecrypt:gm,fetchDelegatedUserDecrypt:tm})}),vm;function ym(){if(!Be())throw Error(`Call setFhevmRuntimeConfig first.`);let e=gf(),t=_m();return vm??=cf({ethereum:e.ethereum,relayer:t.relayer,config:Re()}),vm}var bm={EIP712Domain:[{name:`name`,type:`string`},{name:`version`,type:`string`},{name:`chainId`,type:`uint256`},{name:`verifyingContract`,type:`address`}],UserDecryptRequestVerification:[{name:`userAddress`,type:`address`},{name:`publicKey`,type:`bytes`},{name:`allowedContracts`,type:`address[]`},{name:`startTimestamp`,type:`uint256`},{name:`durationSeconds`,type:`uint256`},{name:`extraData`,type:`bytes`}]};Object.freeze(bm),Object.freeze(bm.EIP712Domain),Object.freeze(bm.UserDecryptRequestVerification),bm.EIP712Domain.forEach(Object.freeze),bm.UserDecryptRequestVerification.forEach(Object.freeze);function xm(e,t,n){if(v(e,`domain`,t,n),jl(e.domain,`${t}.domain`,n),v(e,`types`,t,n),!gd(e.types,bm))throw Error(`Unexpected KmsUserDecryptEip712V2Types`);x(e,`primaryType`,t,{expectedValue:`UserDecryptRequestVerification`,...n}),v(e,`message`,t,n);let r=e.message;Sm(r,`${t}.message`,n)}function Sm(e,t,n){qi(e,`userAddress`,t,n),Cr(e,`publicKey`,t,n),Xi(e,`allowedContracts`,t,n),x(e,`startTimestamp`,t,n),x(e,`durationSeconds`,t,n),Cr(e,`extraData`,t,n),vc(e.extraData,n);let r=cc(e.extraData);if(r.lt(2))throw Error(`${t}.extraData: a unified (V2) permit requires a v2 or later extraData, got version ${r.version}.`);Rn(e.startTimestamp,{max:w}),Rn(e.durationSeconds,{max:w})}async function Cm(e,t){let n=await kl(e,{domain:Al({chainId:e.chain.id,verifyingContractAddressDecryption:e.chain.fhevm.gateway.contracts.decryption.address}),types:bm,primaryType:`UserDecryptRequestVerification`,signatures:[t.signature],message:t.message});if(n.length!==1)throw new to({type:`kms`});if(n[0]!==t.signer)throw new eo({unknownAddress:n[0],type:`kms`})}var wm=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Tm=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Em,Dm,Om,km,Am=Symbol(`SignedDecryptionPermitV2.token`),jm=10,Mm=class{constructor(e,t){if(Em.set(this,void 0),Dm.set(this,void 0),Om.set(this,void 0),km.set(this,void 0),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:2}),e!==Am)throw Error(`Unauthorized`);wm(this,Em,t.eip712,`f`),wm(this,Dm,t.signature,`f`),wm(this,Om,t.signerAddress,`f`),wm(this,km,t.delegatorAddress,`f`)}get eip712(){return Tm(this,Em,`f`)}get signature(){return Tm(this,Dm,`f`)}get signerAddress(){return Tm(this,Om,`f`)}get encryptedDataOwnerAddress(){return Tm(this,km,`f`)??Tm(this,Om,`f`)}get isDelegated(){return Tm(this,km,`f`)!==void 0}get transportPublicKey(){return Tm(this,Em,`f`).message.publicKey}assertNotExpired(){let{startTimestamp:e,durationSeconds:t}=Tm(this,Em,`f`).message;Im({startTimestamp:e,durationSeconds:t})}};Em=new WeakMap,Dm=new WeakMap,Om=new WeakMap,km=new WeakMap,Object.freeze(Mm),Object.freeze(Mm.prototype);function Nm(e){return e instanceof Mm}async function Pm(e,t){let{transportKeyPair:n,permit:r}=t;Id(n,{});let i=`permit-v2`,a={};v(r,`eip712`,i,a),wr(r,`signature`,i,a),qi(r,`signerAddress`,i,a);let o=r.eip712;x(o,`primaryType`,`${i}.eip712`,a);let s=o.primaryType;if(s!==`UserDecryptRequestVerification`)throw Error(`Expected primaryType 'UserDecryptRequestVerification' for V2 permit, got: ${s}`);xm(o,`${i}.eip712`,a);let c=D(r.signerAddress);if(o.message.publicKey.toLowerCase()!==n.publicKey.toLowerCase())throw Error(`The permit's publicKey does not match the TransportKeyPair's publicKey. Ensure the permit was signed with the same key pair.`);return await Fm(e,{signature:r.signature,eip712:o,signerAddress:c})}async function Fm(e,t){let{signerAddress:n,eip712:r,signature:i}=t;if(BigInt(r.message.durationSeconds)<=0n)throw RangeError(`durationSeconds must be positive, got ${r.message.durationSeconds}`);if(r.message.allowedContracts.length>jm)throw Error(`allowedContracts max length of ${jm} exceeded`);return await Cm(e,{signer:n,message:r.message,signature:i}),new Mm(Am,t)}function Im({startTimestamp:e,durationSeconds:t}){let n=BigInt(t);if(n===0n)throw Error(`durationSeconds is zero`);let r=BigInt(e),i=BigInt(Math.floor(Date.now()/1e3));if(r>i)throw Error(`startTimestamp is set in the future`);if(r+n<i)throw Error(`request has expired`)}function Lm(e){let t=e.domain.chainId,n={...e.domain,chainId:typeof t==`bigint`?t.toString():t},r={...e,domain:n};return Object.freeze(r),Object.freeze(n),r}function Rm(e){Bm(e,{});let t=e.version;if(t!==1&&t!==2)throw Error(`Unsupported permit version: ${t}. Supported versions are 1 and 2.`);return e.version===1?{version:1,eip712:Lm(e.eip712),signature:e.signature,signerAddress:e.signerAddress}:{version:2,eip712:Lm(e.eip712),signature:e.signature,signerAddress:e.signerAddress}}function zm(e){return Xd(e)||Nm(e)}function Bm(e,t){if(!zm(e))throw new C({subject:t.subject,type:typeof e,expectedType:`SignedDecryptionPermit`},t)}async function Vm(e,t){return await Zd(e,t)}function Hm(e){if(typeof e!=`object`||!e)return e;let t=e.eip712;if(typeof t!=`object`||!t)return e;let n=t.domain;if(typeof n!=`object`||!n)return e;let r=n.chainId;if(typeof r!=`string`&&typeof r!=`number`)return e;let i;try{i=BigInt(r)}catch{return e}return{...e,eip712:{...t,domain:{...n,chainId:i}}}}function Um(e){let t=e?.eip712?.message?.extraData;if(typeof t==`string`)try{return cc(t).version}catch{return}}async function Wm(e,t){let{transportKeyPair:n,permit:r,fhevmContext:i}=t,a=Hm(r),o=Zn(a,`version`)?a.version:1;if(!bn(o)||o>2||o===0)throw Error(`Unsupported permit version: ${o}. Supported versions are 1 and 2.`);let s=o;{if(s>1)throw Error(`Refusing to parse a V2-format decryption permit (version ${s}): this SDK is capped at protocol API v0.13 and only supports V1 permits. V2 permits require an SDK on protocol API v0.14.0 or later.`);let e=Um(a);if(e!==void 0&&e>=2)throw Error(`Refusing to parse a permit carrying extraData v2: this SDK is capped at protocol API v0.13 and only accepts extraData v0/v1 (a v13 relayer rejects extraData v2). Use an SDK on protocol API v0.14.0 or later.`)}return s===1?await $d(e,{transportKeyPair:n,permit:a,fhevmContext:i}):await Pm(e,{transportKeyPair:n,permit:a,fhevmContext:i})}async function Gm(e,t){let n=await L(e);return Vm(e,{...t,fhevmContext:n})}async function Km(e,t){return Rd(e,{value:t,fhevmContext:await L(e)})}var qm=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Jm=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Ym,Xm,Zm,Qm,$m,eh=Symbol(`FheEncryptionKeyWasm.token`),th=Symbol(`FheEncryptionKeyWasm.verify`),nh=class e{constructor(e,t,n){if(Ym.set(this,void 0),Xm.set(this,void 0),Zm.set(this,void 0),Qm.set(this,void 0),$m.set(this,void 0),e!==eh)throw Error(`Unauthorized`);qm(this,Ym,t,`f`),qm(this,Zm,n.publicKey,`f`),qm(this,Xm,n.crs,`f`),qm(this,Qm,Object.freeze({...n.metadata}),`f`),qm(this,$m,n.tfheVersion,`f`),Object.freeze(this)}get publicKey(){return Jm(this,Zm,`f`)}get crs(){return Jm(this,Xm,`f`)}get tfheVersion(){return Jm(this,$m,`f`)}get metadata(){return Jm(this,Qm,`f`)}static[(Ym=new WeakMap,Xm=new WeakMap,Zm=new WeakMap,Qm=new WeakMap,$m=new WeakMap,th)](t,n,r,i){if(t!==eh)throw Error(`Unauthorized`);if(!(n instanceof e))throw Error(`Invalid FheEncryptionKey instance`);if(i!==Jm(n,$m,`f`))throw Error(`TfheVersion mismatch`);To({actualOwner:Jm(n,Ym,`f`),expectedOwner:r,name:`FheEncryptionKey`})}};Object.freeze(nh.prototype),Object.freeze(nh);function rh(e,t){return new nh(eh,e,t)}function ih(e,t,n){nh[th](eh,e,t,n)}async function ah(e,t){let n=t.tfheVersion;ih(t,e.runtime,n);let r=await e.runtime.encrypt.serializeFheEncryptionPublicKey({publicKey:t.publicKey,tfheVersion:n}),i=await e.runtime.encrypt.serializeFheEncryptionCrs({crs:t.crs,tfheVersion:n}),a=Object.freeze({...t.metadata});return Object.freeze({publicKeyBytes:r,crsBytes:i,metadata:a})}async function oh(e,t){let n=e.chain.fhevm.relayerUrl,r=e.runtime,i={...t,options:{auth:e.runtime.config.auth,...t.options}};Qo.ensureBytes({owner:r,relayerUrl:n,fetcher:()=>r.relayer.fetchFheEncryptionKeyBytes({relayerUrl:n,chainId:e.chain.id},i),metadata:{chainId:e.chain.id,relayerUrl:n}});let a=await Qo.resolveBytes({relayerUrl:n,serializeFn:sh(e)});if(a===void 0)throw Error(`Failed to fetch global FHE PKE params bytes`);return a}function sh(e){let t;try{let n=Co(e.runtime,`encrypt`);t=e=>ah({runtime:n},e)}catch{}return t}async function ch(e,t){let n=await L(e);return oh(e,{...t,fhevmContext:n})}async function lh(e,t){let n=await L(e);return zd({transportKeyPair:t.transportKeyPair,fhevmContext:n})}async function uh(e,t){return await L(e),Rm(t.signedPermit)}async function dh(e,t){let{serializedPermit:n,transportKeyPair:r}=t;return Wm(e,{transportKeyPair:r,permit:n,fhevmContext:await L(e)})}var fh=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$/;function ph(e){let t=fh.exec(e);if(t===null)throw Error(`Invalid SemVer version: "${e}".`);let n=Number(t[1]),r=Number(t[2]),i=Number(t[3]);return T(n,{}),T(r,{}),T(i,{}),Object.freeze({version:e,major:n,minor:r,patch:i,prerelease:t[4]?.split(`.`),build:t[5]?.split(`.`)})}function mh(e,t){let n=K(e,t.version);switch(t.comparator){case`lt`:return n<0;case`le`:return n<=0;case`gt`:return n>0;case`ge`:return n>=0;case`eq`:return n===0;default:{let e=t.comparator;throw Error(`Unsupported SemVer comparator "${e}".`)}}}function hh(e,t){return!(t.lowerBound!==void 0&&!mh(e,t.lowerBound)||t.upperBound!==void 0&&!mh(e,t.upperBound))}function gh(e,t,n){if(t===`eq`)return mh(e,n);let r=K(e,n.version);switch(t){case`lt`:return n.comparator===`lt`||n.comparator===`le`?r<=0:!1;case`le`:return n.comparator===`lt`?r<0:n.comparator===`le`&&r<=0;case`gt`:return n.comparator===`gt`||n.comparator===`ge`?r>=0:!1;case`ge`:return n.comparator===`gt`?r>0:n.comparator===`ge`&&r>=0;default:throw Error(`Unsupported SemVer comparator "${t}".`)}}function K(e,t){let n=ph(e),r=ph(t),i=_h([n.major,n.minor,n.patch],[r.major,r.minor,r.patch]);return i===0?vh(n.prerelease,r.prerelease):i}function _h(e,t){for(let n=0;n<e.length;++n){let r=e[n],i=t[n];if(r===void 0)return i===void 0?0:-1;if(i===void 0)return 1;if(r<i)return-1;if(r>i)return 1}return e.length===t.length?0:-1}function vh(e,t){if(e===void 0&&t===void 0)return 0;if(e===void 0)return 1;if(t===void 0)return-1;let n=Math.max(e.length,t.length);for(let r=0;r<n;++r){let n=e[r],i=t[r];if(n===void 0)return-1;if(i===void 0)return 1;let a=yh(n,i);if(a!==0)return a}return 0}function yh(e,t){let n=bh(e),r=bh(t);return n&&r?_h([Number(e)],[Number(t)]):n?-1:r?1:e<t?-1:+(e>t)}function bh(e){return/^(0|[1-9]\d*)$/.test(e)}var xh={compatibilityRules:[{protocol:{version:`0.13.0`,comparator:`lt`},pubKeyCrs:{version:`1.6.0`,comparator:`lt`},tfhe:{canonical:`1.5.3`,compatible:[`1.5.3`]},kms:{canonical:`0.13.10`,compatible:[`0.13.10`]}},{protocol:{version:`0.13.0`,comparator:`ge`},pubKeyCrs:{version:`1.6.0`,comparator:`lt`},tfhe:{canonical:`1.6.2`,compatible:[`1.5.3`,`1.6.2`]},kms:{canonical:`0.13.20-0`,compatible:[`0.13.10`,`0.13.20-0`]}},{protocol:{version:`0.13.0`,comparator:`ge`},pubKeyCrs:{version:`1.6.0`,comparator:`ge`},tfhe:{canonical:`1.6.2`,compatible:[`1.6.2`]},kms:{canonical:`0.13.20-0`,compatible:[`0.13.10`,`0.13.20-0`]}}]}.compatibilityRules;function Sh(e,t){let n=wh(e,`tfhe`),r=Th(t,`tfhe`,n);if(n.purpose===`explicit`)return kh(`tfhe`,e.runtime.config.logger,t,r,n),n.explicitVersion;if(r===void 0)throw Error(`Cannot auto-resolve tfhe WASM version without a resolved compatibility rule.`);return r.tfhe.canonical}function Ch(e,t){let n=wh(e,`kms`),r=Th(t,`kms`,n);if(n.purpose===`explicit`)return kh(`kms`,e.runtime.config.logger,t,r,n),n.explicitVersion;if(r===void 0)throw Error(`Cannot auto-resolve kms WASM version without a resolved compatibility rule.`);return r.kms.canonical}function wh(e,t){let n=e.options.moduleVersions;if(n!==`auto`){if(n?.[t]!==void 0)return{purpose:`explicit`,explicitVersion:n[t],checkCompatibility:n.checkCompatibility};let r=e.runtime.config.moduleVersions;if(r!==`auto`&&r?.[t]!==void 0)return{purpose:`explicit`,explicitVersion:r[t],checkCompatibility:r.checkCompatibility}}return{purpose:`auto`}}function Th(e,t,n){if(n.purpose===`explicit`&&Oh(n.checkCompatibility)===`off`)return;if(e===void 0){if(n.purpose===`auto`)throw Error(`Cannot auto-resolve ${t} WASM version without a resolved protocol context.`);return}let r=Eh(e),i=r[0];if(r.length===1&&i!==void 0)return i;let a=Nh(e,t,n.purpose);if(n.purpose===`auto`)throw Error(a)}function Eh(e){return xh.filter(t=>Dh(e.protocolVersion,t.protocol)&&Dh(e.pubKeyCrsVersion,t.pubKeyCrs))}function Dh(e,t){return gh(e.version,e.comparator,t)}function Oh(e){return e??`throw`}function kh(e,t,n,r,i){if(Oh(i.checkCompatibility)===`off`||n===void 0)return;if(r===void 0){Ah(i.checkCompatibility,t,Nh(n,e,i.purpose));return}let a=jh(e,r);a.includes(i.explicitVersion)||Ah(i.checkCompatibility,t,Mh(e,i.explicitVersion,a,n))}function Ah(e,t,n){let r=Oh(e);switch(r){case`throw`:throw Error(n);case`warn`:t?.warn?.(n);return;case`off`:return;default:throw Error(`Unsupported module version compatibility check "${r}".`)}}function jh(e,t){switch(e){case`tfhe`:return t.tfhe.compatible;case`kms`:return t.kms.compatible;default:throw Error(`Unsupported WASM module "${e}".`)}}function Mh(e,t,n,r){return`Explicit ${e} WASM version "${t}" is not compatible ${r===void 0?`without a resolved protocol context`:`with protocol context protocol=${Ph(r.protocolVersion)}, pubKeyCrs=${Ph(r.pubKeyCrsVersion)}`}. Compatible versions: ${n.join(`, `)}.`}function Nh(e,t,n){return`Cannot ${n===`auto`?`auto-resolve ${t} WASM version`:`check ${t} WASM version compatibility`} from protocol context protocol=${Ph(e.protocolVersion)}, pubKeyCrs=${Ph(e.pubKeyCrsVersion)}. The resolved context does not prove exactly one WASM compatibility rule.`}function Ph(e){return`${e.comparator}:${e.version}`}function Fh(e){return hd(e)}var Ih=Fh({id:1,fhevm:{contracts:{acl:{address:`0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6`},inputVerifier:{address:`0xCe0FC2e05CFff1B719EFF7169f7D80Af770c8EA2`},kmsVerifier:{address:`0x77627828a55156b04Ac0DC0eb30467f1a552BB03`},protocolConfig:void 0},relayerUrl:`https://relayer.mainnet.zama.org`,gateway:{id:261131,contracts:{decryption:{address:`0x0f6024a97684f7d90ddb0fAAD79cB15F2C888D24`},inputVerification:{address:`0xcB1bB072f38bdAF0F328CdEf1Fc6eDa1DF029287`}}}}}),Lh=Fh({id:11155111,fhevm:{contracts:{acl:{address:`0xf0Ffdc93b7E186bC2f8CB3dAA75D86d1930A433D`},inputVerifier:{address:`0xBBC1fFCdc7C316aAAd72E807D9b0272BE8F84DA0`},kmsVerifier:{address:`0xbE0E383937d564D7FF0BC3b46c51f0bF8d5C311A`},protocolConfig:{address:`0x51f9AFBc89Ea792e1a21a12AB802ab58D4dbee83`}},relayerUrl:`https://relayer.testnet.zama.org`,gateway:{id:10901,contracts:{decryption:{address:`0x5D8BD78e2ea6bbE41f26dFe9fdaEAa349e077478`},inputVerification:{address:`0x483b9dE06E4E4C7D35CCf5837A1668487406D955`}}}}}),Rh={acl:{sortedProtocolByVersion:[{acl:{lowerBound:{version:`0.2.0`,comparator:`ge`},upperBound:{version:`0.3.0`,comparator:`lt`}},protocolVersion:`0.11.0`},{acl:{lowerBound:{version:`0.3.0`,comparator:`ge`},upperBound:{version:`0.4.0`,comparator:`lt`}},protocolVersion:`0.12.0`},{acl:{lowerBound:{version:`0.4.0`,comparator:`ge`},upperBound:{version:`0.5.0`,comparator:`lt`}},protocolVersion:`0.13.0`},{acl:{lowerBound:{version:`0.5.0`,comparator:`ge`},upperBound:{version:`0.6.0`,comparator:`lt`}},protocolVersion:`0.14.0`}]},pubKeyCrs:{knownByRelayerUrl:[{relayerUrl:Ih.fhevm.relayerUrl,pubKeyCrsVersion:`1.4.0-alpha.3`},{relayerUrl:Lh.fhevm.relayerUrl,pubKeyCrsVersion:`1.4.0-alpha.3`},{relayerUrl:`https://relayer.dev.zama.cloud`,pubKeyCrsVersion:`1.4.0-alpha.3`}],generatedByProtocolVersion:[{protocol:{lowerBound:{version:`0.11.0`,comparator:`ge`},upperBound:{version:`0.12.0`,comparator:`lt`}},pubKeyCrsVersion:`1.5.1`},{protocol:{lowerBound:{version:`0.12.0`,comparator:`ge`},upperBound:{version:`0.13.0`,comparator:`lt`}},pubKeyCrsVersion:`1.5.4`},{protocol:{lowerBound:{version:`0.13.0`,comparator:`ge`},upperBound:{version:`0.14.0`,comparator:`le`}},pubKeyCrsVersion:`1.6.1`}]}},zh=Rh.acl.sortedProtocolByVersion;Kh(zh);var Bh=Rh.pubKeyCrs.generatedByProtocolVersion;qh(Bh);function Vh(e,t){let n=Hh(t);return Object.freeze({protocolVersion:n,pubKeyCrsVersion:Xh(e,n)})}function Hh(e){let t=Gh(e),n=zh.find(e=>hh(t,e.acl));if(n!==void 0)return Object.freeze({version:n.protocolVersion,comparator:`eq`});let r=Uh();if(Jh(t,r.acl.lowerBound))return Object.freeze({version:r.protocolVersion,comparator:`lt`});let i=Wh();if(Yh(t,i.acl.upperBound))return Object.freeze({version:i.protocolVersion,comparator:`gt`});throw Error(`Cannot resolve protocol version from ACL version ${t}: the ACL compatibility table has a gap.`)}function Uh(){return tg(zh,`No known ACL protocol versions configured.`)}function Wh(){return ng(zh,`No known ACL protocol versions configured.`)}function Gh(e){return`${e.major}.${e.minor}.${e.patch}`}function Kh(e){if(e.length===0)throw Error(`No known ACL protocol versions configured.`);let t,n;for(let[r,i]of e.entries()){let e=i.acl.lowerBound,a=i.acl.upperBound;if(e===void 0||a===void 0)throw Error(`ACL protocol rule at index ${r} must define both lower and upper bounds.`);if(e.comparator!==`ge`||a.comparator!==`lt`)throw Error(`ACL protocol rule at index ${r} must use a [lower, upper) interval.`);if(K(e.version,a.version)>=0)throw Error(`ACL protocol rule at index ${r} has an invalid interval.`);if(t!==void 0&&K(t.version,e.version)!==0)throw Error(`ACL protocol rules must be contiguous at index ${r}.`);if(n!==void 0&&K(n,i.protocolVersion)>=0)throw Error(`ACL protocol versions must be strictly ascending at index ${r}.`);t=a,n=i.protocolVersion}}function qh(e){if(e.length===0)throw Error(`No known generated PubKey/CRS versions configured.`);let t,n;for(let[r,i]of e.entries()){let a=i.protocol.lowerBound,o=i.protocol.upperBound,s=r===e.length-1;if(a===void 0||o===void 0)throw Error(`Generated PubKey/CRS protocol rule at index ${r} must define both lower and upper bounds.`);if(a.comparator!==`ge`)throw Error(`Generated PubKey/CRS protocol rule at index ${r} must use a closed lower bound.`);if(!s&&o.comparator!==`lt`)throw Error(`Generated PubKey/CRS protocol rule at index ${r} must use an open upper bound, except the final rule may use a closed upper bound.`);if(K(a.version,o.version)>=0)throw Error(`Generated PubKey/CRS protocol rule at index ${r} has an invalid interval.`);if(t!==void 0&&K(t.version,a.version)!==0)throw Error(`Generated PubKey/CRS protocol rules must be contiguous at index ${r}.`);if(n!==void 0&&K(n,i.pubKeyCrsVersion)>=0)throw Error(`Generated PubKey/CRS versions must be strictly ascending at index ${r}.`);t=o,n=i.pubKeyCrsVersion}}function Jh(e,t){let n=K(e,t.version);return t.comparator===`ge`?n<0:n<=0}function Yh(e,t){let n=K(e,t.version);return t.comparator===`lt`?n>=0:n>0}function Xh(e,t){let n=ig(e.fhevm.relayerUrl),r=Rh.pubKeyCrs.knownByRelayerUrl.find(e=>ig(e.relayerUrl)===n);if(r!==void 0)return rg(r.pubKeyCrsVersion);let i=Bh.filter(e=>Zh(t,e.protocol)),a=i[0];if(i.length===1&&a!==void 0)return rg(a.pubKeyCrsVersion);if(i.length>1)throw Error(`Ambiguous generated PubKey/CRS version for protocol ${t.comparator}:${t.version}.`);return Qh(t)}function Zh(e,t){return!(t.lowerBound!==void 0&&!gh(e.version,e.comparator,t.lowerBound)||t.upperBound!==void 0&&!gh(e.version,e.comparator,t.upperBound))}function Qh(e){let t=Uh().protocolVersion,n=Wh().protocolVersion;if(e.comparator===`lt`&&K(e.version,t)<=0)return Object.freeze({version:$h(),comparator:`lt`});if(e.comparator===`gt`&&K(e.version,n)>=0)return Object.freeze({version:eg(),comparator:`gt`});if(e.comparator===`eq`&&K(e.version,t)<0)return Object.freeze({version:$h(),comparator:`lt`});if(e.comparator===`eq`&&K(e.version,n)>0)return Object.freeze({version:eg(),comparator:`gt`});throw Error(`Cannot resolve generated PubKey/CRS version from ambiguous protocol ${e.comparator}:${e.version}.`)}function $h(){return tg(Bh,`No known PubKey/CRS versions configured.`).pubKeyCrsVersion}function eg(){return ng(Bh,`No known PubKey/CRS versions configured.`).pubKeyCrsVersion}function tg(e,t){let n=e[0];if(n===void 0)throw Error(t);return n}function ng(e,t){let n=e[e.length-1];if(n===void 0)throw Error(t);return n}function rg(e){return Object.freeze({version:e,comparator:`eq`})}function ig(e){return e.replace(/\/+$/,``)}async function ag(e){let t=D(Wi(e.chain.fhevm.contracts.acl.address)),n=D(Wi(e.chain.fhevm.contracts.inputVerifier.address)),r=D(Wi(e.chain.fhevm.contracts.kmsVerifier.address)),[i,a,o]=await Wc([()=>Js(e,{address:t}),()=>Js(e,{address:n}),()=>Js(e,{address:r})],e.options.batchRpcCalls);$s(i,`ACL`),$s(a,`InputVerifier`),$s(o,`KMSVerifier`);let s=Vh(e.chain,i),c=Sh(e,s),l=Ch(e,s);return ss({hostContractVersions:{ACL:i,InputVerifier:a,KMSVerifier:o},protocolVersion:s.protocolVersion,pubKeyCrsVersion:s.pubKeyCrsVersion,tfheVersion:c,tkmsVersion:l})}async function og(e){let t=zs(e);if(t!==void 0)return t;let n=Vs(e);return n===void 0&&(n=ag(e).then(t=>(Rs(e,t),t)).finally(()=>{Bs(e,void 0)}),Bs(e,n)),n}function sg(e){return{decryptPublicValue:t=>ru(e,t),decryptPublicValues:t=>iu(e,t),decryptPublicValuesWithSignatures:t=>au(e,t),signDecryptionPermit:t=>Gm(e,t),signLegacyDecryptionPermit:t=>af(e,t),parseTransportKeyPair:t=>Km(e,t),serializeTransportKeyPair:t=>lh(e,t),serializeSignedDecryptionPermit:t=>uh(e,t),parseSignedDecryptionPermit:t=>dh(e,t),fetchFheEncryptionKeyBytes:t=>ch(e,t)}}async function cg(e){await og(e)}function lg(e){return Ms(e),{actions:sg(e),runtime:e.runtime,init:cg}}function ug(e){return Fs(of,{chain:e.chain,runtime:ym(),client:e.publicClient,options:e.options}).extend(lg)}var dg=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},fg,pg=class{constructor(){fg.set(this,[])}track(e){return dg(this,fg,`f`).push(e),e}free(){for(;dg(this,fg,`f`).length>0;){let e=dg(this,fg,`f`).pop();if(e!==void 0)try{e.free()}catch{}}}};fg=new WeakMap;function mg(){return e!==void 0&&typeof e.versions?.node==`string`}function hg(){return typeof Bun>`u`&&!mg()&&typeof location<`u`&&typeof location.href==`string`&&typeof addEventListener==`function`&&typeof removeEventListener==`function`}async function gg(e){try{let t=`node:${e}`;return await n(()=>import(t),[])}catch{return}}var _g;function vg(){return _g??=(async()=>{let e=await gg(`buffer`);return typeof e?.Buffer?.from==`function`?e.Buffer:void 0})(),_g}var yg;function bg(){return yg??=(async()=>{let e=await gg(`fs/promises`);return typeof e?.readFile==`function`?e:void 0})(),yg}var xg;function Sg(){return xg??=(async()=>{let e=await gg(`url`);return typeof e?.fileURLToPath==`function`?e:void 0})(),xg}function Cg(){return typeof Worker==`function`&&typeof Blob==`function`&&typeof URL<`u`&&typeof URL.createObjectURL==`function`}var wg;function Tg(){if(wg===void 0){if(typeof DecompressionStream!=`function`||typeof Blob!=`function`)wg=!1;else try{new DecompressionStream(`gzip`),wg=!0}catch{wg=!1}}return wg}var Eg;function Dg(){return Eg??=(async()=>{let e=await gg(`worker_threads`);return typeof e?.Worker==`function`?e.Worker:void 0})(),Eg}function Og(e){return{counts:new Uint16Array(16),symbols:new Uint16Array(e)}}var kg=new Uint8Array(30),Ag=new Uint16Array(30),jg=new Uint8Array(30),Mg=new Uint16Array(30),Ng=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Pg=Og(288),Fg=Og(30);function Ig(e,t,n,r){for(let t=0;t<n;t++)e[t]=0;for(let t=0;t<30-n;t++)e[t+n]=Math.floor(t/n);let i=r;for(let n=0;n<30;n++)t[n]=i,i+=1<<e[n]}function Lg(e,t){for(let t=0;t<7;t++)e.counts[t]=0;e.counts[7]=24,e.counts[8]=152,e.counts[9]=112;for(let t=0;t<24;t++)e.symbols[t]=256+t;for(let t=0;t<144;t++)e.symbols[24+t]=t;for(let t=0;t<8;t++)e.symbols[168+t]=280+t;for(let t=0;t<112;t++)e.symbols[176+t]=144+t;for(let e=0;e<5;e++)t.counts[e]=0;t.counts[5]=32;for(let e=0;e<32;e++)t.symbols[e]=e}Ig(kg,Ag,4,3),Ig(jg,Mg,2,1),kg[28]=0,Ag[28]=258,Lg(Pg,Fg);function q(e,t,n){if(t===0)return n;for(;e.bitcount<24;)e.tag|=e.source[e.pos++]<<e.bitcount,e.bitcount+=8;let r=e.tag&65535>>>16-t;return e.tag>>>=t,e.bitcount-=t,r+n}function Rg(e,t){for(;e.bitcount<24;)e.tag|=e.source[e.pos++]<<e.bitcount,e.bitcount+=8;let n=0,r=0,i=0,a=e.tag;do r=2*r+(a&1),a>>>=1,i++,n+=t.counts[i],r-=t.counts[i];while(r>=0);return e.tag=a,e.bitcount-=i,t.symbols[n+r]}function zg(e,t,n,r){for(let t=0;t<16;t++)e.counts[t]=0;for(let i=0;i<r;i++){let r=t[n+i];e.counts[r]=e.counts[r]+1}e.counts[0]=0;let i=new Uint16Array(16),a=0;for(let t=0;t<16;t++)i[t]=a,a+=e.counts[t];for(let a=0;a<r;a++){let r=t[n+a];if(r!==0){let t=i[r];e.symbols[t]=a,i[r]=t+1}}}function Bg(e,t,n){let r=Og(19),i=new Uint8Array(320),a=q(e,5,257),o=q(e,5,1),s=q(e,4,4);for(let t=0;t<s;t++)i[Ng[t]]=q(e,3,0);zg(r,i,0,19);let c=0;for(;c<a+o;){let t=Rg(e,r);if(t===16){let t=i[c-1];for(let n=q(e,2,3);n>0;n--)i[c++]=t}else if(t===17)for(let t=q(e,3,3);t>0;t--)i[c++]=0;else if(t===18)for(let t=q(e,7,11);t>0;t--)i[c++]=0;else i[c++]=t}zg(t,i,0,a),zg(n,i,a,o)}function Vg(e,t){let n=e.destLen+t;if(n<=e.dest.length)return;let r=e.dest.length*2;for(;r<n;)r*=2;let i=new Uint8Array(r);i.set(e.dest),e.dest=i}function Hg(e,t,n){for(;;){let r=Rg(e,t);if(r===256)return;if(r<256)Vg(e,1),e.dest[e.destLen++]=r;else{r-=257;let t=q(e,kg[r],Ag[r]),i=Rg(e,n),a=q(e,jg[i],Mg[i]),o=e.destLen-a;Vg(e,t);for(let n=0;n<t;n++)e.dest[e.destLen++]=e.dest[o+n]}}}function Ug(e){for(;e.bitcount>8;)e.pos--,e.bitcount-=8;let t=e.source[e.pos+1]<<8|e.source[e.pos];if(t!==(~(e.source[e.pos+3]<<8|e.source[e.pos+2])&65535)>>>0)throw Error(`inflate: invalid stored block length`);e.pos+=4,Vg(e,t);for(let n=t;n>0;n--)e.dest[e.destLen++]=e.source[e.pos++];e.tag=0,e.bitcount=0}function Wg(e,t){let n=t!==void 0&&t>0?t:Math.max(e.length*4,1024),r={source:e,pos:0,tag:0,bitcount:0,dest:new Uint8Array(n),destLen:0};for(;;){let e=q(r,1,0),t=q(r,2,0);if(t===0)Ug(r);else if(t===1)Hg(r,Pg,Fg);else if(t===2){let e=Og(288),t=Og(32);Bg(r,e,t),Hg(r,e,t)}else throw Error(`inflate: invalid block type`);if(e!==0)break}return r.dest.subarray(0,r.destLen)}function Gg(e){if(e.length<18||e[0]!==31||e[1]!==139)throw Error(`gunzip: not a gzip stream`);if(e[2]!==8)throw Error(`gunzip: unsupported compression method ${String(e[2])}`);let t=e[3],n=10;if(t&4&&(n+=2+((e[n]|e[n+1]<<8)>>>0)),t&8){for(;e[n]!==0;)n++;n++}if(t&16){for(;e[n]!==0;)n++;n++}t&2&&(n+=2);let r=e.length,i=(e[r-4]|e[r-3]<<8|e[r-2]<<16|e[r-1]<<24)>>>0;return Wg(e.subarray(n),i)}function Kg(e,t){return t===`gzip`?Gg(e):Wg(t===`deflate-raw`?e:e.subarray(2))}async function qg(e){if(!hg()){let t=await vg();if(t)return t.from(e,`base64`)}if(await Tf())return(await fetch(`data:application/octet-stream;base64,${e}`)).arrayBuffer();let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}async function Jg(e){let t=await fetch(e);if(!t.ok)throw new um({message:`Failed to fetch WASM: ${t.status} ${t.statusText}`,url:e.toString()});return t}async function Yg(e){if(!hg()&&e.protocol===`file:`){let[t,n]=await Promise.all([bg(),Sg()]);if(t&&n)return t.readFile(n.fileURLToPath(e))}return(await Jg(e)).arrayBuffer()}async function Xg(e,t){let n=await Yg(e);return await Lr(n,t,{subject:`WASM ${e.toString()}`}),WebAssembly.compile(n)}async function Zg(e,t){let n=await qg(e);if(t===void 0)return WebAssembly.compile(n);if(Tg()){let e=new Blob([n]).stream().pipeThrough(new DecompressionStream(t));return WebAssembly.compileStreaming(new Response(e,{headers:{"Content-Type":`application/wasm`}}))}let r=n instanceof Uint8Array?n:new Uint8Array(n);return WebAssembly.compile(Kg(r,t))}Object.freeze([`0.13.10`,`0.13.20-0`]);var Qg={"0.13.10":()=>n(()=>import(`./kms_lib-mPebVu09.js`),__vite__mapDeps([0,1,2])),"0.13.20-0":()=>n(()=>import(`./kms_lib-Bh_Z1nH6.js`),__vite__mapDeps([3,1,2]))},$g={"0.13.10":()=>n(()=>import(`./kms_lib_bg.wasm.base64-CoCbCutU.js`),[]),"0.13.20-0":()=>n(()=>import(`./kms_lib_bg.wasm.base64-BcQMSC6I.js`),[])},e_=Object.freeze({"0.13.10":Object.freeze({wasm:Object.freeze({filename:`kms_lib_bg.v0.13.10.wasm`,localRelativePath:`./v0.13.10/kms_lib_bg.wasm`,sha256:`31cfb31392445ae2630f560b961edd21c72e40d58cb20c455f9fc4d4750bb9a0`})}),"0.13.20-0":Object.freeze({wasm:Object.freeze({filename:`kms_lib_bg.v0.13.20-0.wasm`,localRelativePath:`./v0.13.20-0/kms_lib_bg.wasm`,sha256:`be54c8f11daf048b897b41cf6e6735895490cdca77f2a01c01be0d6fbf369c81`})})});function t_(e){let t=e_[e];if(!t)throw Error(`unsupported tkms version: ${e}`);return t}async function n_(e){let t=Qg[e];if(!t)throw Error(`unsupported tkms version: ${e}`);return t()}async function r_(e){let t=$g[e];if(!t)throw Error(`unsupported tkms version: ${e}`);return t()}async function i_(e){if(e?.protocol!==`file:`||!mg())return!1;let[t,n]=await Promise.all([bg(),Sg()]);if(!t||!n)return!1;try{return await t.access(n.fileURLToPath(e)),!0}catch{return!1}}var a_=async e=>{let{wasmBaseUrl:t}=await n(async()=>{let{wasmBaseUrl:e}=await import(`./wasmBaseUrl-C7910Wg_.js`);return{wasmBaseUrl:e}},__vite__mapDeps([4,2,5,6]));return new URL(`./tkms/${e}`,t)};async function o_(e,t){let n,r=`none`;if(t!==void 0){let i=t(e.filename);if(i==null)n=void 0;else if(i instanceof URL)n=i;else throw TypeError(`Invalid locateFile result for TKMS asset '${e.filename}': expected URL, null, or undefined.`);r=`user`}else hg()||(n=await a_(e.localRelativePath),r=`node`);return Object.freeze({...e,url:n,resolution:r})}async function s_(e,t){let n=await o_(e.wasm,t);return n.resolution===`node`&&(await i_(n.url)||(n=Object.freeze({...n,url:void 0}))),{wasm:n}}function c_(e,t){let{wasm:n}=e;n.resolution===`user`?t?.debug?.(`resolve tkms wasm filename using 'locateFile' function: ${n.filename} -> url: ${n.url}`):n.resolution===`node`?n.url===void 0?t?.debug?.(`tkms auto-derived assets not found on disk (bundler relocation?); using embedded base64 (wasm: ${n.localRelativePath})`):t?.debug?.(`resolve tkms wasm local path: ${n.localRelativePath} -> url: ${n.url}`):t?.debug?.(`resolve tkms assets using embedded base64 (browser, no 'locateFile')`)}var l_=new Map,u_=new Map;async function d_(e,t){let n=l_.get(t);if(n!==void 0)return n;let r=u_.get(t);return r===void 0&&(r=f_(e.config,t).then(e=>(l_.set(t,e),e)).catch(e=>{throw u_.delete(t),e}),u_.set(t,r)),r}async function f_(e,t){let{locateFile:n}=e,r=await s_(t_(t),n);return c_(r,e.logger),{version:t,assets:r,logger:e.logger}}var p_=new Map,m_=new Map,h_=new Map;async function g_(e,t){So(e,{});let n=p_.get(t.tkmsVersion);if(n!==void 0&&e.uid!==n)throw Error(`Decrypt WASM module is already owned by runtime '${n}' and cannot be shared with runtime '${e.uid}'`);p_.set(t.tkmsVersion,e.uid);let r=m_.get(t.tkmsVersion);return r===void 0&&(r=(async()=>await v_(await d_(e,t.tkmsVersion)))(),m_.set(t.tkmsVersion,r)),r}async function __(e){let t;if(e.assets.wasm.url!==void 0)e.logger?.debug?.(`compile tkms verified wasm at: ${e.assets.wasm.url}`),t=await Xg(e.assets.wasm.url,e.assets.wasm.sha256);else{let{tkmsWasmBase64:n,tkmsWasmBase64CompressionFormat:r}=await r_(e.version);e.logger?.debug?.(`compile tkms wasm from embedded base64 (compression:${r??`none`})`),t=await Zg(n,r)}return t}async function v_(e){let t=await n_(e.version),n={module_or_path:await __(e)};await t.initAsync(n);let r=t.getWasmInfo(),i={byteLength:0,pages:0};return r.memory!==void 0&&(i.byteLength=r.memory.byteLength,i.pages=r.memory.pages),h_.set(e.version,Object.freeze({wasmUrl:e.assets.wasm.url?new URL(e.assets.wasm.url):void 0,version:r.version,name:r.name,memory:i})),t}async function y_(e){let t=await n_(e.tkmsVersion),n=h_.get(e.tkmsVersion);if(n===void 0)throw Error(`getTkmsModuleInfo: no module info recorded for version "${e.tkmsVersion}"`);let r={byteLength:n.memory.byteLength,pages:n.memory.pages},i=t.getWasmInfo();return i.memory!==void 0&&(r.byteLength=i.memory.byteLength,r.pages=i.memory.pages),{...n,memory:r}}var b_=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},x_=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},S_,C_,w_=Symbol(`KmsSigncryptedShares.token`),T_=Symbol(`KmsSigncryptedShares.getMetadata`),E_=Symbol(`KmsSigncryptedShares.getShares`),D_=class{constructor(e,t){if(S_.set(this,void 0),C_.set(this,void 0),b_(this,S_,{kmsSignersContext:e.kmsSignersContext,eip712Domain:e.eip712Domain,eip712Signature:e.eip712Signature,eip712SignerAddress:e.eip712SignerAddress,eip712ExtraData:e.eip712ExtraData,handles:[...e.handles],tkmsVersion:e.tkmsVersion},`f`),Object.freeze(x_(this,S_,`f`)),Object.freeze(x_(this,S_,`f`).handles),b_(this,C_,[...t],`f`),Object.freeze(x_(this,C_,`f`)),x_(this,C_,`f`).forEach(e=>Object.freeze(e)),x_(this,C_,`f`).length===0)throw Error(`Expected at least one signcrypted share.`)}get tkmsVersion(){return x_(this,S_,`f`).tkmsVersion}[(S_=new WeakMap,C_=new WeakMap,E_)](e){if(e!==w_)throw Error(`Unauthorized`);return x_(this,C_,`f`)}[T_](e){if(e!==w_)throw Error(`Unauthorized`);return x_(this,S_,`f`)}};function O_(e){let{metadata:t,shares:n}=e;return Ic(t.kmsSignersContext,{}),new D_(t,n)}function k_(e){if(!(e instanceof D_))throw Error(`Invalid KmsSigncryptedShares`);return e[E_](w_)}function A_(e){if(!(e instanceof D_))throw Error(`Invalid KmsSigncryptedShares`);return e[T_](w_)}var j_=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},J=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},M_,N_,P_,F_,I_,L_=Symbol(`TKMSLib.getNative`),R_=Symbol(`TKMSLib.token`),z_=Symbol(`TkmsPrivateEncKeyMlKem512.getPublicKey`),B_=Symbol(`TkmsPublicEncKeyMlKem512Impl.getBytesHexNo0x`);function V_(e){if(e!==R_)throw Error(`Unauthorized`)}var H_=class e{constructor(e,t,n){M_.set(this,void 0),N_.set(this,void 0),P_.set(this,void 0),V_(e),j_(this,M_,n,`f`),j_(this,P_,t,`f`)}free(){J(this,M_,`f`)!==void 0&&(J(this,M_,`f`).free(),j_(this,M_,void 0,`f`))}get tkmsVersion(){return J(this,P_,`f`)}static[(M_=new WeakMap,N_=new WeakMap,P_=new WeakMap,L_)](t,n,r){if(V_(n),!(t instanceof e))throw Error(`Unauthorized`);if(J(t,M_,`f`)===void 0)throw Error(`TkmsPublicKey is already disposed`);if(J(t,P_,`f`)!==r)throw Error(`TkmsVersion mismatch`);return J(t,M_,`f`)}static[B_](t,n,r,i){if(V_(n),!(t instanceof e))throw Error(`Unauthorized`);if(J(t,M_,`f`)===void 0)throw Error(`TkmsPublicKey is already disposed`);if(J(t,P_,`f`)!==r||i.getWasmInfo().version!==r)throw Error(`TkmsVersion mismatch`);if(J(t,N_,`f`)===void 0){let e=i.ml_kem_pke_pk_to_u8vec(J(t,M_,`f`));j_(t,N_,Ir(e,!1),`f`)}return J(t,N_,`f`)}},U_=class e{constructor(e,t,n){F_.set(this,void 0),I_.set(this,void 0),V_(e),j_(this,F_,n,`f`),j_(this,I_,t,`f`)}get tkmsVersion(){return J(this,I_,`f`)}free(){J(this,F_,`f`)!==void 0&&(J(this,F_,`f`).free(),j_(this,F_,void 0,`f`))}static[(F_=new WeakMap,I_=new WeakMap,L_)](t,n,r){if(V_(n),!(t instanceof e))throw Error(`Unauthorized`);if(J(t,F_,`f`)===void 0)throw Error(`TkmsPrivateKey is already disposed`);if(J(t,I_,`f`)!==r)throw Error(`TkmsVersion mismatch`);return J(t,F_,`f`)}static[z_](t,n,r,i){if(V_(n),!(t instanceof e))throw Error(`Unauthorized`);if(J(t,F_,`f`)===void 0)throw Error(`TkmsPrivateKey is already disposed`);if(J(t,I_,`f`)!==r||i.getWasmInfo().version!==r)throw Error(`TkmsVersion mismatch`);let a=i.ml_kem_pke_get_pk(J(t,F_,`f`));return new H_(n,J(t,I_,`f`),a)}};async function W_(e,t){let n=(await g_(e,{tkmsVersion:t.tkmsVersion})).ml_kem_pke_keygen();return new U_(R_,t.tkmsVersion,n)}async function G_(e,t){let n=await g_(e,{tkmsVersion:t.tkmsVersion}),{tkmsPrivateKey:r,shares:i}=t;if(!(r instanceof U_))throw Error(`Invalid tkmsPrivateKey`);let a=new pg;try{let e=a.track(U_[z_](r,R_,t.tkmsVersion,n)),o=A_(i);if(o.tkmsVersion!==t.tkmsVersion)throw Error(`TkmsVersion mismatch`);let s=k_(i);if(s[0]===void 0)throw Error(`Expected at least one signcrypted share.`);let c=lc(cc(o.eip712ExtraData)),l=s.map(e=>({signature:e.signature,payload:e.payload,extra_data:e.extraData})),u=U_[L_](r,R_,t.tkmsVersion),d=H_[L_](e,R_,t.tkmsVersion),f=H_[B_](e,R_,t.tkmsVersion,n),p=o.eip712Domain,m=o.eip712SignerAddress,ee={name:p.name,version:p.version,chain_id:Nn(p.chainId),verifying_contract:p.verifyingContract,salt:null},te=o.kmsSignersContext.signers.map((e,t)=>{let r=t+1;return n.new_server_id_addr(r,e)}),ne=a.track(n.new_client(te,m,`default`)),re={signature:b(o.eip712Signature),client_address:m,enc_key:b(f),ciphertext_handles:o.handles.map(e=>e.bytes32HexNo0x),eip712_verifying_contract:o.eip712Domain.verifyingContract,extra_data:b(c)},ie=n.process_user_decryption_resp_from_js(ne,re,ee,l,d,u,void 0,!0);for(let e of ie)a.track(e);let ae=ie.map((e,t)=>{let n=o.handles[t];if(n===void 0||e.fhe_type!==n.fheTypeId)throw Error(`Internal error`);return Tl({value:ka(n.fheType,e.bytes),handle:n,originToken:R_})});return Object.freeze(ae),ae}finally{a.free()}}async function K_(e,t){let n=await g_(e,{tkmsVersion:t.tkmsVersion}),{tkmsPrivateKey:r}=t;if(!(r instanceof U_))throw Error(`Invalid tkmsPrivateKey`);let i=U_[z_](r,R_,t.tkmsVersion,n);try{return H_[B_](i,R_,t.tkmsVersion,n)}finally{i.free()}}async function q_(e,t){let n=await g_(e,{tkmsVersion:t.tkmsVersion}),{tkmsPrivateKey:r}=t;if(!(r instanceof U_))throw Error(`Invalid tkmsPrivateKey`);let i=U_[L_](r,R_,t.tkmsVersion);return n.ml_kem_pke_sk_to_u8vec(i)}async function J_(e,t){let n=await g_(e,{tkmsVersion:t.tkmsVersion}),{tkmsPrivateKeyBytes:r}=t,i=n.u8vec_to_ml_kem_pke_sk(r);return new U_(R_,t.tkmsVersion,i)}function Y_(e,t){if(!(t.tkmsPrivateKey instanceof U_))throw Error(`Invalid TkmsPrivateKey`);if(t.tkmsVersion!==t.tkmsPrivateKey.tkmsVersion)throw Error(`TkmsVersion mismatch`)}var X_=e=>Object.freeze({decrypt:Object.freeze({initTkmsModule:async t=>{await g_(e,t)},getTkmsModuleInfo:e=>y_(e),decryptAndReconstruct:t=>G_(e,t),generateTkmsPrivateKey:t=>W_(e,t),serializeTkmsPrivateKey:t=>q_(e,t),deserializeTkmsPrivateKey:t=>J_(e,t),getTkmsPublicKeyHex:t=>K_(e,t),verifyTkmsPrivateKey:t=>{Y_(e,t)}})});async function Z_(e){return await Ld(e,{fhevmContext:await L(e)})}async function Q_(e,t){let{transportKeyPair:n,kmsSigncryptedShares:r,fhevmContext:i}=t;if(i.tkmsVersion!==r.tkmsVersion)throw Error(`TkmsVersion mismatch`);let a=await Bd(e,{transportKeyPair:n,fhevmContext:i});try{return await e.runtime.decrypt.decryptAndReconstruct({shares:r,tkmsPrivateKey:a,tkmsVersion:i.tkmsVersion})}finally{a.free()}}async function $_(e,t){let{aclAddress:n,pairs:r}=t;return await Wc(r.map(t=>()=>ev(e,{aclAddress:n,handle:t.handle,account:t.account})),e.options.batchRpcCalls)}async function ev(e,t){let{aclAddress:n,handle:r,account:i}=t,a=I(e),o=await e.runtime.ethereum.readContract(a,{address:n,abi:Po,args:[r.bytes32Hex,i],functionName:Po[0].name});if(typeof o!=`boolean`)throw Error(`Invalid persistAllowed result.`);return o}async function tv(e,t){let{aclAddress:n,userAddress:r,handleContractPairs:i}=t;if(i.length===0)throw Error(`checkPersistAllowed requires at least one (handle, contractAddress) pair`);function a(e,t){return`${e}:${t}`.toLowerCase()}for(let e of i)if(r.toLowerCase()===e.contractAddress.toLowerCase())throw new Ql({contractAddress:n,message:`userAddress ${r} should not be equal to contractAddress when requesting user decryption!`});let o=[],s=new Set;for(let e of i){let t=a(r,e.handle.bytes32Hex);s.has(t)||(s.add(t),o.push({handle:e.handle,account:r}));let n=a(e.contractAddress,e.handle.bytes32Hex);s.has(n)||(s.add(n),o.push({handle:e.handle,account:e.contractAddress}))}if(o.length===0)throw Error(`checkPersistAllowed: no ACL checks to perform (unexpected empty dedup result)`);let c=await $_(e,{aclAddress:n,pairs:o}),l=new Map;for(let[e,t]of o.entries()){let n=c[e];if(n===void 0)throw Error(`Missing result at index ${e}`);let r=a(t.account,t.handle.bytes32Hex);l.set(r,n)}for(let e of i){let i=a(t.userAddress,e.handle.bytes32Hex);if(l.get(i)!==!0)throw new Ql({contractAddress:n,message:`User ${r} is not authorized to decrypt handle ${e.handle.bytes32Hex}!`});let o=a(e.contractAddress,e.handle.bytes32Hex);if(l.get(o)!==!0)throw new Ql({contractAddress:n,message:`Dapp contract ${e.contractAddress} is not authorized to user decrypt handle ${e.handle.bytes32Hex}!`})}}async function nv(e,t){let{aclAddress:n,delegate:r,delegator:i,pairs:a}=t;return await Wc(a.map(t=>()=>rv(e,{aclAddress:n,delegate:r,delegator:i,handle:t.handle,contractAddress:t.contractAddress})),e.options.batchRpcCalls)}async function rv(e,t){let{aclAddress:n,delegator:r,delegate:i,contractAddress:a,handle:o}=t,s=I(e),c=await e.runtime.ethereum.readContract(s,{address:n,abi:Oo,args:[r,i,a,o.bytes32Hex],functionName:Oo[0].name});if(typeof c!=`boolean`)throw Error(`Invalid isHandleDelegatedForUserDecryption result.`);return c}async function iv(e,t){let{aclAddress:n,delegator:r,delegate:i,handleContractPairs:a}=t;if(a.length===0)throw Error(`checkDelegation requires at least one (handle, contractAddress) pair`);function o(e,t){return`${e}:${t}`.toLowerCase()}if(r.toLowerCase()===i.toLowerCase())throw new Ql({contractAddress:n,message:`delegator ${r} cannot be equal to delegate`});if(i.toLowerCase()===`0xffffffffffffffffffffffffffffffffffffffff`)throw new Ql({contractAddress:n,message:`delegate cannot be equal to wildcard contract address`});if(r.toLowerCase()===`0xffffffffffffffffffffffffffffffffffffffff`)throw new Ql({contractAddress:n,message:`delegator cannot be equal to wildcard contract address`});for(let e of a){if(r.toLowerCase()===e.contractAddress.toLowerCase())throw new Ql({contractAddress:n,message:`delegator ${r} cannot be equal to contractAddress`});if(i.toLowerCase()===e.contractAddress.toLowerCase())throw new Ql({contractAddress:n,message:`delegate ${i} cannot be equal to contractAddress`})}let s=[],c=new Set;for(let e of a){let t=o(e.contractAddress,e.handle.bytes32Hex);c.has(t)||(c.add(t),s.push({handle:e.handle,contractAddress:e.contractAddress}))}if(s.length===0)throw Error(`checkDelegation: no delegation checks to perform (unexpected empty dedup result)`);let l=await nv(e,{aclAddress:n,delegator:r,delegate:i,pairs:s}),u=new Map;for(let[e,t]of s.entries()){let n=l[e];if(n===void 0)throw Error(`Missing result at index ${e}`);let r=o(t.contractAddress,t.handle.bytes32Hex);u.set(r,n)}for(let e of a){let t=o(e.contractAddress,e.handle.bytes32Hex);if(u.get(t)!==!0)throw new Ql({contractAddress:n,message:`Delegate ${i} is not delegated by ${r} to user decrypt handle ${e.handle.bytes32Hex} on contract ${e.contractAddress}!`})}}var av=10;function ov(e,t){let n=e.eip712.message.contractAddresses;for(let e of t)if(!n.some(t=>t.toLowerCase()===e.toLowerCase()))throw Error(`contract address ${e} is not listed in the permit's contractAddresses`)}async function sv(e,t){let{options:n,pairs:r,fhevmContext:i}=t;if(t.signedPermit.version!==1)throw Error(`fetchKmsSigncryptedSharesV1 requires a v1 permit, got v${t.signedPermit.version}`);let a=t.signedPermit,o=i.tkmsVersion;ov(a,r.map(e=>e.contractAddress));let s={auth:e.runtime.config.auth,...n};Bm(a,{});let{encryptedDataOwnerAddress:c,signerAddress:l,signature:u}=a;if(r.length===0)throw Error(`encrypted value/contract pairs must not be empty, at least one encrypted value/contract pair is required`);let d=a.eip712.message.contractAddresses.length;if(d===0)throw Error(`contractAddresses is empty`);if(d>av)throw Error(`contractAddresses max length of ${av} exceeded`);let f=r,p=r.map(e=>e.handle);Object.freeze(p),qa(p,BigInt(e.chain.id)),$a(p),a.assertNotExpired(),a.eip712.primaryType===`DelegatedUserDecryptRequestVerification`?await iv(e,{aclAddress:e.chain.fhevm.contracts.acl.address,delegate:l,delegator:c,handleContractPairs:f}):await tv(e,{aclAddress:e.chain.fhevm.contracts.acl.address,userAddress:c,handleContractPairs:f});let m=cc(a.eip712.message.extraData),ee=await Zc(e,{kmsVerifierAddress:e.chain.fhevm.contracts.kmsVerifier.address,protocolConfigAddress:e.chain.fhevm.contracts.protocolConfig?.address,extraData:m,fhevmContext:i}),te;return te=a.eip712.primaryType===`DelegatedUserDecryptRequestVerification`?await e.runtime.relayer.fetchDelegatedUserDecrypt(e,{version:1,payload:{handleContractPairs:f,kmsDecryptEip712Signer:l,kmsDecryptEip712Message:a.eip712.message,kmsDecryptEip712Signature:u},fhevmContext:i,options:s}):await e.runtime.relayer.fetchUserDecrypt(e,{version:1,payload:{handleContractPairs:f,kmsDecryptEip712Signer:l,kmsDecryptEip712Message:a.eip712.message,kmsDecryptEip712Signature:u},fhevmContext:i,options:s}),O_({metadata:{kmsSignersContext:ee,eip712Domain:Al({chainId:e.chain.fhevm.gateway.id,verifyingContractAddressDecryption:e.chain.fhevm.gateway.contracts.decryption.address}),eip712ExtraData:a.eip712.message.extraData,eip712Signature:u,eip712SignerAddress:l,handles:p,tkmsVersion:o},shares:te})}async function cv(e,t){let{transportKeyPair:n,fhevmContext:r}=t,i;if(t.signedPermit.version>1)throw Error(`Unsupported permit version ${t.signedPermit.version}: this SDK uses protocol API v0.13.x, which only supports V1 decryption permits. V2 permits require an SDK using protocol API v0.14.0 or later.`);return i=await sv(e,t),Q_(e,{kmsSigncryptedShares:i,transportKeyPair:n,fhevmContext:r})}async function lv(e,t){let{encryptedValue:n,contractAddress:r,...i}=t;E(r,{});let a=D(r),o=[{handle:Wa(n),contractAddress:a,ownerAddress:D(t.signedPermit.encryptedDataOwnerAddress)}],s=await L(e);return(await cv(e,{...i,pairs:o,fhevmContext:s}))[0]}async function uv(e,t){let{encryptedValues:n,contractAddress:r,...i}=t;E(r,{});let a=D(r),o=D(t.signedPermit.encryptedDataOwnerAddress),s=n.map(e=>({handle:Wa(e),contractAddress:a,ownerAddress:o})),c=await L(e);return cv(e,{...i,pairs:s,fhevmContext:c})}async function dv(e,t){let{pairs:n,...r}=t,i=D(t.signedPermit.encryptedDataOwnerAddress),a=n.map(e=>(E(e.contractAddress,{}),{handle:Wa(e.encryptedValue),contractAddress:D(e.contractAddress),ownerAddress:i})),o=await L(e);return cv(e,{...r,pairs:a,fhevmContext:o})}async function fv(e){let t=As(e,`decrypt`),n=await og(t);await t.runtime.decrypt.initTkmsModule({tkmsVersion:n.tkmsVersion})}function pv(e){return{decryptValue:t=>lv(e,t),decryptValues:t=>uv(e,t),decryptValuesFromPairs:t=>dv(e,t),generateTransportKeyPair:()=>Z_(e)}}function mv(e,t){let n=e.runtime.extend(t);return js(e,`decrypt`),{actions:pv(e),runtime:n,init:fv}}function hv(e){return mv(e,X_)}function gv(e){return ug(e).extend(hv)}var _v=class extends g{constructor(e){super({...e,name:`EncryptionError`})}};async function vv(){return await Dg()!==void 0}var yv;function bv(){return yv??=(async()=>{try{if(typeof Bun<`u`){if(await vv())return`node`;if(Cg())return`web`}else{if(Cg())return`web`;if(await vv())return`node`}throw Error(`No worker backend available (neither Web Worker nor node:worker_threads).`)}catch(e){throw yv=void 0,e}})(),yv}async function xv(e){if(await bv()===`web`){let t=new Blob([e],{type:`application/javascript`}),n=URL.createObjectURL(t);try{return new Worker(n)}finally{URL.revokeObjectURL(n)}}let t=await Dg();if(!t)throw Error(`No worker backend available (node:worker_threads unavailable).`);return new t(e,{eval:!0})}async function Sv(e,t,n=3e4){let r=await bv(),i=`
4
+ `)),super(o,t.cause?{cause:t.cause}:void 0),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:`ErrorBase`}),Vt.set(this,void 0),Ht.set(this,void 0),Ut.set(this,void 0),Object.setPrototypeOf(this,new.target.prototype),zt(this,Vt,n,`f`),zt(this,Ht,r,`f`),zt(this,Ut,i,`f`),this.name=t.name??this.name}get docsUrl(){return Bt(this,Ht,`f`)}get details(){return Bt(this,Vt,`f`)}get version(){return Bt(this,Ut,`f`)}};Vt=new WeakMap,Ht=new WeakMap,Ut=new WeakMap;var Gt=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Kt,g=class e extends Wt{constructor(t){let n;n=t.cause instanceof e?t.docsPath??t.cause.docsPath:t.docsPath;let r;n!==void 0&&(n.startsWith(`/`)||(n=`/`+n),r=`${e.DEFAULT_DOCS_BASE_URL}${n}${t.docsSlug===void 0?``:`#${t.docsSlug}`}`),super({...t,name:`FhevmErrorBase`,version:e.FULL_VERSION,docsUrl:r}),Kt.set(this,void 0)}get docsPath(){return Gt(this,Kt,`f`)}};Kt=new WeakMap,Object.defineProperty(g,"PKG_NAME",{enumerable:!0,configurable:!0,writable:!0,value:Rt}),Object.defineProperty(g,"VERSION",{enumerable:!0,configurable:!0,writable:!0,value:Lt}),Object.defineProperty(g,"DEFAULT_DOCS_BASE_URL",{enumerable:!0,configurable:!0,writable:!0,value:`https//docs.zama.org`}),Object.defineProperty(g,"FULL_VERSION",{enumerable:!0,configurable:!0,writable:!0,value:`${g.PKG_NAME}@${g.VERSION}`});var qt=class extends g{constructor(e){super({message:e.message??(e.handle===void 0?`FHEVM Handle is invalid.`:`FHEVM Handle "${e.handle}" is invalid.`),name:`FhevmHandleError`})}},_=class extends Wt{constructor({subject:e,property:t,index:n,type:r,value:i,expectedValue:a,expectedType:o},s){let c=r===`undefined`,l=Array.isArray(o)?o.join(`|`):o,u=a===void 0?void 0:Array.isArray(a)?a.join(`|`):a,d;d=t==null||t===``?n===void 0?e:`${e}[${n}]`:n===void 0?`${e}.${t}`:`${e}.${t}[${n}]`;let f;if(c)f=u===void 0?`missing ${d}, expected ${l}`:`missing ${d}, expected ${u}`;else{f=d;let e=r===void 0||r===`unknown`||r===`undefined`,t=r!==void 0&&(Array.isArray(o)?o.includes(r):r===o);u===void 0&&i===void 0&&(e||!t)?(f+=` has unexpected type, expected ${l}`,e||(f+=`, got ${r}`)):i===void 0?f+=u===void 0?` is invalid, expected valid ${l}`:` has unexpected value, expected '${u}'`:u===void 0?f=`${d} is invalid. '${i}' is not a valid ${l}`:f+=` has unexpected value '${i}', expected '${u}'`}super({...s,message:f,name:`InvalidPropertyError`})}};function Jt(e,t){return!(typeof e!=`object`||!e||!(t in e)||e[t]===void 0||e[t]===null)}function v(e,t,n,r){if(!Jt(e,t))throw new _({subject:n,property:t,expectedType:r.expectedType??`non-nullable`,type:$t(e,t)},r)}function Yt(e,t){return Jt(e,t)?Array.isArray(e[t]):!1}function Xt(e,t,n,r){if(!Yt(e,t))throw new _({subject:n,property:t,expectedType:r.expectedType??`Array`,type:$t(e,t)},r)}function Zt(e,t){return Jt(e,t)?typeof e[t]==`boolean`:!1}function Qt(e,t,n,r){if(!Zt(e,t))throw new _({subject:n,property:t,expectedType:`boolean`,type:$t(e,t)},r);if(r.expectedValue!==void 0&&e[t]!==r.expectedValue)throw new _({subject:n,property:t,expectedType:`boolean`,expectedValue:String(r.expectedValue),type:typeof e[t],value:String(e[t])},r)}function $t(e,t){return Jt(e,t)?typeof e[t]:`undefined`}var en=class extends Wt{constructor(e){super({...e,name:`InternalError`,message:e.message??`internal error`})}};function y(e,t){if(!e)throw new en({message:t??`Assertion failed`})}function tn(e,t){return e===void 0?``:t.length===0?e:e.endsWith(t)?e.slice(0,-t.length):e}function nn(e,t){return e===void 0?``:t.length===0?e:e.startsWith(t)?e.substring(t.length):e}function rn(e){return typeof e==`string`&&e.startsWith(`0x`)}function an(e){return typeof e==`string`&&!e.startsWith(`0x`)}function on(e){return e.startsWith(`0x`)?e:`0x${e}`}function b(e){return e.startsWith(`0x`)?e.substring(2):e}function sn(e){return e==null||typeof e!=`string`?!1:e.length>0}function cn(e){if(!sn(e))throw new en({message:`Expected a non-empty string, got ${typeof e==`string`?`an empty string`:typeof e}`})}function ln(e,t){return Jt(e,t)?typeof e[t]==`string`:!1}function x(e,t,n,r){if(!ln(e,t))throw new _({subject:n,property:t,expectedType:`string`,expectedValue:r.expectedValue,type:$t(e,t)},r);if(r.expectedValue!==void 0){if(Array.isArray(r.expectedValue)){for(let n=0;n<r.expectedValue.length;++n)if(e[t]===r.expectedValue[n])return;throw new _({subject:n,property:t,expectedType:`string`,expectedValue:r.expectedValue,type:typeof e[t],value:e[t]},r)}if(e[t]!==r.expectedValue)throw new _({subject:n,property:t,expectedType:`string`,expectedValue:r.expectedValue,type:typeof e[t],value:e[t]},r)}}function un(e,t,n,r){Xt(e,t,n,r);let i=e[t];for(let e=0;e<i.length;++e)if(typeof i[e]!=`string`)throw new _({subject:n,index:e,property:t,expectedType:`string`,type:typeof i[e]},r)}function S(e,t){try{return JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t,t)}catch{return``}}var C=class extends Wt{constructor({subject:e,index:t,type:n,expectedType:r,metaMessages:i},a){let o=n===void 0||n===`unknown`||n===`undefined`,s=Array.isArray(r)?r.join(`|`):r,c=``;e!==void 0&&(c+=t===void 0?`${e} `:`${e}[${String(t)}] `),c+=`expected ${s}`,o||(c+=`, got ${n}`),super({...a,message:c,name:`InvalidTypeError`,metaMessages:i})}},dn=65535,fn=4294967295,pn=18446744073709551615n,mn=340282366920938463463374607431768211455n,hn=1461501637330902918203684832716283019655932542975n,w=115792089237316195423570985008687907853269984665640564039457584007913129639935n,gn={bool:1,uint8:255,uint16:dn,uint32:fn,uint64:pn,uint128:mn,uint160:hn,uint256:w,address:hn};Object.freeze(gn);var _n=BigInt(2**53-1);function vn(e,t){if(typeof e==`number`)return e;if(e>_n){let n=t?.subject===void 0?``:` (${t.subject})`;throw Error(`Value${n} ${e} exceeds Number.MAX_SAFE_INTEGER`)}return Number(e)}var yn={1:255,2:dn,4:fn,8:pn,16:mn,20:hn,32:w};Object.freeze(yn);function bn(e,t){return typeof e==`number`&&Number.isInteger(e)&&e>=0&&(t===void 0||e<=t)}function xn(e,t){return typeof e==`bigint`&&e>=0&&(t===void 0||e<=t)}function Sn(e,t){return typeof e==`string`&&$n(e,t)!==void 0}function Cn(e,t){return Tn(e,t===void 0?void 0:gn[t])}function wn(e,t){return Tn(e,t===void 0?void 0:yn[t])}function Tn(e,t){return bn(e,t)||xn(e,t)}function En(e){return Tn(e,255)}function Dn(e){return Tn(e,fn)}function On(e){return Tn(e,pn)}function kn(e){return Tn(e,w)}function An(e){return`0x${e.toString(16)}`}function jn(e){let t=e.toString(16);return t.length%2==0?t:`0${t}`}function Mn(e){if(!kn(e))throw new C({expectedType:`uint256`},{});let t=new ArrayBuffer(32),n=new DataView(t),r=BigInt(e);return n.setBigUint64(24,r&18446744073709551615n,!1),n.setBigUint64(16,r>>64n&18446744073709551615n,!1),n.setBigUint64(8,r>>128n&18446744073709551615n,!1),n.setBigUint64(0,r>>192n&18446744073709551615n,!1),new Uint8Array(t)}function Nn(e){if(!Dn(e))throw new C({expectedType:`uint32`},{});let t=new ArrayBuffer(32),n=new DataView(t),r=Number(e);return n.setUint32(28,r,!1),new Uint8Array(t)}function Pn(e){if(!On(e))throw new C({expectedType:`uint64`},{});let t=new ArrayBuffer(32),n=new DataView(t),r=BigInt(e);return n.setBigUint64(24,r,!1),new Uint8Array(t)}function Fn(e,t){if(!Tn(e,t.max))throw new C({subject:t.subject,type:typeof e,expectedType:`uint`},t)}function In(e,t,n){if(!Cn(e,t))throw new C({subject:n.subject,type:typeof e,expectedType:t},n)}function T(e,t){if(!bn(e,t.max))throw new C({subject:t.subject,type:typeof e,expectedType:`uintNumber`},t)}function Ln(e,t){if(!xn(e,t.max))throw new C({subject:t.subject,type:typeof e,expectedType:`uintBigInt`},t)}function Rn(e,t){if(!Sn(e,t.max))throw new C({subject:t.subject,type:typeof e,expectedType:`uintString`},t)}function zn(e,t){if(!On(e))throw new C({subject:t.subject,type:typeof e,expectedType:`uint64`},t)}function Bn(e,t){if(!kn(e))throw new C({subject:t.subject,type:typeof e,expectedType:`uint256`},t)}function Vn(e,t){switch(t){case`uint8`:case`uint16`:case`uint32`:return Number(e);case`uint64`:case`uint128`:case`uint160`:case`uint256`:return BigInt(e)}}var Hn=[`uint8`,`uint16`,`uint32`,`uint64`,`uint128`,`uint160`,`uint256`];function Un(e){return typeof e==`string`&&Hn.includes(e)}function Wn(e,t={}){if(!Un(e))throw new C({subject:t.subject,type:typeof e,expectedType:Hn},t)}function Gn(e,t,n){return In(e,t,n),e}function Kn(e,t){return Fn(e,t??{}),e}function qn(e,t){return T(e,{max:255,...t}),e}function Jn(e,t){return Ln(e,{max:fn,...t}),e}function Yn(e,t){return Ln(e,{max:pn,...t}),e}function Xn(e,t){return Ln(e,{max:w,...t}),e}function Zn(e,t){return Jt(e,t)?bn(e[t]):!1}function Qn(e,t,n,r){if($t(e,t)!==`bigint`||!xn(e[t]))throw new _({subject:n,property:t,type:$t(e,t),expectedType:`uintBigInt`},r)}function $n(e,t){let n;try{n=BigInt(e)}catch{return}if(!(n<0n||n.toString()!==e||t!==void 0&&n>BigInt(t)))return n}function er(e,t){if(t>e)throw RangeError(`count ${t} cannot exceed n ${e}`);let n=Array.from({length:e},(e,t)=>t);for(let r=0;r<t;r++){let t=r+Math.floor(Math.random()*(e-r)),i=n[r],a=n[t];n[r]=a,n[t]=i}return n.slice(0,t)}function tr(e,t){let n=t?.subject??`seconds`,r=typeof e==`string`?$n(e,w):BigInt(Kn(e,{max:w,...t}));if(r===void 0)throw Error(`${n} is not a valid non-negative integer number of seconds, got ${String(e)}`);if(r%86400n!=0n)throw Error(`${n} must be a whole number of days (a multiple of 86400 seconds), got ${r}`);return vn(r/86400n,{subject:n})}var nr=class extends Wt{constructor(e,t){super({...t,message:`SHA-256 mismatch for ${e.subject}: expected ${e.expected}, got ${e.actual}`,name:`Sha256VerificationError`})}};Object.freeze({bytes1:1,bytes2:2,bytes4:4,bytes8:8,bytes20:20,bytes21:21,bytes32:32,bytes65:65});var rr=/^0x[a-fA-F0-9]*$/,ir=/^[a-fA-F0-9]*$/;function ar(e,t){return e==null||!(e instanceof Uint8Array)?!1:t===void 0||e.length===t}function or(e){return ar(e,32)}function sr(e,t){return!rn(e)||t!==void 0&&e.length!==2*t+2||(e.length-2)%2!=0?!1:rr.test(e)}function cr(e){return sr(e,20)}function lr(e,t){return!(!an(e)||t!==void 0&&e.length!==2*t||e.length%2!=0||!ir.test(e))}function ur(e,t){if(!ar(e,t?.byteLength))throw new C({subject:t?.subject,expectedType:`bytes${t?.byteLength??``}`},t??{})}function dr(e,t){ur(e,{byteLength:32,...t})}function fr(e,t){return ur(e,{byteLength:21,...t}),e}function pr(e,t){if(!sr(e,t.byteLength))throw new C({subject:t.subject,type:typeof e,expectedType:`bytes${t.byteLength??``}Hex`},t)}function mr(e,t){if(!ar(e)&&!sr(e))throw new C({subject:t.subject,type:typeof e,expectedType:`Bytes | BytesHex`},t)}function hr(e,t){pr(e,{byteLength:32,...t})}function gr(e,t){return pr(e,t??{}),e}function _r(e,t){return pr(e,{byteLength:32,...t}),e}function vr(e,t){if(!lr(e,t.byteLength))throw new C({subject:t.subject,type:typeof e,expectedType:`bytes${t.byteLength??``}HexNo0x`},t)}function yr(e,t){return vr(e,{byteLength:32,...t}),e}function br(e,t){if(!Array.isArray(e))throw new C({subject:t.subject,type:typeof e,expectedType:`bytes${t.byteLength??``}Hex[]`},t);for(let n=0;n<e.length;++n)if(!sr(e[n],t.byteLength))throw new C({subject:t.subject,index:n,type:typeof e[n],expectedType:`bytes${t.byteLength??``}Hex`},t)}function xr(e,t){br(e,{byteLength:65,...t})}function Sr(e,t,n){return Jt(e,t)?sr(e[t],n):!1}function Cr(e,t,n,r){if(!Sr(e,t,r.byteLength))throw new _({subject:n,property:t,expectedType:`bytes${r.byteLength??``}Hex`,type:$t(e,t)},r)}function wr(e,t,n,r){Cr(e,t,n,{byteLength:65,...r})}function Tr(e,t,n){return Jt(e,t)?lr(e[t],n):!1}function Er(e,t,n,r){if(!Tr(e,t,r.byteLength))throw new _({subject:n,property:t,expectedType:`bytes${r.byteLength??``}HexNo0x`,type:$t(e,t)},r)}function Dr(e,t,n,r){Xt(e,t,n,r);let i=e[t];for(let e=0;e<i.length;++e)if(!sr(i[e],r.byteLength))throw new _({subject:n,index:e,property:t,expectedType:`bytes${r.byteLength??``}Hex`,type:typeof i[e]},r)}function Or(e,t,n,r){Dr(e,t,n,{byteLength:32,...r})}function kr(e,t,n,r){Xt(e,t,n,r);let i=e[t];for(let e=0;e<i.length;++e)if(!lr(i[e]))throw new _({subject:n,index:e,property:t,expectedType:`bytes${r.byteLength??``}HexNo0x`,type:typeof i[e]},r)}var Ar={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,b:11,c:12,d:13,e:14,f:15,A:10,B:11,C:12,D:13,E:14,F:15};Object.freeze(Ar);var jr=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`));Object.freeze(jr);var Mr=new Uint8Array([48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102]);function Nr(e){if(!e||e.length===0)return``;let t=``;for(let n of e)t+=n.toString(16).padStart(2,`0`);return t}function Pr(e){return`0x${Nr(e)}`}function Fr(e){if(!or(e))throw Error(`Invalid bytes32 argument`);return`0x${Nr(e)}`}function Ir(e,t){let n=t===!0?e.length*2:e.length*2+2,r=new Uint8Array(n),i=0;t!==!0&&(r[0]=48,r[1]=120,i=2);let a=i;for(let t of e)r[a]=Mr[t>>4],r[a+1]=Mr[t&15],a+=2;return new TextDecoder().decode(r)}async function Lr(e,t,n){let r=yr(b(t.trim()).toLowerCase(),{subject:`SHA-256 digest`});if(typeof crypto>`u`||crypto.subtle===void 0)throw Error(`Web Crypto API is not available`);let i=await crypto.subtle.digest(`SHA-256`,e),a=Ir(new Uint8Array(i),!0);if(a!==r)throw new nr({subject:n?.subject??`bytes`,expected:r,actual:a},{})}function Rr(e){if(e.length%2!=0)throw Error(`Invalid hex string: odd length`);let t=e.replace(/^(0x)/,``).match(/.{1,2}/g);return t?Uint8Array.from(t.map(e=>parseInt(e,16))):new Uint8Array}function zr(e){let t=b(e);if(t.length%2!=0||t.length>40)throw Error(`Invalid bytes20 hex string`);return Rr(`0x`+t.padStart(40,`0`))}function Br(e){let t=b(e);if(t.length%2!=0||t.length>64)throw Error(`Invalid bytes32 hex string`);return Rr(`0x`+t.padStart(64,`0`))}function Vr(e,t){let n=t?.strict===!0,r=e[0]===`0`&&e[1]===`x`?2:0,i=e.length-r;if(i%2!=0)throw new C({subject:t?.subject,expectedType:`bytesHex`,metaMessages:[`hex string length must be even`]},t??{});if(t?.byteLength!==void 0&&i!==t.byteLength)throw new C({subject:t.subject,expectedType:`bytesHex`,metaMessages:[`expected ${t.byteLength} bytes, got ${i/2}`]},t);let a=new Uint8Array(i/2);for(let i=0;i<a.length;i++){let o=Ar[e[r+i*2]],s=Ar[e[r+i*2+1]];if(o===void 0||s===void 0){if(n)throw new C({subject:t.subject,expectedType:`bytesHex`,metaMessages:[`invalid hex character at position ${r+i*2}`]},t);a[i]=(o??0)<<4|(s??0);continue}a[i]=o<<4|s}return a}function Hr(e){if(!e||e.length===0)return BigInt(0);let t=BigInt(0);for(let n of e)t=t<<BigInt(8)|BigInt(n);return t}function Ur(e,t){let n=t?.byteLength;if(!wn(e,n))throw new C({subject:t?.subject,type:typeof e,expectedType:`uintBigInt`},t??{});let r=e.toString(16);return n!==void 0&&(r=r.padStart(n*2,`0`)),r.length%2==0?`0x`+r:`0x0`+r}function Wr(e,t){if(ar(e))return t?.copy===!0?new Uint8Array(e):e;if(typeof e==`string`)return Vr(e,{strict:!0});throw new C({subject:t?.subject,expectedType:[`bytes`,`bytesHex`,`bytesHexNo0x`]},t??{})}function Gr(...e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function Kr(e){return`0x`+e.map(e=>e.substring(2)).join(``)}function qr(e){if(e instanceof Uint8Array)return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);let t=Object.prototype.toString.call(e);if(ArrayBuffer.isView(e)&&t===`[object Uint8Array]`)return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);if(t===`[object ArrayBuffer]`)return new Uint8Array(e);throw TypeError(`Unsupported bytes type: ${t}`)}function Jr(e,t){if(t>=e.length)throw RangeError(`Position ${t} out of bounds for bytes of length ${e.length}`);return e[t]}function Yr(e,t){let n=Zr(e,t,1);return parseInt(n,16)}function Xr(e,t){let n=Zr(e,t,8);return BigInt(n)}function Zr(e,t,n){let r=2+t*2;if(r+2*n>e.length)throw RangeError(`Position ${t} with length ${n} out of bounds`);return`0x${e.slice(r,r+2*n)}`}function Qr(e){let t=e>0?Math.ceil(e/4)*4:0,n=new ArrayBuffer(t),r=new Uint8Array(new Uint16Array([1]).buffer)[0]===1;return new Uint32Array(n).fill(r?4022250974:3735928559),new Uint8Array(n).subarray(0,e)}var $r=BigInt(2**32-1),ei=BigInt(32);function ti(e,t=!1){return t?{h:Number(e&$r),l:Number(e>>ei&$r)}:{h:Number(e>>ei&$r)|0,l:Number(e&$r)|0}}function ni(e,t=!1){let n=e.length,r=new Uint32Array(n),i=new Uint32Array(n);for(let a=0;a<n;a++){let{h:n,l:o}=ti(e[a],t);[r[a],i[a]]=[n,o]}return[r,i]}var ri=(e,t,n)=>e<<n|t>>>32-n,ii=(e,t,n)=>t<<n|e>>>32-n,ai=(e,t,n)=>t<<n-32|e>>>64-n,oi=(e,t,n)=>e<<n-32|t>>>64-n;function si(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`}function ci(e,t=``){if(!Number.isSafeInteger(e)||e<0){let n=t&&`"${t}" `;throw Error(`${n}expected integer >= 0, got ${e}`)}}function li(e,t,n=``){let r=si(e),i=e?.length,a=t!==void 0;if(!r||a&&i!==t){let o=n&&`"${n}" `,s=a?` of length ${t}`:``,c=r?`length=${i}`:`type=${typeof e}`;throw Error(o+`expected Uint8Array`+s+`, got `+c)}return e}function ui(e,t=!0){if(e.destroyed)throw Error(`Hash instance has been destroyed`);if(t&&e.finished)throw Error(`Hash#digest() has already been called`)}function di(e,t){li(e,void 0,`digestInto() output`);let n=t.outputLen;if(e.length<n)throw Error(`"digestInto() output" expected to be of length >=`+n)}function fi(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function pi(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}var mi=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function hi(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function gi(e){for(let t=0;t<e.length;t++)e[t]=hi(e[t]);return e}var _i=mi?e=>e:gi;function vi(e,t={}){let n=(t,n)=>e(n).update(t).digest(),r=e(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.create=t=>e(t),Object.assign(n,t),Object.freeze(n)}var yi=BigInt(0),bi=BigInt(1),xi=BigInt(2),Si=BigInt(7),Ci=BigInt(256),wi=BigInt(113),Ti=[],Ei=[],Di=[];for(let e=0,t=bi,n=1,r=0;e<24;e++){[n,r]=[r,(2*n+3*r)%5],Ti.push(2*(5*r+n)),Ei.push((e+1)*(e+2)/2%64);let i=yi;for(let e=0;e<7;e++)t=(t<<bi^(t>>Si)*wi)%Ci,t&xi&&(i^=bi<<(bi<<BigInt(e))-bi);Di.push(i)}var Oi=ni(Di,!0),ki=Oi[0],Ai=Oi[1],ji=(e,t,n)=>n>32?ai(e,t,n):ri(e,t,n),Mi=(e,t,n)=>n>32?oi(e,t,n):ii(e,t,n);function Ni(e,t=24){let n=new Uint32Array(10);for(let r=24-t;r<24;r++){for(let t=0;t<10;t++)n[t]=e[t]^e[t+10]^e[t+20]^e[t+30]^e[t+40];for(let t=0;t<10;t+=2){let r=(t+8)%10,i=(t+2)%10,a=n[i],o=n[i+1],s=ji(a,o,1)^n[r],c=Mi(a,o,1)^n[r+1];for(let n=0;n<50;n+=10)e[t+n]^=s,e[t+n+1]^=c}let t=e[2],i=e[3];for(let n=0;n<24;n++){let r=Ei[n],a=ji(t,i,r),o=Mi(t,i,r),s=Ti[n];t=e[s],i=e[s+1],e[s]=a,e[s+1]=o}for(let t=0;t<50;t+=10){for(let r=0;r<10;r++)n[r]=e[t+r];for(let r=0;r<10;r++)e[t+r]^=~n[(r+2)%10]&n[(r+4)%10]}e[0]^=ki[r],e[1]^=Ai[r]}pi(n)}var Pi=class e{state;pos=0;posOut=0;finished=!1;state32;destroyed=!1;blockLen;suffix;outputLen;enableXOF=!1;rounds;constructor(e,t,n,r=!1,i=24){if(this.blockLen=e,this.suffix=t,this.outputLen=n,this.enableXOF=r,this.rounds=i,ci(n,`outputLen`),!(0<e&&e<200))throw Error(`only keccak-f1600 function is supported`);this.state=new Uint8Array(200),this.state32=fi(this.state)}clone(){return this._cloneInto()}keccak(){_i(this.state32),Ni(this.state32,this.rounds),_i(this.state32),this.posOut=0,this.pos=0}update(e){ui(this),li(e);let{blockLen:t,state:n}=this,r=e.length;for(let i=0;i<r;){let a=Math.min(t-this.pos,r-i);for(let t=0;t<a;t++)n[this.pos++]^=e[i++];this.pos===t&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:e,suffix:t,pos:n,blockLen:r}=this;e[n]^=t,t&128&&n===r-1&&this.keccak(),e[r-1]^=128,this.keccak()}writeInto(e){ui(this,!1),li(e),this.finish();let t=this.state,{blockLen:n}=this;for(let r=0,i=e.length;r<i;){this.posOut>=n&&this.keccak();let a=Math.min(n-this.posOut,i-r);e.set(t.subarray(this.posOut,this.posOut+a),r),this.posOut+=a,r+=a}return e}xofInto(e){if(!this.enableXOF)throw Error(`XOF is not possible for this instance`);return this.writeInto(e)}xof(e){return ci(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(di(e,this),this.finished)throw Error(`digest() was already called`);return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,pi(this.state)}_cloneInto(t){let{blockLen:n,suffix:r,outputLen:i,rounds:a,enableXOF:o}=this;return t||=new e(n,r,i,o,a),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=a,t.suffix=r,t.outputLen=i,t.enableXOF=o,t.destroyed=this.destroyed,t}},Fi=((e,t,n,r={})=>vi(()=>new Pi(t,e,n),r))(1,136,32),Ii=class extends Wt{constructor(e,t){super({...t,message:e.address===void 0?`Address is invalid.`:`Address "${e.address}" is invalid.`,name:`AddressError`})}},Li=class extends Wt{constructor(e,t){super({...t,message:e.address===void 0?`Checksummed address is invalid.`:`Checksummed address "${e.address}" is invalid.`,name:`ChecksummedAddressError`})}};function Ri(e){let t=b(e),n=new Uint8Array(20);for(let e=0;e<20;e++)n[e]=parseInt(t.slice(e*2,e*2+2),16);return n}function zi(e){try{return Zi(e)===e}catch{return!1}}function Bi(e,t){if(!zi(e))throw typeof e==`string`?new Li({address:e},t):new C({subject:t.subject,type:typeof e,expectedType:`checksummedAddress`},t)}function Vi(e,t){return Bi(e,t??{}),e}function Hi(e,t){if(!Array.isArray(e))throw new C({subject:t.subject,type:typeof e,expectedType:`checksummedAddress[]`},t);for(let n=0;n<e.length;++n)if(!zi(e[n]))throw new Li({address:String(e)},t)}function Ui(e){if(!cr(e))return!1;let t=b(e),n=t.toLowerCase();return t===n||Qi(n)===e}function Wi(e,t){return E(e,t??{}),e}function E(e,t){if(!Ui(e))throw new Ii({address:String(e)},t)}function Gi(e,t){if(!Array.isArray(e))throw new C({subject:t.subject,type:typeof e,expectedType:`address[]`},t);for(let n=0;n<e.length;++n)if(!Ui(e[n]))throw new Ii({address:String(e)},t)}function Ki(e,t){return Jt(e,t)?Ui(e[t]):!1}function qi(e,t,n,r){if(!Ki(e,t)){let i=$t(e,t);throw new _({subject:n,property:t,type:i,expectedType:`address`,value:i===`string`?String(e[t]):void 0},r)}}function Ji(e,t){return Jt(e,t)?zi(e[t]):!1}function Yi(e,t,n,r){if(!Ji(e,t)){let i=$t(e,t);throw new _({subject:n,property:t,type:i,expectedType:`checksummedAddress`,value:i===`string`?String(e[t]):void 0},r)}}function Xi(e,t,n,r){Xt(e,t,n,r);let i=e[t];for(let e=0;e<i.length;++e)Bi(i[e],r)}function Zi(e){if(cr(e))return Qi(b(e).toLowerCase())}function D(e){return Qi(b(e).toLowerCase())}function Qi(e){let t=Pr(Fi(new TextEncoder().encode(e))),n=`0x`;for(let r=0;r<40;r++){let i=e[r];if(i>=`a`&&i<=`f`){let e=parseInt(t[r+2],16);n+=e>=8?i.toUpperCase():i}else n+=i}return n}function $i(e){if(e instanceof Error)return e;let t=e.message??`Non-Error value caught in exception handler`,n=e.name??`ErrorWrapper`,r=e.cause??e,i=Error(t,{cause:r});return i.name=n,i}function ea(e,t){throw new en({message:t})}function ta(e){let t;for(t=typeof e==`string`?e:e instanceof Error?e.message:String(e);t.startsWith(`"`)||t.startsWith(`'`);)t=t.slice(1);for(;t.endsWith(`"`)||t.endsWith(`'`);)t=t.slice(0,-1);return t}function na(e,t){if(typeof e!=`boolean`)throw new C({subject:t.subject,type:typeof e,expectedType:`boolean`},t)}function ra(e,t){return na(e,t??{}),e}function ia(e,t){if(typeof e==`boolean`)return e;if(e===1||e===1n||e===`true`)return!0;if(e===0||e===0n||e===`false`)return!1;throw new C({subject:t.subject,type:typeof e,expectedType:`boolean`},t)}var aa=2,oa={ebool:0,euint8:2,euint16:3,euint32:4,euint64:5,euint128:6,eaddress:7,euint256:8},sa={0:`ebool`,2:`euint8`,3:`euint16`,4:`euint32`,5:`euint64`,6:`euint128`,7:`eaddress`,8:`euint256`},ca={bool:`ebool`,uint8:`euint8`,uint16:`euint16`,uint32:`euint32`,uint64:`euint64`,uint128:`euint128`,uint256:`euint256`,address:`eaddress`},la={0:2,2:8,3:16,4:32,5:64,6:128,7:160,8:256},ua={2:0,8:2,16:3,32:4,64:5,128:6,160:7,256:8},da={0:`bool`,2:`uint256`,3:`uint256`,4:`uint256`,5:`uint256`,6:`uint256`,7:`address`,8:`uint256`},fa={euint8:255,euint16:dn,euint32:fn,euint64:pn,euint128:mn,euint256:w};Object.freeze(oa),Object.freeze(la),Object.freeze(ua),Object.freeze(da),Object.freeze(fa);function pa(e){return typeof e==`number`&&e in sa}function ma(e){return typeof e==`string`&&e in oa}function ha(e){return typeof e==`number`&&e in ua}function ga(e){return _a(e,{}),e}function _a(e,t){if(!ha(e))throw new C({subject:t.subject,expectedType:Object.keys(ua).join(`|`)},t)}function va(e,t){if(!Array.isArray(e))throw new C({type:typeof e,expectedType:`EncryptionBits[]`},t);for(let n=0;n<e.length;++n)if(!ha(e[n]))throw new C({subject:t.subject,index:n,type:typeof e[n],expectedType:`EncryptionBits`},t)}function ya(e){return ua[e]}function ba(e){return sa[e]}function xa(e){return ca[e]}function Sa(e){return e.substring(1)}function Ca(e){return ma(e)?Sa(e):e}function wa(e){return da[e]}function Ta(e){let t=la[e];return Da(t),t}function Ea(e){let t=la[oa[e]];return Da(t),t}function Da(e){y(e>=aa,`Invalid FheType encryption bit width: ${e}. Minimum encryption bit width is ${aa} bits.`)}function Oa(e,t){let n=e;switch(n){case`ebool`:return t!==0n;case`eaddress`:return D(Wi(Ur(t,{byteLength:20})));case`euint8`:case`euint16`:case`euint32`:return Ln(t,{max:BigInt(fa[n]),subject:`value`}),Number(t);case`euint64`:case`euint128`:case`euint256`:return Ln(t,{max:BigInt(fa[n]),subject:`value`}),t;default:return ea(n,`Unknown fheTypeName: ${n}`)}}function ka(e,t){return Oa(e,Hr(t))}function Aa(e,t,n){switch(e){case`ebool`:return ra(t,n);case`eaddress`:return Wi(t,n);case`euint8`:case`euint16`:case`euint32`:return T(t,{...n,max:gn[Sa(e)]}),t;case`euint64`:case`euint128`:case`euint256`:return Ln(t,{...n,max:gn[Sa(e)]}),t;default:return ea(e,`Unknown fheTypeName: ${e}`)}}function ja(e,t,n){switch(e){case`ebool`:return ra(t,n);case`eaddress`:return E(t,n??{}),t;case`euint8`:case`euint16`:case`euint32`:return Fn(t,{...n,max:gn[e]}),Number(t);case`euint64`:case`euint128`:case`euint256`:return Fn(t,{...n,max:gn[e]}),BigInt(t);default:return ea(e,`Unknown fheTypeName: ${e}`)}}var Ma=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},O=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},k,Na,Pa=Symbol(`FhevmHandle.token`),Fa=0,Ia=21,La=22,Ra=30,za=31,Ba=class{constructor(e,t){if(k.set(this,void 0),Na.set(this,void 0),e!==Pa)throw Error(`Unauthorized`);Ma(this,k,t.handleBytes32Hex,`f`),Ma(this,Na,t.handleBytes32,`f`)}get bytes32Hex(){return O(this,k,`f`)}get bytes32HexNo0x(){return b(O(this,k,`f`))}get bytes32(){return O(this,Na,`f`)===void 0&&Ma(this,Na,Br(O(this,k,`f`)),`f`),new Uint8Array(O(this,Na,`f`))}get hash21(){return Zr(O(this,k,`f`),Fa,21)}get chainId(){return Xr(O(this,k,`f`),La)}get fheTypeId(){return Yr(O(this,k,`f`),Ra)}get fheType(){return ba(this.fheTypeId)}get clearType(){return Sa(this.fheType)}get version(){return Yr(O(this,k,`f`),za)}get isComputed(){return this.index===255}get index(){return Yr(O(this,k,`f`),Ia)}get isExternal(){return!this.isComputed}get encryptionBits(){return Ta(this.fheTypeId)}get solidityPrimitiveTypeName(){return wa(this.fheTypeId)}toString(){return O(this,k,`f`)}toJSON(){return O(this,k,`f`)}};k=new WeakMap,Na=new WeakMap,Object.freeze(Ba),Object.freeze(Ba.prototype);function Va(e){return Ya(e),new Ba(Pa,{handleBytes32Hex:e})}function Ha(e){return Xa(e),new Ba(Pa,{handleBytes32Hex:e})}function Ua(e){let t=Fr(e);return Za(e),new Ba(Pa,{handleBytes32Hex:t,handleBytes32:new Uint8Array(e)})}function Wa(e){return e instanceof Ba?e:typeof e==`object`&&e&&`bytes32Hex`in e?(hr(e.bytes32Hex,{}),Va(e.bytes32Hex)):typeof e==`string`?(hr(e,{}),Va(e)):(dr(e,{}),Ua(e))}function Ga(e,t,n){let r=n?.actualName===void 0?``:` (${n.actualName})`,i=n?.expectedName===void 0?``:` (${n.expectedName})`;if(e.length!==t.length)throw new qt({message:`Unexpected handles list sizes: ${e.length}${r} != ${t.length}${i}`});let a=t.map(e=>Wa(e));for(let t=0;t<e.length;++t){let n=e[t],o=a[t];if(n.bytes32Hex!==o.bytes32Hex)throw new qt({message:`Unexpected handle[${t}]: ${n.bytes32Hex}${r} != ${o.bytes32Hex}${i}`})}}function Ka({index:e,chainId:t,hash21:n,fheTypeId:r,version:i}){let a=qn(i??0),o=Pn(t).subarray(24,32),s=fr(Rr(n)),c=new Uint8Array(32);return c.set(s,0),c[21]=qn(e??255),c.set(o,22),c[30]=r,c[31]=a,Ua(c)}function qa(e,t){if(e.length===0)return;let n=t??e[0]?.chainId;for(let r of e)if(r.chainId!==n)throw new qt({message:`Handle (${r.bytes32Hex}) has chainId ${r.chainId}, expected ${t}`})}function Ja(e,t,n){if(!pa(e))throw new qt({...n,message:`FHEVM Handle is invalid. Unknown FheType: ${e}`});if(t!==0)throw new qt({...n,message:`FHEVM Handle is invalid. Unknown version: ${t}`})}function Ya(e,t){Ja(Yr(e,Ra),Yr(e,za),t)}function Xa(e,t){if(Ya(e,t),Yr(e,Ia)===255)throw new qt({message:`Expected an input handle (index < 255) but got a computed handle (index = 255)`,handle:e})}function Za(e,t){Ja(Jr(e,Ra),Jr(e,za),t)}var Qa=2048;function $a(e){let t=0;for(let n of e)if(t+=n.encryptionBits,t>Qa)throw Error(`Cannot decrypt more than ${Qa} encrypted bits in a single request`);return t}var eo=class extends g{constructor(e){super({...e,name:`UnknownSignerError`,message:`Invalid address found: ${e.unknownAddress} is not in the list of ${e.type} signers`})}},to=class extends g{constructor(e){super({...e,name:`ThresholdSignerError`,message:`${e.type} signers threshold is not reached`})}},no=class extends g{constructor(e){super({...e,name:`DuplicateSignerError`,message:`Duplicate ${e.type} signer address found: ${e.duplicateAddress} appears multiple times in recovered addresses`})}},ro=256,io=ro,ao;function oo(e=11){if(!ao||io+e>ro*2){ao=``,io=0;for(let e=0;e<ro;e++)ao+=(256+Math.random()*256|0).toString(16).substring(1)}let t=io;return io+=e,ao.substring(t,t+e)}var so=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},co=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},lo,uo,fo,po,mo,ho,go=Symbol(`CoreFhevmClient.token`);function _o(e,t){if(Object.keys(e).length===0)throw Error(`Missing ${t} module`);return e}function vo(e,t){let n=new Set;return r=>{if(n.has(r))return e;let i=r(e),a=Object.keys(i);if(a.length!==1||a[0]===void 0)throw Error(`Factory must return exactly one key`);let o=a[0],s=t.get(o);if(s===void 0)throw Error(`Unknown module: ${o}`);if(s.factory!==void 0)throw Error(`Already extended: ${o}`);let c=i[o];if(c===void 0)throw Error(`Missing ${o} in factory result`);return Object.assign(s.placeholder,c),Object.freeze(s.placeholder),s.factory=r,n.add(r),e}}var yo=class{constructor(e,t,n){if(lo.set(this,void 0),uo.set(this,void 0),fo.set(this,void 0),po.set(this,void 0),mo.set(this,{}),ho.set(this,{}),e!==go)throw Error(`Unauthorized`);so(this,fo,n.ethereum,`f`),so(this,po,n.relayer,`f`),so(this,lo,oo(),`f`),so(this,uo,{...n.config,logger:n.config.logger?{...n.config.logger}:void 0,auth:n.config.auth?{...n.config.auth}:void 0,moduleVersions:Ie(n.config.moduleVersions)},`f`);let r=co(this,ho,`f`),i=co(this,mo,`f`);this.verify=e=>{if(e!==t)throw Error(`Unauthorized`)};let a=new Map([[`decrypt`,{placeholder:r}],[`encrypt`,{placeholder:i}]]);this.extend=vo(this,a),this.hasModule=e=>a.get(e)?.factory!==void 0,Object.freeze(this)}get uid(){return co(this,lo,`f`)}get config(){return co(this,uo,`f`)}get ethereum(){return co(this,fo,`f`)}get relayer(){return co(this,po,`f`)}get decrypt(){return _o(co(this,ho,`f`),`decrypt`)}get encrypt(){return _o(co(this,mo,`f`),`encrypt`)}};lo=new WeakMap,uo=new WeakMap,fo=new WeakMap,po=new WeakMap,mo=new WeakMap,ho=new WeakMap,Object.freeze(yo),Object.freeze(yo.prototype);function bo(e,t){return new yo(go,e,t)}function xo(e){return e instanceof yo}function So(e,t){if(!xo(e))throw new C({subject:t.subject,type:typeof e,expectedType:`FhevmRuntime`},t)}function Co(e,t){return wo(e,t,{}),e}function wo(e,t,n){So(e,n),e[t]}function To(e){let{actualOwner:t,expectedOwner:n,name:r}=e,i=t.deref();if(i===void 0)throw Error(`${r} owner has been garbage collected`);if(i!==n)throw Error(`${r} has not the expected owner`)}var Eo=[{inputs:[],name:`getVersion`,outputs:[{internalType:`string`,name:``,type:`string`}],stateMutability:`pure`,type:`function`}],Do=[{inputs:[],name:`getFHEVMExecutorAddress`,outputs:[{internalType:`address`,name:``,type:`address`}],stateMutability:`view`,type:`function`}],Oo=[{inputs:[{internalType:`address`,name:`delegator`,type:`address`},{internalType:`address`,name:`delegate`,type:`address`},{internalType:`address`,name:`contractAddress`,type:`address`},{internalType:`bytes32`,name:`handle`,type:`bytes32`}],name:`isHandleDelegatedForUserDecryption`,outputs:[{internalType:`bool`,name:``,type:`bool`}],stateMutability:`view`,type:`function`}],ko=[{inputs:[],name:`getThreshold`,outputs:[{internalType:`uint256`,name:``,type:`uint256`}],stateMutability:`view`,type:`function`}],Ao=[{inputs:[],name:`getKmsSigners`,outputs:[{internalType:`address[]`,name:``,type:`address[]`}],stateMutability:`view`,type:`function`}],jo=[{inputs:[],name:`getCurrentKmsContextId`,outputs:[{internalType:`uint256`,name:``,type:`uint256`}],stateMutability:`view`,type:`function`}],Mo=[{inputs:[],name:`getCurrentKmsContextAndEpoch`,outputs:[{internalType:`uint256`,name:`contextId`,type:`uint256`},{internalType:`uint256`,name:`epochId`,type:`uint256`}],stateMutability:`view`,type:`function`}],No=[{inputs:[],name:`getCoprocessorSigners`,outputs:[{internalType:`address[]`,name:``,type:`address[]`}],stateMutability:`view`,type:`function`}],Po=[{inputs:[{internalType:`bytes32`,name:`handle`,type:`bytes32`},{internalType:`address`,name:`account`,type:`address`}],name:`persistAllowed`,outputs:[{internalType:`bool`,name:``,type:`bool`}],stateMutability:`view`,type:`function`}],Fo=[{inputs:[{internalType:`bytes32`,name:`handle`,type:`bytes32`}],name:`isAllowedForDecryption`,outputs:[{internalType:`bool`,name:``,type:`bool`}],stateMutability:`view`,type:`function`}],Io=[{type:`function`,name:`getContextSignersAndThresholdFromExtraData`,inputs:[{name:`extraData`,type:`bytes`}],outputs:[{name:`signers`,type:`address[]`},{name:`threshold`,type:`uint256`}],stateMutability:`view`}],Lo=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Ro=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},zo,Bo,Vo=class e{constructor(e,t){zo.set(this,void 0),Bo.set(this,void 0),Lo(this,zo,e,`f`),Lo(this,Bo,t,`f`),Object.freeze(this)}static verify(t,n){if(!(t instanceof e))throw Error(`Invalid TrustedValue`);if(n!==Ro(t,Bo,`f`))throw Error(`Token mismatch`);return Ro(t,zo,`f`)}toString(){return`TrustedValue`}toJSON(){return`TrustedValue`}};zo=new WeakMap,Bo=new WeakMap,Object.freeze(Vo.prototype),Object.freeze(Vo);function Ho(e,t){return new Vo(e,t)}function Uo(e,t){return Vo.verify(e,t)}function Wo(e,t){return Ho(e,t)}var A=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Go,j,Ko,qo,Jo=class{constructor(e,t){Object.defineProperty(this,"resolvedKind",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"value",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"pendingKind",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"pendingOp",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metadata",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"ready",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"owner",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_pending",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_pendingChained",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.owner=new WeakRef(e),this.resolvedKind=void 0,this.value=void 0,this.pendingKind=void 0,this.pendingOp=void 0,this.metadata=t,this._pendingChained=!1}};function Yo(e,t){if(e!==t)throw Error(`FheEncryptionKey relayerUrl mismatch: expected "${t}" but got "${e}". The FheEncryptionKey must originate from the same relayer.`)}function Xo(e){if(e.resolvedKind===`wasm`&&e.pendingKind!==void 0)throw Error(`Debug: resolvedKind is 'wasm' but pendingKind is `+JSON.stringify(e.pendingKind))}var Zo=class{constructor(){Go.add(this),j.set(this,new Map)}get(e){return A(this,j,`f`).get(e)}has(e){return A(this,j,`f`).has(e)}remove(e){let t=A(this,j,`f`).get(e);return t!==void 0&&A(this,Go,`m`,Ko).call(this,t),A(this,j,`f`).delete(e)}clear(){for(let e of A(this,j,`f`).values())A(this,Go,`m`,Ko).call(this,e);A(this,j,`f`).clear()}setBytes(e,t,n){A(this,j,`f`).has(t)||(Yo(n.metadata.relayerUrl,t),this.ensureBytes({owner:e,relayerUrl:t,fetcher:()=>Promise.resolve(n),metadata:n.metadata}))}ensureBytes(e){let{owner:t,relayerUrl:n,fetcher:r,metadata:i}=e;if(A(this,j,`f`).has(n))return;let a=new Jo(t,i),o=r();a.pendingKind=`bytes`,a.pendingOp=`fetching`,a._pending=o,a.ready=A(this,Go,`m`,qo).call(this,n,a,`bytes`,o),A(this,j,`f`).set(n,a)}ensureWasm(e){let{relayerUrl:t,deserializeFn:n}=e,r=A(this,j,`f`).get(t);if(r===void 0||r.resolvedKind===`wasm`||r.pendingKind===`wasm`)return;if(Xo(r),r._pendingChained)throw Error(`Debug: _pending was already chained from`);r._pendingChained=!0;let i=r._pending.then(e=>(Xo(r),n(e)));r.pendingKind=`wasm`,r.pendingOp=`converting`,r._pending=i,r.ready=A(this,Go,`m`,qo).call(this,t,r,`wasm`,i)}async resolveBytes(e){let{relayerUrl:t,serializeFn:n}=e,r=A(this,j,`f`).get(t);if(r===void 0)return;if(r.resolvedKind===`bytes`)return r.value;if(r.resolvedKind===`wasm`){if(n===void 0)throw Error(`Cannot convert wasm to bytes: serialize function not provided`);return n(r.value)}if(r.pendingKind===void 0)return;await r.ready;let i=r.resolvedKind;if(i===`bytes`)return r.value;if(i===`wasm`){if(n===void 0)throw Error(`Cannot convert wasm to bytes: serialize function not provided`);return n(r.value)}}};j=new WeakMap,Go=new WeakSet,Ko=function(e){e.ready=Promise.resolve(),e.pendingKind=void 0,e.pendingOp=void 0},qo=function(e,t,n,r){let i=r.then(r=>{t.ready===i&&(Yo(r.metadata.relayerUrl,e),t.resolvedKind=n,t.value=r,t.pendingKind=void 0,t.pendingOp=void 0,Xo(t))},n=>{if(t.ready===i)throw t.pendingKind=void 0,t.pendingOp=void 0,A(this,j,`f`).get(e)===t&&A(this,j,`f`).delete(e),n});return i};var Qo=new Zo,$o=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},M=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},es,ts,ns,rs,is,as=Symbol(`FhevmClientFrozenContext.token`),os=class{constructor(e,t){if(es.set(this,void 0),ts.set(this,void 0),ns.set(this,void 0),rs.set(this,void 0),is.set(this,void 0),e!==as)throw Error(`Use createFhevmClientFrozenContext() instead`);$o(this,es,Object.freeze({...t.hostContractVersions??{}}),`f`),$o(this,ts,t.protocolVersion,`f`),$o(this,ns,t.pubKeyCrsVersion,`f`),$o(this,rs,t.tfheVersion,`f`),$o(this,is,t.tkmsVersion,`f`),Object.freeze(this)}hasHostContractVersion(e){return M(this,es,`f`)[e]!==void 0}hostContractVersion(e){let t=M(this,es,`f`)[e];if(t===void 0)throw Error(`FhevmClientFrozenContext: host contract version '${e}' was not resolved in this context.`);return t}tryHostContractVersion(e){return M(this,es,`f`)[e]}get hasProtocolVersion(){return M(this,ts,`f`)!==void 0}get protocolVersion(){if(M(this,ts,`f`)===void 0)throw Error(`FhevmClientFrozenContext: protocolVersion was not resolved in this context.`);return M(this,ts,`f`)}get tryProtocolVersion(){return M(this,ts,`f`)}get hasPubKeyCrsVersion(){return M(this,ns,`f`)!==void 0}get pubKeyCrsVersion(){if(M(this,ns,`f`)===void 0)throw Error(`FhevmClientFrozenContext: pubKeyCrsVersion was not resolved in this context.`);return M(this,ns,`f`)}get tryPubKeyCrsVersion(){return M(this,ns,`f`)}get hasProtocolContext(){return M(this,ts,`f`)!==void 0&&M(this,ns,`f`)!==void 0}get protocolContext(){return Object.freeze({protocolVersion:this.protocolVersion,pubKeyCrsVersion:this.pubKeyCrsVersion})}get hasTfheVersion(){return M(this,rs,`f`)!==void 0}get tfheVersion(){if(M(this,rs,`f`)===void 0)throw Error(`FhevmClientFrozenContext: tfheVersion was not resolved in this context.`);return M(this,rs,`f`)}get tryTfheVersion(){return M(this,rs,`f`)}get hasTkmsVersion(){return M(this,is,`f`)!==void 0}get tkmsVersion(){if(M(this,is,`f`)===void 0)throw Error(`FhevmClientFrozenContext: tkmsVersion was not resolved in this context.`);return M(this,is,`f`)}get tryTkmsVersion(){return M(this,is,`f`)}toJSON(){return{hostContractVersions:M(this,es,`f`),protocolVersion:M(this,ts,`f`),pubKeyCrsVersion:M(this,ns,`f`),tfheVersion:M(this,rs,`f`),tkmsVersion:M(this,is,`f`)}}};es=new WeakMap,ts=new WeakMap,ns=new WeakMap,rs=new WeakMap,is=new WeakMap,Object.freeze(os),Object.freeze(os.prototype);function ss(e){return new os(as,e)}function cs(e){us(e,{});let t=e.toJSON(),n={},r=Object.entries(t.hostContractVersions??{});for(let[e,t]of r)t!==void 0&&(n[e]={...t});return ss({hostContractVersions:n,protocolVersion:t.protocolVersion===void 0?void 0:{...t.protocolVersion},pubKeyCrsVersion:t.pubKeyCrsVersion===void 0?void 0:{...t.pubKeyCrsVersion},tfheVersion:t.tfheVersion,tkmsVersion:t.tkmsVersion})}function ls(e){return e instanceof os}function us(e,t){if(!ls(e))throw new C({subject:t.subject,type:typeof e,expectedType:`FhevmClientFrozenContext`},t)}var N=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},P=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},ds,F,fs,ps,ms,hs,gs,_s,vs,ys=Symbol(`CoreFhevmHostClient.token`),bs=Symbol(`CoreFhevmHostClient.getFrozenContext`),xs=Symbol(`CoreFhevmHostClient.setFrozenContext`),Ss=Symbol(`CoreFhevmHostClient.getFrozenContextPromise`),Cs=Symbol(`CoreFhevmHostClient.setFrozenContextPromise`),ws=`Fhevm context has not been resolved. Await client.ready before.`,Ts=class{constructor(e,t,n){if(ds.set(this,void 0),F.set(this,void 0),fs.set(this,void 0),ps.set(this,void 0),ms.set(this,void 0),hs.set(this,void 0),gs.set(this,void 0),_s.set(this,void 0),vs.set(this,void 0),e!==ys)throw Error(`Unauthorized`);N(this,ps,n.runtime,`f`),N(this,ds,oo(),`f`),N(this,F,void 0,`f`),N(this,fs,void 0,`f`),N(this,ms,n.client===void 0?void 0:Wo(n.client,t),`f`),N(this,hs,n.chain,`f`),N(this,gs,Ls(n.options),`f`),N(this,_s,new Set,`f`),N(this,vs,void 0,`f`),P(this,ps,`f`).verify(t),Object.defineProperties(this,{uid:{get:()=>P(this,ds,`f`),configurable:!1,enumerable:!0},protocolVersion:{get:()=>{if(P(this,F,`f`)===void 0)throw Error(ws);return P(this,F,`f`).protocolVersion},configurable:!1,enumerable:!0},tfheVersion:{get:()=>{if(P(this,F,`f`)===void 0)throw Error(ws);return P(this,F,`f`).tfheVersion},configurable:!1,enumerable:!0},tkmsVersion:{get:()=>{if(P(this,F,`f`)===void 0)throw Error(ws);return P(this,F,`f`).tkmsVersion},configurable:!1,enumerable:!0},chain:{get:()=>P(this,hs,`f`),configurable:!1,enumerable:!0},options:{get:()=>P(this,gs,`f`),configurable:!1,enumerable:!0},trustedClient:{get:()=>P(this,ms,`f`),configurable:!1,enumerable:!0},client:{get:()=>P(this,ms,`f`)===void 0?void 0:Uo(P(this,ms,`f`),t),configurable:!1,enumerable:!0},runtime:{get:()=>P(this,ps,`f`),configurable:!1,enumerable:!0},ethereum:{get:()=>P(this,ps,`f`).ethereum,configurable:!1,enumerable:!0},verify:{value:e=>{if(e!==t)throw Error(`Unauthorized`)},configurable:!1,enumerable:!1,writable:!1},[bs]:{value:()=>P(this,F,`f`),configurable:!1,enumerable:!1,writable:!1},[xs]:{value:e=>{N(this,F,e,`f`)},configurable:!1,enumerable:!1,writable:!1},[Ss]:{value:()=>P(this,fs,`f`),configurable:!1,enumerable:!1,writable:!1},[Cs]:{value:e=>{N(this,fs,e,`f`)},configurable:!1,enumerable:!1,writable:!1},extend:{value:e=>Is(this,e,e=>{P(this,_s,`f`).add(e),N(this,vs,void 0,`f`)}),configurable:!1,enumerable:!1,writable:!1},init:{value:()=>(N(this,vs,P(this,vs,`f`)??Promise.all([...P(this,_s,`f`)].map(e=>e(this))).then(()=>{}),`f`),P(this,vs,`f`)),configurable:!1,enumerable:!1,writable:!1},ready:{get:()=>this.init(),configurable:!1,enumerable:!0}})}};ds=new WeakMap,F=new WeakMap,fs=new WeakMap,ps=new WeakMap,ms=new WeakMap,hs=new WeakMap,gs=new WeakMap,_s=new WeakMap,vs=new WeakMap,Object.freeze(Ts),Object.freeze(Ts.prototype);function Es(e){return e instanceof Ts}function Ds(e){return Es(e)?e.trustedClient!==void 0:!1}function Os(e){return Ns(e,{}),e}function ks(e){return Ps(e,{}),e}function As(e,t){return js(e,t),e}function js(e,t){let n=ks(e);if(n.chain===void 0)throw Error(`Fhevm client chain is undefined`);wo(n.runtime,t,{})}function Ms(e){let t=ks(e);if(t.chain===void 0)throw Error(`Fhevm client chain is undefined`);So(t.runtime,{})}function Ns(e,t){if(!Es(e))throw new C({subject:t.subject,type:typeof e,expectedType:`CoreFhevm`},t)}function Ps(e,t){if(!Ds(e))throw new C({subject:t.subject,type:typeof e,expectedType:`CoreClientFhevm`},t)}function I(e){return Ps(e,{}),e.trustedClient}function Fs(e,t){let n=t.options?.fheEncryptionKey;if(n!==void 0){let e=t.chain?.fhevm.relayerUrl;Qo.setBytes(t.runtime,e??n.metadata.relayerUrl,n)}return new Ts(ys,e,t)}function Is(e,t,n){let{actions:r,runtime:i,init:a}=t(e);if(i!==e.runtime)throw Error(`actionsFactory must return the same runtime instance (id=${e.uid})`);a!==void 0&&n(a);for(let[t,n]of Object.entries(r))t in e||Object.defineProperty(e,t,{value:n,writable:!1,configurable:!1,enumerable:!0});return e}function Ls(e){return Object.freeze({batchRpcCalls:e?.batchRpcCalls??!1,moduleVersions:Ie(e?.moduleVersions)})}async function L(e){let t=Os(e);await t.ready;let n=zs(t);if(n===void 0)throw Error(`initPublicAction: no resolved FhevmClientFrozenContext after "ready". A client created via createFhevm*Client() always resolves and stores its context during init, so this is an internal invariant violation (client not built through the SDK, or init did not complete).`);return cs(n)}function Rs(e,t){Os(e)[xs](t)}function zs(e){return Os(e)[bs]()}function Bs(e,t){Os(e)[Cs](t)}function Vs(e){return Os(e)[Ss]()}var Hs=864e5,Us=9e5;function Ws(e){let t=new Map,{executeFn:n,cacheKeyFn:r,ttlMs:i,maxSize:a=100,nowFn:o=Date.now}=e;function s(e,s){if(i===0)return n(e,s);let c=r(e,s),l=t.get(c);if(l!==void 0){if(i!==void 0&&o()-l.timestamp>i||s.forceRefresh===!0)t.delete(c);else return l.promise}let u=n(e,s).then(e=>{let n=t.get(c);return n?.promise===u&&t.set(c,{promise:Promise.resolve(e),timestamp:n.timestamp,settled:!0}),e},e=>{throw t.get(c)?.promise===u&&t.delete(c),e});return t.size>=a&&(t=Gs(t)),t.set(c,{promise:u,timestamp:o(),settled:!1}),u}function c(e){let n=e?.includeInflight===!0,r=e?.key;if(r!==void 0){let e=t.get(r);e!==void 0&&(n||e.settled)&&t.delete(r)}else t=n?new Map:Gs(t)}return{execute:s,clear:c}}function Gs(e){let t=new Map;for(let[n,r]of e)r.settled||t.set(n,r);return t}var Ks=Ws({executeFn:Ys,cacheKeyFn:qs,ttlMs:Hs});function qs(e,t){return`${e.runtime.uid.toLowerCase()}:${t.address.toLowerCase()}`}function Js(e,t){return Ks.execute(e,t)}async function Ys(e,t){let n=I(e),r=t.address,i=await e.runtime.ethereum.readContract(n,{address:r,abi:Eo,args:[],functionName:Eo[0].name});try{cn(i)}catch(e){throw Error(`Invalid Version.`,{cause:e})}return Xs(i)}function Xs(e){let t=`Invalid version format: "${e}". Expected "<contractName> v<major>.<minor>.<patch>".`,n=e.lastIndexOf(` v`);if(n<1)throw Error(t);let r=e.slice(0,n),i=e.slice(n+2).split(`.`);if(i.length!==3)throw Error(t);let[a,o,s]=i,c=Number(a),l=Number(o),u=Number(s);if(T(c,{}),T(l,{}),T(u,{}),r!==`ACL`&&r!==`FHEVMExecutor`&&r!==`InputVerifier`&&r!==`KMSVerifier`&&r!==`HCULimit`&&r!==`ProtocolConfig`)throw Error(t);return Object.freeze({version:e,contractName:r,major:c,minor:l,patch:u})}function Zs(e,t){return e.major<t.major||e.major===t.major&&e.minor<t.minor}function Qs(e,t){return e.major===t.major&&e.minor===t.minor&&e.patch===t.patch}function $s(e,t){if(e.contractName!==t)throw Error(`Invalid contract name. Expecting '${t}', got ${e.contractName}.`)}var ec=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},R=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},tc,z,nc,rc,ic,ac,oc=Symbol(`KmsExtraData.token`),sc=class{constructor(e,t){if(tc.add(this),z.set(this,void 0),nc.set(this,void 0),rc.set(this,void 0),ic.set(this,void 0),e!==oc)throw Error(`Unauthorized`);ec(this,nc,Xn(t.kmsContextId),`f`),ec(this,rc,Xn(t.kmsEpochId),`f`),ec(this,z,t.version===void 0?void 0:qn(t.version),`f`),ec(this,ic,gr(t.kmsExtraData),`f`),R(this,tc,`m`,ac).call(this)}get version(){return R(this,z,`f`)}get isFutureVersion(){return R(this,z,`f`)===void 0}get kmsContextId(){return R(this,nc,`f`)}get kmsEpochId(){return R(this,rc,`f`)}get bytesHex(){return R(this,ic,`f`)}lt(e){return R(this,z,`f`)!==void 0&&R(this,z,`f`)<e}le(e){return R(this,z,`f`)!==void 0&&R(this,z,`f`)<=e}gt(e){return R(this,z,`f`)===void 0||R(this,z,`f`)>e}ge(e){return R(this,z,`f`)===void 0||R(this,z,`f`)>=e}};z=new WeakMap,nc=new WeakMap,rc=new WeakMap,ic=new WeakMap,tc=new WeakSet,ac=function(){if(R(this,z,`f`)===void 0){if(R(this,nc,`f`)!==0n)throw Error(`kmsContextId must be 0 for unknown kms extraData`);if(R(this,rc,`f`)!==0n)throw Error(`kmsEpochId must be 0 for unknown kms extraData`);return}switch(R(this,z,`f`)){case 0:if(R(this,nc,`f`)!==0n)throw Error(`kmsContextId must be 0 for v0 kms extraData`);if(R(this,rc,`f`)!==0n)throw Error(`kmsEpochId must be 0 for v0 kms extraData`);return;case 1:if(R(this,nc,`f`)===0n)throw Error(`kmsContextId cannot be 0 for v1 kms extraData`);if(R(this,rc,`f`)!==0n)throw Error(`kmsEpochId must be 0 for v1 kms extraData`);return;case 2:if(R(this,nc,`f`)===0n)throw Error(`kmsContextId cannot be 0 for v2 kms extraData`);if(R(this,rc,`f`)===0n)throw Error(`kmsEpochId cannot be 0 for v2 kms extraData`);return;default:throw Error(`Unsupported kms extraData version ${R(this,z,`f`)}`)}};function cc(e){let t=e===`0x`?`0x00`:e;if(t.length<4)throw Error(`Unsupported kms extraData length ${e.length}: must be more than 4 bytes`);let n=qn(Number(`0x`+t.slice(2,4)));if(n===0)return new sc(oc,{version:0,kmsContextId:0n,kmsEpochId:0n,kmsExtraData:`0x00`});if(n===1){if(e.length!=68)throw Error(`Invalid kms extraData length for v1: expected 68, got ${e.length}`);let t=_r(`0x${e.slice(4,68)}`);return new sc(oc,{version:1,kmsContextId:Xn(BigInt(t)),kmsEpochId:0n,kmsExtraData:e})}if(n===2){if(e.length!=132)throw Error(`Invalid extraData length for v2: expected 132, got ${e.length}`);let t=_r(`0x${e.slice(4,68)}`),n=Xn(BigInt(t)),r=_r(`0x${e.slice(68,132)}`);return new sc(oc,{version:2,kmsContextId:n,kmsEpochId:Xn(BigInt(r)),kmsExtraData:e})}return new sc(oc,{version:void 0,kmsContextId:0n,kmsEpochId:0n,kmsExtraData:e})}function lc(e){return e.version===0?`0x`:e.bytesHex}function uc(){return new sc(oc,{version:0,kmsContextId:0n,kmsEpochId:0n,kmsExtraData:`0x00`})}function dc(e){let t=`1`.padStart(2,`0`),n=e.kmsContextId.toString(16).padStart(64,`0`);return new sc(oc,{version:1,kmsContextId:e.kmsContextId,kmsEpochId:0n,kmsExtraData:`0x${t}${n}`})}function fc(e){let t=`2`.padStart(2,`0`),n=e.kmsContextId.toString(16).padStart(64,`0`),r=e.kmsEpochId.toString(16).padStart(64,`0`);return new sc(oc,{version:2,kmsContextId:e.kmsContextId,kmsEpochId:e.kmsEpochId,kmsExtraData:`0x${t}${n}${r}`})}function pc(e){if(e.kmsEpochId!==0n&&e.kmsContextId===0n)throw Error(`kmsContextId cannot be 0 if kmsEpochId is not 0`)}function mc(e){return pc(e),e.kmsEpochId===0n?e.kmsContextId===0n?uc():dc({kmsContextId:e.kmsContextId}):fc({kmsContextId:e.kmsContextId,kmsEpochId:e.kmsEpochId})}function hc(e){return _c(e,{}),e}function gc(e){return e instanceof sc}function _c(e,t){if(!gc(e))throw new C({subject:t.subject,type:typeof e,expectedType:`KmsExtraData`},t)}function vc(e,t){e!==`0x00`&&e!==`0x`&&(pr(e,t),cc(e))}function yc(e,t){let n=hc(e);return Zs(t,{major:0,minor:2})?n.version!==void 0&&n.version<=0:Zs(t,{major:0,minor:4})?n.version!==void 0&&n.version<=1:!Qs(t,{major:0,minor:4,patch:0})||n.version!==void 0&&n.version<=2}var bc=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},B=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},xc,Sc,Cc,wc,Tc,Ec,Dc,Oc,kc=Symbol(`KmsSignersContext.token`),Ac=Symbol(`KmsSignersContext.verify`),jc=class e{constructor(e,t,n){if(xc.set(this,void 0),Sc.set(this,void 0),Cc.set(this,void 0),wc.set(this,void 0),Tc.set(this,void 0),Ec.set(this,void 0),Dc.set(this,void 0),Oc.set(this,void 0),e!==kc)throw Error(`Unauthorized`);bc(this,xc,t,`f`),bc(this,Sc,n.address,`f`),bc(this,Cc,n.kmsContextId,`f`),bc(this,wc,n.kmsEpochId,`f`),bc(this,Tc,[...n.kmsSigners],`f`),bc(this,Dc,n.kmsSignerThreshold,`f`),bc(this,Oc,n.kmsMpcThreshold,`f`),bc(this,Ec,new Set(B(this,Tc,`f`).map(e=>e.toLowerCase())),`f`),Object.freeze(B(this,Tc,`f`)),Object.freeze(this)}get kmsVerifierAddress(){return B(this,Sc,`f`)}get id(){return B(this,Cc,`f`)}get epochId(){return B(this,wc,`f`)}get signers(){return B(this,Tc,`f`)}get threshold(){return B(this,Dc,`f`)}get mpcThreshold(){return B(this,Oc,`f`)}has(e){return B(this,Ec,`f`).has(e.toLowerCase())}static[(xc=new WeakMap,Sc=new WeakMap,Cc=new WeakMap,wc=new WeakMap,Tc=new WeakMap,Ec=new WeakMap,Dc=new WeakMap,Oc=new WeakMap,Ac)](t,n){if(!(t instanceof e))throw Error(`Invalid KmsSignersContext instance`);To({actualOwner:B(t,xc,`f`),expectedOwner:n,name:`KmsSignersContext`})}toJSON(){return{kmsVerifierAddress:B(this,Sc,`f`),id:B(this,Cc,`f`),epochId:B(this,wc,`f`),signers:B(this,Tc,`f`),threshold:B(this,Dc,`f`),...B(this,Oc,`f`)?{mpcThreshold:B(this,Oc,`f`)}:{}}}};Object.freeze(jc.prototype),Object.freeze(jc);function Mc(e,t){let{kmsVerifierAddress:n,kmsContextId:r,kmsEpochId:i,kmsSigners:a,kmsSignerThreshold:o,kmsMpcThreshold:s}=t;return pc({kmsContextId:t.kmsContextId,kmsEpochId:t.kmsEpochId}),new jc(kc,e,{address:D(n),kmsContextId:r,kmsEpochId:i,kmsSignerThreshold:Number(o),kmsSigners:a.map(D),kmsMpcThreshold:s})}function Nc(e){return Ic(e,{}),mc({kmsContextId:e.id,kmsEpochId:e.epochId})}function Pc(e,t){let n=new Set;t.forEach(e=>{if(n.has(e.toLowerCase()))throw new no({duplicateAddress:e,type:`kms`});n.add(e.toLowerCase())});for(let n of t)if(!e.has(n.toLowerCase()))throw new eo({unknownAddress:n,type:`kms`});if(t.length<e.threshold)throw new to({type:`kms`})}function Fc(e){return e instanceof jc}function Ic(e,t){if(!Fc(e))throw new C({subject:t.subject,type:typeof e,expectedType:`KmsSignersContext`},t)}var Lc=Ws({executeFn:zc,cacheKeyFn:(e,t)=>`${e.runtime.uid.toLowerCase()}:${t.kmsVerifierAddress.toLowerCase()}`,ttlMs:Us});function Rc(e,t){return Lc.execute(e,t)}async function zc(e,t){let n=I(e),r=await e.runtime.ethereum.readContract(n,{address:t.kmsVerifierAddress,abi:jo,args:[],functionName:jo[0].name});try{Bn(r,{})}catch(e){throw Error(`Invalid KMS Context Id.`,{cause:e})}return BigInt(r)}Ws({executeFn:Bc,cacheKeyFn:(e,t)=>`${e.runtime.uid.toLowerCase()}:${t.protocolConfigAddress.toLowerCase()}`,ttlMs:Us});async function Bc(e,t){if(Zs(t.fhevmContext.hostContractVersion(`ProtocolConfig`),{major:0,minor:2}))throw Error(`ProtocolConfig.getCurrentKmsContextAndEpoch() requires ProtocolConfig >= v0.2.0 (protocol v0.14.0)`);let n=I(e),r=await e.runtime.ethereum.readContract(n,{address:t.protocolConfigAddress,abi:Mo,args:[],functionName:Mo[0].name});if(!Array.isArray(r)||r.length<2)throw Error(`Invalid getCurrentKmsContextAndEpoch result.`);let i=r[0],a=r[1];try{Bn(i,{})}catch(e){throw Error(`Invalid KMS Context Id.`,{cause:e})}try{Bn(a,{})}catch(e){throw Error(`Invalid KMS Epoch Id.`,{cause:e})}return Object.freeze({contextId:BigInt(i),epochId:BigInt(a)})}var Vc=Ws({executeFn:Uc,cacheKeyFn:(e,t)=>{let n=t.extraData.kmsContextId.toString(16).padStart(64,`0`);return`${e.runtime.uid.toLowerCase()}:${t.kmsVerifierAddress.toLowerCase()}:${n}`},ttlMs:Us});function Hc(e,t){return _c(t.extraData,{}),Vc.execute(e,t)}async function Uc(e,t){if(Zs(t.fhevmContext.hostContractVersion(`KMSVerifier`),{major:0,minor:2}))throw Error(`getContextSignersAndThresholdFromExtraData requires KMSVerifier >= v0.2.0`);let n=I(e),r=t.extraData.bytesHex,i=await e.runtime.ethereum.readContract(n,{address:t.kmsVerifierAddress,abi:Io,args:[r],functionName:Io[0].name});if(!Array.isArray(i)||i.length<2)throw Error(`Invalid getContextSignersAndThresholdFromExtraData result.`);let a=i[0],o=i[1];try{Hi(a,{})}catch(e){throw Error(`Invalid kms signers addresses.`,{cause:e})}if(!En(o))throw Error(`Invalid threshold.`);return Object.freeze({threshold:Number(o),signers:a})}async function Wc(e,t){if(t===!0)return Promise.all(e.map(e=>e()));let n=[];for(let t of e)n.push(await t());return n}var Gc=Ws({executeFn:qc,cacheKeyFn:(e,t)=>`${e.runtime.uid.toLowerCase()}:${t.kmsVerifierAddress.toLowerCase()}`,ttlMs:Us});function Kc(e,t){return Gc.execute(e,t)}async function qc(e,t){if(!Zs(t.fhevmContext.hostContractVersion(`KMSVerifier`),{major:0,minor:2}))throw Error(`getContextSignersAndThreshold requires KMSVerifier < v0.2.0`);let n=await Wc([()=>Jc(e,t),()=>Yc(e,t)],e.options.batchRpcCalls),r=n[0],i=n[1];if(!En(r))throw Error(`Invalid KMSVerifier kms signers threshold.`);try{Hi(i,{})}catch(e){throw Error(`Invalid KMSVerifier kms signers addresses.`,{cause:e})}return Object.freeze({threshold:qn(Number(r)),signers:i})}async function Jc(e,t){let n=I(e),r=await e.runtime.ethereum.readContract(n,{address:t.kmsVerifierAddress,abi:ko,args:[],functionName:ko[0].name});if(!En(r))throw Error(`Invalid threshold.`);return Number(r)}async function Yc(e,t){let n=I(e),r=await e.runtime.ethereum.readContract(n,{address:t.kmsVerifierAddress,abi:Ao,args:[],functionName:Ao[0].name});try{Hi(r,{})}catch(e){throw Error(`Invalid kms signers addresses.`,{cause:e})}return r}async function Xc(e,t){return Zs(t.fhevmContext.hostContractVersion(`KMSVerifier`),{major:0,minor:2})?Qc(e,t):$c(e,t)}async function Zc(e,t){_c(t.extraData,{});let n=t.fhevmContext.hostContractVersion(`KMSVerifier`);if(!yc(t.extraData,n))throw Error(`KmsExtraData ${t.extraData.bytesHex} is not compatible with ${n.contractName} ${n.version}`);return Zs(n,{major:0,minor:2})?el(e,t):tl(e,t)}async function Qc(e,t){return el(e,t)}async function $c(e,t){let n=dc({kmsContextId:await Rc(e,t)});return tl(e,{...t,extraData:n})}async function el(e,t){let n=await Kc(e,t);return Mc(new WeakRef(e.runtime),{...t,kmsContextId:0n,kmsEpochId:0n,kmsSigners:n.signers,kmsSignerThreshold:n.threshold,kmsMpcThreshold:void 0})}async function tl(e,t){let{signers:n,threshold:r}=await Hc(e,t);return Mc(new WeakRef(e.runtime),{...t,kmsContextId:t.extraData.kmsContextId,kmsEpochId:t.extraData.kmsEpochId,kmsSigners:n,kmsSignerThreshold:r,kmsMpcThreshold:void 0})}var nl=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},V=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},rl,il,al,ol,sl,cl=class{constructor(e,t){rl.set(this,void 0),il.set(this,void 0),nl(this,il,e,`f`),nl(this,rl,t,`f`)}get type(){return V(this,rl,`f`)}get value(){return V(this,il,`f`)}toString(){return`TypedValue<${V(this,rl,`f`)}>`}toJSON(){return{type:V(this,rl,`f`)}}};rl=new WeakMap,il=new WeakMap,Object.freeze(cl.prototype);function ll(e,t){return e instanceof cl?t?.type===void 0||e.type===t.type:!1}function ul(e,t){let n=t.type===void 0?`TypedValue`:`TypedValue<${t.type}>`;if(!(t.type===void 0?ll(e):ll(e,{type:t.type})))throw new C({subject:t.subject,type:typeof e,expectedType:n},t)}function dl(e){if(typeof e!=`object`||!e||e===void 0)throw new C({subject:`input`,type:typeof e,expectedType:`{ type, value }`},{});if(ll(e))return e;let t=e.type,n,r;if(t===`bool`)r=`bool`,n=ia(e.value,{});else if(t===`address`||t===`uint160`){if(r=`address`,typeof e.value==`string`)n=Wi(e.value);else{let t=Gn(e.value,`uint160`,{});n=Wi(Ur(BigInt(t),{byteLength:20}))}}else{if(Wn(t,{}),t===`uint160`)throw new C({subject:`input.type`,type:t,expectedType:`ValueTypeName`},{});r=t,n=Vn(Gn(e.value,t,{}),t)}let i=new cl(n,r);return Object.freeze(i),i}var fl=class{constructor(){al.add(this),ol.set(this,[])}addBool(e){return V(this,al,`m`,sl).call(this,`bool`,e)}addUint8(e){return V(this,al,`m`,sl).call(this,`uint8`,e)}addUint16(e){return V(this,al,`m`,sl).call(this,`uint16`,e)}addUint32(e){return V(this,al,`m`,sl).call(this,`uint32`,e)}addUint64(e){return V(this,al,`m`,sl).call(this,`uint64`,e)}addUint128(e){return V(this,al,`m`,sl).call(this,`uint128`,e)}addUint256(e){return V(this,al,`m`,sl).call(this,`uint256`,e)}addAddress(e){return V(this,al,`m`,sl).call(this,`address`,e)}addTypedValue(e){if(!ll(e))throw new C({subject:`typedValue`,type:typeof e,expectedType:`TypedValue`},{});return V(this,ol,`f`).push(e),this}build(){return Object.freeze([...V(this,ol,`f`)])}};ol=new WeakMap,al=new WeakSet,sl=function(e,t){if(ll(t,{type:e}))V(this,ol,`f`).push(t);else if(typeof t==`object`){let n=t;if(n.type!==e)throw new C({subject:`value`,type:n.type,expectedType:e},{});V(this,ol,`f`).push(dl({type:e,value:n.value}))}else V(this,ol,`f`).push(dl({type:e,value:t}));return this};function pl(e){switch(ul(e,{}),e.type){case`uint8`:case`uint16`:case`uint32`:case`uint64`:case`uint128`:case`uint256`:case`address`:return Ur(BigInt(e.value),{byteLength:32});case`bool`:return Ur(e.value?1n:0n,{byteLength:32})}}var ml=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},hl=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},gl,_l,vl,yl=Symbol(`ClearValue.token`),bl=Symbol(`ClearValue.verifyOrigin`),xl=class{constructor(e,t){if(gl.set(this,void 0),_l.set(this,void 0),vl.set(this,void 0),e!==yl)throw Error(`Unauthorized`);ml(this,_l,t.handle,`f`),ml(this,gl,t.value,`f`),ml(this,vl,t.originToken,`f`)}get value(){return hl(this,gl,`f`)}get type(){return hl(this,_l,`f`).fheType.substring(1)}get handle(){return hl(this,_l,`f`)}get typedValue(){return{type:this.type,value:this.value}}[(gl=new WeakMap,_l=new WeakMap,vl=new WeakMap,bl)](e){return hl(this,vl,`f`)===e}toString(){return`ClearValue<${hl(this,_l,`f`).fheType}>`}toJSON(){return{handle:hl(this,_l,`f`).bytes32Hex,fheType:hl(this,_l,`f`).fheType}}};Object.freeze(xl.prototype);function Sl(e,t){return e instanceof xl&&e[bl](t)}function Cl(e,t){return wl(e,{originToken:t}),dl(e.typedValue)}function wl(e,t){if(!Sl(e,t.originToken))throw new C({subject:t.subject,type:typeof e,expectedType:`ClearValue`},t)}function Tl(e){let t=new xl(yl,{handle:e.handle,value:Aa(e.handle.fheType,e.value),originToken:e.originToken});return Object.freeze(t),t}function El(e){let{orderedValues:t,orderedHandles:n,originToken:r}=e;if(n.length!==t.length)throw new C({subject:`orderedClearValues`,type:`Array(${t.length})`,expectedType:`Array(${n.length}) — must match orderedHandles length`},{});let i=n.map((e,n)=>Tl({handle:e,value:t[n],originToken:r}));return Object.freeze(i)}function Dl(e){return BigInt(typeof e==`boolean`?e?`0x01`:`0x00`:e)}function Ol(e,t){let n=t.orderedClearValues,r=[],i=[];for(let e of n){let t=e.handle.fheTypeId,n=Dl(e.value);switch(r.push(`uint256`),t){case 7:i.push(`0x${n.toString(16).padStart(40,`0`)}`);break;case 0:if(n!==BigInt(0)&&n!==BigInt(1))throw Error(`Invalid ebool clear text value ${n}. Expecting 0 or 1.`);i.push(n);break;case 2:case 3:case 4:case 5:case 6:case 8:i.push(n);break;default:ea(t,`Unsupported Fhevm primitive type id: ${t}`)}}return{abiTypes:r,abiValues:i,abiEncodedClearValues:e.runtime.ethereum.encode({types:r,values:i})}}async function kl(e,t){let{domain:n,types:r,primaryType:i,signatures:a,message:o}=t;xr(a,{subject:`signatures`});let s=r[i];if(s===void 0)throw Error(`Primary type "${i}" not found in types`);return await Promise.all(a.map(t=>e.runtime.ethereum.recoverTypedDataAddress({signature:t,domain:n,primaryType:i,types:{[i]:[...s]},message:o})))}function Al(e){let{chainId:t,verifyingContractAddressDecryption:n}=e;zn(t,{}),E(n,{});let r={name:`Decryption`,version:`1`,chainId:BigInt(t),verifyingContract:D(n)};return Object.freeze(r),r}function jl(e,t,n){x(e,`name`,t,{expectedValue:`Decryption`,...n}),x(e,`version`,t,{expectedValue:`1`,...n}),Qn(e,`chainId`,t,n),Yi(e,`verifyingContract`,t,n)}var Ml={EIP712Domain:[{name:`name`,type:`string`},{name:`version`,type:`string`},{name:`chainId`,type:`uint256`},{name:`verifyingContract`,type:`address`}],PublicDecryptVerification:[{name:`ctHandles`,type:`bytes32[]`},{name:`decryptedResult`,type:`bytes`},{name:`extraData`,type:`bytes`}]};Object.freeze(Ml),Object.freeze(Ml.EIP712Domain),Object.freeze(Ml.PublicDecryptVerification),Ml.EIP712Domain.forEach(Object.freeze),Ml.PublicDecryptVerification.forEach(Object.freeze);async function Nl(e,t){let{kmsSignersContext:n,orderedHandles:r,orderedAbiEncodedClearValues:i}=t,a=lc(Nc(n)),o={ctHandles:r.map(e=>e.bytes32Hex),decryptedResult:i,extraData:a};Pc(n,await kl(e,{domain:Al({chainId:e.chain.fhevm.gateway.id,verifyingContractAddressDecryption:e.chain.fhevm.gateway.contracts.decryption.address}),types:Ml,primaryType:`PublicDecryptVerification`,signatures:t.kmsPublicDecryptEip712Signatures,message:o}))}var Pl=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Fl=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Il,Ll,Rl,zl,Bl=Symbol(`PublicDecryptionProof.token`),Vl=class{constructor(e,t){if(Il.set(this,void 0),Ll.set(this,void 0),Rl.set(this,void 0),zl.set(this,void 0),e!==Bl)throw Error(`Unauthorized`);if(t.orderedClearValues.length===0)throw Error(`PublicDecryptionProof requires at least one clear value`);Pl(this,Il,t.decryptionProof,`f`),Pl(this,Ll,Object.freeze([...t.orderedClearValues]),`f`),Pl(this,zl,t.extraData,`f`),Pl(this,Rl,t.orderedAbiEncodedClearValues,`f`)}get decryptionProof(){return Fl(this,Il,`f`)}get orderedClearValues(){return Fl(this,Ll,`f`)}get orderedAbiEncodedClearValues(){return Fl(this,Rl,`f`)}get extraData(){return Fl(this,zl,`f`)}};Il=new WeakMap,Ll=new WeakMap,Rl=new WeakMap,zl=new WeakMap,Object.freeze(Vl),Object.freeze(Vl.prototype);async function Hl(e,t){await Nl(e,t);let{orderedHandles:n,orderedAbiEncodedClearValues:r,kmsPublicDecryptEip712Signatures:i,kmsSignersContext:a,originToken:o}=t,s=lc(Nc(a)),c=Kr([e.runtime.ethereum.encodePacked({types:[`uint8`],values:[i.length]}),e.runtime.ethereum.encodePacked({types:Array(i.length).fill(`bytes`),values:i}),s]),l=n.map(e=>e.solidityPrimitiveTypeName),u=e.runtime.ethereum.decode({types:l,encodedData:r});if(u.length!==n.length)throw Error(`Invalid decrypted result.`);let d=El({orderedHandles:n,orderedValues:n.map((e,t)=>ja(e.fheType,u[t])),originToken:o});return new Vl(Bl,{decryptionProof:c,orderedClearValues:d,orderedAbiEncodedClearValues:Ol(e,{orderedClearValues:d}).abiEncodedClearValues,extraData:s})}var Ul=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Wl=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Gl,Kl,ql=class extends g{constructor(e){super(e),Gl.set(this,void 0),Kl.set(this,void 0),Ul(this,Gl,e.contractAddress,`f`),Ul(this,Kl,e.contractName,`f`)}get contractAddress(){return Wl(this,Gl,`f`)}get contractName(){return Wl(this,Kl,`f`)}};Gl=new WeakMap,Kl=new WeakMap;var Jl=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Yl=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Xl,Zl=class extends ql{constructor({contractAddress:e,handles:t}){let n=t.join(`, `);super({message:t.length===1?`Handle ${t[0]} is not allowed for public decryption`:`${t.length} handles are not allowed for public decryption: ${n}`,name:`AclPublicDecryptionError`,contractAddress:e,contractName:`ACL`}),Xl.set(this,void 0),Jl(this,Xl,t,`f`)}get handles(){return Yl(this,Xl,`f`)}};Xl=new WeakMap;var Ql=class extends ql{constructor({contractAddress:e,message:t}){super({message:t,name:`AclUserDecryptionError`,contractAddress:e,contractName:`ACL`})}};async function $l(e,t){let{aclAddress:n,handles:r}=t;return await Wc(r.map(t=>()=>eu(e,{aclAddress:n,handle:t})),e.options.batchRpcCalls)}async function eu(e,t){let{aclAddress:n,handle:r}=t,i=I(e),a=await e.runtime.ethereum.readContract(i,{address:n,abi:Fo,args:[r.bytes32Hex],functionName:Fo[0].name});if(typeof a!=`boolean`)throw Error(`Invalid isAllowedForDecryption result.`);return a}async function tu(e,t){let{aclAddress:n,handles:r}=t,i=await $l(e,t),a=r.filter((e,t)=>i[t]!==!0).map(e=>e.bytes32Hex);if(a.length>0)throw new Zl({contractAddress:n,handles:a})}async function nu(e,t){let{handles:n,options:r,originToken:i,fhevmContext:a}=t,o=await Xc(e,{kmsVerifierAddress:e.chain.fhevm.contracts.kmsVerifier.address,protocolConfigAddress:e.chain.fhevm.contracts.protocolConfig?.address,fhevmContext:a}),s=Nc(o),c=n,l={auth:e.runtime.config.auth,...r};if(c.length===0)throw Error(`handles must not be empty, at least one handle is required`);$a(c),qa(c,BigInt(e.chain.id)),await tu(e,{aclAddress:e.chain.fhevm.contracts.acl.address,handles:c});let{orderedAbiEncodedClearValues:u,kmsPublicDecryptEip712Signatures:d}=await e.runtime.relayer.fetchPublicDecrypt(e,{payload:{orderedHandles:c,extraData:s.bytesHex},options:l,fhevmContext:a});return await Hl(e,{originToken:i,orderedHandles:c,orderedAbiEncodedClearValues:u,kmsPublicDecryptEip712Signatures:d,kmsSignersContext:o})}async function ru(e,t){let n=Wa(t.encryptedValue),r=await L(e),i=Symbol(`decryptPublicValues`);return Cl((await nu(e,{...t,handles:[n],originToken:i,fhevmContext:r})).orderedClearValues[0],i)}async function iu(e,t){let n=t.encryptedValues.map(Wa),r=await L(e),i=Symbol(`decryptPublicValues`);return(await nu(e,{...t,handles:n,originToken:i,fhevmContext:r})).orderedClearValues.map(e=>Cl(e,i))}async function au(e,t){let n=t.encryptedValues.map(Wa),r=await L(e),i=Symbol(`decryptPublicValues`),a=await nu(e,{...t,handles:n,originToken:i,fhevmContext:r}),o=a.orderedClearValues.map(e=>Cl(e,i));return Object.freeze({clearValues:o,checkSignaturesArgs:Object.freeze({handlesList:Object.freeze(n.map(e=>e.bytes32Hex)),abiEncodedCleartexts:a.orderedAbiEncodedClearValues,decryptionProof:a.decryptionProof})})}var ou=class extends g{constructor(e){super({...e,message:e.message??`FHEVM InputProof is invalid.`,name:`InputProofError`})}},su=class extends g{constructor(e){super({...e,name:`TooManyHandlesError`,message:`Trying to pack ${e.numberOfHandles} handles. Packing more than 256 variables in a single input ciphertext is unsupported`})}},cu=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},lu=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},uu,du,fu,pu,mu,hu=Symbol(`InputProof.token`),gu=class{constructor(e,t){if(uu.set(this,void 0),du.set(this,void 0),fu.set(this,void 0),pu.set(this,void 0),mu.set(this,void 0),e!==hu)throw Error(`Unauthorized`);let{inputProofBytesHex:n,coprocessorSignatures:r,inputHandles:i,extraData:a,signedHandleAccess:o}=t;y(i.length>0),y(r.length>0),cu(this,uu,n,`f`),cu(this,fu,r,`f`),cu(this,du,i,`f`),cu(this,pu,a,`f`),o!==void 0&&cu(this,mu,{...o},`f`),Object.freeze(lu(this,fu,`f`)),Object.freeze(lu(this,du,`f`)),Object.freeze(lu(this,mu,`f`)),Object.freeze(this)}get bytesHex(){return lu(this,uu,`f`)}get coprocessorSignatures(){return lu(this,fu,`f`)}get inputHandles(){return lu(this,du,`f`)}get extraData(){return lu(this,pu,`f`)}get verified(){return lu(this,mu,`f`)!==void 0}get signedHandleAccess(){return lu(this,mu,`f`)}};uu=new WeakMap,du=new WeakMap,fu=new WeakMap,pu=new WeakMap,mu=new WeakMap,Object.freeze(gu),Object.freeze(gu.prototype);function _u({coprocessorEip712Signatures:e,inputHandles:t,extraData:n,signedHandleAccess:r}){if(t.length===0)throw new ou({message:`Input proof must contain at least one external handle`});r!==void 0&&(Bi(r.userAddress,{}),Bi(r.contractAddress,{})),xr(e,{}),pr(n,{});let i=t.length,a=e.length;if(i>255)throw new su({numberOfHandles:i});y(a<=255);let o=jn(i),s=jn(i);y(o.length===2),y(s.length===2);let c=``;return c+=jn(t.length),c+=jn(e.length),t.forEach(e=>c+=e.bytes32HexNo0x),e.forEach(e=>c+=b(e)),c+=b(n),y(c.length===(2+i*32+a*65)*2+(n.length-2)),new gu(hu,{inputProofBytesHex:`0x${c}`,coprocessorSignatures:[...e],inputHandles:t,extraData:n,signedHandleAccess:r})}var vu=`CiphertextVerification`,yu={CiphertextVerification:[{name:`ctHandles`,type:`bytes32[]`},{name:`userAddress`,type:`address`},{name:`contractAddress`,type:`address`},{name:`contractChainId`,type:`uint256`},{name:`extraData`,type:`bytes`}]};Object.freeze(yu),Object.freeze(yu.CiphertextVerification),yu.CiphertextVerification.forEach(Object.freeze);function bu({gatewayChainId:e,verifyingContractAddressInputVerification:t}){zn(e,{}),E(t,{});let n={name:`InputVerification`,version:`1`,chainId:BigInt(e),verifyingContract:D(t)};return Object.freeze(n),n}var xu=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Su=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Cu,wu,Tu,Eu,Du,Ou=Symbol(`CoprocessorSignersContext.token`),ku=Symbol(`CoprocessorSignersContext.verify`),Au=class e{constructor(e,t,n){if(Cu.set(this,void 0),wu.set(this,void 0),Tu.set(this,void 0),Eu.set(this,void 0),Du.set(this,void 0),e!==Ou)throw Error(`Unauthorized`);xu(this,Cu,t,`f`),xu(this,wu,n.address,`f`),xu(this,Tu,[...n.coprocessorSigners],`f`),xu(this,Du,n.coprocessorSignerThreshold,`f`),xu(this,Eu,new Set(Su(this,Tu,`f`).map(e=>e.toLowerCase())),`f`),Object.freeze(Su(this,Tu,`f`)),Object.freeze(this)}get address(){return Su(this,wu,`f`)}get signers(){return Su(this,Tu,`f`)}get threshold(){return Su(this,Du,`f`)}has(e){return Su(this,Eu,`f`).has(e)}static[(Cu=new WeakMap,wu=new WeakMap,Tu=new WeakMap,Eu=new WeakMap,Du=new WeakMap,ku)](t,n){if(!(t instanceof e))throw Error(`Invalid CoprocessorSignersContext instance`);To({actualOwner:Su(t,Cu,`f`),expectedOwner:n,name:`CoprocessorSignersContext`})}toJSON(){return{address:Su(this,wu,`f`),signers:Su(this,Tu,`f`),threshold:Su(this,Du,`f`)}}};Object.freeze(Au.prototype),Object.freeze(Au);function ju(e,t){return new Au(Ou,e,t)}function Mu(e,t){let n=`coprocessor`,r=new Set;t.forEach(e=>{if(r.has(e.toLowerCase()))throw new no({duplicateAddress:e,type:n});r.add(e.toLowerCase())});for(let r of t)if(!e.has(r.toLowerCase()))throw new eo({unknownAddress:r,type:n});if(t.length<e.threshold)throw new to({type:n})}var Nu=Ws({executeFn:Fu,cacheKeyFn:(e,t)=>`${e.runtime.uid.toLowerCase()}:${t.address.toLowerCase()}`,ttlMs:Us});function Pu(e,t){return Nu.execute(e,t)}async function Fu(e,t){let n=await Wc([()=>Iu(e,t),()=>Lu(e,t)],e.options.batchRpcCalls),r=n[0],i=n[1];if(!En(r))throw Error(`Invalid InputVerifier coprocessor signers threshold.`);try{Hi(i,{})}catch(e){throw Error(`Invalid InputVerifier coprocessor signers addresses.`,{cause:e})}return Object.freeze({threshold:qn(Number(r)),signers:i})}async function Iu(e,t){let n=I(e),r=t.address,i=await e.runtime.ethereum.readContract(n,{address:r,abi:ko,args:[],functionName:ko[0].name});if(!En(i))throw Error(`Invalid threshold.`);return Number(i)}async function Lu(e,t){let n=I(e),r=t.address,i=await e.runtime.ethereum.readContract(n,{address:r,abi:No,args:[],functionName:No[0].name});try{Hi(i,{})}catch(e){throw Error(`Invalid coprocessor signers addresses.`,{cause:e})}return i}async function Ru(e,t){let n=await Pu(e,t);return ju(new WeakRef(e.runtime),{...t,coprocessorSigners:n.signers,coprocessorSignerThreshold:n.threshold})}async function zu(e,t){let n={ctHandles:t.handles.map(e=>e.bytes32Hex),userAddress:t.userAddress,contractAddress:t.contractAddress,contractChainId:t.chainId,extraData:t.extraData},r=await kl(e,{domain:bu({gatewayChainId:e.chain.fhevm.gateway.id,verifyingContractAddressInputVerification:e.chain.fhevm.gateway.contracts.inputVerification.address}),primaryType:vu,types:yu,signatures:t.coprocessorSignatures,message:n});Mu(await Ru(e,{address:e.chain.fhevm.contracts.inputVerifier.address,fhevmContext:t.fhevmContext}),r)}async function Bu(e,t){let n=t.signedHandleAccess??t.inputProof.signedHandleAccess;if(n===void 0)throw new ou({message:`Missing signedHandleAccess argument.`});let r=t.inputProof.inputHandles[0].chainId;return await zu(e,{chainId:r,coprocessorSignatures:t.inputProof.coprocessorSignatures,extraData:t.inputProof.extraData,handles:t.inputProof.inputHandles,userAddress:n.userAddress,contractAddress:n.contractAddress,fhevmContext:t.fhevmContext}),t.inputProof}var H=class extends g{constructor(e){super({...e,message:e.message??`FHEVM ZkProof is invalid.`,name:`ZkProofError`})}},Vu=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},U=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Hu,Uu,Wu,Gu,Ku,qu,Ju,Yu,Xu,Zu=Symbol(`ZkProof.token`),Qu=Symbol(`ZkProof.getUnsafeRawBytes`),$u=`ZK-w_rct`,ed=`ZK-w_hdl`,td=class{constructor(e,t){if(Hu.set(this,void 0),Uu.set(this,void 0),Wu.set(this,void 0),Gu.set(this,void 0),Ku.set(this,void 0),qu.set(this,void 0),Ju.set(this,void 0),Yu.set(this,void 0),Xu.set(this,void 0),e!==Zu)throw Error(`Unauthorized`);Vu(this,Hu,t.chainId,`f`),Vu(this,Uu,t.aclContractAddress,`f`),Vu(this,Wu,t.contractAddress,`f`),Vu(this,Gu,t.userAddress,`f`),Vu(this,Ku,t.ciphertextWithZkProof,`f`),Vu(this,qu,Object.freeze([...t.encryptionBits]),`f`),Vu(this,Ju,Object.freeze(U(this,qu,`f`).map(e=>ya(ga(e)))),`f`),Vu(this,Xu,t.extraData,`f`),Object.freeze(this)}get chainId(){return U(this,Hu,`f`)}get aclContractAddress(){return U(this,Uu,`f`)}get contractAddress(){return U(this,Wu,`f`)}get userAddress(){return U(this,Gu,`f`)}get ciphertextWithZkProof(){return new Uint8Array(U(this,Ku,`f`))}get encryptionBits(){return U(this,qu,`f`)}get fheTypeIds(){return U(this,Ju,`f`)}[(Hu=new WeakMap,Uu=new WeakMap,Wu=new WeakMap,Gu=new WeakMap,Ku=new WeakMap,qu=new WeakMap,Ju=new WeakMap,Yu=new WeakMap,Xu=new WeakMap,Qu)](e){if(e!==Zu)throw Error(`Unauthorized`);return U(this,Ku,`f`)}toString(){return`ZkProof(chainId=${String(U(this,Hu,`f`))}, contract=${U(this,Wu,`f`)}, user=${U(this,Gu,`f`)}, types=${U(this,Ju,`f`).length}, bytes=${String(U(this,Ku,`f`).length)})`}getInputHandles(){return U(this,Yu,`f`)===void 0&&(Vu(this,Yu,od({ciphertextWithZkProof:U(this,Ku,`f`),aclContractAddress:U(this,Uu,`f`),fheTypeIds:U(this,Ju,`f`),chainId:U(this,Hu,`f`)}),`f`),Object.freeze(U(this,Yu,`f`))),U(this,Yu,`f`)}getExtraData(){return U(this,Xu,`f`)}toJSON(){return{chainId:U(this,Hu,`f`)<=2**53-1?Number(U(this,Hu,`f`)):U(this,Hu,`f`),aclContractAddress:U(this,Uu,`f`),contractAddress:U(this,Wu,`f`),userAddress:U(this,Gu,`f`),ciphertextWithZkProof:Ir(U(this,Ku,`f`)),encryptionBits:U(this,qu,`f`),fheTypeIds:U(this,Ju,`f`)}}};Object.freeze(td),Object.freeze(td.prototype);function nd(e){return e instanceof td}function rd(e,t){if(!nd(e))throw new C({subject:t.subject,type:typeof e,expectedType:`ZkProof`,metaMessages:t.metaMessages},t)}async function id(e,t,n){if(e instanceof td)return e;zn(e.chainId,{});let r=BigInt(e.chainId);E(e.aclContractAddress,{}),E(e.contractAddress,{}),E(e.userAddress,{});let i=D(e.aclContractAddress),a=D(e.contractAddress),o=D(e.userAddress),s=Wr(e.ciphertextWithZkProof,{subject:`ciphertextWithZkProof`,copy:n?.copy!==!1});if(s.length===0)throw new H({message:`ciphertextWithZkProof argument should not be empty`});return new td(Zu,{chainId:r,aclContractAddress:i,contractAddress:a,userAddress:o,ciphertextWithZkProof:s,encryptionBits:await sd(e.encryptionBits,s,n?.zkProofParser),extraData:t})}function ad(e,t){if(e.length!==t.length)throw new H({message:`Encryption count mismatch, expected ${t.length}, got ${e.length}.`});for(let n=0;n<e.length;++n)if(e[n]!==t[n])throw new H({message:`Encryption type mismatch at index ${n}.`})}function od(e,t){let n=Fr(Fi(Gr(new TextEncoder().encode($u),e.ciphertextWithZkProof))),r=[];for(let[i,a]of e.fheTypeIds.entries()){let o=cd(Br(n),e.aclContractAddress,e.chainId,i);r.push(Ka({hash21:o,chainId:e.chainId,fheTypeId:a,...t?.version===void 0?{}:{version:t.version},index:i}))}return r}async function sd(e,t,n){if(e!=null)return va(e,{subject:`encryptionBits`}),n!=null&&ad((await n.parserFn.parseTFHEProvenCompactCiphertextList({ciphertextWithZkProof:t,tfheVersion:n.tfheVersion})).encryptionBits,e),e;if(n!=null)return(await n.parserFn.parseTFHEProvenCompactCiphertextList({ciphertextWithZkProof:t,tfheVersion:n.tfheVersion})).encryptionBits;throw new H({message:`Missing encryption bits`})}function cd(e,t,n,r){let i=new Uint8Array([r]),a=Ri(t),o=Pn(n);return Fr(Fi(Gr(new TextEncoder().encode(ed),e,i,a,o))).slice(0,44)}async function ld(e,t){let{zkProof:n,options:r,fhevmContext:i}=t;rd(n,{});let a={auth:e.runtime.config.auth,...r},o=n.getInputHandles();if(o.length===0)throw new ou({message:`Input proof must contain at least one external handle`});let{handles:s,coprocessorEip712Signatures:c}=await e.runtime.relayer.fetchCoprocessorSignatures(e,{payload:{zkProof:n},options:a,fhevmContext:i});return Ga(o,s),await Bu(e,{inputProof:_u({coprocessorEip712Signatures:c,inputHandles:o,extraData:n.getExtraData(),signedHandleAccess:{userAddress:n.userAddress,contractAddress:n.contractAddress}}),fhevmContext:i})}var ud={EIP712Domain:[{name:`name`,type:`string`},{name:`version`,type:`string`},{name:`chainId`,type:`uint256`},{name:`verifyingContract`,type:`address`}],UserDecryptRequestVerification:[{name:`publicKey`,type:`bytes`},{name:`contractAddresses`,type:`address[]`},{name:`startTimestamp`,type:`uint256`},{name:`durationDays`,type:`uint256`},{name:`extraData`,type:`bytes`}]};Object.freeze(ud),Object.freeze(ud.EIP712Domain),Object.freeze(ud.UserDecryptRequestVerification),ud.EIP712Domain.forEach(Object.freeze),ud.UserDecryptRequestVerification.forEach(Object.freeze);async function dd(e,t){let n=await kl(e,{domain:Al({chainId:e.chain.id,verifyingContractAddressDecryption:e.chain.fhevm.gateway.contracts.decryption.address}),types:ud,primaryType:`UserDecryptRequestVerification`,signatures:[t.signature],message:t.message});if(n.length!==1)throw new to({type:`kms`});if(n[0]!==t.signer)throw new eo({unknownAddress:n[0],type:`kms`})}var fd={EIP712Domain:[{name:`name`,type:`string`},{name:`version`,type:`string`},{name:`chainId`,type:`uint256`},{name:`verifyingContract`,type:`address`}],DelegatedUserDecryptRequestVerification:[{name:`publicKey`,type:`bytes`},{name:`contractAddresses`,type:`address[]`},{name:`delegatorAddress`,type:`address`},{name:`startTimestamp`,type:`uint256`},{name:`durationDays`,type:`uint256`},{name:`extraData`,type:`bytes`}]};Object.freeze(fd),Object.freeze(fd.EIP712Domain),Object.freeze(fd.DelegatedUserDecryptRequestVerification),fd.EIP712Domain.forEach(Object.freeze),fd.DelegatedUserDecryptRequestVerification.forEach(Object.freeze);async function pd(e,t){let n=await kl(e,{domain:Al({chainId:e.chain.id,verifyingContractAddressDecryption:e.chain.fhevm.gateway.contracts.decryption.address}),types:fd,primaryType:`DelegatedUserDecryptRequestVerification`,signatures:[t.signature],message:t.message});if(n.length!==1)throw new to({type:`kms`});if(n[0]!==t.signer)throw new eo({unknownAddress:n[0],type:`kms`})}function md(e){return Array.isArray(e)?e:[e]}function hd(e){Object.freeze(e);for(let t of Object.values(e))typeof t==`object`&&t&&!Array.isArray(t)&&!Object.isFrozen(t)&&hd(t);return e}function gd(e,t){if(e===t)return!0;if(Array.isArray(t))return Array.isArray(e)&&e.length===t.length&&t.every((t,n)=>gd(e[n],t));if(typeof t!=`object`||!t)return e===t;if(typeof e!=`object`||!e||Array.isArray(e))return!1;let n=e,r=t,i=Object.keys(n),a=Object.keys(r);return i.length===a.length&&a.every(e=>Object.hasOwn(n,e)&&gd(n[e],r[e]))}function _d(e){let{verifyingContractAddressDecryption:t,chainId:n,publicKey:r,contractAddresses:i,startTimestamp:a,durationDays:o,extraData:s}=e,c=xd(r);zn(n,{}),E(t,{}),Gi(i,{}),T(a,{}),T(o,{}),_c(s,{});let l=i.map(D),u={domain:Al({chainId:n,verifyingContractAddressDecryption:t}),types:ud,primaryType:`UserDecryptRequestVerification`,message:{publicKey:c,contractAddresses:l,startTimestamp:a.toString(),durationDays:o.toString(),extraData:s.bytesHex}};return Object.freeze(u),Object.freeze(u.domain),Object.freeze(u.types),Object.freeze(u.types.EIP712Domain),Object.freeze(u.types.UserDecryptRequestVerification),Object.freeze(u.message),Object.freeze(u.message.contractAddresses),u}function vd(e,t,n){yd(e,t,`UserDecryptRequestVerification`,n)}function yd(e,t,n,r){v(e,`domain`,t,r),jl(e.domain,`${t}.domain`,r),v(e,`types`,t,r);let i=n===`DelegatedUserDecryptRequestVerification`?fd:ud;if(!gd(e.types,i))throw Error(`Unexpected KmsUserDecryptEip712V1Types`);x(e,`primaryType`,t,{expectedValue:n,...r}),v(e,`message`,t,r);let a=e.message;bd(a,`${t}.message`,r)}function bd(e,t,n){Cr(e,`publicKey`,t,n),Xi(e,`contractAddresses`,t,n),x(e,`startTimestamp`,t,n),x(e,`durationDays`,t,n),Cr(e,`extraData`,t,n),vc(e.extraData,n),Rn(e.startTimestamp,{max:w}),Rn(e.durationDays,{max:w})}function xd(e){if(e==null)throw Error(`Missing publicKey argument.`);let t,n=e;if(typeof n==`string`)t=gr(on(n));else if(n instanceof Uint8Array)t=Ir(n);else throw Error(`Invalid publicKey argument.`);return t}function Sd(e){let{verifyingContractAddressDecryption:t,chainId:n,publicKey:r,contractAddresses:i,startTimestamp:a,durationDays:o,extraData:s,delegatorAddress:c}=e,l=wd(r);Gi(i,{}),T(a,{}),T(o,{}),E(c,{}),_c(s,{});let u=i.map(D),d=D(c),f={types:fd,primaryType:`DelegatedUserDecryptRequestVerification`,domain:Al({chainId:n,verifyingContractAddressDecryption:t}),message:{publicKey:l,contractAddresses:u,delegatorAddress:d,startTimestamp:a.toString(),durationDays:o.toString(),extraData:s.bytesHex}};return Object.freeze(f),Object.freeze(f.domain),Object.freeze(f.types),Object.freeze(f.types.EIP712Domain),Object.freeze(f.types.DelegatedUserDecryptRequestVerification),Object.freeze(f.message),Object.freeze(f.message.contractAddresses),f}function Cd(e,t,n){yd(e,t,`DelegatedUserDecryptRequestVerification`,n),Yi(e.message,`delegatorAddress`,`${t}.message`,n)}function wd(e){if(e==null)throw Error(`Missing publicKey argument.`);let t,n=e;if(typeof n==`string`)t=gr(on(n));else if(n instanceof Uint8Array)t=Ir(n);else throw Error(`Invalid publicKey argument.`);return t}async function Td(e,t){let{tkmsPrivateKey:n,tkmsPublicKeyBytesHex:r}=t;if(await e.runtime.decrypt.getTkmsPublicKeyHex({tkmsPrivateKey:n,tkmsVersion:e.tkmsVersion})!==r)throw Error(`invalid TransportKeyPairKeyPair`)}var Ed=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},W=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Dd,Od,kd,Ad,jd=Symbol(`TransportKeyPair.token`),Md=Symbol(),Nd=Symbol(),Pd=class{constructor(e,t,n){if(Dd.set(this,void 0),Od.set(this,void 0),kd.set(this,void 0),Ad.set(this,void 0),e!==jd)throw Error(`Unauthorized`);Ed(this,Ad,new WeakRef(t),`f`),Ed(this,Dd,n.publicKeyBytesHex,`f`),Ed(this,Od,n.privateKeyBytes,`f`),Ed(this,kd,n.tkmsVersion,`f`)}get publicKey(){return W(this,Dd,`f`)}get tkmsVersion(){return W(this,kd,`f`)}async[(Dd=new WeakMap,Od=new WeakMap,kd=new WeakMap,Ad=new WeakMap,Md)](e,t,n){if(e!==jd)throw Error(`Unauthorized`);if(t!==W(this,Ad,`f`).deref())throw Error(`Invalid runtime`);let r=Co(t,`decrypt`),i=await r.decrypt.deserializeTkmsPrivateKey({tkmsPrivateKeyBytes:W(this,Od,`f`),tkmsVersion:n});try{await Td({runtime:r,tkmsVersion:n},{tkmsPrivateKey:i,tkmsPublicKeyBytesHex:W(this,Dd,`f`)})}catch(e){throw i.free(),e}return i}[Nd](e){if(e!==jd)throw Error(`Unauthorized`);return W(this,kd,`f`)===void 0?{publicKey:W(this,Dd,`f`),privateKey:Ir(W(this,Od,`f`),!1)}:{publicKey:W(this,Dd,`f`),privateKey:Ir(W(this,Od,`f`),!1),tkmsVersion:W(this,kd,`f`)}}toJSON(){return W(this,kd,`f`)===void 0?{publicKey:W(this,Dd,`f`)}:{publicKey:W(this,Dd,`f`),tkmsVersion:W(this,kd,`f`)}}};Object.freeze(Pd),Object.freeze(Pd.prototype);function Fd(e){return e instanceof Pd}function Id(e,t){if(!Fd(e))throw new C({subject:t.subject,type:typeof e,expectedType:`TransportKeyPair`},t)}async function Ld(e,t){let n=t.fhevmContext.tkmsVersion,r=await e.runtime.decrypt.generateTkmsPrivateKey({tkmsVersion:n});try{let t=await e.runtime.decrypt.serializeTkmsPrivateKey({tkmsPrivateKey:r,tkmsVersion:n}),i=await e.runtime.decrypt.getTkmsPublicKeyHex({tkmsPrivateKey:r,tkmsVersion:n});return new Pd(jd,e.runtime,{privateKeyBytes:t,publicKeyBytesHex:i,tkmsVersion:n})}finally{r.free()}}function Rd(e,t){let{value:n}=t;if(Fd(n))return n;let r=`TransportKeyPair`,i={};v(n,`publicKey`,r,{expectedType:`Bytes | BytesHex`,...i}),v(n,`privateKey`,r,{expectedType:`Bytes | BytesHex`,...i});let a=n.publicKey,o=n.privateKey,s=n.tkmsVersion,c;typeof s==`string`&&s.trim().length>0&&(c=s),mr(a,{subject:`${r}.publicKey`}),mr(o,{subject:`${r}.privateKey`});let l=typeof o==`string`?Vr(o,{strict:!0}):o,u=typeof a==`string`?a:Ir(a,!1);return new Pd(jd,e.runtime,{privateKeyBytes:l,publicKeyBytesHex:u,tkmsVersion:c})}function zd(e){return Id(e.transportKeyPair,{}),e.transportKeyPair[Nd](jd)}async function Bd(e,t){let{transportKeyPair:n,fhevmContext:r}=t;return Id(n,{}),await n[Md](jd,e.runtime,r.tkmsVersion)}var Vd=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Hd=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Ud,Wd,Gd,Kd=Symbol(`SignedDecryptionPermitV1.token`),qd=365,Jd=10,Yd=class{constructor(e,t){if(Ud.set(this,void 0),Wd.set(this,void 0),Gd.set(this,void 0),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:1}),e!==Kd)throw Error(`Unauthorized`);Vd(this,Ud,t.eip712,`f`),Vd(this,Wd,t.signature,`f`),Vd(this,Gd,t.signerAddress,`f`)}get eip712(){return Hd(this,Ud,`f`)}get signature(){return Hd(this,Wd,`f`)}get signerAddress(){return Hd(this,Gd,`f`)}assertNotExpired(){nf(Hd(this,Ud,`f`).message,qd)}get transportPublicKey(){return Hd(this,Ud,`f`).message.publicKey}get encryptedDataOwnerAddress(){return this.eip712.primaryType===`DelegatedUserDecryptRequestVerification`?this.eip712.message.delegatorAddress:this.signerAddress}get isDelegated(){return this.eip712.primaryType===`DelegatedUserDecryptRequestVerification`}};Ud=new WeakMap,Wd=new WeakMap,Gd=new WeakMap,Object.freeze(Yd),Object.freeze(Yd.prototype);function Xd(e){return e instanceof Yd}async function Zd(e,t){let{signerAddress:n,signer:r,delegatorAddress:i}=t;E(n,{});let a=D(n);if(i!==void 0&&a.toLowerCase()===i.toLowerCase())throw Error(`signerAddress and delegatorAddress must be different. Use a non-delegated permit to decrypt your own values.`);let o=await Qd(e,t);return await tf(e,{signature:await e.runtime.ethereum.signTypedData(r,{account:a,...o}),signerAddress:a,eip712:o})}async function Qd(e,t){let{contractAddresses:n,startTimestamp:r,durationSeconds:i,transportKeyPair:a,delegatorAddress:o,fhevmContext:s}=t,c=tr(i,{subject:`durationSeconds`});Id(a,{}),o!==void 0&&E(o,{});let l=Nc(await Xc(e,{kmsVerifierAddress:e.chain.fhevm.contracts.kmsVerifier.address,protocolConfigAddress:e.chain.fhevm.contracts.protocolConfig?.address,fhevmContext:s})),u={verifyingContractAddressDecryption:e.chain.fhevm.gateway.contracts.decryption.address,chainId:e.chain.id,contractAddresses:n,durationDays:c,startTimestamp:r,extraData:l,publicKey:a.publicKey},d=o===void 0?_d(u):Sd({...u,delegatorAddress:o});return ef(d),d}async function $d(e,t){let{transportKeyPair:n,permit:r}=t;Id(n,{});let i=`permit-v1`,a={};v(r,`eip712`,i,a),wr(r,`signature`,i,a),qi(r,`signerAddress`,i,a);let o=r.eip712;x(o,`primaryType`,`${i}.eip712`,a);let s=o.primaryType,c=D(r.signerAddress);if(s===`UserDecryptRequestVerification`){if(vd(o,`${i}.eip712`,a),o.message.publicKey.toLowerCase()!==n.publicKey.toLowerCase())throw Error(`The permit's publicKey does not match the TransportKeyPair's publicKey. Ensure the permit was signed with the same key pair.`);return await tf(e,{signature:r.signature,eip712:o,signerAddress:c})}if(s===`DelegatedUserDecryptRequestVerification`){if(Cd(o,`${i}.eip712`,a),o.message.publicKey.toLowerCase()!==n.publicKey.toLowerCase())throw Error(`The permit's publicKey does not match the TransportKeyPair's publicKey. Ensure the permit was signed with the same key pair.`);return await tf(e,{signature:r.signature,eip712:o,signerAddress:c})}throw Error(`Unknown permit primaryType: ${s}`)}function ef(e){if(e.message.contractAddresses.length===0)throw Error(`contractAddresses is empty`);if(e.message.contractAddresses.length>Jd)throw Error(`contractAddresses max length of ${Jd} exceeded`);let t=Number(e.message.durationDays);if(!bn(t))throw Error(`durationDays is not a valid unsigned integer.`);if(t<1)throw Error(`durationDays must be at least 1 day, got ${t}`);if(t>qd)throw Error(`durationDays is above max duration of ${qd}`);if(!Sn(e.message.startTimestamp,115792089237316195423570985008687907853269984665640564039457584007913129639935n))throw Error(`startTimestamp is not a valid Uint256`)}async function tf(e,t){let{signerAddress:n,eip712:r,signature:i}=t;return ef(r),r.primaryType===`UserDecryptRequestVerification`?(await dd(e,{signer:n,message:r.message,signature:i}),new Yd(Kd,t)):(await pd(e,{signer:n,message:r.message,signature:i}),new Yd(Kd,t))}function nf({startTimestamp:e,durationDays:t},n){let r=BigInt(t);if(r===0n)throw Error(`durationDays is zero`);if(r>BigInt(n))throw Error(`durationDays is above max duration of ${n}`);let i=BigInt(e),a=BigInt(Math.floor(Date.now()/1e3));if(i>a)throw Error(`startTimestamp is set in the future`);if(i+r*BigInt(86400)<a)throw Error(`request has expired`)}async function rf(e,t){let n=await L(e);return Qd(e,{...t,fhevmContext:n})}async function af(e,t){let n=await L(e);return Zd(e,{...t,fhevmContext:n})}var of=Symbol(`viem.token`);function sf(e){return Uo(e,of)}function cf(e){return bo(of,e)}async function lf(e){return Vi(await bt(e))}function uf(e){return ke(e.types,e.values)}function df(e){let t=e.types.map(e=>({type:e}));return a(t,e.values)}function ff(e){let t=e.types.map(e=>({type:e}));return[...o(t,e.encodedData)]}async function pf(e,t){return sf(e).readContract(t)}async function mf(e){let t=await sf(e).getChainId();return BigInt(t)}async function hf(e,t){let{account:n,primaryType:r,types:i,domain:a,message:o}=t,s=e;if(typeof s.signTypedData!=`function`)throw Error(`signer does not support signTypedData`);return await s.signTypedData({account:n,domain:a,types:i,primaryType:r,message:o})}var gf=()=>Object.freeze({ethereum:Object.freeze({decode:ff,encode:df,encodePacked:uf,recoverTypedDataAddress:lf,signTypedData:hf,getChainId:mf,readContract:pf})});function _f(e){let t=Error(`Aborted`,{cause:e});return t.name=`AbortError`,t}function vf(e,t){return t?.throwIfAborted(),new Promise((n,r)=>{let i=setTimeout(n,e);t?.addEventListener(`abort`,()=>{clearTimeout(i),r(_f(t.reason))},{once:!0})})}async function yf(e){return typeof e.bytes==`function`?qr(await e.bytes()):qr(await e.arrayBuffer())}var bf=new Set([`message`,`cause`,`stack`,`name`]);function xf(e){let t=[],n=e;for(;typeof n==`object`&&n;){let e=n;if(typeof e.message!=`string`)break;let r=typeof e.name==`string`?e.name:`Error`,i={};for(let t of Object.keys(e)){if(bf.has(t))continue;let n=e[t];(typeof n==`string`||typeof n==`number`)&&(i[t]=n)}t.push({name:r,message:e.message,props:i}),n=e.cause}return t}function Sf(e){let t=xf(e);return t.length===0?[String(e)]:t.map((e,t)=>{let n=t===0,r=Object.entries(e.props);if(n){let t=r.length>0?` [${r.map(([e,t])=>`${e}=${t}`).join(`, `)}]`:``;return`${e.name}: ${e.message}${t}`}{let t=` [${[[`name`,e.name],...r].map(([e,t])=>`${e}=${t}`).join(`, `)}]`;return`Cause: ${e.message}${t}`}})}async function Cf(e){let t,n=Math.max(0,Math.min(1e3,e.retries??3)),r=Math.max(100,e.retryDelayMs??1e3),{url:i,init:a}=e;for(let e=0;e<=n;e++){a?.signal?.throwIfAborted();try{return await fetch(i,a)}catch(i){if(i.name===`AbortError`)throw i;t=i,e<n&&await vf(r,a?.signal??void 0)}}throw t}var wf;function Tf(){return wf??=Ef(),wf}async function Ef(){try{let e=await fetch(`data:text/plain;base64,YQ==`);if(!e.ok)return!1;let t=await e.arrayBuffer();return t.byteLength===1&&new Uint8Array(t)[0]===97}catch{return!1}}var Df=/^[!#$%&'*+\-.^_`|~0-9a-z]+$/,Of=/[\r\n\0]/;function kf(e){let t=e.toLowerCase();if(!Df.test(t))throw Error(`normalizeHeaderName: invalid header name ${JSON.stringify(e)}`);return t}function Af(e){if(Of.test(e))throw Error(`validateHeaderValue: header value contains CR, LF, or NUL`);return e}function jf(e){if(typeof e!=`object`||!e||Array.isArray(e))return{};let t=new Map,n={};for(let[r,i]of Object.entries(e)){let e=kf(r),a=t.get(e);if(a!==void 0)throw Error(`normalizeHeaders: keys '${a}' and '${r}' both lower-case to '${e}'`);t.set(e,r),typeof i==`string`&&(n[e]=Af(i))}return n}function Mf(e,t){if(t)switch(t.type){case`BearerToken`:e.headers.authorization=`Bearer ${Af(t.token)}`;break;case`ApiKeyHeader`:{let n=sn(t.header)?kf(t.header):`x-api-key`;e.headers[n]=Af(t.value);break}case`ApiKeyCookie`:{let n=sn(t.cookie)?kf(t.cookie):`x-api-key`,r=Af(t.value);typeof window<`u`?(document.cookie=`${n}=${r}; path=/; SameSite=Lax; Secure; HttpOnly;`,e.credentials=`include`):e.headers.cookie=`${n}=${r};`;break}}return e}var Nf=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Pf,Ff=class e extends Wt{constructor(t){let n;n=t.cause instanceof e?t.docsPath??t.cause.docsPath:t.docsPath;let r;n!==void 0&&(n.startsWith(`/`)||(n=`/`+n),r=`${e.DEFAULT_DOCS_BASE_URL}${n}${t.docsSlug===void 0?``:`#${t.docsSlug}`}`),super({...t,name:`RelayerErrorBase`,version:e.FULL_VERSION,docsUrl:r}),Pf.set(this,void 0)}get docsPath(){return Nf(this,Pf,`f`)}};Pf=new WeakMap,Object.defineProperty(Ff,"PKG_NAME",{enumerable:!0,configurable:!0,writable:!0,value:Rt}),Object.defineProperty(Ff,"VERSION",{enumerable:!0,configurable:!0,writable:!0,value:Lt}),Object.defineProperty(Ff,"DEFAULT_DOCS_BASE_URL",{enumerable:!0,configurable:!0,writable:!0,value:`https//docs.zama.org`}),Object.defineProperty(Ff,"FULL_VERSION",{enumerable:!0,configurable:!0,writable:!0,value:`${Ff.PKG_NAME}@${Ff.VERSION}`});function If(e,t){switch(e){case`INPUT_PROOF`:return t?`Input proof`:`input proof`;case`PUBLIC_DECRYPT`:return t?`Public decryption`:`public decryption`;case`USER_DECRYPT`:return t?`User decryption`:`user decryption`;case`DELEGATED_USER_DECRYPT`:return t?`Delegated user decryption`:`delegated user decryption`;case`KEY_URL`:return t?`Key url`:`key url`;default:ea(e,`Unknown operation: ${e}`)}}var Lf=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Rf=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},zf,Bf,Vf,Hf=class extends Ff{constructor(e){let t=[...e.metaMessages??[],`url: ${e.url}`,`operation: ${e.operation}`,...e.jobId===void 0?[]:[`jobId: ${e.jobId}`]];super({...e,metaMessages:t}),zf.set(this,void 0),Bf.set(this,void 0),Vf.set(this,void 0),Lf(this,zf,e.url,`f`),Lf(this,Bf,e.operation,`f`),Lf(this,Vf,e.jobId,`f`)}get url(){return Rf(this,zf,`f`)}get jobId(){return Rf(this,Vf,`f`)}get operation(){return Rf(this,Bf,`f`)}};zf=new WeakMap,Bf=new WeakMap,Vf=new WeakMap;var Uf=class extends Hf{constructor(e){super({...e,name:`RelayerAbortError`,message:`${If(e.operation,!0)}: Request aborted`})}},Wf=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Gf=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Kf,qf,Jf,Yf,Xf,Zf,Qf,$f=class extends Ff{constructor(e){let t=[...e.metaMessages??[],`url: ${e.url}`,`method: ${e.fetchMethod}`,`operation: ${e.operation}`,`retryCount: ${e.retryCount}`,...e.jobId===void 0?[]:[`jobId: ${e.jobId}`]];super({...e,metaMessages:t,name:e.name}),Kf.set(this,void 0),qf.set(this,void 0),Jf.set(this,void 0),Yf.set(this,void 0),Xf.set(this,void 0),Zf.set(this,void 0),Qf.set(this,void 0),Wf(this,Kf,e.fetchMethod,`f`),Wf(this,qf,e.url,`f`),Wf(this,Yf,e.operation,`f`),Wf(this,Zf,e.elapsed,`f`),Wf(this,Xf,e.retryCount,`f`),Wf(this,Qf,e.state,`f`),Wf(this,Jf,e.jobId,`f`)}get url(){return Gf(this,qf,`f`)}get operation(){return Gf(this,Yf,`f`)}get fetchMethod(){return Gf(this,Kf,`f`)}get jobId(){return Gf(this,Jf,`f`)}get retryCount(){return Gf(this,Xf,`f`)}get elapsed(){return Gf(this,Zf,`f`)}get state(){return Gf(this,Qf,`f`)}get isAbort(){return this.cause!==void 0&&this.cause.name===`AbortError`}};Kf=new WeakMap,qf=new WeakMap,Jf=new WeakMap,Yf=new WeakMap,Xf=new WeakMap,Zf=new WeakMap,Qf=new WeakMap;var ep=class extends $f{constructor({cause:e,...t}){super({...t,name:`RelayerFetchError`,message:t.message,...e===void 0?{}:{cause:$i(e)},...e===void 0?{}:{metaMessages:Sf(e)}})}},tp=class extends $f{constructor(e){super({...e,name:`RelayerMaxRetryError`,message:`${If(e.operation,!0)}: Maximum polling retry limit exceeded (${e.retryCount} attempts)`,details:`After ${e.retryCount} polling attempts, the retry limit was exceeded. The operation may still complete on the server - consider checking the result later.`})}},np=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},rp=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},ip,ap,op=class extends Hf{constructor(e){let t=[...e.metaMessages??[],...e.status===void 0?[]:[`status: ${e.status}`],...e.state===void 0?[]:[`state: ${e.state}`]];super({...e,metaMessages:t,name:`RelayerRequestInternalError`,message:e.message??`${If(e.operation,!0)}: Relayer SDK internal error`}),ip.set(this,void 0),ap.set(this,void 0),np(this,ip,e.status,`f`),np(this,ap,e.state,`f`)}get status(){return rp(this,ip,`f`)}get state(){return rp(this,ap,`f`)}};ip=new WeakMap,ap=new WeakMap;var sp=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},cp=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},lp,up=class extends $f{constructor(e){let t=[`status: ${e.status}`];super({...e,metaMessages:t}),lp.set(this,void 0),sp(this,lp,e.status,`f`)}get status(){return cp(this,lp,`f`)}};lp=new WeakMap;var dp=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},fp=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},pp,mp=class extends up{constructor(e){let t=[`label: ${e.relayerApiError.label}`,`message: ${e.relayerApiError.message}`];super({...e,metaMessages:t,name:`RelayerResponseApiError`,message:`${If(e.operation,!0)}: Relayer API error [${e.relayerApiError.label}]: ${e.relayerApiError.message}`}),pp.set(this,void 0),dp(this,pp,e.relayerApiError,`f`)}get relayerApiError(){return fp(this,pp,`f`)}};pp=new WeakMap;var hp=class extends up{constructor(e){super({...e,name:`RelayerResponseInputProofRejectedError`,message:`Relayer rejected the input proof`})}},gp=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},_p=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},vp,yp=class extends up{constructor(e){super({...e,cause:$i(e.cause),name:`RelayerResponseInvalidBodyError`,message:`${If(e.operation,!0)}: Relayer response body does not match the expected schema`}),vp.set(this,void 0),gp(this,vp,e.bodyJson,`f`)}get bodyJson(){return _p(this,vp,`f`)}};vp=new WeakMap;var bp=class extends up{constructor({responseMessage:e,...t}){super({...t,name:`RelayerResponseStatusError`,message:`${If(t.operation,!0)}: Relayer returned unexpected response status: ${t.status}`,details:e??`The Relayer server returned an unexpected response status (${t.status}). This status ${t.status} is not part of the expected API contract and may indicate a server configuration issue.`})}},xp=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Sp=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Cp,wp=class extends Ff{constructor(e){super({...e,name:`RelayerStateError`}),Cp.set(this,void 0),xp(this,Cp,{...e.state},`f`),Object.freeze(Sp(this,Cp,`f`))}get state(){return Sp(this,Cp,`f`)}};Cp=new WeakMap;var Tp=class extends Hf{constructor(e){super({...e,name:`RelayerTimeoutError`,message:`${If(e.operation,!0)}: Request timed out after ${e.timeoutMs}ms`})}};function Ep(e,t,n){x(e,`status`,t,{expectedValue:`succeeded`,...n}),x(e,`requestId`,t,n),v(e,`result`,t,n),Qt(e.result,`accepted`,`${t}.result`,n),e.result.accepted?Dp(e.result,`${t}.result`,n):Op(e.result,`${t}.result`,n)}function Dp(e,t,n){Qt(e,`accepted`,t,{expectedValue:!0,...n}),Cr(e,`extraData`,t,n),Or(e,`handles`,t,n),Dr(e,`signatures`,t,n)}function Op(e,t,n){Qt(e,`accepted`,t,{expectedValue:!1,...n}),Cr(e,`extraData`,t,n)}function kp(e,t,n){x(e,`status`,t,{expectedValue:`succeeded`,...n}),x(e,`requestId`,t,n),v(e,`result`,t,n),Ap(e.result,`${t}.result`,!1,n)}function Ap(e,t,n,r){kr(e,`signatures`,t,r),Er(e,`decryptedValue`,t,r),(Object.prototype.hasOwnProperty.call(e,`extraData`)||n)&&Cr(e,`extraData`,t,r)}function jp(e,t,n){if(x(e,`label`,t,n),e.label!==`malformed_json`&&e.label!==`request_error`&&e.label!==`not_ready_for_decryption`&&e.label!==`not_allowed_on_host_acl`)throw new _({subject:t,property:`label`,expectedType:`string`,expectedValue:[`malformed_json`,`request_error`,`not_ready_for_decryption`,`not_allowed_on_host_acl`],type:typeof e.label,value:e.label},n);x(e,`message`,t,n)}function Mp(e,t,n){if(x(e,`label`,t,n),e.label!==`missing_fields`&&e.label!==`validation_failed`)throw new _({subject:t,property:`label`,expectedType:`string`,expectedValue:[`missing_fields`,`validation_failed`],type:typeof e.label,value:e.label},n);x(e,`message`,t,n),Xt(e,`details`,t,n);let r=e.details;for(let e=0;e<r.length;++e){let i=r[e];x(i,`field`,`${t}.details[${e}]`,n),x(i,`issue`,`${t}.details[${e}]`,n)}}function Np(e,t,n){x(e,`label`,t,{expectedValue:`not_found`,...n}),x(e,`message`,t,n)}function Pp(e,t,n){x(e,`label`,t,{expectedValue:[`rate_limited`,`protocol_overload`],...n}),x(e,`message`,t,n)}function Fp(e,t,n){x(e,`label`,t,{expectedValue:`internal_server_error`,...n}),x(e,`message`,t,n)}function Ip(e,t,n){x(e,`label`,t,{expectedValue:[`protocol_paused`,`insufficient_balance`,`insufficient_allowance`,`gateway_not_reachable`,`readiness_check_timed_out`,`response_timed_out`],...n}),x(e,`message`,t,n)}function Lp(e,t,n){x(e,`status`,t,{expectedValue:`failed`,...n}),v(e,`error`,t,n),Rp(e.error,`${t}.error`,n)}function Rp(e,t,n){if(x(e,`label`,t,{}),e.label===`malformed_json`||e.label===`request_error`||e.label===`not_ready_for_decryption`||e.label===`not_allowed_on_host_acl`)jp(e,t,n);else if(e.label===`missing_fields`||e.label===`validation_failed`)Mp(e,t,n);else if(e.label===`not_found`)Np(e,t,n);else if(e.label===`rate_limited`||e.label===`protocol_overload`)Pp(e,t,n);else if(e.label===`internal_server_error`)Fp(e,t,n);else if(e.label===`readiness_check_timed_out`||e.label===`response_timed_out`||e.label===`protocol_paused`||e.label===`insufficient_balance`||e.label===`insufficient_allowance`||e.label===`gateway_not_reachable`)Ip(e,t,n);else throw new _({subject:t,property:`label`,expectedType:`string`,expectedValue:[`malformed_json`,`request_error`,`not_ready_for_decryption`,`not_allowed_on_host_acl`,`missing_fields`,`validation_failed`,`rate_limited`,`internal_server_error`,`protocol_paused`,`insufficient_balance`,`insufficient_allowance`,`protocol_overload`,`gateway_not_reachable`,`readiness_check_timed_out`,`response_timed_out`],type:typeof e.label,value:e.label},n)}function zp(e,t,n){if(Lp(e,t,n),e.error.label===`malformed_json`||e.error.label===`request_error`||e.error.label===`not_ready_for_decryption`||e.error.label===`not_allowed_on_host_acl`)jp(e.error,`${t}.error`,n);else if(e.error.label===`missing_fields`||e.error.label===`validation_failed`)Mp(e.error,`${t}.error`,n);else throw new _({subject:`${t}.error`,property:`label`,expectedType:`string`,expectedValue:[`malformed_json`,`request_error`,`not_ready_for_decryption`,`not_allowed_on_host_acl`,`missing_fields`,`validation_failed`],type:typeof e.error.label,value:e.error.label},n)}function Bp(e,t,n){Lp(e,t,n),Np(e.error,`${t}.error`,n)}function Vp(e,t,n){Lp(e,t,n),Pp(e.error,`${t}.error`,n)}function Hp(e,t,n){Lp(e,t,n),Fp(e.error,`${t}.error`,n)}function Up(e,t,n){Lp(e,t,n),Ip(e.error,`${t}.error`,n)}function Wp(e,t,n){x(e,`status`,t,{expectedValue:`queued`,...n}),x(e,`requestId`,t,n),v(e,`result`,t,n),x(e.result,`jobId`,`${t}.result`,n)}function Gp(e,t,n){x(e,`status`,t,{expectedValue:`queued`,...n}),x(e,`requestId`,t,n)}function Kp(e,t,n){x(e,`status`,t,{expectedValue:`succeeded`,...n}),x(e,`requestId`,t,n),v(e,`result`,t,n),qp(e.result,`${t}.result`,n)}function qp(e,t,n){Xt(e,`result`,t,n);for(let r=0;r<e.result.length;++r){let i=e.result[r],a=`${t}.result[${r}]`;Er(i,`payload`,a,n),Er(i,`signature`,a,{...n,byteLength:65})}Yp(e.result,t,!1,n),Jp(e.result)}function Jp(e){for(let t of e)Object.prototype.hasOwnProperty.call(t,`extraData`)||(t.extraData=`0x`)}function Yp(e,t,n,r){let i;for(let a=0;a<e.length;++a){let o=e[a],s=`${t}.result[${a}]`,c=Object.prototype.hasOwnProperty.call(o,`extraData`);if(n&&!c)throw new _({subject:s,property:`extraData`,expectedType:`bytesHex`,type:`undefined`},r);if(i===void 0)i=c;else if(c!==i)throw new _({subject:s,property:`extraData`,expectedType:i?`bytesHex`:`undefined`,type:c?`unknown`:`undefined`},r)}if(i===!0)for(let n=0;n<e.length;++n)Cr(e[n],`extraData`,`${t}.result[${n}]`,r)}async function Xp(e){let t;try{t=await e.text()}catch{return{}}if(t.length===0)return{};try{let e=JSON.parse(t),n=typeof e==`object`&&e&&`error`in e?e.error:e,r=ln(n,`message`)&&sn(n.message)?n.message:void 0,i=ln(n,`label`)&&sn(n.label)?n.label:void 0;if(r!==void 0||i!==void 0)return{message:r,label:i}}catch{}return{}}var G=class e{constructor(t){if(Object.defineProperty(this,"_debug",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_fetchMethod",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_elapsed",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_jobId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_jobIdTimestamp",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_state",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_relayerOperation",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_internalAbortController",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_internalAbortSignal",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_externalAbortSignal",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_terminateReason",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_terminateError",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_retryCount",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_fetchRetries",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_fetchRetryDelayInMilliseconds",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_totalSteps",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_step",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_retryAfterTimeoutID",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_url",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_payload",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_fhevmAuth",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_customHeaders",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_retryAfterTimeoutPromiseFuncReject",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_onProgress",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_requestMaxDurationInMs",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_requestStartTimestamp",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_requestGlobalTimeoutID",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_throwErrorIfNoRetryAfter",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_handleExternalSignalAbort",{enumerable:!0,configurable:!0,writable:!0,value:t=>{let n=t.currentTarget;this._assert(this instanceof e,`this instanceof RelayerAsyncRequest`),this._assert(n===this._externalAbortSignal,`signal === this._externalAbortSignal`),this._assert(!this._state.terminated,`!this._state.terminated`),this._assert(!this._state.aborted,`!this._state.aborted`),this._assert(!this._state.canceled,`!this._state.canceled`),this.cancel()}}),Object.defineProperty(this,"_handleInternalSignalAbort",{enumerable:!0,configurable:!0,writable:!0,value:t=>{let n=t.currentTarget;this._assert(this instanceof e,`this instanceof RelayerAsyncRequest`),this._assert(n===this._internalAbortSignal,`signal === this._internalAbortSignal`),this._assert(!this._state.terminated,`!this._state.terminated`),this._assert(!this._state.aborted,`!this._state.aborted`),this._state.aborted=!0,n.reason!==`cancel`&&this._assert(!this._state.canceled,`!this._state.canceled`),this._postAsyncOnProgressCallback({type:`abort`,url:this._url,step:this._step,totalSteps:this._totalSteps,...this._fetchMethod===void 0?{}:{method:this._fetchMethod},...this._jobId===void 0?{}:{jobId:this._jobId},operation:this._relayerOperation,retryCount:this._retryCount}),this._terminate(`abort`,new Uf({operation:this._relayerOperation,jobId:this._jobId,url:this._url}))}}),t.relayerOperation!==`INPUT_PROOF`&&t.relayerOperation!==`PUBLIC_DECRYPT`&&t.relayerOperation!==`USER_DECRYPT`&&t.relayerOperation!==`DELEGATED_USER_DECRYPT`)throw new _({subject:`RelayerAsyncRequestParams`,property:`relayerOperation`,expectedType:`string`,value:t.relayerOperation,expectedValue:`INPUT_PROOF | PUBLIC_DECRYPT | USER_DECRYPT | DELEGATED_USER_DECRYPT`},{});this._fetchRetries=t.options?.fetchRetries??e.FETCH_RETRY,this._fetchRetryDelayInMilliseconds=t.options?.fetchRetryDelayInMilliseconds??e.FETCH_RETRY_AFTER_MS,this._step=0,this._totalSteps=1,this._elapsed=0,this._relayerOperation=t.relayerOperation,this._internalAbortController=new AbortController,this._internalAbortSignal=this._internalAbortController.signal,this._internalAbortSignal.addEventListener(`abort`,this._handleInternalSignalAbort),this._externalAbortSignal=t.options?.signal,this._externalAbortSignal&&this._externalAbortSignal.addEventListener(`abort`,this._handleExternalSignalAbort),this._url=t.url,this._payload=t.payload,this._debug=t.options?.debug===!0,this._fhevmAuth=t.options?.auth,this._customHeaders=jf(t.options?.headers),this._onProgress=t.options?.onProgress,this._state={aborted:!1,canceled:!1,failed:!1,fetching:!1,running:!1,succeeded:!1,terminated:!1,timeout:!1},this._retryCount=0,this._retryAfterTimeoutID=void 0,this._requestGlobalTimeoutID=void 0,this._terminateReason=void 0,this._throwErrorIfNoRetryAfter=t.throwErrorIfNoRetryAfter??!1,this._requestMaxDurationInMs=t.options?.timeout??e.DEFAULT_GLOBAL_REQUEST_TIMEOUT_MS,this._trace(`constructor()`,`{ fetchRetries: ${this._fetchRetries}, fetchRetryDelayInMilliseconds: ${this._fetchRetryDelayInMilliseconds} }`)}async run(e){if(this._trace(`run`,`existingJobId=${e?.existingJobId}`),this._state.terminated)throw new wp({message:`Relayer.run() failed. Request already terminated.`,state:{...this._state}});if(this._state.canceled)throw new wp({message:`Relayer.run() failed. Request already canceled.`,state:{...this._state}});if(this._state.succeeded)throw new wp({message:`Relayer.run() failed. Request already succeeded.`,state:{...this._state}});if(this._state.failed)throw new wp({message:`Relayer.run() failed. Request already failed.`,state:{...this._state}});if(this._state.aborted)throw new wp({message:`Relayer.run() failed. Request already aborted.`,state:{...this._state}});if(this._state.timeout)throw new wp({message:`Relayer.run() failed. Request already timeout.`,state:{...this._state}});if(this._externalAbortSignal?.aborted===!0)throw new wp({message:`Relayer.run() failed. External AbortSignal already aborted (reason:${this._externalAbortSignal.reason}).`,state:{...this._state}});if(this._internalAbortSignal?.aborted===!0)throw new wp({message:`Relayer.run() failed. Internal AbortSignal already aborted (reason:${this._internalAbortSignal.reason}).`,state:{...this._state}});if(this._state.running)throw new wp({message:`Relayer.run() failed. Request already running.`,state:{...this._state}});this._state.running=!0,this._requestStartTimestamp=Date.now(),this._setGlobalRequestTimeout(this._requestMaxDurationInMs);try{let t=await this._runPostLoop(e);return this._state.succeeded=!0,this._terminate(`succeeded`),t}catch(e){throw this._state.failed=!0,e.name===`AbortError`&&(this._assert(this._state.aborted,`this._state.aborted`),this._assert(this._state.terminated,`this._state.terminated`)),this._terminate(`failed`,e),e}}_canContinue(){return!(this._state.canceled||this._state.terminated||this._state.succeeded||this._state.aborted)}cancel(){if(!this._canContinue()){this._trace(`cancel`,`!this._canContinue()`);return}this._state.canceled=!0,this._internalAbortController?.abort(`cancel`),this._assert(this._state.aborted,`this._state.aborted`),this._assert(this._state.terminated,`this._state.terminated`)}get state(){return{...this._state}}get canceled(){return this._state.canceled}get terminated(){return this._state.terminated}get terminateReason(){return this._terminateReason}get terminateError(){return this._terminateError}get running(){return this._state.running}get fetching(){return this._state.fetching}get failed(){return this._state.failed}get aborted(){return this._state.aborted}get timeout(){return this._state.timeout}get succeeded(){return this._state.succeeded}get startTimeMs(){return this._requestStartTimestamp}get elapsedTimeMs(){if(this._requestStartTimestamp!==void 0)return Date.now()-this._requestStartTimestamp}get retryCount(){return this._retryCount}async _runPostLoop(t){if(this._assert(this._fetchMethod===void 0,`this._fetchMethod === undefined`),this._fetchMethod=`POST`,this._totalSteps=1,this._step=0,sn(t?.existingJobId))return this._setJobIdOnce(t.existingJobId),await this._runGetLoop();let n=0,r=0;for(;r<e.MAX_POST_RETRY;){++r,this._assertCanContinueAfterAwait(),this._elapsed=this._jobId===void 0?0:Date.now()-this._jobIdTimestamp,n++;let e=await this._fetchWithRetry(()=>this._fetchPost(),n);if(e===void 0)continue;if(n=0,e.status===403){let{message:t}=await Xp(e);this._throwUnexpectedStatusError(403,t)}let t=e.status;switch(t){case 202:{let n=await this._getResponseJson(e);try{Wp(n,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:t,cause:e,bodyJson:S(n)})}let r=this._getRetryAfterHeaderValueInMs(e);return this._setJobIdOnce(n.result.jobId),this._postAsyncOnProgressCallback({type:`queued`,url:this._url,method:`POST`,status:t,requestId:n.requestId,jobId:this.jobId,operation:this._relayerOperation,retryCount:this._retryCount,retryAfterMs:r,elapsed:this._elapsed,step:this._step,totalSteps:this._totalSteps}),await this._setRetryAfterTimeout(r),await this._runGetLoop()}case 400:{let n=await this._getResponseJson(e);try{zp(n,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:t,cause:e,bodyJson:S(n)})}this._throwRelayerResponseApiError({status:t,relayerApiError:n.error})}case 401:{let{message:n}=await Xp(e);this._throwUnauthorizedError(t,n)}case 429:{let n=await this._getResponseJson(e);try{Vp(n,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:t,cause:e,bodyJson:S(n)})}let r=this._getRetryAfterHeaderValueInMs(e);this._postAsyncOnProgressCallback({type:`throttled`,operation:this._relayerOperation,url:this._url,method:`POST`,status:t,retryAfterMs:r,retryCount:this._retryCount,elapsed:this._elapsed,relayerApiError:n.error,step:this._step,totalSteps:this._totalSteps}),await this._setRetryAfterTimeout(r);continue}case 500:{let n=await this._getResponseJson(e);try{Hp(n,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:t,cause:e,bodyJson:S(n)})}this._throwRelayerResponseApiError({status:t,relayerApiError:n.error})}case 503:{let n=await this._getResponseJson(e);try{Up(n,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:t,cause:e,bodyJson:S(n)})}this._throwRelayerResponseApiError({status:t,relayerApiError:n.error})}default:(e=>{throw new bp({fetchMethod:`POST`,status:e,url:this._url,operation:this._relayerOperation,elapsed:this._elapsed,retryCount:this._retryCount,state:{...this._state}})})(t)}}this._throwMaxRetryError({fetchMethod:`POST`})}async _runGetLoop(){this._assert(this._fetchMethod===`POST`,`this._fetchMethod === 'POST'`),this._assert(this._jobId!==void 0,`this._jobId !== undefined`),this._assert(this._jobIdTimestamp!==void 0,`this._jobIdTimestamp !== undefined`),this._fetchMethod=`GET`;let t=0,n=0;for(;n<e.MAX_GET_RETRY;){++n,this._assertCanContinueAfterAwait(),this._elapsed=Date.now()-this._jobIdTimestamp,t++;let e=await this._fetchWithRetry(()=>this._fetchGet(),t);if(e===void 0)continue;if(t=0,e.status===403){let{message:t}=await Xp(e);this._throwUnexpectedStatusError(403,t)}let r=e.status;switch(r){case 200:{let t=await this._getResponseJson(e);this._step=this._totalSteps;try{if(this._relayerOperation===`INPUT_PROOF`){Ep(t,`body`,{});let e=t.result;if(!e.accepted)throw new hp({url:this._url,fetchMethod:`GET`,jobId:this.jobId,operation:this._relayerOperation,retryCount:this._retryCount,status:r,state:{...this._state},elapsed:this._elapsed});let n=e,i=n.handles.map(Ha),a={extraData:n.extraData,signatures:n.signatures,handles:Object.freeze(i)};return this._postAsyncOnProgressCallback({type:`succeeded`,url:this._url,method:`GET`,status:r,jobId:this.jobId,requestId:t.requestId,operation:this._relayerOperation,retryCount:this._retryCount,elapsed:this._elapsed,result:a,step:this._step,totalSteps:this._totalSteps}),a}if(this._relayerOperation===`PUBLIC_DECRYPT`){kp(t,`body`,{});let e=t.result;return this._postAsyncOnProgressCallback({type:`succeeded`,url:this._url,method:`GET`,status:r,jobId:this.jobId,requestId:t.requestId,operation:this._relayerOperation,retryCount:this._retryCount,elapsed:this._elapsed,result:e,step:this._step,totalSteps:this._totalSteps}),e}if(this._relayerOperation===`USER_DECRYPT`){Kp(t,`body`,{});let e=t.result.result;return this._postAsyncOnProgressCallback({type:`succeeded`,url:this._url,method:`GET`,status:r,jobId:this.jobId,requestId:t.requestId,operation:this._relayerOperation,retryCount:this._retryCount,elapsed:this._elapsed,result:e,step:this._step,totalSteps:this._totalSteps}),e}if(this._relayerOperation===`DELEGATED_USER_DECRYPT`){Kp(t,`body`,{});let e=t.result.result;return this._postAsyncOnProgressCallback({type:`succeeded`,url:this._url,method:`GET`,status:r,jobId:this.jobId,requestId:t.requestId,operation:this._relayerOperation,retryCount:this._retryCount,elapsed:this._elapsed,result:e,step:this._step,totalSteps:this._totalSteps}),e}ea(this._relayerOperation,`Unknown operation: ${this._relayerOperation}`)}catch(e){if(e instanceof hp)throw e;this._throwResponseInvalidBodyError({status:r,cause:e,bodyJson:S(t)})}}case 202:{let t=await this._getResponseJson(e);try{Gp(t,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:r,cause:e,bodyJson:S(t)})}let n=this._getRetryAfterHeaderValueInMs(e);this._postAsyncOnProgressCallback({type:`queued`,url:this._url,method:`GET`,status:r,requestId:t.requestId,operation:this._relayerOperation,jobId:this.jobId,retryAfterMs:n,retryCount:this._retryCount,elapsed:this._elapsed,step:this._step,totalSteps:this._totalSteps}),await this._setRetryAfterTimeout(n);continue}case 400:{let t=await this._getResponseJson(e);try{zp(t,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:r,cause:e,bodyJson:S(t)})}this._throwRelayerResponseApiError({status:r,relayerApiError:t.error})}case 401:{let{message:t}=await Xp(e);this._throwUnauthorizedError(r,t)}case 404:{let t=await this._getResponseJson(e);try{Bp(t,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:r,cause:e,bodyJson:S(t)})}this._throwRelayerResponseApiError({status:r,relayerApiError:t.error})}case 500:{let t=await this._getResponseJson(e);try{Hp(t,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:r,cause:e,bodyJson:S(t)})}this._throwRelayerResponseApiError({status:r,relayerApiError:t.error})}case 503:{let t=await this._getResponseJson(e);try{Up(t,`body`,{})}catch(e){this._throwResponseInvalidBodyError({status:r,cause:e,bodyJson:S(t)})}this._throwRelayerResponseApiError({status:r,relayerApiError:t.error})}default:(e=>{throw new bp({fetchMethod:`GET`,status:e,url:this._url,jobId:this.jobId,operation:this._relayerOperation,elapsed:this._elapsed,retryCount:this._retryCount,state:{...this._state}})})(r)}}this._throwMaxRetryError({fetchMethod:`GET`})}async _getResponseJson(e){try{let t=await e.json();return this._assertCanContinueAfterAwait(),t}catch(e){console.log(e),this._throwFetchError({message:`JSON parsing failed.`,cause:e})}}_getRetryAfterHeaderValueInMs(t){if(!t.headers.has(`Retry-After`)){if(this._throwErrorIfNoRetryAfter)throw Error(`Missing 'Retry-After' header key`);return e.DEFAULT_RETRY_AFTER_MS}try{let n=Number.parseInt(t.headers.get(`Retry-After`));if(Tn(n)){let t=n*1e3;return t<e.MINIMUM_RETRY_AFTER_MS?e.MINIMUM_RETRY_AFTER_MS:t}}catch{}if(this._throwErrorIfNoRetryAfter)throw Error(`Invalid 'Retry-After' header key`);return e.DEFAULT_RETRY_AFTER_MS}_setJobIdOnce(e){this._assert(e!==void 0,`jobId !== undefined`),this._assert(this._jobId===void 0,`this._jobId === undefined`),this._jobId=e,this._jobIdTimestamp=Date.now()}get jobId(){return this._assert(this._jobId!==void 0,`this._jobId !== undefined`),this._jobId}async _fetchWithRetry(e,t){try{return await e()}catch(e){if(e.name===`AbortError`||t>=this._fetchRetries)throw e;await this._setRetryAfterTimeout(this._fetchRetryDelayInMilliseconds,{skipIncrementRetryCount:!0});return}}async _fetchPost(){this._assert(this._fetchMethod===`POST`,`this._fetchMethod === "POST"`),this._assert(this._jobId===void 0,`this._jobId === undefined`),this._assert(!this._state.terminated,`!this._state.terminated`),this._assert(!this._state.fetching,`!this._state.fetching`),this._trace(`_fetchPost`,this._url);let e=Mf({method:`POST`,headers:{...this._customHeaders,"content-type":`application/json`,"zama-sdk-version":Lt,"zama-sdk-name":Rt},body:JSON.stringify(this._payload),...this._internalAbortSignal?{signal:this._internalAbortSignal}:{}},this._fhevmAuth);this._state.fetching=!0;let t;try{t=await fetch(this._url,e)}catch(e){if(this._state.fetching=!1,this._trace(`_fetchPost`,Sf(e).join(`. `)),e.name===`AbortError`)throw e;this._throwFetchError({message:`Fetch POST failed.`,cause:e})}return this._state.fetching=!1,this._assert(!this._state.terminated,`!this._state.terminated`),this._assertCanContinueAfterAwait(),this._trace(`_fetchPost`,`return response Ok`),t}async _fetchGet(){this._assert(this._fetchMethod===`GET`,`this._fetchMethod === "GET"`),this._assert(this._jobId!==void 0,`this._jobId !== undefined`),this._assert(!this._state.terminated,`!this._state.terminated`),this._assert(!this._state.fetching,`!this._state.fetching`),this._trace(`_fetchGet`,`jobId=${this.jobId}`);let e=Mf({method:`GET`,headers:{...this._customHeaders,"zama-sdk-version":Lt,"zama-sdk-name":Rt},...this._internalAbortSignal?{signal:this._internalAbortSignal}:{}},this._fhevmAuth);this._state.fetching=!0;let t;try{t=await fetch(`${this._url}/${this.jobId}`,e)}catch(e){if(this._state.fetching=!1,this._trace(`_fetchGet`,`jobId=${this.jobId}, ${Sf(e).join(`. `)}`),e.name===`AbortError`)throw e;this._throwFetchError({message:`Fetch GET failed.`,cause:e})}return this._state.fetching=!1,this._assert(!this._state.terminated,`!this._state.terminated`),this._assertCanContinueAfterAwait(),this._trace(`_fetchGet`,`jobId=${this.jobId}, return response Ok, status=${t.status}`),t}_terminate(e,t){if(this._state.terminated){this._trace(`_terminate`,`reason=${e}. Already terminated with reason='${this._terminateReason}'. IGNORE`),this._assert(this._terminateReason!==void 0,`this._terminateReason !== undefined`),this._assert(this._internalAbortSignal===void 0,`this._signal === undefined`),this._assert(this._requestGlobalTimeoutID===void 0,`this._requestGlobalTimeoutID === undefined`),this._assert(this._retryAfterTimeoutID===void 0,`this._retryAfterTimeoutID === undefined`),this._assert(this._retryAfterTimeoutPromiseFuncReject===void 0,`this._retryAfterTimeoutPromiseFuncReject === undefined`);return}this._trace(`_terminate`,`reason=${e}`),this._terminateReason=e,this._terminateError=t,this._state.terminated=!0,this._tryClearRetryAfterTimeout(t),this._tryClearGlobalRequestTimeout();let n=this._internalAbortSignal,r=this._externalAbortSignal;this._externalAbortSignal=void 0,this._internalAbortSignal=void 0,this._internalAbortController=void 0,r&&r.removeEventListener(`abort`,this._handleExternalSignalAbort),n&&n.removeEventListener(`abort`,this._handleInternalSignalAbort),this._trace(`_terminate`,`reason=${e} completed.`)}async _setRetryAfterTimeout(e,t){let{skipIncrementRetryCount:n=!1}=t??{};if(this._assert(!this._state.terminated,`!this._state.terminated`),this._assert(this._retryAfterTimeoutID===void 0,`this._retryAfterTimeoutID === undefined`),this._trace(`_setRetryAfterTimeout`,`delayMs=${e}`),this._retryAfterTimeoutID!==void 0)return Promise.reject(Error(`retry-after already running.`));let r=new Promise((t,r)=>{this._retryAfterTimeoutPromiseFuncReject=r;let i=()=>{this._retryAfterTimeoutID=void 0,this._retryAfterTimeoutPromiseFuncReject=void 0,t()};n||this._retryCount++,this._retryAfterTimeoutID=setTimeout(i,e)});return this._assert(this._retryAfterTimeoutID!==void 0,`this._retryAfterTimeoutID !== undefined`),this._assert(this._retryAfterTimeoutPromiseFuncReject!==void 0,`this._retryAfterTimeoutPromiseFuncReject !== undefined`),r}_tryClearRetryAfterTimeout(e){if(this._retryAfterTimeoutID===void 0){this._assert(this._retryAfterTimeoutPromiseFuncReject===void 0,`this._retryAfterTimeoutPromiseFuncReject === undefined`);return}this._assert(this._retryAfterTimeoutPromiseFuncReject!==void 0,`this._retryAfterTimeoutPromiseFuncReject !== undefined`);let t=this._retryAfterTimeoutPromiseFuncReject,n=this._retryAfterTimeoutID;this._retryAfterTimeoutID=void 0,this._retryAfterTimeoutPromiseFuncReject=void 0,clearTimeout(n),t(e??Error(`_tryClearRetryAfterTimeout`))}_setGlobalRequestTimeout(e){this._assert(this._requestGlobalTimeoutID===void 0,`this._requestGlobalTimeoutID === undefined`);let t=()=>{this._requestGlobalTimeoutID=void 0,this._handleGlobalRequestTimeout()};this._requestGlobalTimeoutID=setTimeout(t,e)}_handleGlobalRequestTimeout(){this._assert(this instanceof e,`this instanceof RelayerAsyncRequest`),this._assert(!this._state.terminated,`!this._state.terminated`),this._assert(!this._state.timeout,`!this._state.timeout`),this._state.timeout=!0,this._postAsyncOnProgressCallback({type:`timeout`,url:this._url,...this._fetchMethod===void 0?{}:{method:this._fetchMethod},...this._jobId===void 0?{}:{jobId:this._jobId},operation:this._relayerOperation,retryCount:this._retryCount,step:this._step,totalSteps:this._totalSteps}),this._terminate(`timeout`,new Tp({operation:this._relayerOperation,jobId:this._jobId,url:this._url,timeoutMs:this._requestMaxDurationInMs}))}_tryClearGlobalRequestTimeout(){if(this._requestGlobalTimeoutID===void 0)return;let e=this._requestGlobalTimeoutID;this._requestGlobalTimeoutID=void 0,clearTimeout(e)}_postAsyncOnProgressCallback(e){let t=this._onProgress;t&&queueMicrotask(()=>{t(e)})}_throwUnauthorizedError(e,t){this._throwRelayerResponseApiError({status:e,relayerApiError:{label:`unauthorized`,message:t??`Unauthorized, missing or invalid Zama Fhevm API Key.`}})}_throwUnexpectedStatusError(e,t){throw new bp({fetchMethod:this._fetchMethod,status:e,url:this._url,...this._jobId===void 0?{}:{jobId:this._jobId},operation:this._relayerOperation,elapsed:this._elapsed,retryCount:this._retryCount,state:{...this._state},...t===void 0?{}:{responseMessage:t}})}_throwRelayerResponseApiError(e){let t=JSON.parse(JSON.stringify(e.relayerApiError)),n={type:`failed`,url:this._url,method:this._fetchMethod,status:e.status,...this._jobId===void 0?{}:{jobId:this._jobId},operation:this._relayerOperation,retryCount:this._retryCount,elapsed:this._elapsed,relayerApiError:t,step:this._step,totalSteps:this._totalSteps};throw this._postAsyncOnProgressCallback((this._relayerOperation===`INPUT_PROOF`||this._relayerOperation===`PUBLIC_DECRYPT`||this._relayerOperation,n)),new mp({url:this._url,fetchMethod:this._fetchMethod,status:e.status,jobId:this._jobId,operation:this._relayerOperation,retryCount:this._retryCount,relayerApiError:e.relayerApiError,elapsed:this._elapsed,state:{...this._state}})}_assert(e,t){e||this._throwInternalError(`Assertion failed: ${t}`)}_throwInternalError(e){throw new op({operation:this._relayerOperation,url:this._url,message:e,state:JSON.stringify(this._state),jobId:this._jobId})}_throwMaxRetryError(e){let t=this._jobIdTimestamp===void 0?0:Date.now()-this._jobIdTimestamp;throw new tp({operation:this._relayerOperation,url:this._url,state:{...this._state},retryCount:this._retryCount,jobId:this._jobId,fetchMethod:e.fetchMethod,elapsed:t})}_throwResponseInvalidBodyError(e){throw new yp({...e,fetchMethod:this._fetchMethod,url:this._url,jobId:this._jobId,operation:this._relayerOperation,state:{...this._state},retryCount:this._retryCount,elapsed:this._elapsed})}_throwFetchError(e){throw new ep({...e,elapsed:this._elapsed,url:this._url,jobId:this._jobId,operation:this._relayerOperation,state:{...this._state},retryCount:this._retryCount,fetchMethod:this._fetchMethod})}_assertCanContinueAfterAwait(){this._canContinue()||this._throwInternalError(`cannot continue.`)}_trace(e,t){this._debug&&console.log(`[RelayerAsyncRequest]:${e}: ${t}`)}};Object.defineProperty(G,"DEFAULT_RETRY_AFTER_MS",{enumerable:!0,configurable:!0,writable:!0,value:2500}),Object.defineProperty(G,"MINIMUM_RETRY_AFTER_MS",{enumerable:!0,configurable:!0,writable:!0,value:1e3}),Object.defineProperty(G,"DEFAULT_GLOBAL_REQUEST_TIMEOUT_MS",{enumerable:!0,configurable:!0,writable:!0,value:36e5}),Object.defineProperty(G,"MAX_GET_RETRY",{enumerable:!0,configurable:!0,writable:!0,value:1440}),Object.defineProperty(G,"MAX_POST_RETRY",{enumerable:!0,configurable:!0,writable:!0,value:G.MAX_GET_RETRY}),Object.defineProperty(G,"FETCH_RETRY_AFTER_MS",{enumerable:!0,configurable:!0,writable:!0,value:1e3}),Object.defineProperty(G,"FETCH_RETRY",{enumerable:!0,configurable:!0,writable:!0,value:3});var Zp=class extends Wt{constructor(e,t){super({...t,message:e.message??(e.url===void 0?`Url is invalid.`:`Url "${e.url}" is invalid.`),...e.cause===void 0?{}:{cause:$i(e.cause)},name:`InvalidUrlError`})}};function Qp(e,t){if(typeof e!=`string`||e.length===0)throw new Zp({message:`Invalid relayerUrl: must be a non-empty string.`},{});let n;try{n=new URL(e)}catch(e){throw new Zp({message:`Invalid relayerUrl: cannot parse as URL}.`,cause:e},{})}if(n.protocol!==`https:`&&n.protocol!==`http:`)throw new Zp({message:`Invalid relayerUrl protocol: ${n.protocol} (expected http: or https:).`},{});if(n.username!==``||n.password!==``)throw new Zp({message:`Invalid relayerUrl: URL must not contain credentials (user:pass@host).`},{});if(t&&n.protocol===`http:`&&n.hostname!==`localhost`&&n.hostname!==`127.0.0.1`&&n.hostname!==`[::1]`)throw new Zp({message:`Invalid relayerUrl: HTTPS is required when auth credentials are provided.`},{});return n.pathname.endsWith(`/`)||(n.pathname+=`/`),n}function $p(e,t){y(e.pathname.endsWith(`/`));let n=tn(nn(t,`/`),`/`);return tn(new URL(n,e).toString(),`/`)}async function em(e,t){let{options:n,payload:r}=t,i={ciphertextWithInputVerification:Nr(r.zkProof.ciphertextWithZkProof),contractAddress:r.zkProof.contractAddress,contractChainId:An(r.zkProof.chainId),extraData:r.zkProof.getExtraData(),userAddress:r.zkProof.userAddress},a=n?.auth!==void 0,o=await new G({relayerOperation:`INPUT_PROOF`,url:$p(Qp(e.chain.fhevm.relayerUrl,a),`v2/input-proof`),payload:i,options:n}).run();return{handles:o.handles,coprocessorEip712Signatures:o.signatures,extraData:o.extraData}}async function tm(e,t){let{options:n,payload:r}=t,i=r.handleContractPairs[0];if(i===void 0)throw Error(`Empty handle contract pairs`);let a=i.handle.chainId.toString(),o={handleContractPairs:r.handleContractPairs.map(e=>({handle:e.handle.bytes32Hex,contractAddress:e.contractAddress})),startTimestamp:r.kmsDecryptEip712Message.startTimestamp,durationDays:r.kmsDecryptEip712Message.durationDays,contractsChainId:a,contractAddresses:r.kmsDecryptEip712Message.contractAddresses,delegatorAddress:r.kmsDecryptEip712Message.delegatorAddress,delegateAddress:r.kmsDecryptEip712Signer,signature:b(r.kmsDecryptEip712Signature),extraData:r.kmsDecryptEip712Message.extraData,publicKey:b(r.kmsDecryptEip712Message.publicKey)},s=n?.auth!==void 0;return(await new G({relayerOperation:`DELEGATED_USER_DECRYPT`,url:$p(Qp(e.chain.fhevm.relayerUrl,s),`v2/delegated-user-decrypt`),payload:o,options:n}).run()).map(e=>({signature:e.signature,payload:e.payload,extraData:b(e.extraData)}))}async function nm(e,t){let{options:n,payload:r}=t,i={ciphertextHandles:r.orderedHandles.map(e=>e.bytes32Hex),extraData:r.extraData},a=n?.auth!==void 0,o=await new G({relayerOperation:`PUBLIC_DECRYPT`,url:$p(Qp(e.chain.fhevm.relayerUrl,a),`v2/public-decrypt`),payload:i,options:n}).run();return{orderedAbiEncodedClearValues:on(o.decryptedValue),kmsPublicDecryptEip712Signatures:o.signatures.map(on),extraData:o.extraData}}async function rm(e,t){let{options:n}=t,r=Qp(e.relayerUrl,n?.auth!==void 0),i=Mf({method:`GET`,headers:{...jf(n?.headers),"zama-sdk-version":Lt,"zama-sdk-name":Rt}},n?.auth);y(r.pathname.endsWith(`/`));let a=$p(r,`v2/keyurl`),o;try{o=await Cf({url:a,init:i,retries:n?.fetchRetries,retryDelayMs:n?.fetchRetryDelayInMilliseconds})}catch(e){if(e.name===`AbortError`)throw e;im({url:a,message:`Fetch ${a} failed!`,cause:e})}if(!o.ok){let{message:e}=await Xp(o);im({url:a,message:e===void 0?`HTTP error! status: ${o.status} on ${o.url}`:`HTTP error! status: ${o.status} on ${o.url}: ${e}`})}let s;try{s=await o.json()}catch(e){im({url:a,message:`JSON parsing failed.`,cause:e})}am(a,s);let c=s.response;return om(c,`response`),{publicKeySource:{id:c.fheKeyInfo[0].fhePublicKey.dataId,url:c.fheKeyInfo[0].fhePublicKey.urls[0]},crsSource:{id:c.crs[2048].dataId,url:c.crs[2048].urls[0],capacity:2048},metadata:{relayerUrl:e.relayerUrl,chainId:e.chainId}}}function im(e){throw new ep({url:e.url,fetchMethod:`GET`,operation:`KEY_URL`,retryCount:0,elapsed:0,message:e.message,cause:e.cause})}function am(e,t){(typeof t!=`object`||!t)&&im({url:e,message:`Unexpected response JSON.`}),`response`in t&&t.response!==null&&t.response!==void 0||im({url:e,message:`Unexpected response JSON format: missing 'response' property.`})}function om(e,t){if(Xt(e,`fheKeyInfo`,t,{}),e.fheKeyInfo.length!==1)throw Error(`Unexpected 'fheKeyInfo' array length.`);let n=e.fheKeyInfo[0],r=`${t}.fheKeyInfo[0]`;v(n,`fhePublicKey`,r,{});let i=n.fhePublicKey,a=`${r}.fhePublicKey`;if(x(i,`dataId`,a,{}),un(i,`urls`,a,{}),i.urls.length!==1)throw Error(`Unexpected '${a}.urls' array length.`);if(v(e,`crs`,t,{}),v(e.crs,`2048`,`${t}.crs`,{}),x(e.crs[2048],`dataId`,`${t}.crs[2048]`,{}),un(e.crs[2048],`urls`,`${t}.crs[2048]`,{}),e.crs[2048].urls.length!==1)throw Error(`Unexpected '${t}.crs[2048].urls' array length.`)}var sm=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},cm=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},lm,um=class extends Wt{constructor(e){super({...e,name:`FetchError`,message:e.message??`fetch error`}),lm.set(this,void 0),sm(this,lm,e.url,`f`)}get url(){return cm(this,lm,`f`)}};lm=new WeakMap;async function dm(e,t){if(e.crsSource.capacity!==2048)throw new um({url:e.crsSource.url,message:`Invalid pke crs capacity ${e.crsSource.capacity.toString()}. Expecting 2048.`});let[n,r]=await Promise.all([fm({url:e.publicKeySource.url,...t}),fm({url:e.crsSource.url,...t})]);return Object.freeze({publicKeyBytes:Object.freeze({id:e.publicKeySource.id,bytes:n}),crsBytes:Object.freeze({id:e.crsSource.id,capacity:e.crsSource.capacity,bytes:r}),metadata:Object.freeze({...e.metadata})})}async function fm(e){let t=e.url;if(e.init?.method!==void 0&&e.init.method!==`GET`)throw new um({url:t,message:`Invalid fetch method: expected 'GET', got '${e.init.method}'`});let n=await Cf({url:t,init:e.init,retries:e.retries,retryDelayMs:e.retryDelayMs});if(!n.ok)throw new um({url:t,message:`HTTP error! status: ${n.status} on ${n.url}`});return await yf(n)}async function pm(e,t){let{options:n}=t,r=await rm(e,{options:n}),i=n?.signal===void 0?void 0:{signal:n.signal};return await dm(r,{retries:n?.fetchRetries,retryDelayMs:n?.fetchRetryDelayInMilliseconds,init:i})}async function mm(e,t){let{options:n,payload:r}=t,i=r.handleContractPairs[0];if(i===void 0)throw Error(`Empty handle contract pairs`);let a=i.handle.chainId.toString(),o={handleContractPairs:r.handleContractPairs.map(e=>({handle:e.handle.bytes32Hex,contractAddress:e.contractAddress})),requestValidity:{startTimestamp:r.kmsDecryptEip712Message.startTimestamp,durationDays:r.kmsDecryptEip712Message.durationDays},contractsChainId:a,contractAddresses:r.kmsDecryptEip712Message.contractAddresses,userAddress:r.kmsDecryptEip712Signer,signature:b(r.kmsDecryptEip712Signature),extraData:r.kmsDecryptEip712Message.extraData,publicKey:b(r.kmsDecryptEip712Message.publicKey)},s=n?.auth!==void 0;return(await new G({relayerOperation:`USER_DECRYPT`,url:$p(Qp(e.chain.fhevm.relayerUrl,s),`v2/user-decrypt`),payload:o,options:n}).run()).map(e=>({signature:e.signature,payload:e.payload,extraData:b(e.extraData)}))}async function hm(e,t){let{options:n,payload:r}=t;if(r.handleContractPairs[0]===void 0)throw Error(`Empty handle contract pairs`);let i={attestationType:`eip712-unified-user-decrypt-v1`,attestedPayload:{version:`2.0`,type:`user_decryption`,handles:r.handleContractPairs.map(e=>({ctHandle:e.handle.bytes32Hex,contractAddress:e.contractAddress,ownerAddress:e.ownerAddress})),userAddress:r.kmsDecryptEip712Message.userAddress,allowedContracts:r.kmsDecryptEip712Message.allowedContracts,requestValidity:{startTimestamp:r.kmsDecryptEip712Message.startTimestamp,durationSeconds:r.kmsDecryptEip712Message.durationSeconds},publicKey:r.kmsDecryptEip712Message.publicKey,extraData:r.kmsDecryptEip712Message.extraData},signature:r.kmsDecryptEip712Signature},a=n?.auth!==void 0;return(await new G({relayerOperation:`USER_DECRYPT`,url:$p(Qp(e.chain.fhevm.relayerUrl,a),`v3/user-decrypt`),payload:i,options:n}).run()).map(e=>({signature:e.signature,payload:e.payload,extraData:b(e.extraData)}))}async function gm(e,t){return t.version===1?await mm(e,t):await hm(e,t)}var _m=()=>Object.freeze({relayer:Object.freeze({fetchFheEncryptionKeySource:rm,fetchFheEncryptionKeyBytes:pm,fetchCoprocessorSignatures:em,fetchPublicDecrypt:nm,fetchUserDecrypt:gm,fetchDelegatedUserDecrypt:tm})}),vm;function ym(){if(!Be())throw Error(`Call setFhevmRuntimeConfig first.`);let e=gf(),t=_m();return vm??=cf({ethereum:e.ethereum,relayer:t.relayer,config:Re()}),vm}var bm={EIP712Domain:[{name:`name`,type:`string`},{name:`version`,type:`string`},{name:`chainId`,type:`uint256`},{name:`verifyingContract`,type:`address`}],UserDecryptRequestVerification:[{name:`userAddress`,type:`address`},{name:`publicKey`,type:`bytes`},{name:`allowedContracts`,type:`address[]`},{name:`startTimestamp`,type:`uint256`},{name:`durationSeconds`,type:`uint256`},{name:`extraData`,type:`bytes`}]};Object.freeze(bm),Object.freeze(bm.EIP712Domain),Object.freeze(bm.UserDecryptRequestVerification),bm.EIP712Domain.forEach(Object.freeze),bm.UserDecryptRequestVerification.forEach(Object.freeze);function xm(e,t,n){if(v(e,`domain`,t,n),jl(e.domain,`${t}.domain`,n),v(e,`types`,t,n),!gd(e.types,bm))throw Error(`Unexpected KmsUserDecryptEip712V2Types`);x(e,`primaryType`,t,{expectedValue:`UserDecryptRequestVerification`,...n}),v(e,`message`,t,n);let r=e.message;Sm(r,`${t}.message`,n)}function Sm(e,t,n){qi(e,`userAddress`,t,n),Cr(e,`publicKey`,t,n),Xi(e,`allowedContracts`,t,n),x(e,`startTimestamp`,t,n),x(e,`durationSeconds`,t,n),Cr(e,`extraData`,t,n),vc(e.extraData,n);let r=cc(e.extraData);if(r.lt(2))throw Error(`${t}.extraData: a unified (V2) permit requires a v2 or later extraData, got version ${r.version}.`);Rn(e.startTimestamp,{max:w}),Rn(e.durationSeconds,{max:w})}async function Cm(e,t){let n=await kl(e,{domain:Al({chainId:e.chain.id,verifyingContractAddressDecryption:e.chain.fhevm.gateway.contracts.decryption.address}),types:bm,primaryType:`UserDecryptRequestVerification`,signatures:[t.signature],message:t.message});if(n.length!==1)throw new to({type:`kms`});if(n[0]!==t.signer)throw new eo({unknownAddress:n[0],type:`kms`})}var wm=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Tm=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Em,Dm,Om,km,Am=Symbol(`SignedDecryptionPermitV2.token`),jm=10,Mm=class{constructor(e,t){if(Em.set(this,void 0),Dm.set(this,void 0),Om.set(this,void 0),km.set(this,void 0),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:2}),e!==Am)throw Error(`Unauthorized`);wm(this,Em,t.eip712,`f`),wm(this,Dm,t.signature,`f`),wm(this,Om,t.signerAddress,`f`),wm(this,km,t.delegatorAddress,`f`)}get eip712(){return Tm(this,Em,`f`)}get signature(){return Tm(this,Dm,`f`)}get signerAddress(){return Tm(this,Om,`f`)}get encryptedDataOwnerAddress(){return Tm(this,km,`f`)??Tm(this,Om,`f`)}get isDelegated(){return Tm(this,km,`f`)!==void 0}get transportPublicKey(){return Tm(this,Em,`f`).message.publicKey}assertNotExpired(){let{startTimestamp:e,durationSeconds:t}=Tm(this,Em,`f`).message;Im({startTimestamp:e,durationSeconds:t})}};Em=new WeakMap,Dm=new WeakMap,Om=new WeakMap,km=new WeakMap,Object.freeze(Mm),Object.freeze(Mm.prototype);function Nm(e){return e instanceof Mm}async function Pm(e,t){let{transportKeyPair:n,permit:r}=t;Id(n,{});let i=`permit-v2`,a={};v(r,`eip712`,i,a),wr(r,`signature`,i,a),qi(r,`signerAddress`,i,a);let o=r.eip712;x(o,`primaryType`,`${i}.eip712`,a);let s=o.primaryType;if(s!==`UserDecryptRequestVerification`)throw Error(`Expected primaryType 'UserDecryptRequestVerification' for V2 permit, got: ${s}`);xm(o,`${i}.eip712`,a);let c=D(r.signerAddress);if(o.message.publicKey.toLowerCase()!==n.publicKey.toLowerCase())throw Error(`The permit's publicKey does not match the TransportKeyPair's publicKey. Ensure the permit was signed with the same key pair.`);return await Fm(e,{signature:r.signature,eip712:o,signerAddress:c})}async function Fm(e,t){let{signerAddress:n,eip712:r,signature:i}=t;if(BigInt(r.message.durationSeconds)<=0n)throw RangeError(`durationSeconds must be positive, got ${r.message.durationSeconds}`);if(r.message.allowedContracts.length>jm)throw Error(`allowedContracts max length of ${jm} exceeded`);return await Cm(e,{signer:n,message:r.message,signature:i}),new Mm(Am,t)}function Im({startTimestamp:e,durationSeconds:t}){let n=BigInt(t);if(n===0n)throw Error(`durationSeconds is zero`);let r=BigInt(e),i=BigInt(Math.floor(Date.now()/1e3));if(r>i)throw Error(`startTimestamp is set in the future`);if(r+n<i)throw Error(`request has expired`)}function Lm(e){let t=e.domain.chainId,n={...e.domain,chainId:typeof t==`bigint`?t.toString():t},r={...e,domain:n};return Object.freeze(r),Object.freeze(n),r}function Rm(e){Bm(e,{});let t=e.version;if(t!==1&&t!==2)throw Error(`Unsupported permit version: ${t}. Supported versions are 1 and 2.`);return e.version===1?{version:1,eip712:Lm(e.eip712),signature:e.signature,signerAddress:e.signerAddress}:{version:2,eip712:Lm(e.eip712),signature:e.signature,signerAddress:e.signerAddress}}function zm(e){return Xd(e)||Nm(e)}function Bm(e,t){if(!zm(e))throw new C({subject:t.subject,type:typeof e,expectedType:`SignedDecryptionPermit`},t)}async function Vm(e,t){return await Zd(e,t)}function Hm(e){if(typeof e!=`object`||!e)return e;let t=e.eip712;if(typeof t!=`object`||!t)return e;let n=t.domain;if(typeof n!=`object`||!n)return e;let r=n.chainId;if(typeof r!=`string`&&typeof r!=`number`)return e;let i;try{i=BigInt(r)}catch{return e}return{...e,eip712:{...t,domain:{...n,chainId:i}}}}function Um(e){let t=e?.eip712?.message?.extraData;if(typeof t==`string`)try{return cc(t).version}catch{return}}async function Wm(e,t){let{transportKeyPair:n,permit:r,fhevmContext:i}=t,a=Hm(r),o=Zn(a,`version`)?a.version:1;if(!bn(o)||o>2||o===0)throw Error(`Unsupported permit version: ${o}. Supported versions are 1 and 2.`);let s=o;{if(s>1)throw Error(`Refusing to parse a V2-format decryption permit (version ${s}): this SDK is capped at protocol API v0.13 and only supports V1 permits. V2 permits require an SDK on protocol API v0.14.0 or later.`);let e=Um(a);if(e!==void 0&&e>=2)throw Error(`Refusing to parse a permit carrying extraData v2: this SDK is capped at protocol API v0.13 and only accepts extraData v0/v1 (a v13 relayer rejects extraData v2). Use an SDK on protocol API v0.14.0 or later.`)}return s===1?await $d(e,{transportKeyPair:n,permit:a,fhevmContext:i}):await Pm(e,{transportKeyPair:n,permit:a,fhevmContext:i})}async function Gm(e,t){let n=await L(e);return Vm(e,{...t,fhevmContext:n})}async function Km(e,t){return Rd(e,{value:t,fhevmContext:await L(e)})}var qm=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Jm=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Ym,Xm,Zm,Qm,$m,eh=Symbol(`FheEncryptionKeyWasm.token`),th=Symbol(`FheEncryptionKeyWasm.verify`),nh=class e{constructor(e,t,n){if(Ym.set(this,void 0),Xm.set(this,void 0),Zm.set(this,void 0),Qm.set(this,void 0),$m.set(this,void 0),e!==eh)throw Error(`Unauthorized`);qm(this,Ym,t,`f`),qm(this,Zm,n.publicKey,`f`),qm(this,Xm,n.crs,`f`),qm(this,Qm,Object.freeze({...n.metadata}),`f`),qm(this,$m,n.tfheVersion,`f`),Object.freeze(this)}get publicKey(){return Jm(this,Zm,`f`)}get crs(){return Jm(this,Xm,`f`)}get tfheVersion(){return Jm(this,$m,`f`)}get metadata(){return Jm(this,Qm,`f`)}static[(Ym=new WeakMap,Xm=new WeakMap,Zm=new WeakMap,Qm=new WeakMap,$m=new WeakMap,th)](t,n,r,i){if(t!==eh)throw Error(`Unauthorized`);if(!(n instanceof e))throw Error(`Invalid FheEncryptionKey instance`);if(i!==Jm(n,$m,`f`))throw Error(`TfheVersion mismatch`);To({actualOwner:Jm(n,Ym,`f`),expectedOwner:r,name:`FheEncryptionKey`})}};Object.freeze(nh.prototype),Object.freeze(nh);function rh(e,t){return new nh(eh,e,t)}function ih(e,t,n){nh[th](eh,e,t,n)}async function ah(e,t){let n=t.tfheVersion;ih(t,e.runtime,n);let r=await e.runtime.encrypt.serializeFheEncryptionPublicKey({publicKey:t.publicKey,tfheVersion:n}),i=await e.runtime.encrypt.serializeFheEncryptionCrs({crs:t.crs,tfheVersion:n}),a=Object.freeze({...t.metadata});return Object.freeze({publicKeyBytes:r,crsBytes:i,metadata:a})}async function oh(e,t){let n=e.chain.fhevm.relayerUrl,r=e.runtime,i={...t,options:{auth:e.runtime.config.auth,...t.options}};Qo.ensureBytes({owner:r,relayerUrl:n,fetcher:()=>r.relayer.fetchFheEncryptionKeyBytes({relayerUrl:n,chainId:e.chain.id},i),metadata:{chainId:e.chain.id,relayerUrl:n}});let a=await Qo.resolveBytes({relayerUrl:n,serializeFn:sh(e)});if(a===void 0)throw Error(`Failed to fetch global FHE PKE params bytes`);return a}function sh(e){let t;try{let n=Co(e.runtime,`encrypt`);t=e=>ah({runtime:n},e)}catch{}return t}async function ch(e,t){let n=await L(e);return oh(e,{...t,fhevmContext:n})}async function lh(e,t){let n=await L(e);return zd({transportKeyPair:t.transportKeyPair,fhevmContext:n})}async function uh(e,t){return await L(e),Rm(t.signedPermit)}async function dh(e,t){let{serializedPermit:n,transportKeyPair:r}=t;return Wm(e,{transportKeyPair:r,permit:n,fhevmContext:await L(e)})}var fh=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$/;function ph(e){let t=fh.exec(e);if(t===null)throw Error(`Invalid SemVer version: "${e}".`);let n=Number(t[1]),r=Number(t[2]),i=Number(t[3]);return T(n,{}),T(r,{}),T(i,{}),Object.freeze({version:e,major:n,minor:r,patch:i,prerelease:t[4]?.split(`.`),build:t[5]?.split(`.`)})}function mh(e,t){let n=K(e,t.version);switch(t.comparator){case`lt`:return n<0;case`le`:return n<=0;case`gt`:return n>0;case`ge`:return n>=0;case`eq`:return n===0;default:{let e=t.comparator;throw Error(`Unsupported SemVer comparator "${e}".`)}}}function hh(e,t){return!(t.lowerBound!==void 0&&!mh(e,t.lowerBound)||t.upperBound!==void 0&&!mh(e,t.upperBound))}function gh(e,t,n){if(t===`eq`)return mh(e,n);let r=K(e,n.version);switch(t){case`lt`:return n.comparator===`lt`||n.comparator===`le`?r<=0:!1;case`le`:return n.comparator===`lt`?r<0:n.comparator===`le`&&r<=0;case`gt`:return n.comparator===`gt`||n.comparator===`ge`?r>=0:!1;case`ge`:return n.comparator===`gt`?r>0:n.comparator===`ge`&&r>=0;default:throw Error(`Unsupported SemVer comparator "${t}".`)}}function K(e,t){let n=ph(e),r=ph(t),i=_h([n.major,n.minor,n.patch],[r.major,r.minor,r.patch]);return i===0?vh(n.prerelease,r.prerelease):i}function _h(e,t){for(let n=0;n<e.length;++n){let r=e[n],i=t[n];if(r===void 0)return i===void 0?0:-1;if(i===void 0)return 1;if(r<i)return-1;if(r>i)return 1}return e.length===t.length?0:-1}function vh(e,t){if(e===void 0&&t===void 0)return 0;if(e===void 0)return 1;if(t===void 0)return-1;let n=Math.max(e.length,t.length);for(let r=0;r<n;++r){let n=e[r],i=t[r];if(n===void 0)return-1;if(i===void 0)return 1;let a=yh(n,i);if(a!==0)return a}return 0}function yh(e,t){let n=bh(e),r=bh(t);return n&&r?_h([Number(e)],[Number(t)]):n?-1:r?1:e<t?-1:+(e>t)}function bh(e){return/^(0|[1-9]\d*)$/.test(e)}var xh={compatibilityRules:[{protocol:{version:`0.13.0`,comparator:`lt`},pubKeyCrs:{version:`1.6.0`,comparator:`lt`},tfhe:{canonical:`1.5.3`,compatible:[`1.5.3`]},kms:{canonical:`0.13.10`,compatible:[`0.13.10`]}},{protocol:{version:`0.13.0`,comparator:`ge`},pubKeyCrs:{version:`1.6.0`,comparator:`lt`},tfhe:{canonical:`1.6.2`,compatible:[`1.5.3`,`1.6.2`]},kms:{canonical:`0.13.20-0`,compatible:[`0.13.10`,`0.13.20-0`]}},{protocol:{version:`0.13.0`,comparator:`ge`},pubKeyCrs:{version:`1.6.0`,comparator:`ge`},tfhe:{canonical:`1.6.2`,compatible:[`1.6.2`]},kms:{canonical:`0.13.20-0`,compatible:[`0.13.10`,`0.13.20-0`]}}]}.compatibilityRules;function Sh(e,t){let n=wh(e,`tfhe`),r=Th(t,`tfhe`,n);if(n.purpose===`explicit`)return kh(`tfhe`,e.runtime.config.logger,t,r,n),n.explicitVersion;if(r===void 0)throw Error(`Cannot auto-resolve tfhe WASM version without a resolved compatibility rule.`);return r.tfhe.canonical}function Ch(e,t){let n=wh(e,`kms`),r=Th(t,`kms`,n);if(n.purpose===`explicit`)return kh(`kms`,e.runtime.config.logger,t,r,n),n.explicitVersion;if(r===void 0)throw Error(`Cannot auto-resolve kms WASM version without a resolved compatibility rule.`);return r.kms.canonical}function wh(e,t){let n=e.options.moduleVersions;if(n!==`auto`){if(n?.[t]!==void 0)return{purpose:`explicit`,explicitVersion:n[t],checkCompatibility:n.checkCompatibility};let r=e.runtime.config.moduleVersions;if(r!==`auto`&&r?.[t]!==void 0)return{purpose:`explicit`,explicitVersion:r[t],checkCompatibility:r.checkCompatibility}}return{purpose:`auto`}}function Th(e,t,n){if(n.purpose===`explicit`&&Oh(n.checkCompatibility)===`off`)return;if(e===void 0){if(n.purpose===`auto`)throw Error(`Cannot auto-resolve ${t} WASM version without a resolved protocol context.`);return}let r=Eh(e),i=r[0];if(r.length===1&&i!==void 0)return i;let a=Nh(e,t,n.purpose);if(n.purpose===`auto`)throw Error(a)}function Eh(e){return xh.filter(t=>Dh(e.protocolVersion,t.protocol)&&Dh(e.pubKeyCrsVersion,t.pubKeyCrs))}function Dh(e,t){return gh(e.version,e.comparator,t)}function Oh(e){return e??`throw`}function kh(e,t,n,r,i){if(Oh(i.checkCompatibility)===`off`||n===void 0)return;if(r===void 0){Ah(i.checkCompatibility,t,Nh(n,e,i.purpose));return}let a=jh(e,r);a.includes(i.explicitVersion)||Ah(i.checkCompatibility,t,Mh(e,i.explicitVersion,a,n))}function Ah(e,t,n){let r=Oh(e);switch(r){case`throw`:throw Error(n);case`warn`:t?.warn?.(n);return;case`off`:return;default:throw Error(`Unsupported module version compatibility check "${r}".`)}}function jh(e,t){switch(e){case`tfhe`:return t.tfhe.compatible;case`kms`:return t.kms.compatible;default:throw Error(`Unsupported WASM module "${e}".`)}}function Mh(e,t,n,r){return`Explicit ${e} WASM version "${t}" is not compatible ${r===void 0?`without a resolved protocol context`:`with protocol context protocol=${Ph(r.protocolVersion)}, pubKeyCrs=${Ph(r.pubKeyCrsVersion)}`}. Compatible versions: ${n.join(`, `)}.`}function Nh(e,t,n){return`Cannot ${n===`auto`?`auto-resolve ${t} WASM version`:`check ${t} WASM version compatibility`} from protocol context protocol=${Ph(e.protocolVersion)}, pubKeyCrs=${Ph(e.pubKeyCrsVersion)}. The resolved context does not prove exactly one WASM compatibility rule.`}function Ph(e){return`${e.comparator}:${e.version}`}function Fh(e){return hd(e)}var Ih=Fh({id:1,fhevm:{contracts:{acl:{address:`0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6`},inputVerifier:{address:`0xCe0FC2e05CFff1B719EFF7169f7D80Af770c8EA2`},kmsVerifier:{address:`0x77627828a55156b04Ac0DC0eb30467f1a552BB03`},protocolConfig:void 0},relayerUrl:`https://relayer.mainnet.zama.org`,gateway:{id:261131,contracts:{decryption:{address:`0x0f6024a97684f7d90ddb0fAAD79cB15F2C888D24`},inputVerification:{address:`0xcB1bB072f38bdAF0F328CdEf1Fc6eDa1DF029287`}}}}}),Lh=Fh({id:11155111,fhevm:{contracts:{acl:{address:`0xf0Ffdc93b7E186bC2f8CB3dAA75D86d1930A433D`},inputVerifier:{address:`0xBBC1fFCdc7C316aAAd72E807D9b0272BE8F84DA0`},kmsVerifier:{address:`0xbE0E383937d564D7FF0BC3b46c51f0bF8d5C311A`},protocolConfig:{address:`0x51f9AFBc89Ea792e1a21a12AB802ab58D4dbee83`}},relayerUrl:`https://relayer.testnet.zama.org`,gateway:{id:10901,contracts:{decryption:{address:`0x5D8BD78e2ea6bbE41f26dFe9fdaEAa349e077478`},inputVerification:{address:`0x483b9dE06E4E4C7D35CCf5837A1668487406D955`}}}}}),Rh={acl:{sortedProtocolByVersion:[{acl:{lowerBound:{version:`0.2.0`,comparator:`ge`},upperBound:{version:`0.3.0`,comparator:`lt`}},protocolVersion:`0.11.0`},{acl:{lowerBound:{version:`0.3.0`,comparator:`ge`},upperBound:{version:`0.4.0`,comparator:`lt`}},protocolVersion:`0.12.0`},{acl:{lowerBound:{version:`0.4.0`,comparator:`ge`},upperBound:{version:`0.5.0`,comparator:`lt`}},protocolVersion:`0.13.0`},{acl:{lowerBound:{version:`0.5.0`,comparator:`ge`},upperBound:{version:`0.6.0`,comparator:`lt`}},protocolVersion:`0.14.0`}]},pubKeyCrs:{knownByRelayerUrl:[{relayerUrl:Ih.fhevm.relayerUrl,pubKeyCrsVersion:`1.4.0-alpha.3`},{relayerUrl:Lh.fhevm.relayerUrl,pubKeyCrsVersion:`1.4.0-alpha.3`},{relayerUrl:`https://relayer.dev.zama.cloud`,pubKeyCrsVersion:`1.4.0-alpha.3`}],generatedByProtocolVersion:[{protocol:{lowerBound:{version:`0.11.0`,comparator:`ge`},upperBound:{version:`0.12.0`,comparator:`lt`}},pubKeyCrsVersion:`1.5.1`},{protocol:{lowerBound:{version:`0.12.0`,comparator:`ge`},upperBound:{version:`0.13.0`,comparator:`lt`}},pubKeyCrsVersion:`1.5.4`},{protocol:{lowerBound:{version:`0.13.0`,comparator:`ge`},upperBound:{version:`0.14.0`,comparator:`le`}},pubKeyCrsVersion:`1.6.1`}]}},zh=Rh.acl.sortedProtocolByVersion;Kh(zh);var Bh=Rh.pubKeyCrs.generatedByProtocolVersion;qh(Bh);function Vh(e,t){let n=Hh(t);return Object.freeze({protocolVersion:n,pubKeyCrsVersion:Xh(e,n)})}function Hh(e){let t=Gh(e),n=zh.find(e=>hh(t,e.acl));if(n!==void 0)return Object.freeze({version:n.protocolVersion,comparator:`eq`});let r=Uh();if(Jh(t,r.acl.lowerBound))return Object.freeze({version:r.protocolVersion,comparator:`lt`});let i=Wh();if(Yh(t,i.acl.upperBound))return Object.freeze({version:i.protocolVersion,comparator:`gt`});throw Error(`Cannot resolve protocol version from ACL version ${t}: the ACL compatibility table has a gap.`)}function Uh(){return tg(zh,`No known ACL protocol versions configured.`)}function Wh(){return ng(zh,`No known ACL protocol versions configured.`)}function Gh(e){return`${e.major}.${e.minor}.${e.patch}`}function Kh(e){if(e.length===0)throw Error(`No known ACL protocol versions configured.`);let t,n;for(let[r,i]of e.entries()){let e=i.acl.lowerBound,a=i.acl.upperBound;if(e===void 0||a===void 0)throw Error(`ACL protocol rule at index ${r} must define both lower and upper bounds.`);if(e.comparator!==`ge`||a.comparator!==`lt`)throw Error(`ACL protocol rule at index ${r} must use a [lower, upper) interval.`);if(K(e.version,a.version)>=0)throw Error(`ACL protocol rule at index ${r} has an invalid interval.`);if(t!==void 0&&K(t.version,e.version)!==0)throw Error(`ACL protocol rules must be contiguous at index ${r}.`);if(n!==void 0&&K(n,i.protocolVersion)>=0)throw Error(`ACL protocol versions must be strictly ascending at index ${r}.`);t=a,n=i.protocolVersion}}function qh(e){if(e.length===0)throw Error(`No known generated PubKey/CRS versions configured.`);let t,n;for(let[r,i]of e.entries()){let a=i.protocol.lowerBound,o=i.protocol.upperBound,s=r===e.length-1;if(a===void 0||o===void 0)throw Error(`Generated PubKey/CRS protocol rule at index ${r} must define both lower and upper bounds.`);if(a.comparator!==`ge`)throw Error(`Generated PubKey/CRS protocol rule at index ${r} must use a closed lower bound.`);if(!s&&o.comparator!==`lt`)throw Error(`Generated PubKey/CRS protocol rule at index ${r} must use an open upper bound, except the final rule may use a closed upper bound.`);if(K(a.version,o.version)>=0)throw Error(`Generated PubKey/CRS protocol rule at index ${r} has an invalid interval.`);if(t!==void 0&&K(t.version,a.version)!==0)throw Error(`Generated PubKey/CRS protocol rules must be contiguous at index ${r}.`);if(n!==void 0&&K(n,i.pubKeyCrsVersion)>=0)throw Error(`Generated PubKey/CRS versions must be strictly ascending at index ${r}.`);t=o,n=i.pubKeyCrsVersion}}function Jh(e,t){let n=K(e,t.version);return t.comparator===`ge`?n<0:n<=0}function Yh(e,t){let n=K(e,t.version);return t.comparator===`lt`?n>=0:n>0}function Xh(e,t){let n=ig(e.fhevm.relayerUrl),r=Rh.pubKeyCrs.knownByRelayerUrl.find(e=>ig(e.relayerUrl)===n);if(r!==void 0)return rg(r.pubKeyCrsVersion);let i=Bh.filter(e=>Zh(t,e.protocol)),a=i[0];if(i.length===1&&a!==void 0)return rg(a.pubKeyCrsVersion);if(i.length>1)throw Error(`Ambiguous generated PubKey/CRS version for protocol ${t.comparator}:${t.version}.`);return Qh(t)}function Zh(e,t){return!(t.lowerBound!==void 0&&!gh(e.version,e.comparator,t.lowerBound)||t.upperBound!==void 0&&!gh(e.version,e.comparator,t.upperBound))}function Qh(e){let t=Uh().protocolVersion,n=Wh().protocolVersion;if(e.comparator===`lt`&&K(e.version,t)<=0)return Object.freeze({version:$h(),comparator:`lt`});if(e.comparator===`gt`&&K(e.version,n)>=0)return Object.freeze({version:eg(),comparator:`gt`});if(e.comparator===`eq`&&K(e.version,t)<0)return Object.freeze({version:$h(),comparator:`lt`});if(e.comparator===`eq`&&K(e.version,n)>0)return Object.freeze({version:eg(),comparator:`gt`});throw Error(`Cannot resolve generated PubKey/CRS version from ambiguous protocol ${e.comparator}:${e.version}.`)}function $h(){return tg(Bh,`No known PubKey/CRS versions configured.`).pubKeyCrsVersion}function eg(){return ng(Bh,`No known PubKey/CRS versions configured.`).pubKeyCrsVersion}function tg(e,t){let n=e[0];if(n===void 0)throw Error(t);return n}function ng(e,t){let n=e[e.length-1];if(n===void 0)throw Error(t);return n}function rg(e){return Object.freeze({version:e,comparator:`eq`})}function ig(e){return e.replace(/\/+$/,``)}async function ag(e){let t=D(Wi(e.chain.fhevm.contracts.acl.address)),n=D(Wi(e.chain.fhevm.contracts.inputVerifier.address)),r=D(Wi(e.chain.fhevm.contracts.kmsVerifier.address)),[i,a,o]=await Wc([()=>Js(e,{address:t}),()=>Js(e,{address:n}),()=>Js(e,{address:r})],e.options.batchRpcCalls);$s(i,`ACL`),$s(a,`InputVerifier`),$s(o,`KMSVerifier`);let s=Vh(e.chain,i),c=Sh(e,s),l=Ch(e,s);return ss({hostContractVersions:{ACL:i,InputVerifier:a,KMSVerifier:o},protocolVersion:s.protocolVersion,pubKeyCrsVersion:s.pubKeyCrsVersion,tfheVersion:c,tkmsVersion:l})}async function og(e){let t=zs(e);if(t!==void 0)return t;let n=Vs(e);return n===void 0&&(n=ag(e).then(t=>(Rs(e,t),t)).finally(()=>{Bs(e,void 0)}),Bs(e,n)),n}function sg(e){return{decryptPublicValue:t=>ru(e,t),decryptPublicValues:t=>iu(e,t),decryptPublicValuesWithSignatures:t=>au(e,t),signDecryptionPermit:t=>Gm(e,t),signLegacyDecryptionPermit:t=>af(e,t),parseTransportKeyPair:t=>Km(e,t),serializeTransportKeyPair:t=>lh(e,t),serializeSignedDecryptionPermit:t=>uh(e,t),parseSignedDecryptionPermit:t=>dh(e,t),fetchFheEncryptionKeyBytes:t=>ch(e,t)}}async function cg(e){await og(e)}function lg(e){return Ms(e),{actions:sg(e),runtime:e.runtime,init:cg}}function ug(e){return Fs(of,{chain:e.chain,runtime:ym(),client:e.publicClient,options:e.options}).extend(lg)}var dg=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},fg,pg=class{constructor(){fg.set(this,[])}track(e){return dg(this,fg,`f`).push(e),e}free(){for(;dg(this,fg,`f`).length>0;){let e=dg(this,fg,`f`).pop();if(e!==void 0)try{e.free()}catch{}}}};fg=new WeakMap;function mg(){return e!==void 0&&typeof e.versions?.node==`string`}function hg(){return typeof Bun>`u`&&!mg()&&typeof location<`u`&&typeof location.href==`string`&&typeof addEventListener==`function`&&typeof removeEventListener==`function`}async function gg(e){try{let t=`node:${e}`;return await n(()=>import(t),[])}catch{return}}var _g;function vg(){return _g??=(async()=>{let e=await gg(`buffer`);return typeof e?.Buffer?.from==`function`?e.Buffer:void 0})(),_g}var yg;function bg(){return yg??=(async()=>{let e=await gg(`fs/promises`);return typeof e?.readFile==`function`?e:void 0})(),yg}var xg;function Sg(){return xg??=(async()=>{let e=await gg(`url`);return typeof e?.fileURLToPath==`function`?e:void 0})(),xg}function Cg(){return typeof Worker==`function`&&typeof Blob==`function`&&typeof URL<`u`&&typeof URL.createObjectURL==`function`}var wg;function Tg(){if(wg===void 0){if(typeof DecompressionStream!=`function`||typeof Blob!=`function`)wg=!1;else try{new DecompressionStream(`gzip`),wg=!0}catch{wg=!1}}return wg}var Eg;function Dg(){return Eg??=(async()=>{let e=await gg(`worker_threads`);return typeof e?.Worker==`function`?e.Worker:void 0})(),Eg}function Og(e){return{counts:new Uint16Array(16),symbols:new Uint16Array(e)}}var kg=new Uint8Array(30),Ag=new Uint16Array(30),jg=new Uint8Array(30),Mg=new Uint16Array(30),Ng=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Pg=Og(288),Fg=Og(30);function Ig(e,t,n,r){for(let t=0;t<n;t++)e[t]=0;for(let t=0;t<30-n;t++)e[t+n]=Math.floor(t/n);let i=r;for(let n=0;n<30;n++)t[n]=i,i+=1<<e[n]}function Lg(e,t){for(let t=0;t<7;t++)e.counts[t]=0;e.counts[7]=24,e.counts[8]=152,e.counts[9]=112;for(let t=0;t<24;t++)e.symbols[t]=256+t;for(let t=0;t<144;t++)e.symbols[24+t]=t;for(let t=0;t<8;t++)e.symbols[168+t]=280+t;for(let t=0;t<112;t++)e.symbols[176+t]=144+t;for(let e=0;e<5;e++)t.counts[e]=0;t.counts[5]=32;for(let e=0;e<32;e++)t.symbols[e]=e}Ig(kg,Ag,4,3),Ig(jg,Mg,2,1),kg[28]=0,Ag[28]=258,Lg(Pg,Fg);function q(e,t,n){if(t===0)return n;for(;e.bitcount<24;)e.tag|=e.source[e.pos++]<<e.bitcount,e.bitcount+=8;let r=e.tag&65535>>>16-t;return e.tag>>>=t,e.bitcount-=t,r+n}function Rg(e,t){for(;e.bitcount<24;)e.tag|=e.source[e.pos++]<<e.bitcount,e.bitcount+=8;let n=0,r=0,i=0,a=e.tag;do r=2*r+(a&1),a>>>=1,i++,n+=t.counts[i],r-=t.counts[i];while(r>=0);return e.tag=a,e.bitcount-=i,t.symbols[n+r]}function zg(e,t,n,r){for(let t=0;t<16;t++)e.counts[t]=0;for(let i=0;i<r;i++){let r=t[n+i];e.counts[r]=e.counts[r]+1}e.counts[0]=0;let i=new Uint16Array(16),a=0;for(let t=0;t<16;t++)i[t]=a,a+=e.counts[t];for(let a=0;a<r;a++){let r=t[n+a];if(r!==0){let t=i[r];e.symbols[t]=a,i[r]=t+1}}}function Bg(e,t,n){let r=Og(19),i=new Uint8Array(320),a=q(e,5,257),o=q(e,5,1),s=q(e,4,4);for(let t=0;t<s;t++)i[Ng[t]]=q(e,3,0);zg(r,i,0,19);let c=0;for(;c<a+o;){let t=Rg(e,r);if(t===16){let t=i[c-1];for(let n=q(e,2,3);n>0;n--)i[c++]=t}else if(t===17)for(let t=q(e,3,3);t>0;t--)i[c++]=0;else if(t===18)for(let t=q(e,7,11);t>0;t--)i[c++]=0;else i[c++]=t}zg(t,i,0,a),zg(n,i,a,o)}function Vg(e,t){let n=e.destLen+t;if(n<=e.dest.length)return;let r=e.dest.length*2;for(;r<n;)r*=2;let i=new Uint8Array(r);i.set(e.dest),e.dest=i}function Hg(e,t,n){for(;;){let r=Rg(e,t);if(r===256)return;if(r<256)Vg(e,1),e.dest[e.destLen++]=r;else{r-=257;let t=q(e,kg[r],Ag[r]),i=Rg(e,n),a=q(e,jg[i],Mg[i]),o=e.destLen-a;Vg(e,t);for(let n=0;n<t;n++)e.dest[e.destLen++]=e.dest[o+n]}}}function Ug(e){for(;e.bitcount>8;)e.pos--,e.bitcount-=8;let t=e.source[e.pos+1]<<8|e.source[e.pos];if(t!==(~(e.source[e.pos+3]<<8|e.source[e.pos+2])&65535)>>>0)throw Error(`inflate: invalid stored block length`);e.pos+=4,Vg(e,t);for(let n=t;n>0;n--)e.dest[e.destLen++]=e.source[e.pos++];e.tag=0,e.bitcount=0}function Wg(e,t){let n=t!==void 0&&t>0?t:Math.max(e.length*4,1024),r={source:e,pos:0,tag:0,bitcount:0,dest:new Uint8Array(n),destLen:0};for(;;){let e=q(r,1,0),t=q(r,2,0);if(t===0)Ug(r);else if(t===1)Hg(r,Pg,Fg);else if(t===2){let e=Og(288),t=Og(32);Bg(r,e,t),Hg(r,e,t)}else throw Error(`inflate: invalid block type`);if(e!==0)break}return r.dest.subarray(0,r.destLen)}function Gg(e){if(e.length<18||e[0]!==31||e[1]!==139)throw Error(`gunzip: not a gzip stream`);if(e[2]!==8)throw Error(`gunzip: unsupported compression method ${String(e[2])}`);let t=e[3],n=10;if(t&4&&(n+=2+((e[n]|e[n+1]<<8)>>>0)),t&8){for(;e[n]!==0;)n++;n++}if(t&16){for(;e[n]!==0;)n++;n++}t&2&&(n+=2);let r=e.length,i=(e[r-4]|e[r-3]<<8|e[r-2]<<16|e[r-1]<<24)>>>0;return Wg(e.subarray(n),i)}function Kg(e,t){return t===`gzip`?Gg(e):Wg(t===`deflate-raw`?e:e.subarray(2))}async function qg(e){if(!hg()){let t=await vg();if(t)return t.from(e,`base64`)}if(await Tf())return(await fetch(`data:application/octet-stream;base64,${e}`)).arrayBuffer();let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}async function Jg(e){let t=await fetch(e);if(!t.ok)throw new um({message:`Failed to fetch WASM: ${t.status} ${t.statusText}`,url:e.toString()});return t}async function Yg(e){if(!hg()&&e.protocol===`file:`){let[t,n]=await Promise.all([bg(),Sg()]);if(t&&n)return t.readFile(n.fileURLToPath(e))}return(await Jg(e)).arrayBuffer()}async function Xg(e,t){let n=await Yg(e);return await Lr(n,t,{subject:`WASM ${e.toString()}`}),WebAssembly.compile(n)}async function Zg(e,t){let n=await qg(e);if(t===void 0)return WebAssembly.compile(n);if(Tg()){let e=new Blob([n]).stream().pipeThrough(new DecompressionStream(t));return WebAssembly.compileStreaming(new Response(e,{headers:{"Content-Type":`application/wasm`}}))}let r=n instanceof Uint8Array?n:new Uint8Array(n);return WebAssembly.compile(Kg(r,t))}Object.freeze([`0.13.10`,`0.13.20-0`]);var Qg={"0.13.10":()=>n(()=>import(`./kms_lib-BgnOy0xU.js`),__vite__mapDeps([0,1,2])),"0.13.20-0":()=>n(()=>import(`./kms_lib-w0jRi8cP.js`),__vite__mapDeps([3,1,2]))},$g={"0.13.10":()=>n(()=>import(`./kms_lib_bg.wasm.base64-CoCbCutU.js`),[]),"0.13.20-0":()=>n(()=>import(`./kms_lib_bg.wasm.base64-BcQMSC6I.js`),[])},e_=Object.freeze({"0.13.10":Object.freeze({wasm:Object.freeze({filename:`kms_lib_bg.v0.13.10.wasm`,localRelativePath:`./v0.13.10/kms_lib_bg.wasm`,sha256:`31cfb31392445ae2630f560b961edd21c72e40d58cb20c455f9fc4d4750bb9a0`})}),"0.13.20-0":Object.freeze({wasm:Object.freeze({filename:`kms_lib_bg.v0.13.20-0.wasm`,localRelativePath:`./v0.13.20-0/kms_lib_bg.wasm`,sha256:`be54c8f11daf048b897b41cf6e6735895490cdca77f2a01c01be0d6fbf369c81`})})});function t_(e){let t=e_[e];if(!t)throw Error(`unsupported tkms version: ${e}`);return t}async function n_(e){let t=Qg[e];if(!t)throw Error(`unsupported tkms version: ${e}`);return t()}async function r_(e){let t=$g[e];if(!t)throw Error(`unsupported tkms version: ${e}`);return t()}async function i_(e){if(e?.protocol!==`file:`||!mg())return!1;let[t,n]=await Promise.all([bg(),Sg()]);if(!t||!n)return!1;try{return await t.access(n.fileURLToPath(e)),!0}catch{return!1}}var a_=async e=>{let{wasmBaseUrl:t}=await n(async()=>{let{wasmBaseUrl:e}=await import(`./wasmBaseUrl-C7910Wg_.js`);return{wasmBaseUrl:e}},__vite__mapDeps([4,2,5,6]));return new URL(`./tkms/${e}`,t)};async function o_(e,t){let n,r=`none`;if(t!==void 0){let i=t(e.filename);if(i==null)n=void 0;else if(i instanceof URL)n=i;else throw TypeError(`Invalid locateFile result for TKMS asset '${e.filename}': expected URL, null, or undefined.`);r=`user`}else hg()||(n=await a_(e.localRelativePath),r=`node`);return Object.freeze({...e,url:n,resolution:r})}async function s_(e,t){let n=await o_(e.wasm,t);return n.resolution===`node`&&(await i_(n.url)||(n=Object.freeze({...n,url:void 0}))),{wasm:n}}function c_(e,t){let{wasm:n}=e;n.resolution===`user`?t?.debug?.(`resolve tkms wasm filename using 'locateFile' function: ${n.filename} -> url: ${n.url}`):n.resolution===`node`?n.url===void 0?t?.debug?.(`tkms auto-derived assets not found on disk (bundler relocation?); using embedded base64 (wasm: ${n.localRelativePath})`):t?.debug?.(`resolve tkms wasm local path: ${n.localRelativePath} -> url: ${n.url}`):t?.debug?.(`resolve tkms assets using embedded base64 (browser, no 'locateFile')`)}var l_=new Map,u_=new Map;async function d_(e,t){let n=l_.get(t);if(n!==void 0)return n;let r=u_.get(t);return r===void 0&&(r=f_(e.config,t).then(e=>(l_.set(t,e),e)).catch(e=>{throw u_.delete(t),e}),u_.set(t,r)),r}async function f_(e,t){let{locateFile:n}=e,r=await s_(t_(t),n);return c_(r,e.logger),{version:t,assets:r,logger:e.logger}}var p_=new Map,m_=new Map,h_=new Map;async function g_(e,t){So(e,{});let n=p_.get(t.tkmsVersion);if(n!==void 0&&e.uid!==n)throw Error(`Decrypt WASM module is already owned by runtime '${n}' and cannot be shared with runtime '${e.uid}'`);p_.set(t.tkmsVersion,e.uid);let r=m_.get(t.tkmsVersion);return r===void 0&&(r=(async()=>await v_(await d_(e,t.tkmsVersion)))(),m_.set(t.tkmsVersion,r)),r}async function __(e){let t;if(e.assets.wasm.url!==void 0)e.logger?.debug?.(`compile tkms verified wasm at: ${e.assets.wasm.url}`),t=await Xg(e.assets.wasm.url,e.assets.wasm.sha256);else{let{tkmsWasmBase64:n,tkmsWasmBase64CompressionFormat:r}=await r_(e.version);e.logger?.debug?.(`compile tkms wasm from embedded base64 (compression:${r??`none`})`),t=await Zg(n,r)}return t}async function v_(e){let t=await n_(e.version),n={module_or_path:await __(e)};await t.initAsync(n);let r=t.getWasmInfo(),i={byteLength:0,pages:0};return r.memory!==void 0&&(i.byteLength=r.memory.byteLength,i.pages=r.memory.pages),h_.set(e.version,Object.freeze({wasmUrl:e.assets.wasm.url?new URL(e.assets.wasm.url):void 0,version:r.version,name:r.name,memory:i})),t}async function y_(e){let t=await n_(e.tkmsVersion),n=h_.get(e.tkmsVersion);if(n===void 0)throw Error(`getTkmsModuleInfo: no module info recorded for version "${e.tkmsVersion}"`);let r={byteLength:n.memory.byteLength,pages:n.memory.pages},i=t.getWasmInfo();return i.memory!==void 0&&(r.byteLength=i.memory.byteLength,r.pages=i.memory.pages),{...n,memory:r}}var b_=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},x_=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},S_,C_,w_=Symbol(`KmsSigncryptedShares.token`),T_=Symbol(`KmsSigncryptedShares.getMetadata`),E_=Symbol(`KmsSigncryptedShares.getShares`),D_=class{constructor(e,t){if(S_.set(this,void 0),C_.set(this,void 0),b_(this,S_,{kmsSignersContext:e.kmsSignersContext,eip712Domain:e.eip712Domain,eip712Signature:e.eip712Signature,eip712SignerAddress:e.eip712SignerAddress,eip712ExtraData:e.eip712ExtraData,handles:[...e.handles],tkmsVersion:e.tkmsVersion},`f`),Object.freeze(x_(this,S_,`f`)),Object.freeze(x_(this,S_,`f`).handles),b_(this,C_,[...t],`f`),Object.freeze(x_(this,C_,`f`)),x_(this,C_,`f`).forEach(e=>Object.freeze(e)),x_(this,C_,`f`).length===0)throw Error(`Expected at least one signcrypted share.`)}get tkmsVersion(){return x_(this,S_,`f`).tkmsVersion}[(S_=new WeakMap,C_=new WeakMap,E_)](e){if(e!==w_)throw Error(`Unauthorized`);return x_(this,C_,`f`)}[T_](e){if(e!==w_)throw Error(`Unauthorized`);return x_(this,S_,`f`)}};function O_(e){let{metadata:t,shares:n}=e;return Ic(t.kmsSignersContext,{}),new D_(t,n)}function k_(e){if(!(e instanceof D_))throw Error(`Invalid KmsSigncryptedShares`);return e[E_](w_)}function A_(e){if(!(e instanceof D_))throw Error(`Invalid KmsSigncryptedShares`);return e[T_](w_)}var j_=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},J=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},M_,N_,P_,F_,I_,L_=Symbol(`TKMSLib.getNative`),R_=Symbol(`TKMSLib.token`),z_=Symbol(`TkmsPrivateEncKeyMlKem512.getPublicKey`),B_=Symbol(`TkmsPublicEncKeyMlKem512Impl.getBytesHexNo0x`);function V_(e){if(e!==R_)throw Error(`Unauthorized`)}var H_=class e{constructor(e,t,n){M_.set(this,void 0),N_.set(this,void 0),P_.set(this,void 0),V_(e),j_(this,M_,n,`f`),j_(this,P_,t,`f`)}free(){J(this,M_,`f`)!==void 0&&(J(this,M_,`f`).free(),j_(this,M_,void 0,`f`))}get tkmsVersion(){return J(this,P_,`f`)}static[(M_=new WeakMap,N_=new WeakMap,P_=new WeakMap,L_)](t,n,r){if(V_(n),!(t instanceof e))throw Error(`Unauthorized`);if(J(t,M_,`f`)===void 0)throw Error(`TkmsPublicKey is already disposed`);if(J(t,P_,`f`)!==r)throw Error(`TkmsVersion mismatch`);return J(t,M_,`f`)}static[B_](t,n,r,i){if(V_(n),!(t instanceof e))throw Error(`Unauthorized`);if(J(t,M_,`f`)===void 0)throw Error(`TkmsPublicKey is already disposed`);if(J(t,P_,`f`)!==r||i.getWasmInfo().version!==r)throw Error(`TkmsVersion mismatch`);if(J(t,N_,`f`)===void 0){let e=i.ml_kem_pke_pk_to_u8vec(J(t,M_,`f`));j_(t,N_,Ir(e,!1),`f`)}return J(t,N_,`f`)}},U_=class e{constructor(e,t,n){F_.set(this,void 0),I_.set(this,void 0),V_(e),j_(this,F_,n,`f`),j_(this,I_,t,`f`)}get tkmsVersion(){return J(this,I_,`f`)}free(){J(this,F_,`f`)!==void 0&&(J(this,F_,`f`).free(),j_(this,F_,void 0,`f`))}static[(F_=new WeakMap,I_=new WeakMap,L_)](t,n,r){if(V_(n),!(t instanceof e))throw Error(`Unauthorized`);if(J(t,F_,`f`)===void 0)throw Error(`TkmsPrivateKey is already disposed`);if(J(t,I_,`f`)!==r)throw Error(`TkmsVersion mismatch`);return J(t,F_,`f`)}static[z_](t,n,r,i){if(V_(n),!(t instanceof e))throw Error(`Unauthorized`);if(J(t,F_,`f`)===void 0)throw Error(`TkmsPrivateKey is already disposed`);if(J(t,I_,`f`)!==r||i.getWasmInfo().version!==r)throw Error(`TkmsVersion mismatch`);let a=i.ml_kem_pke_get_pk(J(t,F_,`f`));return new H_(n,J(t,I_,`f`),a)}};async function W_(e,t){let n=(await g_(e,{tkmsVersion:t.tkmsVersion})).ml_kem_pke_keygen();return new U_(R_,t.tkmsVersion,n)}async function G_(e,t){let n=await g_(e,{tkmsVersion:t.tkmsVersion}),{tkmsPrivateKey:r,shares:i}=t;if(!(r instanceof U_))throw Error(`Invalid tkmsPrivateKey`);let a=new pg;try{let e=a.track(U_[z_](r,R_,t.tkmsVersion,n)),o=A_(i);if(o.tkmsVersion!==t.tkmsVersion)throw Error(`TkmsVersion mismatch`);let s=k_(i);if(s[0]===void 0)throw Error(`Expected at least one signcrypted share.`);let c=lc(cc(o.eip712ExtraData)),l=s.map(e=>({signature:e.signature,payload:e.payload,extra_data:e.extraData})),u=U_[L_](r,R_,t.tkmsVersion),d=H_[L_](e,R_,t.tkmsVersion),f=H_[B_](e,R_,t.tkmsVersion,n),p=o.eip712Domain,m=o.eip712SignerAddress,ee={name:p.name,version:p.version,chain_id:Nn(p.chainId),verifying_contract:p.verifyingContract,salt:null},te=o.kmsSignersContext.signers.map((e,t)=>{let r=t+1;return n.new_server_id_addr(r,e)}),ne=a.track(n.new_client(te,m,`default`)),re={signature:b(o.eip712Signature),client_address:m,enc_key:b(f),ciphertext_handles:o.handles.map(e=>e.bytes32HexNo0x),eip712_verifying_contract:o.eip712Domain.verifyingContract,extra_data:b(c)},ie=n.process_user_decryption_resp_from_js(ne,re,ee,l,d,u,void 0,!0);for(let e of ie)a.track(e);let ae=ie.map((e,t)=>{let n=o.handles[t];if(n===void 0||e.fhe_type!==n.fheTypeId)throw Error(`Internal error`);return Tl({value:ka(n.fheType,e.bytes),handle:n,originToken:R_})});return Object.freeze(ae),ae}finally{a.free()}}async function K_(e,t){let n=await g_(e,{tkmsVersion:t.tkmsVersion}),{tkmsPrivateKey:r}=t;if(!(r instanceof U_))throw Error(`Invalid tkmsPrivateKey`);let i=U_[z_](r,R_,t.tkmsVersion,n);try{return H_[B_](i,R_,t.tkmsVersion,n)}finally{i.free()}}async function q_(e,t){let n=await g_(e,{tkmsVersion:t.tkmsVersion}),{tkmsPrivateKey:r}=t;if(!(r instanceof U_))throw Error(`Invalid tkmsPrivateKey`);let i=U_[L_](r,R_,t.tkmsVersion);return n.ml_kem_pke_sk_to_u8vec(i)}async function J_(e,t){let n=await g_(e,{tkmsVersion:t.tkmsVersion}),{tkmsPrivateKeyBytes:r}=t,i=n.u8vec_to_ml_kem_pke_sk(r);return new U_(R_,t.tkmsVersion,i)}function Y_(e,t){if(!(t.tkmsPrivateKey instanceof U_))throw Error(`Invalid TkmsPrivateKey`);if(t.tkmsVersion!==t.tkmsPrivateKey.tkmsVersion)throw Error(`TkmsVersion mismatch`)}var X_=e=>Object.freeze({decrypt:Object.freeze({initTkmsModule:async t=>{await g_(e,t)},getTkmsModuleInfo:e=>y_(e),decryptAndReconstruct:t=>G_(e,t),generateTkmsPrivateKey:t=>W_(e,t),serializeTkmsPrivateKey:t=>q_(e,t),deserializeTkmsPrivateKey:t=>J_(e,t),getTkmsPublicKeyHex:t=>K_(e,t),verifyTkmsPrivateKey:t=>{Y_(e,t)}})});async function Z_(e){return await Ld(e,{fhevmContext:await L(e)})}async function Q_(e,t){let{transportKeyPair:n,kmsSigncryptedShares:r,fhevmContext:i}=t;if(i.tkmsVersion!==r.tkmsVersion)throw Error(`TkmsVersion mismatch`);let a=await Bd(e,{transportKeyPair:n,fhevmContext:i});try{return await e.runtime.decrypt.decryptAndReconstruct({shares:r,tkmsPrivateKey:a,tkmsVersion:i.tkmsVersion})}finally{a.free()}}async function $_(e,t){let{aclAddress:n,pairs:r}=t;return await Wc(r.map(t=>()=>ev(e,{aclAddress:n,handle:t.handle,account:t.account})),e.options.batchRpcCalls)}async function ev(e,t){let{aclAddress:n,handle:r,account:i}=t,a=I(e),o=await e.runtime.ethereum.readContract(a,{address:n,abi:Po,args:[r.bytes32Hex,i],functionName:Po[0].name});if(typeof o!=`boolean`)throw Error(`Invalid persistAllowed result.`);return o}async function tv(e,t){let{aclAddress:n,userAddress:r,handleContractPairs:i}=t;if(i.length===0)throw Error(`checkPersistAllowed requires at least one (handle, contractAddress) pair`);function a(e,t){return`${e}:${t}`.toLowerCase()}for(let e of i)if(r.toLowerCase()===e.contractAddress.toLowerCase())throw new Ql({contractAddress:n,message:`userAddress ${r} should not be equal to contractAddress when requesting user decryption!`});let o=[],s=new Set;for(let e of i){let t=a(r,e.handle.bytes32Hex);s.has(t)||(s.add(t),o.push({handle:e.handle,account:r}));let n=a(e.contractAddress,e.handle.bytes32Hex);s.has(n)||(s.add(n),o.push({handle:e.handle,account:e.contractAddress}))}if(o.length===0)throw Error(`checkPersistAllowed: no ACL checks to perform (unexpected empty dedup result)`);let c=await $_(e,{aclAddress:n,pairs:o}),l=new Map;for(let[e,t]of o.entries()){let n=c[e];if(n===void 0)throw Error(`Missing result at index ${e}`);let r=a(t.account,t.handle.bytes32Hex);l.set(r,n)}for(let e of i){let i=a(t.userAddress,e.handle.bytes32Hex);if(l.get(i)!==!0)throw new Ql({contractAddress:n,message:`User ${r} is not authorized to decrypt handle ${e.handle.bytes32Hex}!`});let o=a(e.contractAddress,e.handle.bytes32Hex);if(l.get(o)!==!0)throw new Ql({contractAddress:n,message:`Dapp contract ${e.contractAddress} is not authorized to user decrypt handle ${e.handle.bytes32Hex}!`})}}async function nv(e,t){let{aclAddress:n,delegate:r,delegator:i,pairs:a}=t;return await Wc(a.map(t=>()=>rv(e,{aclAddress:n,delegate:r,delegator:i,handle:t.handle,contractAddress:t.contractAddress})),e.options.batchRpcCalls)}async function rv(e,t){let{aclAddress:n,delegator:r,delegate:i,contractAddress:a,handle:o}=t,s=I(e),c=await e.runtime.ethereum.readContract(s,{address:n,abi:Oo,args:[r,i,a,o.bytes32Hex],functionName:Oo[0].name});if(typeof c!=`boolean`)throw Error(`Invalid isHandleDelegatedForUserDecryption result.`);return c}async function iv(e,t){let{aclAddress:n,delegator:r,delegate:i,handleContractPairs:a}=t;if(a.length===0)throw Error(`checkDelegation requires at least one (handle, contractAddress) pair`);function o(e,t){return`${e}:${t}`.toLowerCase()}if(r.toLowerCase()===i.toLowerCase())throw new Ql({contractAddress:n,message:`delegator ${r} cannot be equal to delegate`});if(i.toLowerCase()===`0xffffffffffffffffffffffffffffffffffffffff`)throw new Ql({contractAddress:n,message:`delegate cannot be equal to wildcard contract address`});if(r.toLowerCase()===`0xffffffffffffffffffffffffffffffffffffffff`)throw new Ql({contractAddress:n,message:`delegator cannot be equal to wildcard contract address`});for(let e of a){if(r.toLowerCase()===e.contractAddress.toLowerCase())throw new Ql({contractAddress:n,message:`delegator ${r} cannot be equal to contractAddress`});if(i.toLowerCase()===e.contractAddress.toLowerCase())throw new Ql({contractAddress:n,message:`delegate ${i} cannot be equal to contractAddress`})}let s=[],c=new Set;for(let e of a){let t=o(e.contractAddress,e.handle.bytes32Hex);c.has(t)||(c.add(t),s.push({handle:e.handle,contractAddress:e.contractAddress}))}if(s.length===0)throw Error(`checkDelegation: no delegation checks to perform (unexpected empty dedup result)`);let l=await nv(e,{aclAddress:n,delegator:r,delegate:i,pairs:s}),u=new Map;for(let[e,t]of s.entries()){let n=l[e];if(n===void 0)throw Error(`Missing result at index ${e}`);let r=o(t.contractAddress,t.handle.bytes32Hex);u.set(r,n)}for(let e of a){let t=o(e.contractAddress,e.handle.bytes32Hex);if(u.get(t)!==!0)throw new Ql({contractAddress:n,message:`Delegate ${i} is not delegated by ${r} to user decrypt handle ${e.handle.bytes32Hex} on contract ${e.contractAddress}!`})}}var av=10;function ov(e,t){let n=e.eip712.message.contractAddresses;for(let e of t)if(!n.some(t=>t.toLowerCase()===e.toLowerCase()))throw Error(`contract address ${e} is not listed in the permit's contractAddresses`)}async function sv(e,t){let{options:n,pairs:r,fhevmContext:i}=t;if(t.signedPermit.version!==1)throw Error(`fetchKmsSigncryptedSharesV1 requires a v1 permit, got v${t.signedPermit.version}`);let a=t.signedPermit,o=i.tkmsVersion;ov(a,r.map(e=>e.contractAddress));let s={auth:e.runtime.config.auth,...n};Bm(a,{});let{encryptedDataOwnerAddress:c,signerAddress:l,signature:u}=a;if(r.length===0)throw Error(`encrypted value/contract pairs must not be empty, at least one encrypted value/contract pair is required`);let d=a.eip712.message.contractAddresses.length;if(d===0)throw Error(`contractAddresses is empty`);if(d>av)throw Error(`contractAddresses max length of ${av} exceeded`);let f=r,p=r.map(e=>e.handle);Object.freeze(p),qa(p,BigInt(e.chain.id)),$a(p),a.assertNotExpired(),a.eip712.primaryType===`DelegatedUserDecryptRequestVerification`?await iv(e,{aclAddress:e.chain.fhevm.contracts.acl.address,delegate:l,delegator:c,handleContractPairs:f}):await tv(e,{aclAddress:e.chain.fhevm.contracts.acl.address,userAddress:c,handleContractPairs:f});let m=cc(a.eip712.message.extraData),ee=await Zc(e,{kmsVerifierAddress:e.chain.fhevm.contracts.kmsVerifier.address,protocolConfigAddress:e.chain.fhevm.contracts.protocolConfig?.address,extraData:m,fhevmContext:i}),te;return te=a.eip712.primaryType===`DelegatedUserDecryptRequestVerification`?await e.runtime.relayer.fetchDelegatedUserDecrypt(e,{version:1,payload:{handleContractPairs:f,kmsDecryptEip712Signer:l,kmsDecryptEip712Message:a.eip712.message,kmsDecryptEip712Signature:u},fhevmContext:i,options:s}):await e.runtime.relayer.fetchUserDecrypt(e,{version:1,payload:{handleContractPairs:f,kmsDecryptEip712Signer:l,kmsDecryptEip712Message:a.eip712.message,kmsDecryptEip712Signature:u},fhevmContext:i,options:s}),O_({metadata:{kmsSignersContext:ee,eip712Domain:Al({chainId:e.chain.fhevm.gateway.id,verifyingContractAddressDecryption:e.chain.fhevm.gateway.contracts.decryption.address}),eip712ExtraData:a.eip712.message.extraData,eip712Signature:u,eip712SignerAddress:l,handles:p,tkmsVersion:o},shares:te})}async function cv(e,t){let{transportKeyPair:n,fhevmContext:r}=t,i;if(t.signedPermit.version>1)throw Error(`Unsupported permit version ${t.signedPermit.version}: this SDK uses protocol API v0.13.x, which only supports V1 decryption permits. V2 permits require an SDK using protocol API v0.14.0 or later.`);return i=await sv(e,t),Q_(e,{kmsSigncryptedShares:i,transportKeyPair:n,fhevmContext:r})}async function lv(e,t){let{encryptedValue:n,contractAddress:r,...i}=t;E(r,{});let a=D(r),o=[{handle:Wa(n),contractAddress:a,ownerAddress:D(t.signedPermit.encryptedDataOwnerAddress)}],s=await L(e);return(await cv(e,{...i,pairs:o,fhevmContext:s}))[0]}async function uv(e,t){let{encryptedValues:n,contractAddress:r,...i}=t;E(r,{});let a=D(r),o=D(t.signedPermit.encryptedDataOwnerAddress),s=n.map(e=>({handle:Wa(e),contractAddress:a,ownerAddress:o})),c=await L(e);return cv(e,{...i,pairs:s,fhevmContext:c})}async function dv(e,t){let{pairs:n,...r}=t,i=D(t.signedPermit.encryptedDataOwnerAddress),a=n.map(e=>(E(e.contractAddress,{}),{handle:Wa(e.encryptedValue),contractAddress:D(e.contractAddress),ownerAddress:i})),o=await L(e);return cv(e,{...r,pairs:a,fhevmContext:o})}async function fv(e){let t=As(e,`decrypt`),n=await og(t);await t.runtime.decrypt.initTkmsModule({tkmsVersion:n.tkmsVersion})}function pv(e){return{decryptValue:t=>lv(e,t),decryptValues:t=>uv(e,t),decryptValuesFromPairs:t=>dv(e,t),generateTransportKeyPair:()=>Z_(e)}}function mv(e,t){let n=e.runtime.extend(t);return js(e,`decrypt`),{actions:pv(e),runtime:n,init:fv}}function hv(e){return mv(e,X_)}function gv(e){return ug(e).extend(hv)}var _v=class extends g{constructor(e){super({...e,name:`EncryptionError`})}};async function vv(){return await Dg()!==void 0}var yv;function bv(){return yv??=(async()=>{try{if(typeof Bun<`u`){if(await vv())return`node`;if(Cg())return`web`}else{if(Cg())return`web`;if(await vv())return`node`}throw Error(`No worker backend available (neither Web Worker nor node:worker_threads).`)}catch(e){throw yv=void 0,e}})(),yv}async function xv(e){if(await bv()===`web`){let t=new Blob([e],{type:`application/javascript`}),n=URL.createObjectURL(t);try{return new Worker(n)}finally{URL.revokeObjectURL(n)}}let t=await Dg();if(!t)throw Error(`No worker backend available (node:worker_threads unavailable).`);return new t(e,{eval:!0})}async function Sv(e,t,n=3e4){let r=await bv(),i=`
5
5
  self.onmessage = async ({ data }) => {
6
6
  try {
7
7
  const result = await (async (data) => { ${e} })(data);
@@ -20,4 +20,6 @@ import{n as e,t}from"./dist-Cuadm9-o.js";import{t as n}from"./preload-helper-BLd
20
20
  parentPort.postMessage({ error: String(e) });
21
21
  }
22
22
  });
23
- `,o=await xv(r===`web`?i:a);return new Promise((e,r)=>{let i=!1,a=()=>{if(!i){i=!0,clearTimeout(l);try{o.terminate()}catch{}}},s=e=>{a(),r(e instanceof Error?e:Error(String(e)))},c=t=>{a(),t.error===void 0?e(t.result):r(Error(typeof t.error==`string`?t.error:JSON.stringify(t.error)))},l=setTimeout(()=>{i||s(Error(`Worker timed out after ${String(n)}ms`))},n);`on`in o?(o.on(`message`,e=>{c(e)}),o.on(`error`,e=>{s(e)}),o.on(`exit`,e=>{i||s(Error(`Worker exited with code ${String(e)}`))}),o.postMessage(t)):(o.onmessage=({data:e})=>{c(e)},o.onerror=e=>{s(Error(e.message))},o.postMessage(t))})}var Cv;function wv(){return Cv??=Sv(`return data + " world!";`,`hello`,5e3).then(e=>e===`hello world!`,()=>!1),Cv}var Tv=()=>(async e=>{try{return typeof MessageChannel<`u`&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(e)}catch{return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]));Object.freeze([`1.5.3`,`1.6.2`]);var Ev={"1.5.3":()=>n(()=>import(`./tfhe-DuWT_ao1.js`),__vite__mapDeps([7,8,1,2,9])),"1.6.2":()=>n(()=>import(`./tfhe-PDJAG8Bv.js`),__vite__mapDeps([10,8,1,2,9]))},Dv={"1.5.3":()=>n(()=>import(`./tfhe_bg.wasm.base64-D8cmATWt.js`),[]),"1.6.2":()=>n(()=>import(`./tfhe_bg.wasm.base64-BJ8HGyoL.js`),[])},Ov=Object.freeze({"1.5.3":Object.freeze({wasm:Object.freeze({filename:`tfhe_bg.v1.5.3.wasm`,localRelativePath:`./v1.5.3/tfhe_bg.wasm`,sha256:`dd349c2e34834527890a80e1b70bf5ee57a02aabb7f65e32a1bca654db9201ec`}),worker:Object.freeze({filename:`tfhe-worker.v1.5.3.mjs`,localRelativePath:`./v1.5.3/tfhe-worker.mjs`,sha256:`3f93fe86a8dfa6e25ae5fcfe28d19833219cba8f45f81c6dd05c2f3cc5323c52`})}),"1.6.2":Object.freeze({wasm:Object.freeze({filename:`tfhe_bg.v1.6.2.wasm`,localRelativePath:`./v1.6.2/tfhe_bg.wasm`,sha256:`ecd1841ad42226629c1a665ba784e073f2e780137f7986b00088c9227acb9760`}),worker:Object.freeze({filename:`tfhe-worker.v1.6.2.mjs`,localRelativePath:`./v1.6.2/tfhe-worker.mjs`,sha256:`2c648dd89132bb63d37e8b47c6fe1f53b06abb1389faeb9b3f671eea9a0db5dd`})})});function kv(e){let t=Ov[e];if(!t)throw Error(`unsupported tfhe version: ${e}`);return t}async function Av(e){let t=Ev[e];if(!t)throw Error(`unsupported tfhe version: ${e}`);return t()}async function jv(e){let t=Dv[e];if(!t)throw Error(`unsupported tfhe version: ${e}`);return t()}function Mv(e){return e!==void 0&&e!==`auto`&&e!==`embedded-base64`}var Nv=async e=>{let{wasmBaseUrl:t}=await n(async()=>{let{wasmBaseUrl:e}=await import(`./wasmBaseUrl-C7910Wg_.js`);return{wasmBaseUrl:e}},__vite__mapDeps([4,2,5,6]));return new URL(`./tfhe/${e}`,t)};async function Pv(e,t){let n,r=`none`;if(t!==void 0){let i=t(e.filename);if(i==null)n=void 0;else if(i instanceof URL)n=i;else throw TypeError(`Invalid locateFile result for TFHE asset '${e.filename}': expected URL, null, or undefined.`);r=`user`}else hg()||(n=await Nv(e.localRelativePath),r=`node`);return Object.freeze({...e,url:n,resolution:r})}async function Fv(e,t){let n=await Pv(e.wasm,t),r=await Pv(e.worker,t);return n.resolution===`node`&&((await Promise.all([i_(n.url),i_(r.url)])).every(Boolean)||(n=Object.freeze({...n,url:void 0}),r=Object.freeze({...r,url:void 0}))),{wasm:n,worker:r}}function Iv(e,t){let{wasm:n,worker:r}=e;n.resolution===`user`?(t?.debug?.(`resolve tfhe wasm filename using 'locateFile' function: ${n.filename} -> url: ${n.url}`),t?.debug?.(`resolve tfhe worker filename using 'locateFile' function: ${r.filename} -> url: ${r.url}`)):n.resolution===`node`?n.url===void 0?t?.debug?.(`tfhe auto-derived assets not found on disk (bundler relocation?); using embedded base64 (wasm: ${n.localRelativePath}, worker: ${r.localRelativePath})`):(t?.debug?.(`resolve tfhe wasm local path: ${n.localRelativePath} -> url: ${n.url}`),t?.debug?.(`resolve tfhe worker local path: ${r.localRelativePath} -> url: ${r.url}`)):t?.debug?.(`resolve tfhe assets using embedded base64 (browser, no 'locateFile')`)}var Lv=new Map,Rv=new Map;async function zv(e,t){let n=Lv.get(t);if(n!==void 0)return n;let r=Rv.get(t);return r===void 0&&(r=Hv(e.config,t).then(e=>(Lv.set(t,e),e)).catch(e=>{throw Rv.delete(t),e}),Rv.set(t,r)),r}function Bv(e,t){let{wasmAssetLoadMode:n,numberOfThreads:r}=t,{wasm:i,worker:a}=e;if(i.resolution!==a.resolution)throw Error(`Internal error`);if(i.resolution===`node`&&i.url===void 0!=(a.url===void 0))throw Error(`Inconsistent auto-derived TFHE asset URLs: Node resolution must resolve both the wasm and worker assets, or neither (wasm: ${i.url?`url`:`none`}, worker: ${a.url?`url`:`none`}).`);if(a.url===void 0&&Mv(n))throw Error(`wasmAssetLoadMode '${n}' requires a resolvable worker URL, but none is available. Use 'auto' or 'embedded-base64', or provide a worker URL via 'locateFile'.`);if(r!==void 0&&(!Number.isInteger(r)||r<0))throw Error(`numberOfThreads must be a non-negative integer, received: ${String(r)}`)}async function Vv(e){let{preferredSingleThread:t,numberOfThreadsConfig:n,wasmAssetLoadMode:r,canUseBlob:i,logger:a}=e,o=t,s=0,c;return o||(s=n??(typeof navigator<`u`?navigator.hardwareConcurrency:0),s>0?(c=await Tv(),c?!i&&r===`auto`&&(a?.warn?.(`Cannot spawn a '${r}' worker (blob/eval workers unavailable); running single-threaded.`),o=!0,s=0):(o=!0,s=0)):(o=!0,s=0)),{singleThread:o,numberOfThreads:s,supportsThreads:c}}async function Hv(e,t){let{locateFile:n,wasmAssetLoadMode:r,singleThread:i,numberOfThreads:a}=e,o=r??`auto`,s=await wv(),c=await Fv(kv(t),n);Bv(c,e),Iv(c,e.logger);let{singleThread:l,numberOfThreads:u,supportsThreads:d}=await Vv({preferredSingleThread:i??!1,numberOfThreadsConfig:a,wasmAssetLoadMode:o,canUseBlob:s,logger:e.logger});return(await Av(t)).setWorkerUrlConfig({workerUrl:c.worker.url,wasmAssetLoadMode:o,isBrowserLike:hg(),logger:e.logger?.debug!==void 0&&e.logger.error!==void 0?{debug:e.logger.debug,error:e.logger.error}:void 0}),{version:t,numberOfThreads:u,assets:c,wasmAssetLoadMode:o,singleThread:l,logger:e.logger,supportsThreads:d}}var Uv=new Map,Wv=new Map,Gv=new Map;async function Kv(e,t){So(e,{});let n=Uv.get(t.tfheVersion);if(n!==void 0&&e.uid!==n)throw Error(`Encrypt WASM module is already owned by runtime '${n}' and cannot be shared with runtime '${e.uid}'`);Uv.set(t.tfheVersion,e.uid);let r=Wv.get(t.tfheVersion);return r===void 0&&(r=(async()=>await Jv(await zv(e,t.tfheVersion)))(),Wv.set(t.tfheVersion,r)),r}async function qv(e){let t;if(e.assets.wasm.url!==void 0)e.logger?.debug?.(`compile verified wasm at: ${e.assets.wasm.url}`),t=await Xg(e.assets.wasm.url,e.assets.wasm.sha256);else{let{tfheWasmBase64:n,tfheWasmBase64CompressionFormat:r}=await jv(e.version);e.logger?.debug?.(`compile wasm from embedded base64 (compression:${r??`none`})`),t=await Zg(n,r)}return t}async function Jv(e){let t=await Av(e.version),n={module_or_path:await qv(e)};await t.initAsync(n),t.init_panic_hook(),e.singleThread||(e.logger?.debug?.(`initThreadPool(${e.numberOfThreads})`),await t.initThreadPool(e.numberOfThreads));let r=t.getWasmInfo(),i={byteLength:0,pages:0};return r.memory!==void 0&&(i.byteLength=r.memory.byteLength,i.pages=r.memory.pages),Gv.set(e.version,Object.freeze({wasmUrl:e.assets.wasm.url?new URL(e.assets.wasm.url):void 0,version:r.version,name:r.name,workerUrl:e.assets.worker.url?new URL(e.assets.worker.url):void 0,numberOfThreads:e.singleThread?0:e.numberOfThreads,threadsAvailable:e.supportsThreads,memory:i})),t}async function Yv(e){let t=await Av(e.tfheVersion),n=Gv.get(e.tfheVersion);if(n===void 0)throw Error(`getTfheModuleInfo: no module info recorded for version "${e.tfheVersion}"`);let r={byteLength:n.memory.byteLength,pages:n.memory.pages},i=t.getWasmInfo();return i.memory!==void 0&&(r.byteLength=i.memory.byteLength,r.pages=i.memory.pages),{...n,memory:r}}var Xv=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Zv=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Qv,$v,ey,ty,ny,ry,iy,ay=Symbol(`TFHELib.getNative`),Y=Symbol(`TFHELib.token`),oy=BigInt(536870912),sy=BigInt(536870912),cy=BigInt(536870912),ly=class e{constructor(e,t,n,r){if(Qv.set(this,void 0),$v.set(this,void 0),ey.set(this,void 0),e!==Y)throw Error(`Unauthorized`);Xv(this,Qv,t,`f`),Xv(this,ey,n,`f`),Xv(this,$v,r,`f`)}get id(){return Zv(this,Qv,`f`)}get tfheVersion(){return Zv(this,ey,`f`)}static[(Qv=new WeakMap,$v=new WeakMap,ey=new WeakMap,ay)](t,n,r){if(n!==Y||!(t instanceof e))throw Error(`Unauthorized`);if(r!==Zv(t,ey,`f`))throw Error(`TfheVersion mismatch`);return Zv(t,$v,`f`)}},uy=class e{constructor(e,t,n,r,i){if(ty.set(this,void 0),ny.set(this,void 0),ry.set(this,void 0),iy.set(this,void 0),e!==Y)throw Error(`Unauthorized`);Xv(this,ty,t,`f`),Xv(this,iy,n,`f`),Xv(this,ny,r,`f`),Xv(this,ry,i,`f`)}get id(){return Zv(this,ty,`f`)}get tfheVersion(){return Zv(this,iy,`f`)}get capacity(){return Zv(this,ny,`f`)}static[(ty=new WeakMap,ny=new WeakMap,ry=new WeakMap,iy=new WeakMap,ay)](t,n,r){if(n!==Y||!(t instanceof e))throw Error(`Unauthorized`);if(r!==Zv(t,iy,`f`))throw Error(`TfheVersion mismatch`);return Zv(t,ry,`f`)}};async function dy(e,t){let n=await Kv(e,{tfheVersion:t.tfheVersion}),{ciphertextWithZkProof:r}=t;if(r==null)throw new _v({message:`ciphertextWithZKProof argument is null or undefined.`});if(!(r instanceof Uint8Array)&&!sn(r))throw new _v({message:`Invalid ciphertextWithZKProof argument.`});let i=typeof r==`string`?Vr(r,{strict:!0}):r,a;try{a=n.ProvenCompactCiphertextList.safe_deserialize(i,oy)}catch(e){throw new _v({message:`Invalid ciphertextWithZKProof bytes. ${ta(e)}.`})}let o=[];try{let e=a.len();for(let t=0;t<e;++t){let e=a.get_kind_of(t);if(!pa(e))throw new _v({message:`Invalid FheTypeId: ${e}`});o.push(e)}return{fheTypeIds:o,encryptionBits:o.map(Ta)}}finally{a.free()}}async function fy(e,t){let n=await Kv(e,{tfheVersion:t.tfheVersion}),{fheEncryptionKey:r,metaData:i,typedValues:a,extraData:o}=t,s=r.publicKey,c=r.crs;if(!(s instanceof ly))throw Error(`Invalid tfhePublicKey`);if(!(c instanceof uy))throw Error(`Invalid tfheCrs`);let l,u,d;try{let e=ly[ay](s,Y,t.tfheVersion),r=uy[ay](c,Y,t.tfheVersion);d=n.CompactCiphertextList.builder(e);for(let e of a)switch(ul(e,{}),e.type){case`uint8`:d.push_u8(e.value);break;case`uint16`:d.push_u16(e.value);break;case`uint32`:d.push_u32(e.value);break;case`uint64`:d.push_u64(e.value);break;case`uint128`:d.push_u128(e.value);break;case`uint256`:d.push_u256(e.value);break;case`bool`:d.push_boolean(e.value);break;case`address`:d.push_u160(BigInt(e.value))}return l=d.build_with_proof_packed(r,i,n.ZkComputeLoad.Verify),u=l.safe_serialize(oy),Object.freeze({ciphertextWithZKProofBytes:u,extraData:o,tfheVersion:t.tfheVersion})}finally{try{l!==void 0&&l.free()}catch{}try{d!==void 0&&d.free()}catch{}}}async function py(e,t){let n=t.tfheVersion;await Kv(e,{tfheVersion:n});let{fheEncryptionKey:r}=t,i=r.publicKey,a=r.crs;if(!(i instanceof ly))throw Error(`Invalid tfhePublicKey`);if(!(a instanceof uy))throw Error(`Invalid tfheCrs`);let o=ly[ay](i,Y,n).safe_serialize(sy),s=uy[ay](a,Y,n).safe_serialize(cy);return Object.freeze({publicKeyBytes:Object.freeze({id:r.publicKey.id,bytes:o}),crsBytes:Object.freeze({id:r.crs.id,capacity:r.crs.capacity,bytes:s}),metadata:Object.freeze({relayerUrl:r.metadata.relayerUrl,chainId:r.metadata.chainId})})}async function my(e,t){let n=t.tfheVersion;await Kv(e,{tfheVersion:n});let{publicKey:r}=t,i=r;if(!(i instanceof ly))throw Error(`Invalid tfhePublicKey`);let a=ly[ay](i,Y,n).safe_serialize(sy);return Object.freeze({id:r.id,bytes:a,tfheVersion:n})}async function hy(e,t){let n=t.tfheVersion;await Kv(e,{tfheVersion:n});let{crs:r}=t,i=r;if(!(i instanceof uy))throw Error(`Invalid tfheCrs`);let a=uy[ay](i,Y,n).safe_serialize(cy);return Object.freeze({id:r.id,capacity:r.capacity,bytes:a,tfheVersion:n})}async function gy(e,t){let n=t.tfheVersion,r=await Kv(e,{tfheVersion:n}),{crsBytes:i}=t,a=r.CompactPkeCrs.safe_deserialize(i.bytes,cy);return new uy(Y,i.id,n,i.capacity,a)}async function _y(e,t){let n=t.tfheVersion,r=await Kv(e,{tfheVersion:n}),{publicKeyBytes:i}=t,a=r.TfheCompactPublicKey.safe_deserialize(i.bytes,sy);return new ly(Y,i.id,n,a)}var vy=e=>Object.freeze({encrypt:Object.freeze({initTfheModule:async t=>{await Kv(e,t)},getTfheModuleInfo:e=>Yv(e),parseTFHEProvenCompactCiphertextList:t=>dy(e,t),buildWithProofPacked:t=>fy(e,t),serializeFheEncryptionKey:t=>py(e,t),serializeFheEncryptionPublicKey:t=>my(e,t),serializeFheEncryptionCrs:t=>hy(e,t),deserializeFheEncryptionPublicKey:t=>_y(e,t),deserializeFheEncryptionCrs:t=>gy(e,t)})});async function yy(e,t){let{keyBytes:n,fhevmContext:r}=t,i=await e.runtime.encrypt.deserializeFheEncryptionPublicKey({publicKeyBytes:n.publicKeyBytes,tfheVersion:r.tfheVersion}),a=await e.runtime.encrypt.deserializeFheEncryptionCrs({crsBytes:n.crsBytes,tfheVersion:r.tfheVersion});return rh(new WeakRef(e.runtime),{publicKey:i,crs:a,metadata:n.metadata,tfheVersion:r.tfheVersion})}async function by(e,t){let n=e.chain.fhevm.relayerUrl,r=e.runtime;Qo.ensureBytes({owner:r,relayerUrl:n,fetcher:()=>r.relayer.fetchFheEncryptionKeyBytes({relayerUrl:n,chainId:e.chain.id},t),metadata:{chainId:e.chain.id,relayerUrl:n}}),Qo.ensureWasm({owner:r,relayerUrl:n,deserializeFn:n=>yy(e,{keyBytes:n,fhevmContext:t.fhevmContext})});let i=Qo.get(n);if(i===void 0)throw Error(`Failed to fetch global FHE PKE params`);if(await i.ready,i.resolvedKind!==`wasm`)throw Error(`Expected wasm params but got `+JSON.stringify(i.resolvedKind));return i.value}var xy=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},X=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Z,Sy,Cy,wy,Ty,Q,Ey,Dy,Oy=Symbol(`ZkProofBuilder.token`),ky=2048,Ay=class{constructor(e,t){if(Z.add(this),Sy.set(this,0),Cy.set(this,[]),wy.set(this,void 0),Ty.set(this,void 0),Q.set(this,new fl),e!==Oy)throw Error(`Unauthorized`);xy(this,wy,t.bitsCapacity,`f`),xy(this,Ty,t.ciphertextCapacity,`f`)}get count(){return X(this,Cy,`f`).length}get totalBits(){return X(this,Sy,`f`)}getBits(){return[...X(this,Cy,`f`)]}addTypedValue(e){return X(this,Q,`f`).addTypedValue(e),X(this,Z,`m`,Dy).call(this,xa(e.type)),this}addBool(e){return X(this,Q,`f`).addBool(e),X(this,Z,`m`,Dy).call(this,xa(`bool`)),this}addUint8(e){return X(this,Q,`f`).addUint8(e),X(this,Z,`m`,Dy).call(this,xa(`uint8`)),this}addUint16(e){return X(this,Q,`f`).addUint16(e),X(this,Z,`m`,Dy).call(this,xa(`uint16`)),this}addUint32(e){return X(this,Q,`f`).addUint32(e),X(this,Z,`m`,Dy).call(this,xa(`uint32`)),this}addUint64(e){return X(this,Q,`f`).addUint64(e),X(this,Z,`m`,Dy).call(this,xa(`uint64`)),this}addUint128(e){return X(this,Q,`f`).addUint128(e),X(this,Z,`m`,Dy).call(this,xa(`uint128`)),this}addUint256(e){return X(this,Q,`f`).addUint256(e),X(this,Z,`m`,Dy).call(this,xa(`uint256`)),this}addAddress(e){return X(this,Q,`f`).addAddress(e),X(this,Z,`m`,Dy).call(this,xa(`address`)),this}async build(e,{contractAddress:t,userAddress:n,extraData:r,fhevmContext:i}){let a=await by(e,{fhevmContext:i});if(X(this,Sy,`f`)===0)throw new H({message:`Encrypted input must contain at least one value`});if(y(X(this,Sy,`f`)<=X(this,wy,`f`)),!Ui(t))throw new H({message:`Invalid contract address: ${t}`});if(!Ui(n))throw new H({message:`Invalid user address: ${n}`});let o=e.chain.fhevm.contracts.acl.address,s=e.chain.id;if(!Ui(o))throw new H({message:`Invalid ACL address: ${o}`});if(!On(s))throw new H({message:`Invalid chain ID uint64: ${s}`});let c=zr(t),l=zr(n),u=zr(o),d=Mn(s),f=new Uint8Array(92);f.set(c,0),f.set(l,20),f.set(u,40),f.set(d,60),y(f.length-d.length===60);let{ciphertextWithZKProofBytes:p,extraData:m}=await e.runtime.encrypt.buildWithProofPacked({typedValues:[...X(this,Q,`f`).build()],fheEncryptionKey:a,metaData:f,extraData:gr(r),tfheVersion:i.tfheVersion});return id({chainId:BigInt(s),aclContractAddress:o,contractAddress:t,userAddress:n,ciphertextWithZkProof:p,encryptionBits:X(this,Cy,`f`)},m,{copy:!1})}};Sy=new WeakMap,Cy=new WeakMap,wy=new WeakMap,Ty=new WeakMap,Q=new WeakMap,Z=new WeakSet,Ey=function(e){if(X(this,Sy,`f`)+e>X(this,wy,`f`))throw new H({message:`Packing more than ${X(this,wy,`f`).toString()} bits in a single input ciphertext is unsupported`});if(X(this,Cy,`f`).length>=X(this,Ty,`f`))throw new H({message:`Packing more than ${X(this,Ty,`f`).toString()} variables in a single input ciphertext is unsupported`})},Dy=function(e){let t=Ea(e);X(this,Z,`m`,Ey).call(this,t),xy(this,Sy,X(this,Sy,`f`)+t,`f`),X(this,Cy,`f`).push(t)};async function jy(e,t){let{contractAddress:n,userAddress:r,values:i,extraData:a,fhevmContext:o}=t,s=new Ay(Oy,{ciphertextCapacity:256,bitsCapacity:ky});for(let e of i)s.addTypedValue(dl(e));return await s.build(e,{contractAddress:n,userAddress:r,extraData:a,fhevmContext:o})}async function My(e,t){let n=await ld(e,{zkProof:await jy({chain:e.chain,runtime:e.runtime},{...t,extraData:`0x00`,fhevmContext:t.fhevmContext}),options:t.options,fhevmContext:t.fhevmContext});return{inputHandles:n.inputHandles,inputProof:n.bytesHex}}async function Ny(e,t){let{contractAddress:n,userAddress:r,options:i}=t,a=md(t.value).map(e=>dl({type:Ca(e.type),value:e.value}));E(n,{}),E(r,{});let o=await L(e),s=await My(e,{contractAddress:D(n),userAddress:D(r),values:a,fhevmContext:o,options:i});return{encryptedValue:s.inputHandles[0].bytes32Hex,inputProof:s.inputProof}}async function Py(e,t){let{contractAddress:n,userAddress:r,options:i}=t,a=t.values.map(e=>dl({type:Ca(e.type),value:e.value}));E(n,{}),E(r,{});let o=await L(e),s=await My(e,{contractAddress:D(n),userAddress:D(r),values:a,fhevmContext:o,options:i});return{encryptedValues:s.inputHandles.map(e=>e.bytes32Hex),inputProof:s.inputProof}}async function Fy(e){let t=As(e,`encrypt`),n=await og(t);await Promise.all([oh(t,{fhevmContext:cs(n)}),t.runtime.encrypt.initTfheModule({tfheVersion:n.tfheVersion})])}function Iy(e){return{encryptValue:t=>Ny(e,t),encryptValues:t=>Py(e,t)}}function Ly(e,t){let n=e.runtime.extend(t);return js(e,`encrypt`),{actions:Iy(e),runtime:n,init:Fy}}function Ry(e){return Ly(e,vy)}function zy(e){return ug(e).extend(Ry)}var By=()=>Object.freeze({ethereum:Object.freeze({decode:ff,encode:df,encodePacked:uf,recoverTypedDataAddress:lf,signTypedData:hf,getChainId:mf,readContract:pf,mnemonicToAccount:e=>{let t=jt(e.mnemonic,{path:e.path}),n=t.getHdKey().privateKey;if(n===null)throw Error(`Failed to derive private key from mnemonic at address ${t.address}.`);return{privateKey:Pr(n),address:t.address}},sign:e=>wt({hash:e.hash,privateKey:e.privateKey,to:`hex`}),generatePrivateKey:()=>xt(),getPublicKey:e=>kt(e.privateKey).publicKey,recoverAddress:e=>m(e),hashTypedData:e=>_r(Oe({domain:e.domain,types:e.types,primaryType:e.primaryType,message:e.message}))})});function Vy(e){return e.map(e=>({signature:e.signature,payload:e.payload,extraData:b(e.extraData)}))}var Hy=`test test test test test test test future home engine virtual motion`,Uy=`0'/2/`,Wy=`0'/3/`,Gy={address:`0xc9990FEfE0c27D31D0C2aa36196b085c0c4d456c`,privateKey:`0x7ec8ada6642fc4ccfb7729bc29c17cf8d21b61abd5642d1db992c0b8672ab901`},Ky={address:`0x0971C80fF03B428fD2094dd5354600ab103201C5`,privateKey:`0x388b7680e4e1afa06efbfd45cdd1fe39f3c6af381df6555a19661f283b97de91`};function qy(e){return e?.toLowerCase()===Ky.address.toLowerCase()}var Jy={coprocessor:new Map,kms:new Map};function Yy(e){return Jy.coprocessor.size===0&&(Zy(e,Uy,20,Jy.coprocessor),Jy.coprocessor.set(Gy.address,Gy.privateKey)),Jy.coprocessor}function Xy(e){return Jy.kms.size===0&&(Zy(e,Wy,20,Jy.kms),Jy.kms.set(Ky.address,Ky.privateKey)),Jy.kms}function Zy(e,t,n,r){let i=e.runtime.ethereum;for(let e=0;e<n;++e){let n=i.mnemonicToAccount({mnemonic:Hy,path:`m/44'/60'/${t}${e}`});r.set(n.address,n.privateKey)}}var Qy=[{type:`function`,name:`plaintexts`,inputs:[{name:`handle`,type:`bytes32`,internalType:`bytes32`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`}];async function $y(e,t){let n=await Xc(e,{kmsVerifierAddress:e.chain.fhevm.contracts.kmsVerifier.address,protocolConfigAddress:e.chain.fhevm.contracts.protocolConfig?.address,fhevmContext:t});return n.signers.length===1&&qy(n.signers[0])}var eb=Ws({executeFn:async({relayerClient:e,trustedClient:t})=>D(await e.runtime.ethereum.readContract(t,{abi:Do,address:e.chain.fhevm.contracts.acl.address,args:[],functionName:Do[0].name})),cacheKeyFn:({relayerClient:e})=>`${e.chain.fhevm.contracts.acl.address.toLowerCase()}:${e.chain.id}`});async function tb(e,t){return eb.execute({relayerClient:e,trustedClient:t},{})}async function nb(e,t,n){let r=await tb(e,t),i=[];for(let a of n){let n=await e.runtime.ethereum.readContract(t,{abi:Qy,address:r,args:[a.bytes32Hex],functionName:Qy[0].name});i.push(n)}return i}function rb(e,t){let n=b(e);if(n.length<64)throw Error(`PublicKeyTooShort: publicKey has ${n.length/2} bytes, need >= 32`);let r=BigInt(`0x`+n.slice(0,64));return t.map(e=>e^r)}function ib(e,t,n){let r=t.map((e,t)=>{let r=n[t];switch(e.solidityPrimitiveTypeName){case`bool`:return r===0n?0n:1n;case`address`:return r&(1n<<160n)-1n;case`uint256`:return r}});return e.encode({types:r.map(()=>`uint256`),values:r})}async function ab(e,t,n){let{kmsDecryptEip712Message:r}=t,i=t.handleContractPairs,a=await nb(e,I(e),i.map(e=>e.handle)),o=await Xc(e,{kmsVerifierAddress:e.chain.fhevm.contracts.kmsVerifier.address,protocolConfigAddress:e.chain.fhevm.contracts.protocolConfig?.address,fhevmContext:n}),s=o.signers,c=o.threshold,l=rb(r.publicKey,a),u=r.extraData,d=e.runtime.ethereum.encode({types:[`uint256[]`,`bytes`],values:[l,u]});return{signersAddress:s,threshold:BigInt(c),commonKmsSigncryptedSharePayload:d,extraData:u}}var ob=[{type:`function`,name:`userDecrypt`,inputs:[{name:`pairs`,type:`tuple[]`,internalType:`struct HandleContractPair[]`,components:[{name:`handle`,type:`bytes32`,internalType:`bytes32`},{name:`contractAddress`,type:`address`,internalType:`address`}]},{name:`userAddress`,type:`address`,internalType:`address`},{name:`publicKey`,type:`bytes`,internalType:`bytes`},{name:`contractAddresses`,type:`address[]`,internalType:`address[]`},{name:`startTimestamp`,type:`uint256`,internalType:`uint256`},{name:`durationDays`,type:`uint256`,internalType:`uint256`},{name:`userSignature`,type:`bytes`,internalType:`bytes`}],outputs:[{name:`payload`,type:`bytes`,internalType:`bytes`},{name:`signers`,type:`address[]`,internalType:`address[]`},{name:`threshold`,type:`uint256`,internalType:`uint256`},{name:`extraData`,type:`bytes`,internalType:`bytes`}],stateMutability:`view`}];async function sb(e,t){let{kmsDecryptEip712Message:n,kmsDecryptEip712Signer:r,kmsDecryptEip712Signature:i}=t,a=t.handleContractPairs,o=I(e),s=await e.runtime.ethereum.readContract(o,{abi:ob,address:e.chain.fhevm.contracts.kmsVerifier.address,args:[a.map(e=>({handle:e.handle.bytes32Hex,contractAddress:e.contractAddress})),r,n.publicKey,n.contractAddresses,lb(`kmsDecryptEip712Message.startTimestamp`,n.startTimestamp),lb(`kmsDecryptEip712Message.durationDays`,n.durationDays),i],functionName:ob[0].name});return{commonKmsSigncryptedSharePayload:s[0],signersAddress:s[1],threshold:Jn(s[2]),extraData:s[3]}}async function cb(e,t){let n=e.runtime.ethereum,{payload:r,fhevmContext:i}=t,a=r.handleContractPairs,o=r.kmsDecryptEip712Message.contractAddresses,s=o.length;for(let{contractAddress:e}of a){let t=!1;for(let n=0;n<s;++n)if(o[n]==e){t=!0;break}if(!t)throw Error(`ContractAddressNotAuthorized: ${e} is not in the EIP-712 authorized contractAddresses list.`)}let c=await $y(e,i),l;l=c?await ab(e,r,i):await sb(e,r);let u=l.commonKmsSigncryptedSharePayload,d=l.extraData,f=l.threshold,p=l.signersAddress,m=Xy(e),ee=er(p.length,Number(f)).map(e=>p[e]),te=[];for(let e of ee){let t=m.get(e);if(t===void 0)throw Error(`Unable to find KMS signer for address ${e}`);let r=await n.sign({hash:u,privateKey:t});te.push({signature:b(r),payload:b(u),extraData:d})}return Vy(te)}function lb(e,t){let n=$n(t);if(n===void 0)throw Error(`${e} is not a valid uint string, got ${JSON.stringify(t)}`);return n}async function ub(e,t){throw Error(`Not yet implemented`)}async function db(e,t){return t.version===1?await cb(e,t):await ub(e,t)}var fb=[{type:`function`,name:`publicDecrypt`,inputs:[{name:`handles`,type:`bytes32[]`,internalType:`bytes32[]`}],outputs:[{name:`abiEncodedCleartexts`,type:`bytes`,internalType:`bytes`},{name:`digest`,type:`bytes32`,internalType:`bytes32`},{name:`signers`,type:`address[]`,internalType:`address[]`},{name:`threshold`,type:`uint256`,internalType:`uint256`},{name:`extraData`,type:`bytes`,internalType:`bytes`}],stateMutability:`view`}];async function pb(e,t,n){let r=e.runtime.ethereum,{orderedHandles:i}=t,a=ib(r,i,await nb(e,I(e),i)),o=t.extraData,s=o===`0x00`?`0x`:o,c=Al({chainId:e.chain.fhevm.gateway.id,verifyingContractAddressDecryption:e.chain.fhevm.gateway.contracts.decryption.address}),l=await Xc(e,{kmsVerifierAddress:e.chain.fhevm.contracts.kmsVerifier.address,protocolConfigAddress:e.chain.fhevm.contracts.protocolConfig?.address,fhevmContext:n});return{orderedAbiEncodedClearValues:a,digest:r.hashTypedData({domain:c,types:Ml,primaryType:`PublicDecryptVerification`,message:{ctHandles:i.map(e=>e.bytes32Hex),decryptedResult:a,extraData:s}}),signersAddress:l.signers,extraData:o}}async function mb(e,t){let n=I(e),r=await e.runtime.ethereum.readContract(n,{abi:fb,address:e.chain.fhevm.contracts.kmsVerifier.address,args:[t.orderedHandles.map(e=>e.bytes32Hex)],functionName:fb[0].name});return{orderedAbiEncodedClearValues:r[0],digest:r[1],signersAddress:r[2],extraData:r[4]}}async function hb(e,t){let n=e.runtime.ethereum,r=await $y(e,t.fhevmContext),i;i=r?await pb(e,t.payload,t.fhevmContext):await mb(e,t.payload);let a=i.digest,o=i.signersAddress,s=Xy(e),c=[];for(let e=0;e<o.length;++e){let t=s.get(o[e]);if(t===void 0)throw Error(`Unable to find kms signer`);let r=await n.sign({hash:a,privateKey:t});c.push(r)}return{orderedAbiEncodedClearValues:i.orderedAbiEncodedClearValues,kmsPublicDecryptEip712Signatures:c,extraData:i.extraData}}async function gb(e,t,n){let{kmsDecryptEip712Message:r}=t,i=t.handleContractPairs,a=await nb(e,I(e),i.map(e=>e.handle)),o=await Xc(e,{kmsVerifierAddress:e.chain.fhevm.contracts.kmsVerifier.address,protocolConfigAddress:e.chain.fhevm.contracts.protocolConfig?.address,fhevmContext:n}),s=o.signers,c=o.threshold,l=rb(r.publicKey,a),u=r.extraData,d=e.runtime.ethereum.encode({types:[`uint256[]`,`bytes`],values:[l,u]});return{signersAddress:s,threshold:BigInt(c),commonKmsSigncryptedSharePayload:d,extraData:u}}var _b=[{type:`function`,name:`delegatedUserDecrypt`,inputs:[{name:`pairs`,type:`tuple[]`,internalType:`struct HandleContractPair[]`,components:[{name:`handle`,type:`bytes32`,internalType:`bytes32`},{name:`contractAddress`,type:`address`,internalType:`address`}]},{name:`delegator`,type:`address`,internalType:`address`},{name:`delegate`,type:`address`,internalType:`address`},{name:`publicKey`,type:`bytes`,internalType:`bytes`},{name:`contractAddresses`,type:`address[]`,internalType:`address[]`},{name:`startTimestamp`,type:`uint256`,internalType:`uint256`},{name:`durationDays`,type:`uint256`,internalType:`uint256`},{name:`delegateSignature`,type:`bytes`,internalType:`bytes`}],outputs:[{name:`payload`,type:`bytes`,internalType:`bytes`},{name:`signers`,type:`address[]`,internalType:`address[]`},{name:`threshold`,type:`uint256`,internalType:`uint256`},{name:`extraData`,type:`bytes`,internalType:`bytes`}],stateMutability:`view`}];async function vb(e,t){let{kmsDecryptEip712Message:n,kmsDecryptEip712Signer:r,kmsDecryptEip712Signature:i}=t,a=t.handleContractPairs,o=I(e),s=await e.runtime.ethereum.readContract(o,{abi:_b,address:e.chain.fhevm.contracts.kmsVerifier.address,args:[a.map(e=>({handle:e.handle.bytes32Hex,contractAddress:e.contractAddress})),n.delegatorAddress,r,n.publicKey,n.contractAddresses,bb(`kmsDecryptEip712Message.startTimestamp`,n.startTimestamp),bb(`kmsDecryptEip712Message.durationDays`,n.durationDays),i],functionName:_b[0].name});return{commonKmsSigncryptedSharePayload:s[0],signersAddress:s[1],threshold:Jn(s[2]),extraData:s[3]}}async function yb(e,t){let n=e.runtime.ethereum,{payload:r,fhevmContext:i}=t,a=r.handleContractPairs,o=r.kmsDecryptEip712Message.contractAddresses,s=o.length;for(let{contractAddress:e}of a){let t=!1;for(let n=0;n<s;++n)if(o[n]==e){t=!0;break}if(!t)throw Error(`ContractAddressNotAuthorized: ${e} is not in the EIP-712 authorized contractAddresses list.`)}let c=await $y(e,i),l;l=c?await gb(e,r,i):await vb(e,r);let u=l.commonKmsSigncryptedSharePayload,d=l.extraData,f=l.threshold,p=l.signersAddress,m=Xy(e),ee=er(p.length,Number(f)).map(e=>p[e]),te=[];for(let e of ee){let t=m.get(e);if(t===void 0)throw Error(`Unable to find KMS signer for address ${e}`);let r=await n.sign({hash:u,privateKey:t});te.push({signature:b(r),payload:b(u),extraData:d})}return Vy(te)}function bb(e,t){let n=$n(t);if(n===void 0)throw Error(`${e} is not a valid uint string, got ${JSON.stringify(t)}`);return n}var xb=[{type:`function`,name:`inputProof`,inputs:[{name:`ctHandles`,type:`bytes32[]`,internalType:`bytes32[]`},{name:`userAddress`,type:`address`,internalType:`address`},{name:`contractAddress`,type:`address`,internalType:`address`},{name:`extraData`,type:`bytes`,internalType:`bytes`}],outputs:[{name:`digest`,type:`bytes32`,internalType:`bytes32`},{name:`signers`,type:`address[]`,internalType:`address[]`},{name:`threshold`,type:`uint256`,internalType:`uint256`}],stateMutability:`view`}];async function Sb(e,t){let n=I(e),r=await e.runtime.ethereum.readContract(n,{abi:xb,address:e.chain.fhevm.contracts.inputVerifier.address,args:[t.zkProof.getInputHandles().map(e=>e.bytes32Hex),t.zkProof.userAddress,t.zkProof.contractAddress,t.zkProof.getExtraData()],functionName:xb[0].name});return{digest:r[0],signersAddress:r[1],threshold:Jn(r[2])}}async function Cb(e,t,n){let r=e.runtime.ethereum,{zkProof:i}=t,a=await Ru(e,{address:e.chain.fhevm.contracts.inputVerifier.address,fhevmContext:n}),o=bu({gatewayChainId:e.chain.fhevm.gateway.id,verifyingContractAddressInputVerification:e.chain.fhevm.gateway.contracts.inputVerification.address});return{digest:r.hashTypedData({domain:o,types:yu,primaryType:vu,message:{ctHandles:i.getInputHandles().map(e=>e.bytes32Hex),userAddress:i.userAddress,contractAddress:i.contractAddress,contractChainId:Yn(BigInt(e.chain.id)),extraData:i.getExtraData()}}),signersAddress:a.signers,threshold:Jn(BigInt(a.threshold))}}async function wb(e,t){let n=e.runtime.ethereum,{payload:r,fhevmContext:i}=t,a=await $y(e,i),o;o=a?await Cb(e,r,i):await Sb(e,r);let s=o.digest,c=o.signersAddress,l=o.threshold,u=Yy(e),d=er(c.length,Number(l)).map(e=>c[e]),f=[];for(let e of d){let t=u.get(e);if(t===void 0)throw Error(`Unable to find KMS signer for address ${e}`);let r=await n.sign({hash:s,privateKey:t});f.push(r)}return Promise.resolve({extraData:r.zkProof.getExtraData(),handles:r.zkProof.getInputHandles(),coprocessorEip712Signatures:f})}var Tb=()=>Object.freeze({relayer:Object.freeze({fetchFheEncryptionKeySource:(e,t)=>{throw Error(`Not yet implemented`)},fetchFheEncryptionKeyBytes:(e,t)=>Promise.resolve({publicKeyBytes:{id:`fhe-public-key-data-id`,bytes:Qr(256)},crsBytes:{bytes:Qr(256),capacity:2048,id:`crs-data-id`},metadata:{relayerUrl:e.relayerUrl,chainId:e.chainId}}),fetchCoprocessorSignatures:wb,fetchPublicDecrypt:hb,fetchUserDecrypt:db,fetchDelegatedUserDecrypt:yb})}),Eb;function Db(){if(!Be())throw Error(`Call setFhevmRuntimeConfig first.`);if(Eb===void 0){let e=By(),t=Tb();Eb=cf({ethereum:e.ethereum,relayer:t.relayer,config:Re()})}return Eb}function Ob(e){return Fs(of,{chain:e.chain,runtime:Db(),client:e.publicClient,options:e.options}).extend(lg)}var kb=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Ab=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},jb,Mb,Nb,Pb=Symbol(`CleartextTKMSLib.token`),Fb=`0.0.0-mock`,Ib=class{constructor(e,t){jb.set(this,void 0),Mb.set(this,void 0),Nb.set(this,!1),kb(this,jb,e,`f`),kb(this,Mb,t,`f`)}get tkmsVersion(){return Ab(this,Mb,`f`)}free(){kb(this,Nb,!0,`f`)}get privateKeySecp256k1(){if(Ab(this,Nb,`f`))throw Error(`MockTkmsPrivateKey is already disposed`);return Ab(this,jb,`f`)}};jb=new WeakMap,Mb=new WeakMap,Nb=new WeakMap;function Lb(e){if(!(e instanceof Ib))throw Error(`Invalid mock TkmsPrivateKey`);return e}function Rb(e,t){let n=b(e);if(n.length<64)throw Error(`PublicKeyTooShort: publicKey has ${n.length/2} bytes, need >= 32`);let r=BigInt(`0x`+n.slice(0,64));return t.map(e=>e^r)}async function zb(e,t){let n=e.ethereum,{tkmsPrivateKey:r,shares:i}=t,a=Lb(r).privateKeySecp256k1,o=n.getPublicKey({privateKey:a}),s=A_(i),c=k_(i),l=c[0];if(l===void 0)throw Error(`Expected at least one signcrypted share.`);let u=l.extraData;for(let e=1;e<c.length;e++){let t=c[e];if(t!==void 0&&t.extraData!==u)throw Error(`Mismatched extraData across shares: share[0]="${u}" vs share[${e}]="${t.extraData}".`)}let d=on(u);vc(d,{});for(let e=0;e<c.length;++e){let t=c[e];if(!t)throw Error(`Internal error`);let r=await n.recoverAddress({hash:on(t.payload),signature:on(t.signature)});if(!s.kmsSignersContext.has(r))throw Error(`Unknown KMS signer: recovered address ${r} from share[${e}] is not a registered KMS signer.`)}let f=n.decode({encodedData:on(l.payload),types:[`uint256[]`,`bytes`]});if(f.length!==2)throw Error(`Invalid decrypted result.`);let p=f[0],m=f[1],ee=Rb(o,p);if(d!==m)throw Error(`extraData mismatch: share extraData="${d}" does not match the signed payload's extraData="${m}".`);let te=ee.map((e,t)=>{let n=s.handles[t];if(n===void 0)throw Error(`Internal error`);return Tl({value:Oa(n.fheType,e),handle:n,originToken:Pb})});return Object.freeze(te),te}async function Bb(e){let t=e.ethereum.generatePrivateKey();return Promise.resolve(new Ib(t,Fb))}async function Vb(e,t){let{tkmsPrivateKey:n}=t,r=Lb(n).privateKeySecp256k1,i=e.ethereum.getPublicKey({privateKey:r});return Promise.resolve(i)}async function Hb(e,t){let{tkmsPrivateKey:n}=t,r=Lb(n).privateKeySecp256k1,i=Rr(r);return Promise.resolve(i)}async function Ub(e,t){let{tkmsPrivateKeyBytes:n}=t,r=Pr(n);return Promise.resolve(new Ib(r,Fb))}function Wb(e,t){throw Error(`Not yet implemented`)}var Gb=e=>Object.freeze({decrypt:Object.freeze({initTkmsModule:()=>Promise.resolve(),getTkmsModuleInfo:()=>{throw Error(`Not yet implemented`)},generateTkmsPrivateKey:()=>Bb(e),decryptAndReconstruct:t=>zb(e,t),serializeTkmsPrivateKey:t=>Hb(e,t),deserializeTkmsPrivateKey:t=>Ub(e,t),verifyTkmsPrivateKey:t=>{Wb(e,t)},getTkmsPublicKeyHex:t=>Vb(e,t)})});function Kb(e){return mv(e,Gb)}function qb(e){return Ob(e).extend(Kb)}var Jb=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Yb=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Xb,Zb,Qb,$b,ex,tx,nx,rx=Symbol(`CleartextTFHELib.getNative`),ix=Symbol(`CleartextTFHELib.token`),ax=class e{constructor(e,t,n,r){if(Xb.set(this,void 0),Zb.set(this,void 0),Qb.set(this,void 0),e!==ix)throw Error(`Unauthorized`);Jb(this,Xb,t,`f`),Jb(this,Qb,n,`f`),Jb(this,Zb,r,`f`)}get id(){return Yb(this,Xb,`f`)}get tfheVersion(){return Yb(this,Qb,`f`)}static[(Xb=new WeakMap,Zb=new WeakMap,Qb=new WeakMap,rx)](t,n){if(n!==ix||!(t instanceof e))throw Error(`Unauthorized`);return Yb(t,Zb,`f`)}},ox=class e{constructor(e,t,n,r,i){if($b.set(this,void 0),ex.set(this,void 0),tx.set(this,void 0),nx.set(this,void 0),e!==ix)throw Error(`Unauthorized`);Jb(this,$b,t,`f`),Jb(this,ex,n,`f`),Jb(this,tx,r,`f`),Jb(this,nx,i,`f`)}get id(){return Yb(this,$b,`f`)}get tfheVersion(){return Yb(this,ex,`f`)}get capacity(){return Yb(this,tx,`f`)}static[($b=new WeakMap,ex=new WeakMap,tx=new WeakMap,nx=new WeakMap,rx)](t,n){if(n!==ix||!(t instanceof e))throw Error(`Unauthorized`);return Yb(t,nx,`f`)}};async function sx(e){throw Error(`Not yet implemented`)}async function cx(e){let{fheEncryptionKey:t,metaData:n,typedValues:r,extraData:i}=e,a=t.publicKey,o=t.crs;if(!(a instanceof ax))throw Error(`Invalid tfhePublicKey`);if(!(o instanceof ox))throw Error(`Invalid tfheCrs`);let s=`0x${r.map(pl).map(b).join(``)}${b(i)}`;return{ciphertextWithZKProofBytes:Gr(...r.map(e=>{let t=crypto.getRandomValues(new Uint8Array(new ArrayBuffer(8))),r=Br(pl(e));return Gr(t,n,r)})),extraData:s,tfheVersion:e.tfheVersion}}async function lx(e){let{fheEncryptionKey:t}=e,n=t.publicKey,r=t.crs;if(!(n instanceof ax))throw Error(`Invalid tfhePublicKey`);if(!(r instanceof ox))throw Error(`Invalid tfheCrs`);let i=ax[rx](n,ix),a=ox[rx](r,ix);return Object.freeze({publicKeyBytes:Object.freeze({id:t.publicKey.id,bytes:i}),crsBytes:Object.freeze({id:t.crs.id,capacity:t.crs.capacity,bytes:a}),metadata:Object.freeze({relayerUrl:t.metadata.relayerUrl,chainId:t.metadata.chainId})})}async function ux(e){let{publicKey:t}=e,n=t;if(!(n instanceof ax))throw Error(`Invalid tfhePublicKey`);let r=ax[rx](n,ix);return Object.freeze({id:t.id,bytes:r,tfheVersion:e.tfheVersion})}async function dx(e){let{crs:t}=e,n=t;if(!(n instanceof ox))throw Error(`Invalid tfheCrs`);let r=ox[rx](n,ix);return Object.freeze({id:t.id,capacity:t.capacity,bytes:r,tfheVersion:e.tfheVersion})}async function fx(e){let{crsBytes:t}=e;return new ox(ix,t.id,e.tfheVersion,t.capacity,t.bytes)}async function px(e){let{publicKeyBytes:t}=e;return new ax(ix,t.id,e.tfheVersion,t.bytes)}var mx=e=>Object.freeze({encrypt:Object.freeze({initTfheModule:()=>Promise.resolve(),getTfheModuleInfo:()=>{throw Error(`Not yet implemented`)},parseTFHEProvenCompactCiphertextList:sx,buildWithProofPacked:cx,serializeFheEncryptionKey:lx,serializeFheEncryptionPublicKey:ux,serializeFheEncryptionCrs:dx,deserializeFheEncryptionPublicKey:px,deserializeFheEncryptionCrs:fx})});function hx(e){return Ly(e,mx)}function gx(e){return Ob(e).extend(hx)}function _x(e){return{id:e.id,fhevm:{contracts:{acl:{address:e.aclContractAddress},inputVerifier:{address:e.inputVerifierContractAddress},kmsVerifier:{address:e.kmsContractAddress},protocolConfig:void 0},relayerUrl:e.relayerUrl,gateway:{id:e.gatewayChainId,contracts:{decryption:{address:e.verifyingContractAddressDecryption},inputVerification:{address:e.verifyingContractAddressInputVerification}}}}}}var vx=Symbol(`Comlink.proxy`),yx=Symbol(`Comlink.endpoint`),bx=Symbol(`Comlink.releaseProxy`),xx=Symbol(`Comlink.finalizer`),Sx=Symbol(`Comlink.thrown`),Cx=e=>typeof e==`object`&&!!e||typeof e==`function`,wx=new Map([[`proxy`,{canHandle:e=>Cx(e)&&e[vx],serialize(e){let{port1:t,port2:n}=new MessageChannel;return Ex(e,t),[n,[n]]},deserialize(e){return e.start(),kx(e)}}],[`throw`,{canHandle:e=>Cx(e)&&Sx in e,serialize({value:e}){let t;return t=e instanceof Error?{isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:{isError:!1,value:e},[t,[]]},deserialize(e){throw e.isError?Object.assign(Error(e.value.message),e.value):e.value}}]]);function Tx(e,t){for(let n of e)if(t===n||n===`*`||n instanceof RegExp&&n.test(t))return!0;return!1}function Ex(e,t=globalThis,n=[`*`]){t.addEventListener(`message`,function r(i){if(!i||!i.data||!Tx(n,i.origin))return;let{id:a,type:o,path:s}=Object.assign({path:[]},i.data),c=(i.data.argumentList||[]).map(Ux),l;try{let t=s.slice(0,-1).reduce((e,t)=>e[t],e),n=s.reduce((e,t)=>e[t],e);switch(o){case`GET`:l=n;break;case`SET`:t[s.slice(-1)[0]]=Ux(i.data.value),l=!0;break;case`APPLY`:l=n.apply(t,c);break;case`CONSTRUCT`:l=Vx(new n(...c));break;case`ENDPOINT`:{let{port1:t,port2:n}=new MessageChannel;Ex(e,n),l=Bx(t,[t])}break;case`RELEASE`:l=void 0;break;default:return}}catch(e){l={value:e,[Sx]:0}}Promise.resolve(l).catch(e=>({value:e,[Sx]:0})).then(n=>{let[i,s]=Hx(n);t.postMessage(Object.assign(Object.assign({},i),{id:a}),s),o===`RELEASE`&&(t.removeEventListener(`message`,r),Ox(t),xx in e&&typeof e[xx]==`function`&&e[xx]())}).catch(e=>{let[n,r]=Hx({value:TypeError(`Unserializable return value`),[Sx]:0});t.postMessage(Object.assign(Object.assign({},n),{id:a}),r)})}),t.start&&t.start()}function Dx(e){return e.constructor.name===`MessagePort`}function Ox(e){Dx(e)&&e.close()}function kx(e,t){let n=new Map;return e.addEventListener(`message`,function(e){let{data:t}=e;if(!t||!t.id)return;let r=n.get(t.id);if(r)try{r(t)}finally{n.delete(t.id)}}),Ix(e,n,[],t)}function Ax(e){if(e)throw Error(`Proxy has been released and is not useable`)}function jx(e){return Wx(e,new Map,{type:`RELEASE`}).then(()=>{Ox(e)})}var Mx=new WeakMap,Nx=`FinalizationRegistry`in globalThis&&new FinalizationRegistry(e=>{let t=(Mx.get(e)||0)-1;Mx.set(e,t),t===0&&jx(e)});function Px(e,t){let n=(Mx.get(t)||0)+1;Mx.set(t,n),Nx&&Nx.register(e,t,e)}function Fx(e){Nx&&Nx.unregister(e)}function Ix(e,t,n=[],r=function(){}){let i=!1,a=new Proxy(r,{get(r,o){if(Ax(i),o===bx)return()=>{Fx(a),jx(e),t.clear(),i=!0};if(o===`then`){if(n.length===0)return{then:()=>a};let r=Wx(e,t,{type:`GET`,path:n.map(e=>e.toString())}).then(Ux);return r.then.bind(r)}return Ix(e,t,[...n,o])},set(r,a,o){Ax(i);let[s,c]=Hx(o);return Wx(e,t,{type:`SET`,path:[...n,a].map(e=>e.toString()),value:s},c).then(Ux)},apply(r,a,o){Ax(i);let s=n[n.length-1];if(s===yx)return Wx(e,t,{type:`ENDPOINT`}).then(Ux);if(s===`bind`)return Ix(e,t,n.slice(0,-1));let[c,l]=Rx(o);return Wx(e,t,{type:`APPLY`,path:n.map(e=>e.toString()),argumentList:c},l).then(Ux)},construct(r,a){Ax(i);let[o,s]=Rx(a);return Wx(e,t,{type:`CONSTRUCT`,path:n.map(e=>e.toString()),argumentList:o},s).then(Ux)}});return Px(a,e),a}function Lx(e){return Array.prototype.concat.apply([],e)}function Rx(e){let t=e.map(Hx);return[t.map(e=>e[0]),Lx(t.map(e=>e[1]))]}var zx=new WeakMap;function Bx(e,t){return zx.set(e,t),e}function Vx(e){return Object.assign(e,{[vx]:!0})}function Hx(e){for(let[t,n]of wx)if(n.canHandle(e)){let[r,i]=n.serialize(e);return[{type:`HANDLER`,name:t,value:r},i]}return[{type:`RAW`,value:e},zx.get(e)||[]]}function Ux(e){switch(e.type){case`HANDLER`:return wx.get(e.name).deserialize(e.value);case`RAW`:return e.value}}function Wx(e,t,n,r){return new Promise(i=>{let a=Gx();t.set(a,i),e.start&&e.start(),e.postMessage(Object.assign({id:a},n),r)})}function Gx(){return[,,,,].fill(0).map(()=>Math.floor(Math.random()*(2**53-1)).toString(16)).join(`-`)}function Kx(e){return typeof e==`object`&&!!e&&e.wireError===!0}var qx=[`statusCode`,`status`,`retryAfter`,`timeoutMs`,`relayerApiError`,`code`,`data`,`shortMessage`,`details`,`error`,`info`];function Jx(e){try{return structuredClone(e),!0}catch{return!1}}function Yx(e){let t=e.response;return Me(t?.headers)}function Xx(e){try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function Zx(e){let t={};for(let n of qx){let r=e[n];r!==void 0&&Jx(r)&&(t[n]=r)}if(!Fe(t.retryAfter)){let n=Yx(e);n!==void 0&&(t.retryAfter=n)}return t}function Qx(e,t=6){if(Kx(e))return e;let n=e=>t>0&&e!==void 0?Qx(e,t-1):void 0;if(e instanceof Error)return{wireError:!0,name:e.name,message:e.message,stack:e.stack,props:Zx(e),cause:n(e.cause)};if(typeof e==`object`&&e){let{message:t,cause:r}=e;return{wireError:!0,name:`Error`,message:typeof t==`string`?t:Xx(e),stack:void 0,props:Zx(e),cause:n(r)}}return{wireError:!0,name:`Error`,message:typeof e==`string`?e:Xx(e),stack:void 0,props:{},cause:void 0}}function $x(e){let t=Error(e.message,e.cause?{cause:$x(e.cause)}:{});return t.name=e.name,e.stack!==void 0&&(t.stack=e.stack),Object.assign(t,e.props),t}function eS(){return new Worker(new URL(`/assets/encrypt.worker-Cjp71f-d.js`,``+import.meta.url),{type:`module`,name:`zama-fhe-encrypt`})}var tS={spawn:1e4,init:3e5},nS=new WeakSet,$=class extends Error{crashed;constructor(e,t){super(e,t),this.name=`WorkerUnavailableError`,this.crashed=t?.crashed??!1}};function rS(e){if(typeof e!=`object`||!e)return!1;let{name:t,message:n}=e;return t===`DataCloneError`||t===`TypeError`&&typeof n==`string`&&n.includes(`Unserializable return value`)}function iS(e){if(e?.aborted)throw e.reason??new DOMException(`The operation was aborted.`,`AbortError`)}var aS={count:0,last:void 0,warnedFor:-1};function oS(e){if(e===void 0)return{key:e,transfers:[]};let t=e.publicKeyBytes.bytes,n=e.crsBytes.bytes;if(!(t instanceof Uint8Array)||!(n instanceof Uint8Array))return{key:e,transfers:[]};let r=t.slice(),i=n.slice();return{key:{...e,publicKeyBytes:{...e.publicKeyBytes,bytes:r},crsBytes:{...e.crsBytes,bytes:i}},transfers:[r.buffer,i.buffer]}}function sS(){let e,t=new Promise((t,n)=>{e=n});return t.catch(()=>{}),{initPromise:void 0,worker:void 0,api:void 0,doomed:t,doom:e}}var cS=class{#e;#t;#n=!1;#r=aS;#i=0;#a=new Map;#o;#s=0;#c=!1;constructor(e){this.#e=e}init=()=>{let e=this.#t??=sS();if(e.initPromise===void 0){let t=this.#f(()=>this.#u(e)).catch(n=>{throw e.initPromise===t&&(e.initPromise=void 0),n});e.initPromise=t}return e.initPromise};encryptValue=e=>this.#f(()=>this.#l(t=>t.encryptValue(e),(t,n,r)=>t.encryptValue(n,{...e,options:r}),e.options));encryptValues=e=>this.#f(()=>this.#l(t=>t.encryptValues(e),(t,n,r)=>t.encryptValues(n,{...e,options:r}),e.options));dispose(){this.#c=!0,this.#p()}async#l(e,t,n){let{signal:r,onProgress:i,...a}=n??{};iS(r),await this.init(),iS(r);let o=this.#t,s=o?.api;if(this.#o!==void 0&&(this.#n||s===void 0))return e(await this.#o);if(o===void 0||s===void 0)return e(await this.#b(o,this.#r.last??new $(`Encrypt worker not running.`)));let c=this.#i++,l=()=>void s.abort(c).catch(()=>{});r?.addEventListener(`abort`,l,{once:!0}),i&&this.#a.set(c,i);try{let e=await this.#v(o,t(s,c,a));return this.#r=aS,e}catch(t){if(t instanceof $)return e(await this.#b(o,t));throw t}finally{this.#a.delete(c),r?.removeEventListener(`abort`,l)}}async#u(e){if(this.#n)return;let t=this.#e.blockedReason;if(t!==void 0){await this.#b(e,new $(t));return}let n=await this.#e.prefetchKey();try{let t=await this.#h(e),r=this.#e.network,i=typeof r==`string`?null:Vx(async e=>{try{return await r.request(e)}catch(e){throw Qx(e)}}),a=Vx((e,t)=>{try{this.#e.logger[e](t)}catch(e){this.#d(`logger`,e)}}),o=Vx((e,t)=>{try{this.#a.get(e)?.(t)}catch(e){this.#d(`onProgress`,e)}}),s=oS(n);await this.#v(e,t.init(Bx({...this.#e.initPayload,clientOptions:{...this.#e.initPayload.clientOptions,fheEncryptionKey:s.key},rpcUrl:typeof r==`string`?r:void 0},s.transfers),i,a,o),{ms:this.#e.timeouts.init,operation:`init`}),e.api=t,this.#r={...this.#r,last:void 0}}catch(t){if(!(t instanceof $))throw this.#y(e,new $(`Encrypt worker init failed.`)),t;await this.#b(e,t)}}#d(e,t){let n=t instanceof Error?t.message:String(t);try{this.#e.logger.warn(`Encrypt offload ${e} callback threw: ${n}`)}catch{}}async#f(e){this.#s++;try{return await e()}finally{this.#s--,this.#p()}}#p(){!this.#c||this.#s>0||(this.#c=!1,this.#t?.worker?.terminate(),this.#t=void 0,this.#o=void 0,this.#n=!1,this.#r=aS)}#m(){let e=this.#e.workerSource;if(e===void 0)return eS();if(typeof e==`function`){let t=e();return nS.has(t)&&this.#e.logger.warnAlways(`The offloadWorker factory returned a worker it already handed out; each call must construct a fresh Worker.`),nS.add(t),t}return new Worker(e,{type:`module`,name:`zama-fhe-encrypt`})}async#h(e){let t;try{t=this.#m()}catch(e){throw new $(e instanceof Error?e.message:String(e),{cause:e})}e.worker=t;let n=await this.#g(e,t);return this.#_(e,t),n}#g(e,t){return new Promise((n,r)=>{let i=()=>{clearTimeout(a),t.removeEventListener(`message`,o),t.removeEventListener(`error`,s)},a=setTimeout(()=>{i(),r(new $(`Encrypt worker did not start within ${this.#e.timeouts.spawn}ms.`))},this.#e.timeouts.spawn),o=e=>{e.data===`zama-encrypt-worker-ready`&&(i(),n(kx(t)))},s=t=>{i();let n=t.message||`Encrypt worker error.`;r(new $(n)),this.#y(e,new $(n))};t.addEventListener(`message`,o),t.addEventListener(`error`,s)})}#_(e,t){t.addEventListener(`error`,t=>{if(this.#t!==e)return;let n=new $(t.message||`Encrypt worker error.`,{crashed:!0});this.#r={...this.#r,count:this.#r.count+1,last:n},this.#y(e,n)})}async#v(e,t,n){let r=n===void 0?void 0:setTimeout(()=>{this.#y(e,new $(`Encrypt worker ${n.operation} timed out after ${n.ms}ms.`))},n.ms);try{return await Promise.race([t.catch(e=>{let t=Kx(e)?$x(e):e;throw rS(t)?new $(t.message,{cause:t}):t}),e.doomed])}finally{r!==void 0&&clearTimeout(r)}}#y(e,t){e!==void 0&&(this.#t===e&&(this.#t=void 0),e.worker?.terminate(),e.worker=void 0,e.api=void 0,e.initPromise=void 0,e.doom(t))}async#b(e,t){let n=t instanceof Error?t.message:String(t);if(this.#e.strict)throw this.#y(e,new $(`Encrypt worker unavailable.`)),new Nt(`Encrypt offload required (offloadEncrypt: true) but unavailable: ${n}`,{cause:t});let{transient:r,pinning:i}=this.#x(t);if(this.#n||=!r,this.#y(e,new $(`Encrypt worker degraded to inline.`)),this.#S(n,r,i),this.#o===void 0){let e=(async()=>{let e=this.#e.createInlineClient();return await e.init(),e})().catch(t=>{throw this.#o===e&&(this.#o=void 0),this.#e.logger.warnAlways(`Encrypt inline fallback failed to initialize: ${t instanceof Error?t.message:String(t)}`),t});this.#o=e}return this.#o}#x(e){let t=e instanceof $&&e.crashed&&this.#r.count<2;return{transient:t,pinning:!t&&!this.#n}}#S(e,t,n){if(!n&&this.#r.warnedFor===this.#r.count)return;this.#r={...this.#r,warnedFor:this.#r.count};let r=t?`in-flight encryption falls back`:`encryption falls back`;this.#e.logger.warnAlways(`Encrypt offload unavailable, ${r} to the calling thread: ${e}`)}},lS=class{#e;#t;#n;#r;#i;#a;#o;constructor(e){this.#e=e.chain;let{timeout:t,debug:n,batchRpcCalls:r,moduleVersions:i,fheEncryptionKey:a}=e.options??{},o=this.#e.auth?fS(this.#e.auth):void 0,s={publicClient:Ee({transport:typeof this.#e.network==`string`?De(this.#e.network):Ae(this.#e.network)}),chain:_x(this.#e),options:{batchRpcCalls:r,moduleVersions:i,fheEncryptionKey:a}};this.#i={...o!==void 0&&{auth:o},...t!==void 0&&{timeout:t},...n!==void 0&&{debug:n}},this.#a=e.telemetry;let c=()=>this.#t.fetchFheEncryptionKeyBytes({options:this.#c(void 0)}),l=e=>({init:async()=>{await c(),await e.init()},encryptValue:t=>e.encryptValue(t),encryptValues:t=>e.encryptValues(t),fetchFheEncryptionKeyBytes:t=>e.fetchFheEncryptionKeyBytes(t)});e.cleartext?(this.#t=Ob(s),this.#n=qb(s),this.#r=l(gx(s))):(this.#t=ug(s),this.#n=gv(s),this.#r=this.#s(e,s,{prefetchKey:c,createInlineClient:()=>l(zy(s))}))}#s(e,t,n){let r=e.offloadEncrypt??!1,i=r===!0,a=typeof Worker==`function`&&(e.offloadWorker!==void 0||!0);if(r===!1||!(i||a))return n.createInlineClient();let o=Le(),s=dS(o);if(s!==void 0&&!i)return e.logger.warnAlways(`Encryption runs on the calling thread: ${s}.`),n.createInlineClient();let c=new cS({initPayload:{chain:t.chain,clientOptions:t.options,runtime:o??{}},network:this.#e.network,prefetchKey:n.prefetchKey,createInlineClient:n.createInlineClient,logger:e.logger,timeouts:e.offloadTimeouts??tS,workerSource:e.offloadWorker,blockedReason:s,strict:i});return{init:()=>c.init(),encryptValue:e=>c.encryptValue(e),encryptValues:e=>c.encryptValues(e),fetchFheEncryptionKeyBytes:e=>this.#t.fetchFheEncryptionKeyBytes(e),dispose:()=>c.dispose()}}get chain(){return this.#e}#c(e){let{operation:t,...n}={...this.#i,...e};return this.#a===void 0?n:{...n,headers:{...n.headers,...Ft(this.#a,t)}}}#l=()=>(this.#o??=this.#r.init().catch(e=>{throw this.#o=void 0,e}),this.#o);dispose=()=>{this.#o=void 0,this.#r.dispose?.()};decryptPublicValue=async e=>(await this.#t.init(),this.#t.decryptPublicValue({...e,options:this.#c(e.options)}));decryptPublicValues=async e=>(await this.#t.init(),this.#t.decryptPublicValues({...e,options:this.#c(e.options)}));decryptPublicValuesWithSignatures=async e=>(await this.#t.init(),this.#t.decryptPublicValuesWithSignatures({...e,options:this.#c(e.options)}));encryptValue=async e=>(await this.#l(),this.#r.encryptValue({...e,options:this.#c(e.options)}));encryptValues=async e=>(await this.#l(),this.#r.encryptValues({...e,options:this.#c(e.options)}));decryptValue=async e=>(await this.#n.init(),this.#n.decryptValue({...e,options:this.#c(e.options)}));decryptValues=async e=>(await this.#n.init(),this.#n.decryptValues({...e,options:this.#c(e.options)}));decryptValuesFromPairs=async e=>(await this.#n.init(),this.#n.decryptValuesFromPairs({...e,options:this.#c(e.options)}));fetchFheEncryptionKeyBytes=async e=>(await this.#t.init(),this.#t.fetchFheEncryptionKeyBytes({...e,options:this.#c(e?.options)}));signDecryptionPermit=async e=>(await this.#t.init(),this.#t.signDecryptionPermit(e));createUnsignedLegacyDecryptionPermitEip712=e=>rf(this.#t,e);serializeTransportKeyPair=e=>this.#n.serializeTransportKeyPair(e);serializeSignedDecryptionPermit=e=>this.#t.serializeSignedDecryptionPermit(e);parseTransportKeyPair=async e=>(await this.#n.init(),this.#n.parseTransportKeyPair(e));parseSignedDecryptionPermit=async e=>{await this.#t.init();let{serializedPermit:t}=e;return this.#t.parseSignedDecryptionPermit({...e,serializedPermit:{...t,signature:uS(t.signature)}})};generateTransportKeyPair=async()=>(await this.#n.init(),this.#n.generateTransportKeyPair())};function uS(e){if(e.length!==132)return e;let t=parseInt(e.slice(130),16);return t!==0&&t!==1?e:`${e.slice(0,130)}${t===0?`1b`:`1c`}`}function dS(e){if(ze())return`a runtime locateFile cannot cross the encrypt worker boundary`;if(e===void 0&&Be())return`a runtime config set outside createConfig cannot be replicated in the encrypt worker realm`}function fS(e){let t=e.__type;switch(t){case`ApiKeyHeader`:return{type:t,value:e.value,header:e.header};case`ApiKeyCookie`:return{type:t,value:e.value,cookie:e.cookie};case`BearerToken`:return{type:t,token:e.token};default:throw new Pe(`Unknown auth type: ${String(t)}`)}}export{Mt as a,Pt as i,lS as n,Nt as o,It as r,tS as t};
23
+ `,o=await xv(r===`web`?i:a);return new Promise((e,r)=>{let i=!1,a=()=>{if(!i){i=!0,clearTimeout(l);try{o.terminate()}catch{}}},s=e=>{a(),r(e instanceof Error?e:Error(String(e)))},c=t=>{a(),t.error===void 0?e(t.result):r(Error(typeof t.error==`string`?t.error:JSON.stringify(t.error)))},l=setTimeout(()=>{i||s(Error(`Worker timed out after ${String(n)}ms`))},n);`on`in o?(o.on(`message`,e=>{c(e)}),o.on(`error`,e=>{s(e)}),o.on(`exit`,e=>{i||s(Error(`Worker exited with code ${String(e)}`))}),o.postMessage(t)):(o.onmessage=({data:e})=>{c(e)},o.onerror=e=>{s(Error(e.message))},o.postMessage(t))})}var Cv;function wv(){return Cv??=Sv(`return data + " world!";`,`hello`,5e3).then(e=>e===`hello world!`,()=>!1),Cv}var Tv=()=>(async e=>{try{return typeof MessageChannel<`u`&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(e)}catch{return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]));Object.freeze([`1.5.3`,`1.6.2`]);var Ev={"1.5.3":()=>n(()=>import(`./tfhe-BSAXrnM6.js`),__vite__mapDeps([7,8,1,2,9])),"1.6.2":()=>n(()=>import(`./tfhe-BACovsAk.js`),__vite__mapDeps([10,8,1,2,9]))},Dv={"1.5.3":()=>n(()=>import(`./tfhe_bg.wasm.base64-D8cmATWt.js`),[]),"1.6.2":()=>n(()=>import(`./tfhe_bg.wasm.base64-BJ8HGyoL.js`),[])},Ov=Object.freeze({"1.5.3":Object.freeze({wasm:Object.freeze({filename:`tfhe_bg.v1.5.3.wasm`,localRelativePath:`./v1.5.3/tfhe_bg.wasm`,sha256:`dd349c2e34834527890a80e1b70bf5ee57a02aabb7f65e32a1bca654db9201ec`}),worker:Object.freeze({filename:`tfhe-worker.v1.5.3.mjs`,localRelativePath:`./v1.5.3/tfhe-worker.mjs`,sha256:`3f93fe86a8dfa6e25ae5fcfe28d19833219cba8f45f81c6dd05c2f3cc5323c52`})}),"1.6.2":Object.freeze({wasm:Object.freeze({filename:`tfhe_bg.v1.6.2.wasm`,localRelativePath:`./v1.6.2/tfhe_bg.wasm`,sha256:`ecd1841ad42226629c1a665ba784e073f2e780137f7986b00088c9227acb9760`}),worker:Object.freeze({filename:`tfhe-worker.v1.6.2.mjs`,localRelativePath:`./v1.6.2/tfhe-worker.mjs`,sha256:`2c648dd89132bb63d37e8b47c6fe1f53b06abb1389faeb9b3f671eea9a0db5dd`})})});function kv(e){let t=Ov[e];if(!t)throw Error(`unsupported tfhe version: ${e}`);return t}async function Av(e){let t=Ev[e];if(!t)throw Error(`unsupported tfhe version: ${e}`);return t()}async function jv(e){let t=Dv[e];if(!t)throw Error(`unsupported tfhe version: ${e}`);return t()}function Mv(e){return e!==void 0&&e!==`auto`&&e!==`embedded-base64`}var Nv=async e=>{let{wasmBaseUrl:t}=await n(async()=>{let{wasmBaseUrl:e}=await import(`./wasmBaseUrl-C7910Wg_.js`);return{wasmBaseUrl:e}},__vite__mapDeps([4,2,5,6]));return new URL(`./tfhe/${e}`,t)};async function Pv(e,t){let n,r=`none`;if(t!==void 0){let i=t(e.filename);if(i==null)n=void 0;else if(i instanceof URL)n=i;else throw TypeError(`Invalid locateFile result for TFHE asset '${e.filename}': expected URL, null, or undefined.`);r=`user`}else hg()||(n=await Nv(e.localRelativePath),r=`node`);return Object.freeze({...e,url:n,resolution:r})}async function Fv(e,t){let n=await Pv(e.wasm,t),r=await Pv(e.worker,t);return n.resolution===`node`&&((await Promise.all([i_(n.url),i_(r.url)])).every(Boolean)||(n=Object.freeze({...n,url:void 0}),r=Object.freeze({...r,url:void 0}))),{wasm:n,worker:r}}function Iv(e,t){let{wasm:n,worker:r}=e;n.resolution===`user`?(t?.debug?.(`resolve tfhe wasm filename using 'locateFile' function: ${n.filename} -> url: ${n.url}`),t?.debug?.(`resolve tfhe worker filename using 'locateFile' function: ${r.filename} -> url: ${r.url}`)):n.resolution===`node`?n.url===void 0?t?.debug?.(`tfhe auto-derived assets not found on disk (bundler relocation?); using embedded base64 (wasm: ${n.localRelativePath}, worker: ${r.localRelativePath})`):(t?.debug?.(`resolve tfhe wasm local path: ${n.localRelativePath} -> url: ${n.url}`),t?.debug?.(`resolve tfhe worker local path: ${r.localRelativePath} -> url: ${r.url}`)):t?.debug?.(`resolve tfhe assets using embedded base64 (browser, no 'locateFile')`)}var Lv=new Map,Rv=new Map;async function zv(e,t){let n=Lv.get(t);if(n!==void 0)return n;let r=Rv.get(t);return r===void 0&&(r=Hv(e.config,t).then(e=>(Lv.set(t,e),e)).catch(e=>{throw Rv.delete(t),e}),Rv.set(t,r)),r}function Bv(e,t){let{wasmAssetLoadMode:n,numberOfThreads:r}=t,{wasm:i,worker:a}=e;if(i.resolution!==a.resolution)throw Error(`Internal error`);if(i.resolution===`node`&&i.url===void 0!=(a.url===void 0))throw Error(`Inconsistent auto-derived TFHE asset URLs: Node resolution must resolve both the wasm and worker assets, or neither (wasm: ${i.url?`url`:`none`}, worker: ${a.url?`url`:`none`}).`);if(a.url===void 0&&Mv(n))throw Error(`wasmAssetLoadMode '${n}' requires a resolvable worker URL, but none is available. Use 'auto' or 'embedded-base64', or provide a worker URL via 'locateFile'.`);if(r!==void 0&&(!Number.isInteger(r)||r<0))throw Error(`numberOfThreads must be a non-negative integer, received: ${String(r)}`)}async function Vv(e){let{preferredSingleThread:t,numberOfThreadsConfig:n,wasmAssetLoadMode:r,canUseBlob:i,logger:a}=e,o=t,s=0,c;return o||(s=n??(typeof navigator<`u`?navigator.hardwareConcurrency:0),s>0?(c=await Tv(),c?!i&&r===`auto`&&(a?.warn?.(`Cannot spawn a '${r}' worker (blob/eval workers unavailable); running single-threaded.`),o=!0,s=0):(console.warn(`This browser does not support threads. Verify that your server returns correct headers:
24
+ `,`'Cross-Origin-Opener-Policy': 'same-origin'
25
+ `,`'Cross-Origin-Embedder-Policy': 'require-corp'`),o=!0,s=0)):(o=!0,s=0)),{singleThread:o,numberOfThreads:s,supportsThreads:c}}async function Hv(e,t){let{locateFile:n,wasmAssetLoadMode:r,singleThread:i,numberOfThreads:a}=e,o=r??`auto`,s=await wv(),c=await Fv(kv(t),n);Bv(c,e),Iv(c,e.logger);let{singleThread:l,numberOfThreads:u,supportsThreads:d}=await Vv({preferredSingleThread:i??!1,numberOfThreadsConfig:a,wasmAssetLoadMode:o,canUseBlob:s,logger:e.logger});return(await Av(t)).setWorkerUrlConfig({workerUrl:c.worker.url,wasmAssetLoadMode:o,isBrowserLike:hg(),logger:e.logger?.debug!==void 0&&e.logger.error!==void 0?{debug:e.logger.debug,error:e.logger.error}:void 0}),{version:t,numberOfThreads:u,assets:c,wasmAssetLoadMode:o,singleThread:l,logger:e.logger,supportsThreads:d}}var Uv=new Map,Wv=new Map,Gv=new Map;async function Kv(e,t){So(e,{});let n=Uv.get(t.tfheVersion);if(n!==void 0&&e.uid!==n)throw Error(`Encrypt WASM module is already owned by runtime '${n}' and cannot be shared with runtime '${e.uid}'`);Uv.set(t.tfheVersion,e.uid);let r=Wv.get(t.tfheVersion);return r===void 0&&(r=(async()=>await Jv(await zv(e,t.tfheVersion)))(),Wv.set(t.tfheVersion,r)),r}async function qv(e){let t;if(e.assets.wasm.url!==void 0)e.logger?.debug?.(`compile verified wasm at: ${e.assets.wasm.url}`),t=await Xg(e.assets.wasm.url,e.assets.wasm.sha256);else{let{tfheWasmBase64:n,tfheWasmBase64CompressionFormat:r}=await jv(e.version);e.logger?.debug?.(`compile wasm from embedded base64 (compression:${r??`none`})`),t=await Zg(n,r)}return t}async function Jv(e){let t=await Av(e.version),n={module_or_path:await qv(e)};await t.initAsync(n),t.init_panic_hook(),e.singleThread||(e.logger?.debug?.(`initThreadPool(${e.numberOfThreads})`),await t.initThreadPool(e.numberOfThreads));let r=t.getWasmInfo(),i={byteLength:0,pages:0};return r.memory!==void 0&&(i.byteLength=r.memory.byteLength,i.pages=r.memory.pages),Gv.set(e.version,Object.freeze({wasmUrl:e.assets.wasm.url?new URL(e.assets.wasm.url):void 0,version:r.version,name:r.name,workerUrl:e.assets.worker.url?new URL(e.assets.worker.url):void 0,numberOfThreads:e.singleThread?0:e.numberOfThreads,threadsAvailable:e.supportsThreads,memory:i})),t}async function Yv(e){let t=await Av(e.tfheVersion),n=Gv.get(e.tfheVersion);if(n===void 0)throw Error(`getTfheModuleInfo: no module info recorded for version "${e.tfheVersion}"`);let r={byteLength:n.memory.byteLength,pages:n.memory.pages},i=t.getWasmInfo();return i.memory!==void 0&&(r.byteLength=i.memory.byteLength,r.pages=i.memory.pages),{...n,memory:r}}var Xv=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Zv=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Qv,$v,ey,ty,ny,ry,iy,ay=Symbol(`TFHELib.getNative`),Y=Symbol(`TFHELib.token`),oy=BigInt(536870912),sy=BigInt(536870912),cy=BigInt(536870912),ly=class e{constructor(e,t,n,r){if(Qv.set(this,void 0),$v.set(this,void 0),ey.set(this,void 0),e!==Y)throw Error(`Unauthorized`);Xv(this,Qv,t,`f`),Xv(this,ey,n,`f`),Xv(this,$v,r,`f`)}get id(){return Zv(this,Qv,`f`)}get tfheVersion(){return Zv(this,ey,`f`)}static[(Qv=new WeakMap,$v=new WeakMap,ey=new WeakMap,ay)](t,n,r){if(n!==Y||!(t instanceof e))throw Error(`Unauthorized`);if(r!==Zv(t,ey,`f`))throw Error(`TfheVersion mismatch`);return Zv(t,$v,`f`)}},uy=class e{constructor(e,t,n,r,i){if(ty.set(this,void 0),ny.set(this,void 0),ry.set(this,void 0),iy.set(this,void 0),e!==Y)throw Error(`Unauthorized`);Xv(this,ty,t,`f`),Xv(this,iy,n,`f`),Xv(this,ny,r,`f`),Xv(this,ry,i,`f`)}get id(){return Zv(this,ty,`f`)}get tfheVersion(){return Zv(this,iy,`f`)}get capacity(){return Zv(this,ny,`f`)}static[(ty=new WeakMap,ny=new WeakMap,ry=new WeakMap,iy=new WeakMap,ay)](t,n,r){if(n!==Y||!(t instanceof e))throw Error(`Unauthorized`);if(r!==Zv(t,iy,`f`))throw Error(`TfheVersion mismatch`);return Zv(t,ry,`f`)}};async function dy(e,t){let n=await Kv(e,{tfheVersion:t.tfheVersion}),{ciphertextWithZkProof:r}=t;if(r==null)throw new _v({message:`ciphertextWithZKProof argument is null or undefined.`});if(!(r instanceof Uint8Array)&&!sn(r))throw new _v({message:`Invalid ciphertextWithZKProof argument.`});let i=typeof r==`string`?Vr(r,{strict:!0}):r,a;try{a=n.ProvenCompactCiphertextList.safe_deserialize(i,oy)}catch(e){throw new _v({message:`Invalid ciphertextWithZKProof bytes. ${ta(e)}.`})}let o=[];try{let e=a.len();for(let t=0;t<e;++t){let e=a.get_kind_of(t);if(!pa(e))throw new _v({message:`Invalid FheTypeId: ${e}`});o.push(e)}return{fheTypeIds:o,encryptionBits:o.map(Ta)}}finally{a.free()}}async function fy(e,t){let n=await Kv(e,{tfheVersion:t.tfheVersion}),{fheEncryptionKey:r,metaData:i,typedValues:a,extraData:o}=t,s=r.publicKey,c=r.crs;if(!(s instanceof ly))throw Error(`Invalid tfhePublicKey`);if(!(c instanceof uy))throw Error(`Invalid tfheCrs`);let l,u,d;try{let e=ly[ay](s,Y,t.tfheVersion),r=uy[ay](c,Y,t.tfheVersion);d=n.CompactCiphertextList.builder(e);for(let e of a)switch(ul(e,{}),e.type){case`uint8`:d.push_u8(e.value);break;case`uint16`:d.push_u16(e.value);break;case`uint32`:d.push_u32(e.value);break;case`uint64`:d.push_u64(e.value);break;case`uint128`:d.push_u128(e.value);break;case`uint256`:d.push_u256(e.value);break;case`bool`:d.push_boolean(e.value);break;case`address`:d.push_u160(BigInt(e.value))}return l=d.build_with_proof_packed(r,i,n.ZkComputeLoad.Verify),u=l.safe_serialize(oy),Object.freeze({ciphertextWithZKProofBytes:u,extraData:o,tfheVersion:t.tfheVersion})}finally{try{l!==void 0&&l.free()}catch{}try{d!==void 0&&d.free()}catch{}}}async function py(e,t){let n=t.tfheVersion;await Kv(e,{tfheVersion:n});let{fheEncryptionKey:r}=t,i=r.publicKey,a=r.crs;if(!(i instanceof ly))throw Error(`Invalid tfhePublicKey`);if(!(a instanceof uy))throw Error(`Invalid tfheCrs`);let o=ly[ay](i,Y,n).safe_serialize(sy),s=uy[ay](a,Y,n).safe_serialize(cy);return Object.freeze({publicKeyBytes:Object.freeze({id:r.publicKey.id,bytes:o}),crsBytes:Object.freeze({id:r.crs.id,capacity:r.crs.capacity,bytes:s}),metadata:Object.freeze({relayerUrl:r.metadata.relayerUrl,chainId:r.metadata.chainId})})}async function my(e,t){let n=t.tfheVersion;await Kv(e,{tfheVersion:n});let{publicKey:r}=t,i=r;if(!(i instanceof ly))throw Error(`Invalid tfhePublicKey`);let a=ly[ay](i,Y,n).safe_serialize(sy);return Object.freeze({id:r.id,bytes:a,tfheVersion:n})}async function hy(e,t){let n=t.tfheVersion;await Kv(e,{tfheVersion:n});let{crs:r}=t,i=r;if(!(i instanceof uy))throw Error(`Invalid tfheCrs`);let a=uy[ay](i,Y,n).safe_serialize(cy);return Object.freeze({id:r.id,capacity:r.capacity,bytes:a,tfheVersion:n})}async function gy(e,t){let n=t.tfheVersion,r=await Kv(e,{tfheVersion:n}),{crsBytes:i}=t,a=r.CompactPkeCrs.safe_deserialize(i.bytes,cy);return new uy(Y,i.id,n,i.capacity,a)}async function _y(e,t){let n=t.tfheVersion,r=await Kv(e,{tfheVersion:n}),{publicKeyBytes:i}=t,a=r.TfheCompactPublicKey.safe_deserialize(i.bytes,sy);return new ly(Y,i.id,n,a)}var vy=e=>Object.freeze({encrypt:Object.freeze({initTfheModule:async t=>{await Kv(e,t)},getTfheModuleInfo:e=>Yv(e),parseTFHEProvenCompactCiphertextList:t=>dy(e,t),buildWithProofPacked:t=>fy(e,t),serializeFheEncryptionKey:t=>py(e,t),serializeFheEncryptionPublicKey:t=>my(e,t),serializeFheEncryptionCrs:t=>hy(e,t),deserializeFheEncryptionPublicKey:t=>_y(e,t),deserializeFheEncryptionCrs:t=>gy(e,t)})});async function yy(e,t){let{keyBytes:n,fhevmContext:r}=t,i=await e.runtime.encrypt.deserializeFheEncryptionPublicKey({publicKeyBytes:n.publicKeyBytes,tfheVersion:r.tfheVersion}),a=await e.runtime.encrypt.deserializeFheEncryptionCrs({crsBytes:n.crsBytes,tfheVersion:r.tfheVersion});return rh(new WeakRef(e.runtime),{publicKey:i,crs:a,metadata:n.metadata,tfheVersion:r.tfheVersion})}async function by(e,t){let n=e.chain.fhevm.relayerUrl,r=e.runtime;Qo.ensureBytes({owner:r,relayerUrl:n,fetcher:()=>r.relayer.fetchFheEncryptionKeyBytes({relayerUrl:n,chainId:e.chain.id},t),metadata:{chainId:e.chain.id,relayerUrl:n}}),Qo.ensureWasm({owner:r,relayerUrl:n,deserializeFn:n=>yy(e,{keyBytes:n,fhevmContext:t.fhevmContext})});let i=Qo.get(n);if(i===void 0)throw Error(`Failed to fetch global FHE PKE params`);if(await i.ready,i.resolvedKind!==`wasm`)throw Error(`Expected wasm params but got `+JSON.stringify(i.resolvedKind));return i.value}var xy=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},X=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Z,Sy,Cy,wy,Ty,Q,Ey,Dy,Oy=Symbol(`ZkProofBuilder.token`),ky=2048,Ay=class{constructor(e,t){if(Z.add(this),Sy.set(this,0),Cy.set(this,[]),wy.set(this,void 0),Ty.set(this,void 0),Q.set(this,new fl),e!==Oy)throw Error(`Unauthorized`);xy(this,wy,t.bitsCapacity,`f`),xy(this,Ty,t.ciphertextCapacity,`f`)}get count(){return X(this,Cy,`f`).length}get totalBits(){return X(this,Sy,`f`)}getBits(){return[...X(this,Cy,`f`)]}addTypedValue(e){return X(this,Q,`f`).addTypedValue(e),X(this,Z,`m`,Dy).call(this,xa(e.type)),this}addBool(e){return X(this,Q,`f`).addBool(e),X(this,Z,`m`,Dy).call(this,xa(`bool`)),this}addUint8(e){return X(this,Q,`f`).addUint8(e),X(this,Z,`m`,Dy).call(this,xa(`uint8`)),this}addUint16(e){return X(this,Q,`f`).addUint16(e),X(this,Z,`m`,Dy).call(this,xa(`uint16`)),this}addUint32(e){return X(this,Q,`f`).addUint32(e),X(this,Z,`m`,Dy).call(this,xa(`uint32`)),this}addUint64(e){return X(this,Q,`f`).addUint64(e),X(this,Z,`m`,Dy).call(this,xa(`uint64`)),this}addUint128(e){return X(this,Q,`f`).addUint128(e),X(this,Z,`m`,Dy).call(this,xa(`uint128`)),this}addUint256(e){return X(this,Q,`f`).addUint256(e),X(this,Z,`m`,Dy).call(this,xa(`uint256`)),this}addAddress(e){return X(this,Q,`f`).addAddress(e),X(this,Z,`m`,Dy).call(this,xa(`address`)),this}async build(e,{contractAddress:t,userAddress:n,extraData:r,fhevmContext:i}){let a=await by(e,{fhevmContext:i});if(X(this,Sy,`f`)===0)throw new H({message:`Encrypted input must contain at least one value`});if(y(X(this,Sy,`f`)<=X(this,wy,`f`)),!Ui(t))throw new H({message:`Invalid contract address: ${t}`});if(!Ui(n))throw new H({message:`Invalid user address: ${n}`});let o=e.chain.fhevm.contracts.acl.address,s=e.chain.id;if(!Ui(o))throw new H({message:`Invalid ACL address: ${o}`});if(!On(s))throw new H({message:`Invalid chain ID uint64: ${s}`});let c=zr(t),l=zr(n),u=zr(o),d=Mn(s),f=new Uint8Array(92);f.set(c,0),f.set(l,20),f.set(u,40),f.set(d,60),y(f.length-d.length===60);let{ciphertextWithZKProofBytes:p,extraData:m}=await e.runtime.encrypt.buildWithProofPacked({typedValues:[...X(this,Q,`f`).build()],fheEncryptionKey:a,metaData:f,extraData:gr(r),tfheVersion:i.tfheVersion});return id({chainId:BigInt(s),aclContractAddress:o,contractAddress:t,userAddress:n,ciphertextWithZkProof:p,encryptionBits:X(this,Cy,`f`)},m,{copy:!1})}};Sy=new WeakMap,Cy=new WeakMap,wy=new WeakMap,Ty=new WeakMap,Q=new WeakMap,Z=new WeakSet,Ey=function(e){if(X(this,Sy,`f`)+e>X(this,wy,`f`))throw new H({message:`Packing more than ${X(this,wy,`f`).toString()} bits in a single input ciphertext is unsupported`});if(X(this,Cy,`f`).length>=X(this,Ty,`f`))throw new H({message:`Packing more than ${X(this,Ty,`f`).toString()} variables in a single input ciphertext is unsupported`})},Dy=function(e){let t=Ea(e);X(this,Z,`m`,Ey).call(this,t),xy(this,Sy,X(this,Sy,`f`)+t,`f`),X(this,Cy,`f`).push(t)};async function jy(e,t){let{contractAddress:n,userAddress:r,values:i,extraData:a,fhevmContext:o}=t,s=new Ay(Oy,{ciphertextCapacity:256,bitsCapacity:ky});for(let e of i)s.addTypedValue(dl(e));return await s.build(e,{contractAddress:n,userAddress:r,extraData:a,fhevmContext:o})}async function My(e,t){let n=await ld(e,{zkProof:await jy({chain:e.chain,runtime:e.runtime},{...t,extraData:`0x00`,fhevmContext:t.fhevmContext}),options:t.options,fhevmContext:t.fhevmContext});return{inputHandles:n.inputHandles,inputProof:n.bytesHex}}async function Ny(e,t){let{contractAddress:n,userAddress:r,options:i}=t,a=md(t.value).map(e=>dl({type:Ca(e.type),value:e.value}));E(n,{}),E(r,{});let o=await L(e),s=await My(e,{contractAddress:D(n),userAddress:D(r),values:a,fhevmContext:o,options:i});return{encryptedValue:s.inputHandles[0].bytes32Hex,inputProof:s.inputProof}}async function Py(e,t){let{contractAddress:n,userAddress:r,options:i}=t,a=t.values.map(e=>dl({type:Ca(e.type),value:e.value}));E(n,{}),E(r,{});let o=await L(e),s=await My(e,{contractAddress:D(n),userAddress:D(r),values:a,fhevmContext:o,options:i});return{encryptedValues:s.inputHandles.map(e=>e.bytes32Hex),inputProof:s.inputProof}}async function Fy(e){let t=As(e,`encrypt`),n=await og(t);await Promise.all([oh(t,{fhevmContext:cs(n)}),t.runtime.encrypt.initTfheModule({tfheVersion:n.tfheVersion})])}function Iy(e){return{encryptValue:t=>Ny(e,t),encryptValues:t=>Py(e,t)}}function Ly(e,t){let n=e.runtime.extend(t);return js(e,`encrypt`),{actions:Iy(e),runtime:n,init:Fy}}function Ry(e){return Ly(e,vy)}function zy(e){return ug(e).extend(Ry)}var By=()=>Object.freeze({ethereum:Object.freeze({decode:ff,encode:df,encodePacked:uf,recoverTypedDataAddress:lf,signTypedData:hf,getChainId:mf,readContract:pf,mnemonicToAccount:e=>{let t=jt(e.mnemonic,{path:e.path}),n=t.getHdKey().privateKey;if(n===null)throw Error(`Failed to derive private key from mnemonic at address ${t.address}.`);return{privateKey:Pr(n),address:t.address}},sign:e=>wt({hash:e.hash,privateKey:e.privateKey,to:`hex`}),generatePrivateKey:()=>xt(),getPublicKey:e=>kt(e.privateKey).publicKey,recoverAddress:e=>m(e),hashTypedData:e=>_r(Oe({domain:e.domain,types:e.types,primaryType:e.primaryType,message:e.message}))})});function Vy(e){return e.map(e=>({signature:e.signature,payload:e.payload,extraData:b(e.extraData)}))}var Hy=`test test test test test test test future home engine virtual motion`,Uy=`0'/2/`,Wy=`0'/3/`,Gy={address:`0xc9990FEfE0c27D31D0C2aa36196b085c0c4d456c`,privateKey:`0x7ec8ada6642fc4ccfb7729bc29c17cf8d21b61abd5642d1db992c0b8672ab901`},Ky={address:`0x0971C80fF03B428fD2094dd5354600ab103201C5`,privateKey:`0x388b7680e4e1afa06efbfd45cdd1fe39f3c6af381df6555a19661f283b97de91`};function qy(e){return e?.toLowerCase()===Ky.address.toLowerCase()}var Jy={coprocessor:new Map,kms:new Map};function Yy(e){return Jy.coprocessor.size===0&&(Zy(e,Uy,20,Jy.coprocessor),Jy.coprocessor.set(Gy.address,Gy.privateKey)),Jy.coprocessor}function Xy(e){return Jy.kms.size===0&&(Zy(e,Wy,20,Jy.kms),Jy.kms.set(Ky.address,Ky.privateKey)),Jy.kms}function Zy(e,t,n,r){let i=e.runtime.ethereum;for(let e=0;e<n;++e){let n=i.mnemonicToAccount({mnemonic:Hy,path:`m/44'/60'/${t}${e}`});r.set(n.address,n.privateKey)}}var Qy=[{type:`function`,name:`plaintexts`,inputs:[{name:`handle`,type:`bytes32`,internalType:`bytes32`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`}];async function $y(e,t){let n=await Xc(e,{kmsVerifierAddress:e.chain.fhevm.contracts.kmsVerifier.address,protocolConfigAddress:e.chain.fhevm.contracts.protocolConfig?.address,fhevmContext:t});return n.signers.length===1&&qy(n.signers[0])}var eb=Ws({executeFn:async({relayerClient:e,trustedClient:t})=>D(await e.runtime.ethereum.readContract(t,{abi:Do,address:e.chain.fhevm.contracts.acl.address,args:[],functionName:Do[0].name})),cacheKeyFn:({relayerClient:e})=>`${e.chain.fhevm.contracts.acl.address.toLowerCase()}:${e.chain.id}`});async function tb(e,t){return eb.execute({relayerClient:e,trustedClient:t},{})}async function nb(e,t,n){let r=await tb(e,t),i=[];for(let a of n){let n=await e.runtime.ethereum.readContract(t,{abi:Qy,address:r,args:[a.bytes32Hex],functionName:Qy[0].name});i.push(n)}return i}function rb(e,t){let n=b(e);if(n.length<64)throw Error(`PublicKeyTooShort: publicKey has ${n.length/2} bytes, need >= 32`);let r=BigInt(`0x`+n.slice(0,64));return t.map(e=>e^r)}function ib(e,t,n){let r=t.map((e,t)=>{let r=n[t];switch(e.solidityPrimitiveTypeName){case`bool`:return r===0n?0n:1n;case`address`:return r&(1n<<160n)-1n;case`uint256`:return r}});return e.encode({types:r.map(()=>`uint256`),values:r})}async function ab(e,t,n){let{kmsDecryptEip712Message:r}=t,i=t.handleContractPairs,a=await nb(e,I(e),i.map(e=>e.handle)),o=await Xc(e,{kmsVerifierAddress:e.chain.fhevm.contracts.kmsVerifier.address,protocolConfigAddress:e.chain.fhevm.contracts.protocolConfig?.address,fhevmContext:n}),s=o.signers,c=o.threshold,l=rb(r.publicKey,a),u=r.extraData,d=e.runtime.ethereum.encode({types:[`uint256[]`,`bytes`],values:[l,u]});return{signersAddress:s,threshold:BigInt(c),commonKmsSigncryptedSharePayload:d,extraData:u}}var ob=[{type:`function`,name:`userDecrypt`,inputs:[{name:`pairs`,type:`tuple[]`,internalType:`struct HandleContractPair[]`,components:[{name:`handle`,type:`bytes32`,internalType:`bytes32`},{name:`contractAddress`,type:`address`,internalType:`address`}]},{name:`userAddress`,type:`address`,internalType:`address`},{name:`publicKey`,type:`bytes`,internalType:`bytes`},{name:`contractAddresses`,type:`address[]`,internalType:`address[]`},{name:`startTimestamp`,type:`uint256`,internalType:`uint256`},{name:`durationDays`,type:`uint256`,internalType:`uint256`},{name:`userSignature`,type:`bytes`,internalType:`bytes`}],outputs:[{name:`payload`,type:`bytes`,internalType:`bytes`},{name:`signers`,type:`address[]`,internalType:`address[]`},{name:`threshold`,type:`uint256`,internalType:`uint256`},{name:`extraData`,type:`bytes`,internalType:`bytes`}],stateMutability:`view`}];async function sb(e,t){let{kmsDecryptEip712Message:n,kmsDecryptEip712Signer:r,kmsDecryptEip712Signature:i}=t,a=t.handleContractPairs,o=I(e),s=await e.runtime.ethereum.readContract(o,{abi:ob,address:e.chain.fhevm.contracts.kmsVerifier.address,args:[a.map(e=>({handle:e.handle.bytes32Hex,contractAddress:e.contractAddress})),r,n.publicKey,n.contractAddresses,lb(`kmsDecryptEip712Message.startTimestamp`,n.startTimestamp),lb(`kmsDecryptEip712Message.durationDays`,n.durationDays),i],functionName:ob[0].name});return{commonKmsSigncryptedSharePayload:s[0],signersAddress:s[1],threshold:Jn(s[2]),extraData:s[3]}}async function cb(e,t){let n=e.runtime.ethereum,{payload:r,fhevmContext:i}=t,a=r.handleContractPairs,o=r.kmsDecryptEip712Message.contractAddresses,s=o.length;for(let{contractAddress:e}of a){let t=!1;for(let n=0;n<s;++n)if(o[n]==e){t=!0;break}if(!t)throw Error(`ContractAddressNotAuthorized: ${e} is not in the EIP-712 authorized contractAddresses list.`)}let c=await $y(e,i),l;l=c?await ab(e,r,i):await sb(e,r);let u=l.commonKmsSigncryptedSharePayload,d=l.extraData,f=l.threshold,p=l.signersAddress,m=Xy(e),ee=er(p.length,Number(f)).map(e=>p[e]),te=[];for(let e of ee){let t=m.get(e);if(t===void 0)throw Error(`Unable to find KMS signer for address ${e}`);let r=await n.sign({hash:u,privateKey:t});te.push({signature:b(r),payload:b(u),extraData:d})}return Vy(te)}function lb(e,t){let n=$n(t);if(n===void 0)throw Error(`${e} is not a valid uint string, got ${JSON.stringify(t)}`);return n}async function ub(e,t){throw Error(`Not yet implemented`)}async function db(e,t){return t.version===1?await cb(e,t):await ub(e,t)}var fb=[{type:`function`,name:`publicDecrypt`,inputs:[{name:`handles`,type:`bytes32[]`,internalType:`bytes32[]`}],outputs:[{name:`abiEncodedCleartexts`,type:`bytes`,internalType:`bytes`},{name:`digest`,type:`bytes32`,internalType:`bytes32`},{name:`signers`,type:`address[]`,internalType:`address[]`},{name:`threshold`,type:`uint256`,internalType:`uint256`},{name:`extraData`,type:`bytes`,internalType:`bytes`}],stateMutability:`view`}];async function pb(e,t,n){let r=e.runtime.ethereum,{orderedHandles:i}=t,a=ib(r,i,await nb(e,I(e),i)),o=t.extraData,s=o===`0x00`?`0x`:o,c=Al({chainId:e.chain.fhevm.gateway.id,verifyingContractAddressDecryption:e.chain.fhevm.gateway.contracts.decryption.address}),l=await Xc(e,{kmsVerifierAddress:e.chain.fhevm.contracts.kmsVerifier.address,protocolConfigAddress:e.chain.fhevm.contracts.protocolConfig?.address,fhevmContext:n});return{orderedAbiEncodedClearValues:a,digest:r.hashTypedData({domain:c,types:Ml,primaryType:`PublicDecryptVerification`,message:{ctHandles:i.map(e=>e.bytes32Hex),decryptedResult:a,extraData:s}}),signersAddress:l.signers,extraData:o}}async function mb(e,t){let n=I(e),r=await e.runtime.ethereum.readContract(n,{abi:fb,address:e.chain.fhevm.contracts.kmsVerifier.address,args:[t.orderedHandles.map(e=>e.bytes32Hex)],functionName:fb[0].name});return{orderedAbiEncodedClearValues:r[0],digest:r[1],signersAddress:r[2],extraData:r[4]}}async function hb(e,t){let n=e.runtime.ethereum,r=await $y(e,t.fhevmContext),i;i=r?await pb(e,t.payload,t.fhevmContext):await mb(e,t.payload);let a=i.digest,o=i.signersAddress,s=Xy(e),c=[];for(let e=0;e<o.length;++e){let t=s.get(o[e]);if(t===void 0)throw Error(`Unable to find kms signer`);let r=await n.sign({hash:a,privateKey:t});c.push(r)}return{orderedAbiEncodedClearValues:i.orderedAbiEncodedClearValues,kmsPublicDecryptEip712Signatures:c,extraData:i.extraData}}async function gb(e,t,n){let{kmsDecryptEip712Message:r}=t,i=t.handleContractPairs,a=await nb(e,I(e),i.map(e=>e.handle)),o=await Xc(e,{kmsVerifierAddress:e.chain.fhevm.contracts.kmsVerifier.address,protocolConfigAddress:e.chain.fhevm.contracts.protocolConfig?.address,fhevmContext:n}),s=o.signers,c=o.threshold,l=rb(r.publicKey,a),u=r.extraData,d=e.runtime.ethereum.encode({types:[`uint256[]`,`bytes`],values:[l,u]});return{signersAddress:s,threshold:BigInt(c),commonKmsSigncryptedSharePayload:d,extraData:u}}var _b=[{type:`function`,name:`delegatedUserDecrypt`,inputs:[{name:`pairs`,type:`tuple[]`,internalType:`struct HandleContractPair[]`,components:[{name:`handle`,type:`bytes32`,internalType:`bytes32`},{name:`contractAddress`,type:`address`,internalType:`address`}]},{name:`delegator`,type:`address`,internalType:`address`},{name:`delegate`,type:`address`,internalType:`address`},{name:`publicKey`,type:`bytes`,internalType:`bytes`},{name:`contractAddresses`,type:`address[]`,internalType:`address[]`},{name:`startTimestamp`,type:`uint256`,internalType:`uint256`},{name:`durationDays`,type:`uint256`,internalType:`uint256`},{name:`delegateSignature`,type:`bytes`,internalType:`bytes`}],outputs:[{name:`payload`,type:`bytes`,internalType:`bytes`},{name:`signers`,type:`address[]`,internalType:`address[]`},{name:`threshold`,type:`uint256`,internalType:`uint256`},{name:`extraData`,type:`bytes`,internalType:`bytes`}],stateMutability:`view`}];async function vb(e,t){let{kmsDecryptEip712Message:n,kmsDecryptEip712Signer:r,kmsDecryptEip712Signature:i}=t,a=t.handleContractPairs,o=I(e),s=await e.runtime.ethereum.readContract(o,{abi:_b,address:e.chain.fhevm.contracts.kmsVerifier.address,args:[a.map(e=>({handle:e.handle.bytes32Hex,contractAddress:e.contractAddress})),n.delegatorAddress,r,n.publicKey,n.contractAddresses,bb(`kmsDecryptEip712Message.startTimestamp`,n.startTimestamp),bb(`kmsDecryptEip712Message.durationDays`,n.durationDays),i],functionName:_b[0].name});return{commonKmsSigncryptedSharePayload:s[0],signersAddress:s[1],threshold:Jn(s[2]),extraData:s[3]}}async function yb(e,t){let n=e.runtime.ethereum,{payload:r,fhevmContext:i}=t,a=r.handleContractPairs,o=r.kmsDecryptEip712Message.contractAddresses,s=o.length;for(let{contractAddress:e}of a){let t=!1;for(let n=0;n<s;++n)if(o[n]==e){t=!0;break}if(!t)throw Error(`ContractAddressNotAuthorized: ${e} is not in the EIP-712 authorized contractAddresses list.`)}let c=await $y(e,i),l;l=c?await gb(e,r,i):await vb(e,r);let u=l.commonKmsSigncryptedSharePayload,d=l.extraData,f=l.threshold,p=l.signersAddress,m=Xy(e),ee=er(p.length,Number(f)).map(e=>p[e]),te=[];for(let e of ee){let t=m.get(e);if(t===void 0)throw Error(`Unable to find KMS signer for address ${e}`);let r=await n.sign({hash:u,privateKey:t});te.push({signature:b(r),payload:b(u),extraData:d})}return Vy(te)}function bb(e,t){let n=$n(t);if(n===void 0)throw Error(`${e} is not a valid uint string, got ${JSON.stringify(t)}`);return n}var xb=[{type:`function`,name:`inputProof`,inputs:[{name:`ctHandles`,type:`bytes32[]`,internalType:`bytes32[]`},{name:`userAddress`,type:`address`,internalType:`address`},{name:`contractAddress`,type:`address`,internalType:`address`},{name:`extraData`,type:`bytes`,internalType:`bytes`}],outputs:[{name:`digest`,type:`bytes32`,internalType:`bytes32`},{name:`signers`,type:`address[]`,internalType:`address[]`},{name:`threshold`,type:`uint256`,internalType:`uint256`}],stateMutability:`view`}];async function Sb(e,t){let n=I(e),r=await e.runtime.ethereum.readContract(n,{abi:xb,address:e.chain.fhevm.contracts.inputVerifier.address,args:[t.zkProof.getInputHandles().map(e=>e.bytes32Hex),t.zkProof.userAddress,t.zkProof.contractAddress,t.zkProof.getExtraData()],functionName:xb[0].name});return{digest:r[0],signersAddress:r[1],threshold:Jn(r[2])}}async function Cb(e,t,n){let r=e.runtime.ethereum,{zkProof:i}=t,a=await Ru(e,{address:e.chain.fhevm.contracts.inputVerifier.address,fhevmContext:n}),o=bu({gatewayChainId:e.chain.fhevm.gateway.id,verifyingContractAddressInputVerification:e.chain.fhevm.gateway.contracts.inputVerification.address});return{digest:r.hashTypedData({domain:o,types:yu,primaryType:vu,message:{ctHandles:i.getInputHandles().map(e=>e.bytes32Hex),userAddress:i.userAddress,contractAddress:i.contractAddress,contractChainId:Yn(BigInt(e.chain.id)),extraData:i.getExtraData()}}),signersAddress:a.signers,threshold:Jn(BigInt(a.threshold))}}async function wb(e,t){let n=e.runtime.ethereum,{payload:r,fhevmContext:i}=t,a=await $y(e,i),o;o=a?await Cb(e,r,i):await Sb(e,r);let s=o.digest,c=o.signersAddress,l=o.threshold,u=Yy(e),d=er(c.length,Number(l)).map(e=>c[e]),f=[];for(let e of d){let t=u.get(e);if(t===void 0)throw Error(`Unable to find KMS signer for address ${e}`);let r=await n.sign({hash:s,privateKey:t});f.push(r)}return Promise.resolve({extraData:r.zkProof.getExtraData(),handles:r.zkProof.getInputHandles(),coprocessorEip712Signatures:f})}var Tb=()=>Object.freeze({relayer:Object.freeze({fetchFheEncryptionKeySource:(e,t)=>{throw Error(`Not yet implemented`)},fetchFheEncryptionKeyBytes:(e,t)=>Promise.resolve({publicKeyBytes:{id:`fhe-public-key-data-id`,bytes:Qr(256)},crsBytes:{bytes:Qr(256),capacity:2048,id:`crs-data-id`},metadata:{relayerUrl:e.relayerUrl,chainId:e.chainId}}),fetchCoprocessorSignatures:wb,fetchPublicDecrypt:hb,fetchUserDecrypt:db,fetchDelegatedUserDecrypt:yb})}),Eb;function Db(){if(!Be())throw Error(`Call setFhevmRuntimeConfig first.`);if(Eb===void 0){let e=By(),t=Tb();Eb=cf({ethereum:e.ethereum,relayer:t.relayer,config:Re()})}return Eb}function Ob(e){return Fs(of,{chain:e.chain,runtime:Db(),client:e.publicClient,options:e.options}).extend(lg)}var kb=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Ab=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},jb,Mb,Nb,Pb=Symbol(`CleartextTKMSLib.token`),Fb=`0.0.0-mock`,Ib=class{constructor(e,t){jb.set(this,void 0),Mb.set(this,void 0),Nb.set(this,!1),kb(this,jb,e,`f`),kb(this,Mb,t,`f`)}get tkmsVersion(){return Ab(this,Mb,`f`)}free(){kb(this,Nb,!0,`f`)}get privateKeySecp256k1(){if(Ab(this,Nb,`f`))throw Error(`MockTkmsPrivateKey is already disposed`);return Ab(this,jb,`f`)}};jb=new WeakMap,Mb=new WeakMap,Nb=new WeakMap;function Lb(e){if(!(e instanceof Ib))throw Error(`Invalid mock TkmsPrivateKey`);return e}function Rb(e,t){let n=b(e);if(n.length<64)throw Error(`PublicKeyTooShort: publicKey has ${n.length/2} bytes, need >= 32`);let r=BigInt(`0x`+n.slice(0,64));return t.map(e=>e^r)}async function zb(e,t){let n=e.ethereum,{tkmsPrivateKey:r,shares:i}=t,a=Lb(r).privateKeySecp256k1,o=n.getPublicKey({privateKey:a}),s=A_(i),c=k_(i),l=c[0];if(l===void 0)throw Error(`Expected at least one signcrypted share.`);let u=l.extraData;for(let e=1;e<c.length;e++){let t=c[e];if(t!==void 0&&t.extraData!==u)throw Error(`Mismatched extraData across shares: share[0]="${u}" vs share[${e}]="${t.extraData}".`)}let d=on(u);vc(d,{});for(let e=0;e<c.length;++e){let t=c[e];if(!t)throw Error(`Internal error`);let r=await n.recoverAddress({hash:on(t.payload),signature:on(t.signature)});if(!s.kmsSignersContext.has(r))throw Error(`Unknown KMS signer: recovered address ${r} from share[${e}] is not a registered KMS signer.`)}let f=n.decode({encodedData:on(l.payload),types:[`uint256[]`,`bytes`]});if(f.length!==2)throw Error(`Invalid decrypted result.`);let p=f[0],m=f[1],ee=Rb(o,p);if(d!==m)throw Error(`extraData mismatch: share extraData="${d}" does not match the signed payload's extraData="${m}".`);let te=ee.map((e,t)=>{let n=s.handles[t];if(n===void 0)throw Error(`Internal error`);return Tl({value:Oa(n.fheType,e),handle:n,originToken:Pb})});return Object.freeze(te),te}async function Bb(e){let t=e.ethereum.generatePrivateKey();return Promise.resolve(new Ib(t,Fb))}async function Vb(e,t){let{tkmsPrivateKey:n}=t,r=Lb(n).privateKeySecp256k1,i=e.ethereum.getPublicKey({privateKey:r});return Promise.resolve(i)}async function Hb(e,t){let{tkmsPrivateKey:n}=t,r=Lb(n).privateKeySecp256k1,i=Rr(r);return Promise.resolve(i)}async function Ub(e,t){let{tkmsPrivateKeyBytes:n}=t,r=Pr(n);return Promise.resolve(new Ib(r,Fb))}function Wb(e,t){throw Error(`Not yet implemented`)}var Gb=e=>Object.freeze({decrypt:Object.freeze({initTkmsModule:()=>Promise.resolve(),getTkmsModuleInfo:()=>{throw Error(`Not yet implemented`)},generateTkmsPrivateKey:()=>Bb(e),decryptAndReconstruct:t=>zb(e,t),serializeTkmsPrivateKey:t=>Hb(e,t),deserializeTkmsPrivateKey:t=>Ub(e,t),verifyTkmsPrivateKey:t=>{Wb(e,t)},getTkmsPublicKeyHex:t=>Vb(e,t)})});function Kb(e){return mv(e,Gb)}function qb(e){return Ob(e).extend(Kb)}var Jb=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},Yb=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Xb,Zb,Qb,$b,ex,tx,nx,rx=Symbol(`CleartextTFHELib.getNative`),ix=Symbol(`CleartextTFHELib.token`),ax=class e{constructor(e,t,n,r){if(Xb.set(this,void 0),Zb.set(this,void 0),Qb.set(this,void 0),e!==ix)throw Error(`Unauthorized`);Jb(this,Xb,t,`f`),Jb(this,Qb,n,`f`),Jb(this,Zb,r,`f`)}get id(){return Yb(this,Xb,`f`)}get tfheVersion(){return Yb(this,Qb,`f`)}static[(Xb=new WeakMap,Zb=new WeakMap,Qb=new WeakMap,rx)](t,n){if(n!==ix||!(t instanceof e))throw Error(`Unauthorized`);return Yb(t,Zb,`f`)}},ox=class e{constructor(e,t,n,r,i){if($b.set(this,void 0),ex.set(this,void 0),tx.set(this,void 0),nx.set(this,void 0),e!==ix)throw Error(`Unauthorized`);Jb(this,$b,t,`f`),Jb(this,ex,n,`f`),Jb(this,tx,r,`f`),Jb(this,nx,i,`f`)}get id(){return Yb(this,$b,`f`)}get tfheVersion(){return Yb(this,ex,`f`)}get capacity(){return Yb(this,tx,`f`)}static[($b=new WeakMap,ex=new WeakMap,tx=new WeakMap,nx=new WeakMap,rx)](t,n){if(n!==ix||!(t instanceof e))throw Error(`Unauthorized`);return Yb(t,nx,`f`)}};async function sx(e){throw Error(`Not yet implemented`)}async function cx(e){let{fheEncryptionKey:t,metaData:n,typedValues:r,extraData:i}=e,a=t.publicKey,o=t.crs;if(!(a instanceof ax))throw Error(`Invalid tfhePublicKey`);if(!(o instanceof ox))throw Error(`Invalid tfheCrs`);let s=`0x${r.map(pl).map(b).join(``)}${b(i)}`;return{ciphertextWithZKProofBytes:Gr(...r.map(e=>{let t=crypto.getRandomValues(new Uint8Array(new ArrayBuffer(8))),r=Br(pl(e));return Gr(t,n,r)})),extraData:s,tfheVersion:e.tfheVersion}}async function lx(e){let{fheEncryptionKey:t}=e,n=t.publicKey,r=t.crs;if(!(n instanceof ax))throw Error(`Invalid tfhePublicKey`);if(!(r instanceof ox))throw Error(`Invalid tfheCrs`);let i=ax[rx](n,ix),a=ox[rx](r,ix);return Object.freeze({publicKeyBytes:Object.freeze({id:t.publicKey.id,bytes:i}),crsBytes:Object.freeze({id:t.crs.id,capacity:t.crs.capacity,bytes:a}),metadata:Object.freeze({relayerUrl:t.metadata.relayerUrl,chainId:t.metadata.chainId})})}async function ux(e){let{publicKey:t}=e,n=t;if(!(n instanceof ax))throw Error(`Invalid tfhePublicKey`);let r=ax[rx](n,ix);return Object.freeze({id:t.id,bytes:r,tfheVersion:e.tfheVersion})}async function dx(e){let{crs:t}=e,n=t;if(!(n instanceof ox))throw Error(`Invalid tfheCrs`);let r=ox[rx](n,ix);return Object.freeze({id:t.id,capacity:t.capacity,bytes:r,tfheVersion:e.tfheVersion})}async function fx(e){let{crsBytes:t}=e;return new ox(ix,t.id,e.tfheVersion,t.capacity,t.bytes)}async function px(e){let{publicKeyBytes:t}=e;return new ax(ix,t.id,e.tfheVersion,t.bytes)}var mx=e=>Object.freeze({encrypt:Object.freeze({initTfheModule:()=>Promise.resolve(),getTfheModuleInfo:()=>{throw Error(`Not yet implemented`)},parseTFHEProvenCompactCiphertextList:sx,buildWithProofPacked:cx,serializeFheEncryptionKey:lx,serializeFheEncryptionPublicKey:ux,serializeFheEncryptionCrs:dx,deserializeFheEncryptionPublicKey:px,deserializeFheEncryptionCrs:fx})});function hx(e){return Ly(e,mx)}function gx(e){return Ob(e).extend(hx)}function _x(e){return{id:e.id,fhevm:{contracts:{acl:{address:e.aclContractAddress},inputVerifier:{address:e.inputVerifierContractAddress},kmsVerifier:{address:e.kmsContractAddress},protocolConfig:void 0},relayerUrl:e.relayerUrl,gateway:{id:e.gatewayChainId,contracts:{decryption:{address:e.verifyingContractAddressDecryption},inputVerification:{address:e.verifyingContractAddressInputVerification}}}}}}var vx=Symbol(`Comlink.proxy`),yx=Symbol(`Comlink.endpoint`),bx=Symbol(`Comlink.releaseProxy`),xx=Symbol(`Comlink.finalizer`),Sx=Symbol(`Comlink.thrown`),Cx=e=>typeof e==`object`&&!!e||typeof e==`function`,wx=new Map([[`proxy`,{canHandle:e=>Cx(e)&&e[vx],serialize(e){let{port1:t,port2:n}=new MessageChannel;return Ex(e,t),[n,[n]]},deserialize(e){return e.start(),kx(e)}}],[`throw`,{canHandle:e=>Cx(e)&&Sx in e,serialize({value:e}){let t;return t=e instanceof Error?{isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:{isError:!1,value:e},[t,[]]},deserialize(e){throw e.isError?Object.assign(Error(e.value.message),e.value):e.value}}]]);function Tx(e,t){for(let n of e)if(t===n||n===`*`||n instanceof RegExp&&n.test(t))return!0;return!1}function Ex(e,t=globalThis,n=[`*`]){t.addEventListener(`message`,function r(i){if(!i||!i.data)return;if(!Tx(n,i.origin)){console.warn(`Invalid origin '${i.origin}' for comlink proxy`);return}let{id:a,type:o,path:s}=Object.assign({path:[]},i.data),c=(i.data.argumentList||[]).map(Ux),l;try{let t=s.slice(0,-1).reduce((e,t)=>e[t],e),n=s.reduce((e,t)=>e[t],e);switch(o){case`GET`:l=n;break;case`SET`:t[s.slice(-1)[0]]=Ux(i.data.value),l=!0;break;case`APPLY`:l=n.apply(t,c);break;case`CONSTRUCT`:l=Vx(new n(...c));break;case`ENDPOINT`:{let{port1:t,port2:n}=new MessageChannel;Ex(e,n),l=Bx(t,[t])}break;case`RELEASE`:l=void 0;break;default:return}}catch(e){l={value:e,[Sx]:0}}Promise.resolve(l).catch(e=>({value:e,[Sx]:0})).then(n=>{let[i,s]=Hx(n);t.postMessage(Object.assign(Object.assign({},i),{id:a}),s),o===`RELEASE`&&(t.removeEventListener(`message`,r),Ox(t),xx in e&&typeof e[xx]==`function`&&e[xx]())}).catch(e=>{let[n,r]=Hx({value:TypeError(`Unserializable return value`),[Sx]:0});t.postMessage(Object.assign(Object.assign({},n),{id:a}),r)})}),t.start&&t.start()}function Dx(e){return e.constructor.name===`MessagePort`}function Ox(e){Dx(e)&&e.close()}function kx(e,t){let n=new Map;return e.addEventListener(`message`,function(e){let{data:t}=e;if(!t||!t.id)return;let r=n.get(t.id);if(r)try{r(t)}finally{n.delete(t.id)}}),Ix(e,n,[],t)}function Ax(e){if(e)throw Error(`Proxy has been released and is not useable`)}function jx(e){return Wx(e,new Map,{type:`RELEASE`}).then(()=>{Ox(e)})}var Mx=new WeakMap,Nx=`FinalizationRegistry`in globalThis&&new FinalizationRegistry(e=>{let t=(Mx.get(e)||0)-1;Mx.set(e,t),t===0&&jx(e)});function Px(e,t){let n=(Mx.get(t)||0)+1;Mx.set(t,n),Nx&&Nx.register(e,t,e)}function Fx(e){Nx&&Nx.unregister(e)}function Ix(e,t,n=[],r=function(){}){let i=!1,a=new Proxy(r,{get(r,o){if(Ax(i),o===bx)return()=>{Fx(a),jx(e),t.clear(),i=!0};if(o===`then`){if(n.length===0)return{then:()=>a};let r=Wx(e,t,{type:`GET`,path:n.map(e=>e.toString())}).then(Ux);return r.then.bind(r)}return Ix(e,t,[...n,o])},set(r,a,o){Ax(i);let[s,c]=Hx(o);return Wx(e,t,{type:`SET`,path:[...n,a].map(e=>e.toString()),value:s},c).then(Ux)},apply(r,a,o){Ax(i);let s=n[n.length-1];if(s===yx)return Wx(e,t,{type:`ENDPOINT`}).then(Ux);if(s===`bind`)return Ix(e,t,n.slice(0,-1));let[c,l]=Rx(o);return Wx(e,t,{type:`APPLY`,path:n.map(e=>e.toString()),argumentList:c},l).then(Ux)},construct(r,a){Ax(i);let[o,s]=Rx(a);return Wx(e,t,{type:`CONSTRUCT`,path:n.map(e=>e.toString()),argumentList:o},s).then(Ux)}});return Px(a,e),a}function Lx(e){return Array.prototype.concat.apply([],e)}function Rx(e){let t=e.map(Hx);return[t.map(e=>e[0]),Lx(t.map(e=>e[1]))]}var zx=new WeakMap;function Bx(e,t){return zx.set(e,t),e}function Vx(e){return Object.assign(e,{[vx]:!0})}function Hx(e){for(let[t,n]of wx)if(n.canHandle(e)){let[r,i]=n.serialize(e);return[{type:`HANDLER`,name:t,value:r},i]}return[{type:`RAW`,value:e},zx.get(e)||[]]}function Ux(e){switch(e.type){case`HANDLER`:return wx.get(e.name).deserialize(e.value);case`RAW`:return e.value}}function Wx(e,t,n,r){return new Promise(i=>{let a=Gx();t.set(a,i),e.start&&e.start(),e.postMessage(Object.assign({id:a},n),r)})}function Gx(){return[,,,,].fill(0).map(()=>Math.floor(Math.random()*(2**53-1)).toString(16)).join(`-`)}function Kx(e){return typeof e==`object`&&!!e&&e.wireError===!0}var qx=[`statusCode`,`status`,`retryAfter`,`timeoutMs`,`relayerApiError`,`code`,`data`,`shortMessage`,`details`,`error`,`info`];function Jx(e){try{return structuredClone(e),!0}catch{return!1}}function Yx(e){let t=e.response;return Me(t?.headers)}function Xx(e){try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function Zx(e){let t={};for(let n of qx){let r=e[n];r!==void 0&&Jx(r)&&(t[n]=r)}if(!Fe(t.retryAfter)){let n=Yx(e);n!==void 0&&(t.retryAfter=n)}return t}function Qx(e,t=6){if(Kx(e))return e;let n=e=>t>0&&e!==void 0?Qx(e,t-1):void 0;if(e instanceof Error)return{wireError:!0,name:e.name,message:e.message,stack:e.stack,props:Zx(e),cause:n(e.cause)};if(typeof e==`object`&&e){let{message:t,cause:r}=e;return{wireError:!0,name:`Error`,message:typeof t==`string`?t:Xx(e),stack:void 0,props:Zx(e),cause:n(r)}}return{wireError:!0,name:`Error`,message:typeof e==`string`?e:Xx(e),stack:void 0,props:{},cause:void 0}}function $x(e){let t=Error(e.message,e.cause?{cause:$x(e.cause)}:{});return t.name=e.name,e.stack!==void 0&&(t.stack=e.stack),Object.assign(t,e.props),t}function eS(){return new Worker(new URL(`/assets/encrypt.worker-Cjp71f-d.js`,``+import.meta.url),{type:`module`,name:`zama-fhe-encrypt`})}var tS={spawn:1e4,init:3e5},nS=new WeakSet,$=class extends Error{crashed;constructor(e,t){super(e,t),this.name=`WorkerUnavailableError`,this.crashed=t?.crashed??!1}};function rS(e){if(typeof e!=`object`||!e)return!1;let{name:t,message:n}=e;return t===`DataCloneError`||t===`TypeError`&&typeof n==`string`&&n.includes(`Unserializable return value`)}function iS(e){if(e?.aborted)throw e.reason??new DOMException(`The operation was aborted.`,`AbortError`)}var aS={count:0,last:void 0,warnedFor:-1};function oS(e){if(e===void 0)return{key:e,transfers:[]};let t=e.publicKeyBytes.bytes,n=e.crsBytes.bytes;if(!(t instanceof Uint8Array)||!(n instanceof Uint8Array))return{key:e,transfers:[]};let r=t.slice(),i=n.slice();return{key:{...e,publicKeyBytes:{...e.publicKeyBytes,bytes:r},crsBytes:{...e.crsBytes,bytes:i}},transfers:[r.buffer,i.buffer]}}function sS(){let e,t=new Promise((t,n)=>{e=n});return t.catch(()=>{}),{initPromise:void 0,worker:void 0,api:void 0,doomed:t,doom:e}}var cS=class{#e;#t;#n=!1;#r=aS;#i=0;#a=new Map;#o;#s=0;#c=!1;constructor(e){this.#e=e}init=()=>{let e=this.#t??=sS();if(e.initPromise===void 0){let t=this.#f(()=>this.#u(e)).catch(n=>{throw e.initPromise===t&&(e.initPromise=void 0),n});e.initPromise=t}return e.initPromise};encryptValue=e=>this.#f(()=>this.#l(t=>t.encryptValue(e),(t,n,r)=>t.encryptValue(n,{...e,options:r}),e.options));encryptValues=e=>this.#f(()=>this.#l(t=>t.encryptValues(e),(t,n,r)=>t.encryptValues(n,{...e,options:r}),e.options));dispose(){this.#c=!0,this.#p()}async#l(e,t,n){let{signal:r,onProgress:i,...a}=n??{};iS(r),await this.init(),iS(r);let o=this.#t,s=o?.api;if(this.#o!==void 0&&(this.#n||s===void 0))return e(await this.#o);if(o===void 0||s===void 0)return e(await this.#b(o,this.#r.last??new $(`Encrypt worker not running.`)));let c=this.#i++,l=()=>void s.abort(c).catch(()=>{});r?.addEventListener(`abort`,l,{once:!0}),i&&this.#a.set(c,i);try{let e=await this.#v(o,t(s,c,a));return this.#r=aS,e}catch(t){if(t instanceof $)return e(await this.#b(o,t));throw t}finally{this.#a.delete(c),r?.removeEventListener(`abort`,l)}}async#u(e){if(this.#n)return;let t=this.#e.blockedReason;if(t!==void 0){await this.#b(e,new $(t));return}let n=await this.#e.prefetchKey();try{let t=await this.#h(e),r=this.#e.network,i=typeof r==`string`?null:Vx(async e=>{try{return await r.request(e)}catch(e){throw Qx(e)}}),a=Vx((e,t)=>{try{this.#e.logger[e](t)}catch(e){this.#d(`logger`,e)}}),o=Vx((e,t)=>{try{this.#a.get(e)?.(t)}catch(e){this.#d(`onProgress`,e)}}),s=oS(n);await this.#v(e,t.init(Bx({...this.#e.initPayload,clientOptions:{...this.#e.initPayload.clientOptions,fheEncryptionKey:s.key},rpcUrl:typeof r==`string`?r:void 0},s.transfers),i,a,o),{ms:this.#e.timeouts.init,operation:`init`}),e.api=t,this.#r={...this.#r,last:void 0}}catch(t){if(!(t instanceof $))throw this.#y(e,new $(`Encrypt worker init failed.`)),t;await this.#b(e,t)}}#d(e,t){let n=t instanceof Error?t.message:String(t);try{this.#e.logger.warn(`Encrypt offload ${e} callback threw: ${n}`)}catch{}}async#f(e){this.#s++;try{return await e()}finally{this.#s--,this.#p()}}#p(){!this.#c||this.#s>0||(this.#c=!1,this.#t?.worker?.terminate(),this.#t=void 0,this.#o=void 0,this.#n=!1,this.#r=aS)}#m(){let e=this.#e.workerSource;if(e===void 0)return eS();if(typeof e==`function`){let t=e();return nS.has(t)&&this.#e.logger.warnAlways(`The offloadWorker factory returned a worker it already handed out; each call must construct a fresh Worker.`),nS.add(t),t}return new Worker(e,{type:`module`,name:`zama-fhe-encrypt`})}async#h(e){let t;try{t=this.#m()}catch(e){throw new $(e instanceof Error?e.message:String(e),{cause:e})}e.worker=t;let n=await this.#g(e,t);return this.#_(e,t),n}#g(e,t){return new Promise((n,r)=>{let i=()=>{clearTimeout(a),t.removeEventListener(`message`,o),t.removeEventListener(`error`,s)},a=setTimeout(()=>{i(),r(new $(`Encrypt worker did not start within ${this.#e.timeouts.spawn}ms.`))},this.#e.timeouts.spawn),o=e=>{e.data===`zama-encrypt-worker-ready`&&(i(),n(kx(t)))},s=t=>{i();let n=t.message||`Encrypt worker error.`;r(new $(n)),this.#y(e,new $(n))};t.addEventListener(`message`,o),t.addEventListener(`error`,s)})}#_(e,t){t.addEventListener(`error`,t=>{if(this.#t!==e)return;let n=new $(t.message||`Encrypt worker error.`,{crashed:!0});this.#r={...this.#r,count:this.#r.count+1,last:n},this.#y(e,n)})}async#v(e,t,n){let r=n===void 0?void 0:setTimeout(()=>{this.#y(e,new $(`Encrypt worker ${n.operation} timed out after ${n.ms}ms.`))},n.ms);try{return await Promise.race([t.catch(e=>{let t=Kx(e)?$x(e):e;throw rS(t)?new $(t.message,{cause:t}):t}),e.doomed])}finally{r!==void 0&&clearTimeout(r)}}#y(e,t){e!==void 0&&(this.#t===e&&(this.#t=void 0),e.worker?.terminate(),e.worker=void 0,e.api=void 0,e.initPromise=void 0,e.doom(t))}async#b(e,t){let n=t instanceof Error?t.message:String(t);if(this.#e.strict)throw this.#y(e,new $(`Encrypt worker unavailable.`)),new Nt(`Encrypt offload required (offloadEncrypt: true) but unavailable: ${n}`,{cause:t});let{transient:r,pinning:i}=this.#x(t);if(this.#n||=!r,this.#y(e,new $(`Encrypt worker degraded to inline.`)),this.#S(n,r,i),this.#o===void 0){let e=(async()=>{let e=this.#e.createInlineClient();return await e.init(),e})().catch(t=>{throw this.#o===e&&(this.#o=void 0),this.#e.logger.warnAlways(`Encrypt inline fallback failed to initialize: ${t instanceof Error?t.message:String(t)}`),t});this.#o=e}return this.#o}#x(e){let t=e instanceof $&&e.crashed&&this.#r.count<2;return{transient:t,pinning:!t&&!this.#n}}#S(e,t,n){if(!n&&this.#r.warnedFor===this.#r.count)return;this.#r={...this.#r,warnedFor:this.#r.count};let r=t?`in-flight encryption falls back`:`encryption falls back`;this.#e.logger.warnAlways(`Encrypt offload unavailable, ${r} to the calling thread: ${e}`)}},lS=class{#e;#t;#n;#r;#i;#a;#o;constructor(e){this.#e=e.chain;let{timeout:t,debug:n,batchRpcCalls:r,moduleVersions:i,fheEncryptionKey:a}=e.options??{},o=this.#e.auth?fS(this.#e.auth):void 0,s={publicClient:Ee({transport:typeof this.#e.network==`string`?De(this.#e.network):Ae(this.#e.network)}),chain:_x(this.#e),options:{batchRpcCalls:r,moduleVersions:i,fheEncryptionKey:a}};this.#i={...o!==void 0&&{auth:o},...t!==void 0&&{timeout:t},...n!==void 0&&{debug:n}},this.#a=e.telemetry;let c=()=>this.#t.fetchFheEncryptionKeyBytes({options:this.#c(void 0)}),l=e=>({init:async()=>{await c(),await e.init()},encryptValue:t=>e.encryptValue(t),encryptValues:t=>e.encryptValues(t),fetchFheEncryptionKeyBytes:t=>e.fetchFheEncryptionKeyBytes(t)});e.cleartext?(this.#t=Ob(s),this.#n=qb(s),this.#r=l(gx(s))):(this.#t=ug(s),this.#n=gv(s),this.#r=this.#s(e,s,{prefetchKey:c,createInlineClient:()=>l(zy(s))}))}#s(e,t,n){let r=e.offloadEncrypt??!1,i=r===!0,a=typeof Worker==`function`&&(e.offloadWorker!==void 0||!0);if(r===!1||!(i||a))return n.createInlineClient();let o=Le(),s=dS(o);if(s!==void 0&&!i)return e.logger.warnAlways(`Encryption runs on the calling thread: ${s}.`),n.createInlineClient();let c=new cS({initPayload:{chain:t.chain,clientOptions:t.options,runtime:o??{}},network:this.#e.network,prefetchKey:n.prefetchKey,createInlineClient:n.createInlineClient,logger:e.logger,timeouts:e.offloadTimeouts??tS,workerSource:e.offloadWorker,blockedReason:s,strict:i});return{init:()=>c.init(),encryptValue:e=>c.encryptValue(e),encryptValues:e=>c.encryptValues(e),fetchFheEncryptionKeyBytes:e=>this.#t.fetchFheEncryptionKeyBytes(e),dispose:()=>c.dispose()}}get chain(){return this.#e}#c(e){let{operation:t,...n}={...this.#i,...e};return this.#a===void 0?n:{...n,headers:{...n.headers,...Ft(this.#a,t)}}}#l=()=>(this.#o??=this.#r.init().catch(e=>{throw this.#o=void 0,e}),this.#o);dispose=()=>{this.#o=void 0,this.#r.dispose?.()};decryptPublicValue=async e=>(await this.#t.init(),this.#t.decryptPublicValue({...e,options:this.#c(e.options)}));decryptPublicValues=async e=>(await this.#t.init(),this.#t.decryptPublicValues({...e,options:this.#c(e.options)}));decryptPublicValuesWithSignatures=async e=>(await this.#t.init(),this.#t.decryptPublicValuesWithSignatures({...e,options:this.#c(e.options)}));encryptValue=async e=>(await this.#l(),this.#r.encryptValue({...e,options:this.#c(e.options)}));encryptValues=async e=>(await this.#l(),this.#r.encryptValues({...e,options:this.#c(e.options)}));decryptValue=async e=>(await this.#n.init(),this.#n.decryptValue({...e,options:this.#c(e.options)}));decryptValues=async e=>(await this.#n.init(),this.#n.decryptValues({...e,options:this.#c(e.options)}));decryptValuesFromPairs=async e=>(await this.#n.init(),this.#n.decryptValuesFromPairs({...e,options:this.#c(e.options)}));fetchFheEncryptionKeyBytes=async e=>(await this.#t.init(),this.#t.fetchFheEncryptionKeyBytes({...e,options:this.#c(e?.options)}));signDecryptionPermit=async e=>(await this.#t.init(),this.#t.signDecryptionPermit(e));createUnsignedLegacyDecryptionPermitEip712=e=>rf(this.#t,e);serializeTransportKeyPair=e=>this.#n.serializeTransportKeyPair(e);serializeSignedDecryptionPermit=e=>this.#t.serializeSignedDecryptionPermit(e);parseTransportKeyPair=async e=>(await this.#n.init(),this.#n.parseTransportKeyPair(e));parseSignedDecryptionPermit=async e=>{await this.#t.init();let{serializedPermit:t}=e;return this.#t.parseSignedDecryptionPermit({...e,serializedPermit:{...t,signature:uS(t.signature)}})};generateTransportKeyPair=async()=>(await this.#n.init(),this.#n.generateTransportKeyPair())};function uS(e){if(e.length!==132)return e;let t=parseInt(e.slice(130),16);return t!==0&&t!==1?e:`${e.slice(0,130)}${t===0?`1b`:`1c`}`}function dS(e){if(ze())return`a runtime locateFile cannot cross the encrypt worker boundary`;if(e===void 0&&Be())return`a runtime config set outside createConfig cannot be replicated in the encrypt worker realm`}function fS(e){let t=e.__type;switch(t){case`ApiKeyHeader`:return{type:t,value:e.value,header:e.header};case`ApiKeyCookie`:return{type:t,value:e.value,cookie:e.cookie};case`BearerToken`:return{type:t,token:e.token};default:throw new Pe(`Unknown auth type: ${String(t)}`)}}export{Mt as a,Pt as i,lS as n,Nt as o,It as r,tS as t};