@zama-fhe/sdk 2.3.0-alpha.3 → 2.3.0

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 (45) hide show
  1. package/dist/cjs/activity.cjs +1 -1
  2. package/dist/cjs/activity.cjs.map +1 -1
  3. package/dist/cjs/cleartext.cjs +1 -1
  4. package/dist/cjs/cleartext.cjs.map +1 -1
  5. package/dist/cjs/index.cjs +2 -2
  6. package/dist/cjs/index.cjs.map +1 -1
  7. package/dist/cjs/query/index.cjs +1 -1
  8. package/dist/cjs/query/index.cjs.map +1 -1
  9. package/dist/cjs/relayer.cjs +1 -1
  10. package/dist/cjs/relayer.cjs.map +1 -1
  11. package/dist/esm/{activity-D8okM6NP.d.ts → activity-DTBvolDB.d.ts} +210 -15
  12. package/dist/esm/{activity-DVF6Mxsn.js → activity-b2RsqKHW.js} +2 -2
  13. package/dist/esm/{activity-DVF6Mxsn.js.map → activity-b2RsqKHW.js.map} +1 -1
  14. package/dist/esm/cleartext/index.d.ts +5 -3
  15. package/dist/esm/cleartext/index.js +1 -1
  16. package/dist/esm/{cleartext-BU7SYjBM.js → cleartext-Bzxet3H7.js} +2 -2
  17. package/dist/esm/cleartext-Bzxet3H7.js.map +1 -0
  18. package/dist/esm/{encryption-UaXE1L_W.js → encryption-CmIPBcfP.js} +2 -2
  19. package/dist/esm/{encryption-UaXE1L_W.js.map → encryption-CmIPBcfP.js.map} +1 -1
  20. package/dist/esm/ethers/index.d.ts +2 -2
  21. package/dist/esm/{fhe-artifact-cache-DMw74maw.js → fhe-artifact-cache-CyXna-Br.js} +2 -2
  22. package/dist/esm/{fhe-artifact-cache-DMw74maw.js.map → fhe-artifact-cache-CyXna-Br.js.map} +1 -1
  23. package/dist/esm/{index-C3ELlhM8.d.ts → index-BXdXzzx4.d.ts} +2 -2
  24. package/dist/esm/index.d.ts +8 -129
  25. package/dist/esm/index.js +2 -2
  26. package/dist/esm/index.js.map +1 -1
  27. package/dist/esm/memory-storage-B4_heQa5.js +2 -0
  28. package/dist/esm/memory-storage-B4_heQa5.js.map +1 -0
  29. package/dist/esm/node/index.d.ts +5 -3
  30. package/dist/esm/node/index.js +1 -1
  31. package/dist/esm/node/index.js.map +1 -1
  32. package/dist/esm/query/index.d.ts +10 -18
  33. package/dist/esm/query/index.js +1 -1
  34. package/dist/esm/query/index.js.map +1 -1
  35. package/dist/esm/relayer-C6u3eOlN.js +2 -0
  36. package/dist/esm/relayer-C6u3eOlN.js.map +1 -0
  37. package/dist/esm/{relayer-sdk-Cqx3HnZh.d.ts → relayer-sdk-C_4bkxxH.d.ts} +2 -2
  38. package/dist/esm/{relayer-sdk.types-BhV3n5qO.d.ts → relayer-sdk.types-C9GAgQ7q.d.ts} +23 -2
  39. package/dist/esm/viem/index.d.ts +2 -2
  40. package/package.json +1 -1
  41. package/dist/esm/cleartext-BU7SYjBM.js.map +0 -1
  42. package/dist/esm/memory-storage-BkqO2DFz.js +0 -2
  43. package/dist/esm/memory-storage-BkqO2DFz.js.map +0 -1
  44. package/dist/esm/relayer-DfjPWTBf.js +0 -2
  45. package/dist/esm/relayer-DfjPWTBf.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ function e(e){return e instanceof Error?e:typeof e==`object`&&e&&`message`in e?Error(String(e.message)):Error(String(e))}function t(e){if(!(e instanceof Error))return!1;if(e.name===`ContractFunctionExecutionError`||e.name===`ContractFunctionRevertedError`||`code`in e&&e.code===`CALL_EXCEPTION`)return!0;let t=e.message.toLowerCase();return t.includes(`execution reverted`)||t.includes(`call revert exception`)}var n=class{#e=new Map;async get(e){return this.#e.get(e)??null}async set(e,t){this.#e.set(e,t)}async delete(e){this.#e.delete(e)}};const r=new n;export{e as i,r as n,t as r,n as t};
2
+ //# sourceMappingURL=memory-storage-B4_heQa5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-storage-B4_heQa5.js","names":["#map"],"sources":["../../src/utils/error.ts","../../src/storage/memory-storage.ts"],"sourcesContent":["/** Coerce an unknown caught value to an Error instance. */\nexport function toError(error: unknown): Error {\n if (error instanceof Error) {\n return error;\n }\n if (typeof error === \"object\" && error !== null && \"message\" in error) {\n return new Error(String(error.message));\n }\n return new Error(String(error));\n}\n\n/**\n * Returns true if the error is a contract call revert (as opposed to a network/transport error).\n * Detects viem's ContractFunctionExecutionError / ContractFunctionRevertedError\n * and ethers' CALL_EXCEPTION.\n */\nexport function isContractCallError(error: unknown): boolean {\n if (!(error instanceof Error)) {\n return false;\n }\n // viem: ContractFunctionExecutionError, ContractFunctionRevertedError\n if (\n error.name === \"ContractFunctionExecutionError\" ||\n error.name === \"ContractFunctionRevertedError\"\n ) {\n return true;\n }\n // ethers: error.code === \"CALL_EXCEPTION\"\n if (\"code\" in error && error.code === \"CALL_EXCEPTION\") {\n return true;\n }\n // Fallback: common revert message patterns from various providers\n const msg = error.message.toLowerCase();\n return msg.includes(\"execution reverted\") || msg.includes(\"call revert exception\");\n}\n","import type { GenericStorage } from \"../types\";\n\n/** In-memory credential store. Credentials are lost on page reload. */\nexport class MemoryStorage implements GenericStorage {\n #map = new Map<string, unknown>();\n\n async get<T = unknown>(key: string): Promise<T | null> {\n return (this.#map.get(key) as T) ?? null;\n }\n\n async set<T = unknown>(key: string, value: T): Promise<void> {\n this.#map.set(key, value);\n }\n\n async delete(key: string): Promise<void> {\n this.#map.delete(key);\n }\n}\n\n/** Default singleton for application-wide use. */\nexport const memoryStorage = new MemoryStorage();\n"],"mappings":"AACA,SAAgB,EAAQ,EAAuB,CAO7C,OANI,aAAiB,MACZ,EAEL,OAAO,GAAU,UAAY,GAAkB,YAAa,EACnD,MAAM,OAAO,EAAM,QAAQ,CAAC,CAE9B,MAAM,OAAO,EAAM,CAAC,CAQjC,SAAgB,EAAoB,EAAyB,CAC3D,GAAI,EAAE,aAAiB,OACrB,MAAO,GAUT,GANE,EAAM,OAAS,kCACf,EAAM,OAAS,iCAKb,SAAU,GAAS,EAAM,OAAS,iBACpC,MAAO,GAGT,IAAM,EAAM,EAAM,QAAQ,aAAa,CACvC,OAAO,EAAI,SAAS,qBAAqB,EAAI,EAAI,SAAS,wBAAwB,CC9BpF,IAAa,EAAb,KAAqD,CACnD,GAAO,IAAI,IAEX,MAAM,IAAiB,EAAgC,CACrD,OAAQ,MAAA,EAAU,IAAI,EAAI,EAAU,KAGtC,MAAM,IAAiB,EAAa,EAAyB,CAC3D,MAAA,EAAU,IAAI,EAAK,EAAM,CAG3B,MAAM,OAAO,EAA4B,CACvC,MAAA,EAAU,OAAO,EAAI,GAKzB,MAAa,EAAgB,IAAI"}
@@ -1,5 +1,5 @@
1
- import { $ as GetPublicParamsResponseData, B as DelegatedUserDecryptPayload, F as CreateDelegatedEIP712Request, G as EncryptResponseData, H as DelegatedUserDecryptResponseData, I as CreateDelegatedEIP712ResponseData, J as GenerateKeypairResponseData, K as ErrorResponse, L as CreateEIP712Payload, N as BaseRequest, P as CreateDelegatedEIP712Payload, Q as GetPublicParamsRequest, R as CreateEIP712Request, U as EncryptPayload, V as DelegatedUserDecryptRequest, W as EncryptRequest, X as GetPublicKeyRequest, Y as GenericLogger, Z as GetPublicKeyResponseData, a as EncryptParams, at as RequestZKProofVerificationResponseData, ct as UserDecryptPayload, dt as WorkerRequest, et as InitRequest, ft as WorkerRequestType, it as RequestZKProofVerificationRequest, l as PublicDecryptResult, lt as UserDecryptRequest, n as DelegatedUserDecryptParams, nt as PublicDecryptRequest, o as EncryptResult, ot as SuccessResponse, p as UserDecryptParams, pt as WorkerResponse, q as GenerateKeypairRequest, r as EIP712TypedData, rt as PublicDecryptResponseData, s as Handle, st as UpdateCsrfRequest, t as ClearValueType, tt as NodeInitRequest, ut as UserDecryptResponseData, y as GenericStorage, z as CreateEIP712ResponseData } from "../relayer-sdk.types-BhV3n5qO.js";
2
- import { t as RelayerSDK } from "../relayer-sdk-Cqx3HnZh.js";
1
+ import { $ as GetPublicKeyRequest, B as CreateEIP712Payload, G as DelegatedUserDecryptResponseData, H as CreateEIP712ResponseData, I as BaseRequest, J as EncryptResponseData, K as EncryptPayload, L as CreateDelegatedEIP712Payload, Q as GenericLogger, R as CreateDelegatedEIP712Request, S as GenericStorage, U as DelegatedUserDecryptPayload, V as CreateEIP712Request, W as DelegatedUserDecryptRequest, X as GenerateKeypairRequest, Y as ErrorResponse, Z as GenerateKeypairResponseData, a as EncryptParams, at as PublicDecryptRequest, ct as RequestZKProofVerificationResponseData, dt as UserDecryptPayload, et as GetPublicKeyResponseData, ft as UserDecryptRequest, gt as WorkerResponse, ht as WorkerRequestType, it as NodeInitRequest, l as PublicDecryptResult, lt as SuccessResponse, mt as WorkerRequest, n as DelegatedUserDecryptParams, nt as GetPublicParamsResponseData, o as EncryptResult, ot as PublicDecryptResponseData, p as UserDecryptParams, pt as UserDecryptResponseData, q as EncryptRequest, r as EIP712TypedData, rt as InitRequest, s as Handle, st as RequestZKProofVerificationRequest, t as ClearValueType, tt as GetPublicParamsRequest, ut as UpdateCsrfRequest, z as CreateDelegatedEIP712ResponseData } from "../relayer-sdk.types-C9GAgQ7q.js";
2
+ import { t as RelayerSDK } from "../relayer-sdk-C_4bkxxH.js";
3
3
  import { n as MainnetConfig, r as SepoliaConfig, t as HardhatConfig } from "../relayer-utils-BcTAyZOr.js";
4
4
  import { Address, Hex } from "viem";
5
5
  import { Worker } from "node:worker_threads";
@@ -32,10 +32,12 @@ interface RelayerNodeConfig {
32
32
  * resolved pool, and chain switches tear down the old pool within the lock.
33
33
  * See the RelayerWeb class doc for a detailed explanation.
34
34
  */
35
- declare class RelayerNode implements RelayerSDK {
35
+ declare class RelayerNode implements RelayerSDK, Disposable {
36
36
  #private;
37
37
  constructor(config: RelayerNodeConfig);
38
38
  terminate(): void;
39
+ /** Calls {@link terminate}, shutting down the worker thread pool. */
40
+ [Symbol.dispose](): void;
39
41
  generateKeypair(): Promise<KeypairType<Hex>>;
40
42
  createEIP712(publicKey: Hex, contractAddresses: Address[], startTimestamp: number, durationDays?: number): Promise<EIP712TypedData>;
41
43
  encrypt(params: EncryptParams): Promise<EncryptResult>;
@@ -1,2 +1,2 @@
1
- import{r as e,t}from"../relayer-DfjPWTBf.js";import{n,t as r}from"../fhe-artifact-cache-DMw74maw.js";import{t as i}from"../memory-storage-BkqO2DFz.js";import{a,i as o,n as s,o as c,r as l,t as u}from"../relayer-utils-BeoTNDM4.js";import{availableParallelism as d}from"node:os";import{Worker as f}from"node:worker_threads";import{randomUUID as p}from"node:crypto";import{AsyncLocalStorage as m}from"node:async_hooks";var h=class extends n{constructor(e){super(e,e.logger)}createWorker(){return new f(new URL(`relayer-sdk.node-worker.js`,import.meta.url))}wireEvents(e){e.on(`message`,e=>this.handleResponse(e)),e.on(`error`,e=>this.handleWorkerError(e.message)),e.on(`messageerror`,()=>this.handleWorkerMessageError())}postMessage(e,t){e.postMessage(t)}terminateWorker(e){e.terminate()}generateRequestId(){return p()}getInitPayload(){return{type:`NODE_INIT`,payload:{fhevmConfig:this.config.fhevmConfig}}}onWorkerReady(e){e.unref()}},g=class{#e=[];#t=[];#n;#r;#i=null;constructor(e){this.#n=e,this.#r=e.poolSize??Math.min(d(),4)}get poolSize(){return this.#r}async initPool(){if(!(this.#e.length>0))return this.#i||=this.#a().finally(()=>{this.#i=null}),this.#i}async#a(){for(let e=0;e<this.#r;e++)this.#e.push(new h(this.#n)),this.#t.push(0);try{await Promise.all(this.#e.map(e=>e.initWorker()))}catch(e){for(let e of this.#e)e.terminate();throw this.#e.length=0,this.#t.length=0,e}}terminate(){for(let e of this.#e)e.terminate();this.#e.length=0,this.#t.length=0}#o(){let e=0,t=this.#t[0];for(let n=1;n<this.#t.length;n++)this.#t[n]<t&&(t=this.#t[n],e=n);return e}async#s(e){if(this.#e.length===0)throw Error(`NodeWorkerPool not initialized. Call initPool() first.`);let t=this.#o();this.#t[t]++;try{return await e(this.#e[t])}finally{this.#t[t]--}}async generateKeypair(){return this.#s(e=>e.generateKeypair())}async createEIP712(e){return this.#s(t=>t.createEIP712(e))}async encrypt(e){return this.#s(t=>t.encrypt(e))}async userDecrypt(e){return this.#s(t=>t.userDecrypt(e))}async publicDecrypt(e){return this.#s(t=>t.publicDecrypt(e))}async createDelegatedUserDecryptEIP712(e){return this.#s(t=>t.createDelegatedUserDecryptEIP712(e))}async delegatedUserDecrypt(e){return this.#s(t=>t.delegatedUserDecrypt(e))}async requestZKProofVerification(e){return this.#s(t=>t.requestZKProofVerification(e))}async getPublicKey(){return this.#s(e=>e.getPublicKey())}async getPublicParams(e){return this.#s(t=>t.getPublicParams(e))}},_=class{#e;#t=null;#n=null;#r=null;#i=!1;#a=null;#o=null;constructor(e){this.#e={fheArtifactStorage:new i,...e}}async#s(){let e=await this.#e.getChainId(),{transports:t,poolSize:n}=this.#e;return{fhevmConfig:Object.assign({},u[e],t[e]),poolSize:n,logger:this.#e.logger}}async#c(){if(this.#r)return this.#r;this.#r=this.#u();try{return await this.#r}finally{this.#r=null}}#l(){this.#t?.terminate(),this.#t=null,this.#n=null,this.#o=null}async#u(){if(this.#i)throw new t(`RelayerNode has been terminated`);let n=await this.#e.getChainId();if(this.#a!==null&&n!==this.#a&&this.#l(),this.#a=n,!this.#o&&this.#e.fheArtifactStorage){let e=Object.assign({},u[n],this.#e.transports[n]);this.#o=new r({storage:this.#e.fheArtifactStorage,chainId:n,relayerUrl:e.relayerUrl,ttl:this.#e.fheArtifactCacheTTL,logger:this.#e.logger})}if(this.#o){let e=!1;try{e=await this.#o.revalidateIfDue()}catch(e){this.#e.logger?.warn(`Artifact revalidation failed, proceeding with potentially stale cache`,{error:e instanceof Error?e.message:String(e)})}e&&(this.#e.logger?.info(`Cached FHE artifacts are stale — reinitializing`),this.#l())}return this.#n||=this.#d().catch(n=>{throw this.#n=null,n instanceof e?n:new t(`Failed to initialize FHE worker pool`,{cause:n})}),this.#n}async#d(){let e=new g(await this.#s());if(await e.initPool(),this.#i)throw e.terminate(),Error(`RelayerNode was terminated during initialization`);return this.#t=e,e}terminate(){this.#i=!0,this.#t&&=(this.#t.terminate(),null),this.#n=null,this.#r=null}async generateKeypair(){let e=await(await this.#c()).generateKeypair();return{publicKey:e.publicKey,privateKey:e.privateKey}}async createEIP712(e,t,n,r=7){let i=await(await this.#c()).createEIP712({publicKey:e,contractAddresses:t,startTimestamp:n,durationDays:r}),o={name:i.domain.name,version:i.domain.version,chainId:i.domain.chainId,verifyingContract:i.domain.verifyingContract};return{domain:o,types:{EIP712Domain:a(o),UserDecryptRequestVerification:i.types.UserDecryptRequestVerification},message:{publicKey:i.message.publicKey,contractAddresses:i.message.contractAddresses,startTimestamp:i.message.startTimestamp,durationDays:i.message.durationDays,extraData:i.message.extraData}}}async encrypt(e){return c(async()=>{let t=await(await this.#c()).encrypt(e);return{handles:t.handles,inputProof:t.inputProof}})}async userDecrypt(e){return c(async()=>(await(await this.#c()).userDecrypt(e)).clearValues)}async publicDecrypt(e){return c(async()=>{let t=await(await this.#c()).publicDecrypt(e);return{clearValues:t.clearValues,abiEncodedClearValues:t.abiEncodedClearValues,decryptionProof:t.decryptionProof}})}async createDelegatedUserDecryptEIP712(e,t,n,r,i=7){return(await this.#c()).createDelegatedUserDecryptEIP712({publicKey:e,contractAddresses:t,delegatorAddress:n,startTimestamp:r,durationDays:i})}async delegatedUserDecrypt(e){return c(async()=>(await(await this.#c()).delegatedUserDecrypt(e)).clearValues)}async requestZKProofVerification(e){return c(async()=>(await this.#c()).requestZKProofVerification(e))}async getPublicKey(){let e=await this.#c();return this.#o?this.#o.getPublicKey(async()=>(await e.getPublicKey()).result):(await e.getPublicKey()).result}async getPublicParams(e){let t=await this.#c();return this.#o?this.#o.getPublicParams(e,async()=>(await t.getPublicParams(e)).result):(await t.getPublicParams(e)).result}async getAclAddress(){let e=await this.#e.getChainId(),n=Object.assign({},u[e],this.#e.transports[e]);if(!n.aclContractAddress)throw new t(`No ACL address configured for chain ${e}`);return n.aclContractAddress}},v=class{#e=new m;run(e){return this.#e.run(new Map,e)}async get(e){return this.#e.getStore()?.get(e)??null}async set(e,t){this.#e.getStore()?.set(e,t)}async delete(e){this.#e.getStore()?.delete(e)}};const y=new v;export{v as AsyncLocalMapStorage,n as BaseWorkerClient,s as HardhatConfig,l as MainnetConfig,h as NodeWorkerClient,g as NodeWorkerPool,_ as RelayerNode,o as SepoliaConfig,y as asyncLocalStorage};
1
+ import{r as e,t}from"../relayer-C6u3eOlN.js";import{n,t as r}from"../fhe-artifact-cache-CyXna-Br.js";import{t as i}from"../memory-storage-B4_heQa5.js";import{a,i as o,n as s,o as c,r as l,t as u}from"../relayer-utils-BeoTNDM4.js";import{availableParallelism as d}from"node:os";import{Worker as f}from"node:worker_threads";import{randomUUID as p}from"node:crypto";import{AsyncLocalStorage as m}from"node:async_hooks";var h=class extends n{constructor(e){super(e,e.logger)}createWorker(){return new f(new URL(`relayer-sdk.node-worker.js`,import.meta.url))}wireEvents(e){e.on(`message`,e=>this.handleResponse(e)),e.on(`error`,e=>this.handleWorkerError(e.message)),e.on(`messageerror`,()=>this.handleWorkerMessageError())}postMessage(e,t){e.postMessage(t)}terminateWorker(e){e.terminate()}generateRequestId(){return p()}getInitPayload(){return{type:`NODE_INIT`,payload:{fhevmConfig:this.config.fhevmConfig}}}onWorkerReady(e){e.unref()}},g=class{#e=[];#t=[];#n;#r;#i=null;constructor(e){this.#n=e,this.#r=e.poolSize??Math.min(d(),4)}get poolSize(){return this.#r}async initPool(){if(!(this.#e.length>0))return this.#i||=this.#a().finally(()=>{this.#i=null}),this.#i}async#a(){for(let e=0;e<this.#r;e++)this.#e.push(new h(this.#n)),this.#t.push(0);try{await Promise.all(this.#e.map(e=>e.initWorker()))}catch(e){for(let e of this.#e)e.terminate();throw this.#e.length=0,this.#t.length=0,e}}terminate(){for(let e of this.#e)e.terminate();this.#e.length=0,this.#t.length=0}#o(){let e=0,t=this.#t[0];for(let n=1;n<this.#t.length;n++)this.#t[n]<t&&(t=this.#t[n],e=n);return e}async#s(e){if(this.#e.length===0)throw Error(`NodeWorkerPool not initialized. Call initPool() first.`);let t=this.#o();this.#t[t]++;try{return await e(this.#e[t])}finally{this.#t[t]--}}async generateKeypair(){return this.#s(e=>e.generateKeypair())}async createEIP712(e){return this.#s(t=>t.createEIP712(e))}async encrypt(e){return this.#s(t=>t.encrypt(e))}async userDecrypt(e){return this.#s(t=>t.userDecrypt(e))}async publicDecrypt(e){return this.#s(t=>t.publicDecrypt(e))}async createDelegatedUserDecryptEIP712(e){return this.#s(t=>t.createDelegatedUserDecryptEIP712(e))}async delegatedUserDecrypt(e){return this.#s(t=>t.delegatedUserDecrypt(e))}async requestZKProofVerification(e){return this.#s(t=>t.requestZKProofVerification(e))}async getPublicKey(){return this.#s(e=>e.getPublicKey())}async getPublicParams(e){return this.#s(t=>t.getPublicParams(e))}},_=class{#e;#t=null;#n=null;#r=null;#i=!1;#a=null;#o=null;constructor(e){this.#e={fheArtifactStorage:new i,...e}}async#s(){let e=await this.#e.getChainId(),{transports:t,poolSize:n}=this.#e;return{fhevmConfig:Object.assign({},u[e],t[e]),poolSize:n,logger:this.#e.logger}}async#c(){if(this.#r)return this.#r;this.#r=this.#u();try{return await this.#r}finally{this.#r=null}}#l(){this.#t?.terminate(),this.#t=null,this.#n=null,this.#o=null}async#u(){if(this.#i)throw new t(`RelayerNode has been terminated`);let n=await this.#e.getChainId();if(this.#a!==null&&n!==this.#a&&this.#l(),this.#a=n,!this.#o&&this.#e.fheArtifactStorage){let e=Object.assign({},u[n],this.#e.transports[n]);this.#o=new r({storage:this.#e.fheArtifactStorage,chainId:n,relayerUrl:e.relayerUrl,ttl:this.#e.fheArtifactCacheTTL,logger:this.#e.logger})}if(this.#o){let e=!1;try{e=await this.#o.revalidateIfDue()}catch(e){this.#e.logger?.warn(`Artifact revalidation failed, proceeding with potentially stale cache`,{error:e instanceof Error?e.message:String(e)})}e&&(this.#e.logger?.info(`Cached FHE artifacts are stale — reinitializing`),this.#l())}return this.#n||=this.#d().catch(n=>{throw this.#n=null,n instanceof e?n:new t(`Failed to initialize FHE worker pool`,{cause:n})}),this.#n}async#d(){let e=new g(await this.#s());if(await e.initPool(),this.#i)throw e.terminate(),Error(`RelayerNode was terminated during initialization`);return this.#t=e,e}terminate(){this.#i=!0,this.#t&&=(this.#t.terminate(),null),this.#n=null,this.#r=null}[Symbol.dispose](){this.terminate()}async generateKeypair(){let e=await(await this.#c()).generateKeypair();return{publicKey:e.publicKey,privateKey:e.privateKey}}async createEIP712(e,t,n,r=7){let i=await(await this.#c()).createEIP712({publicKey:e,contractAddresses:t,startTimestamp:n,durationDays:r}),o={name:i.domain.name,version:i.domain.version,chainId:i.domain.chainId,verifyingContract:i.domain.verifyingContract};return{domain:o,types:{EIP712Domain:a(o),UserDecryptRequestVerification:i.types.UserDecryptRequestVerification},message:{publicKey:i.message.publicKey,contractAddresses:i.message.contractAddresses,startTimestamp:i.message.startTimestamp,durationDays:i.message.durationDays,extraData:i.message.extraData}}}async encrypt(e){return c(async()=>{let t=await(await this.#c()).encrypt(e);return{handles:t.handles,inputProof:t.inputProof}})}async userDecrypt(e){return c(async()=>(await(await this.#c()).userDecrypt(e)).clearValues)}async publicDecrypt(e){return c(async()=>{let t=await(await this.#c()).publicDecrypt(e);return{clearValues:t.clearValues,abiEncodedClearValues:t.abiEncodedClearValues,decryptionProof:t.decryptionProof}})}async createDelegatedUserDecryptEIP712(e,t,n,r,i=7){return(await this.#c()).createDelegatedUserDecryptEIP712({publicKey:e,contractAddresses:t,delegatorAddress:n,startTimestamp:r,durationDays:i})}async delegatedUserDecrypt(e){return c(async()=>(await(await this.#c()).delegatedUserDecrypt(e)).clearValues)}async requestZKProofVerification(e){return c(async()=>(await this.#c()).requestZKProofVerification(e))}async getPublicKey(){let e=await this.#c();return this.#o?this.#o.getPublicKey(async()=>(await e.getPublicKey()).result):(await e.getPublicKey()).result}async getPublicParams(e){let t=await this.#c();return this.#o?this.#o.getPublicParams(e,async()=>(await t.getPublicParams(e)).result):(await t.getPublicParams(e)).result}async getAclAddress(){let e=await this.#e.getChainId(),n=Object.assign({},u[e],this.#e.transports[e]);if(!n.aclContractAddress)throw new t(`No ACL address configured for chain ${e}`);return n.aclContractAddress}},v=class{#e=new m;run(e){return this.#e.run(new Map,e)}async get(e){return this.#e.getStore()?.get(e)??null}async set(e,t){this.#e.getStore()?.set(e,t)}async delete(e){this.#e.getStore()?.delete(e)}};const y=new v;export{v as AsyncLocalMapStorage,n as BaseWorkerClient,s as HardhatConfig,l as MainnetConfig,h as NodeWorkerClient,g as NodeWorkerPool,_ as RelayerNode,o as SepoliaConfig,y as asyncLocalStorage};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["#workers","#activeCount","#config","#poolSize","#initPromise","#doInitPool","#dispatch","#leastBusyIndex","#config","#getPoolConfig","#ensurePool","#ensureLock","#ensurePoolInner","#pool","#initPromise","#artifactCache","#terminated","#resolvedChainId","#tearDown","#initPool","#als"],"sources":["../../../src/worker/worker.node-client.ts","../../../src/worker/worker.node-pool.ts","../../../src/relayer/relayer-node.ts","../../../src/storage/async-local-storage.ts"],"sourcesContent":["import { Worker } from \"node:worker_threads\";\nimport { randomUUID } from \"node:crypto\";\nimport type { FhevmInstanceConfig } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type {\n GenericLogger,\n WorkerRequest,\n WorkerRequestType,\n WorkerResponse,\n} from \"./worker.types\";\nimport { BaseWorkerClient } from \"./worker.base-client\";\n\nexport interface NodeWorkerClientConfig {\n fhevmConfig: FhevmInstanceConfig;\n /** Optional logger for tracing worker request lifecycle. */\n logger?: GenericLogger;\n}\n\n/**\n * Client for communicating with the RelayerSDK Node.js worker thread.\n * Provides a promise-based API for FHE operations using node:worker_threads.\n */\nexport class NodeWorkerClient extends BaseWorkerClient<Worker, NodeWorkerClientConfig> {\n constructor(config: NodeWorkerClientConfig) {\n super(config, config.logger);\n }\n\n protected createWorker(): Worker {\n return new Worker(new URL(\"relayer-sdk.node-worker.js\", import.meta.url));\n }\n\n protected wireEvents(worker: Worker): void {\n worker.on(\"message\", (response: WorkerResponse<unknown>) => this.handleResponse(response));\n worker.on(\"error\", (error: Error) => this.handleWorkerError(error.message));\n worker.on(\"messageerror\", () => this.handleWorkerMessageError());\n }\n\n protected postMessage(worker: Worker, request: WorkerRequest): void {\n worker.postMessage(request);\n }\n\n protected terminateWorker(worker: Worker): void {\n void worker.terminate();\n }\n\n protected generateRequestId(): string {\n return randomUUID();\n }\n\n protected getInitPayload(): {\n type: WorkerRequestType;\n payload: WorkerRequest[\"payload\"];\n } {\n return {\n type: \"NODE_INIT\",\n payload: { fhevmConfig: this.config.fhevmConfig },\n };\n }\n\n protected override onWorkerReady(worker: Worker): void {\n worker.unref();\n }\n}\n","import { availableParallelism } from \"node:os\";\nimport { NodeWorkerClient } from \"./worker.node-client\";\nimport type { NodeWorkerClientConfig } from \"./worker.node-client\";\nimport type { Handle } from \"../relayer/relayer-sdk.types\";\nimport type { ZKProofLike } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type {\n CreateDelegatedEIP712Payload,\n CreateDelegatedEIP712ResponseData,\n CreateEIP712Payload,\n CreateEIP712ResponseData,\n DelegatedUserDecryptPayload,\n DelegatedUserDecryptResponseData,\n EncryptPayload,\n EncryptResponseData,\n GenerateKeypairResponseData,\n GetPublicKeyResponseData,\n GetPublicParamsResponseData,\n PublicDecryptResponseData,\n RequestZKProofVerificationResponseData,\n UserDecryptPayload,\n UserDecryptResponseData,\n} from \"./worker.types\";\n\nexport interface NodeWorkerPoolConfig extends NodeWorkerClientConfig {\n poolSize?: number;\n}\n\nconst MAX_DEFAULT_POOL_SIZE = 4;\n\n/**\n * Pool of Node.js worker threads for parallel FHE operations.\n *\n * **Default pool size:** `min(os.availableParallelism(), 4)`. Each worker loads\n * the full WASM module (~50–100 MB), so size the pool based on available memory.\n *\n * **Scheduling:** Least-connections — each request is dispatched to the worker\n * with the fewest in-flight operations.\n *\n * **When to override pool size:**\n * - High-throughput batch processing (e.g. bulk encryptions): increase to match CPU cores.\n * - Memory-constrained environments: decrease to 1–2 workers.\n *\n * **Lifecycle:**\n * 1. Construct with config: `new NodeWorkerPool({ fhevmConfig })`\n * 2. Initialize all workers: `await pool.initPool()`\n * 3. Use: `await pool.encrypt(...)`, `await pool.userDecrypt(...)`, etc.\n * 4. Shut down: `pool.terminate()`\n *\n * `initPool()` is idempotent — concurrent calls share the same initialization promise.\n * If any worker fails to initialize, all workers are terminated and the error is propagated.\n */\nexport class NodeWorkerPool {\n readonly #workers: NodeWorkerClient[] = [];\n readonly #activeCount: number[] = [];\n readonly #config: NodeWorkerPoolConfig;\n readonly #poolSize: number;\n #initPromise: Promise<void> | null = null;\n\n /**\n * @param config - Pool configuration. Set `poolSize` to override the default\n * (`min(os.availableParallelism(), 4)`).\n */\n constructor(config: NodeWorkerPoolConfig) {\n this.#config = config;\n this.#poolSize = config.poolSize ?? Math.min(availableParallelism(), MAX_DEFAULT_POOL_SIZE);\n }\n\n get poolSize(): number {\n return this.#poolSize;\n }\n\n async initPool(): Promise<void> {\n if (this.#workers.length > 0) {\n return;\n }\n if (!this.#initPromise) {\n this.#initPromise = this.#doInitPool().finally(() => {\n this.#initPromise = null;\n });\n }\n return this.#initPromise;\n }\n\n async #doInitPool(): Promise<void> {\n for (let i = 0; i < this.#poolSize; i++) {\n this.#workers.push(new NodeWorkerClient(this.#config));\n this.#activeCount.push(0);\n }\n try {\n await Promise.all(this.#workers.map((w) => w.initWorker()));\n } catch (error) {\n // Terminate any workers that did initialize and reset state\n for (const worker of this.#workers) {\n worker.terminate();\n }\n this.#workers.length = 0;\n this.#activeCount.length = 0;\n throw error;\n }\n }\n\n terminate(): void {\n for (const worker of this.#workers) {\n worker.terminate();\n }\n this.#workers.length = 0;\n this.#activeCount.length = 0;\n }\n\n /**\n * Pick the worker with the fewest in-flight requests (least-connections).\n * Returns the index so #dispatch can track the active count.\n */\n #leastBusyIndex(): number {\n let minIndex = 0;\n let minCount = this.#activeCount[0]!;\n for (let i = 1; i < this.#activeCount.length; i++) {\n if (this.#activeCount[i]! < minCount) {\n minCount = this.#activeCount[i]!;\n minIndex = i;\n }\n }\n return minIndex;\n }\n\n async #dispatch<T>(fn: (worker: NodeWorkerClient) => Promise<T>): Promise<T> {\n if (this.#workers.length === 0) {\n throw new Error(\"NodeWorkerPool not initialized. Call initPool() first.\");\n }\n const index = this.#leastBusyIndex();\n this.#activeCount[index]!++;\n try {\n return await fn(this.#workers[index]!);\n } finally {\n this.#activeCount[index]!--;\n }\n }\n\n async generateKeypair(): Promise<GenerateKeypairResponseData> {\n return this.#dispatch((w) => w.generateKeypair());\n }\n\n async createEIP712(params: CreateEIP712Payload): Promise<CreateEIP712ResponseData> {\n return this.#dispatch((w) => w.createEIP712(params));\n }\n\n async encrypt(params: EncryptPayload): Promise<EncryptResponseData> {\n return this.#dispatch((w) => w.encrypt(params));\n }\n\n async userDecrypt(params: UserDecryptPayload): Promise<UserDecryptResponseData> {\n return this.#dispatch((w) => w.userDecrypt(params));\n }\n\n async publicDecrypt(handles: Handle[]): Promise<PublicDecryptResponseData> {\n return this.#dispatch((w) => w.publicDecrypt(handles));\n }\n\n async createDelegatedUserDecryptEIP712(\n params: CreateDelegatedEIP712Payload,\n ): Promise<CreateDelegatedEIP712ResponseData> {\n return this.#dispatch((w) => w.createDelegatedUserDecryptEIP712(params));\n }\n\n async delegatedUserDecrypt(\n params: DelegatedUserDecryptPayload,\n ): Promise<DelegatedUserDecryptResponseData> {\n return this.#dispatch((w) => w.delegatedUserDecrypt(params));\n }\n\n async requestZKProofVerification(\n zkProof: ZKProofLike,\n ): Promise<RequestZKProofVerificationResponseData> {\n return this.#dispatch((w) => w.requestZKProofVerification(zkProof));\n }\n\n async getPublicKey(): Promise<GetPublicKeyResponseData> {\n return this.#dispatch((w) => w.getPublicKey());\n }\n\n async getPublicParams(bits: number): Promise<GetPublicParamsResponseData> {\n return this.#dispatch((w) => w.getPublicParams(bits));\n }\n}\n","import type {\n FhevmInstanceConfig,\n InputProofBytesType,\n KeypairType,\n KmsDelegatedUserDecryptEIP712Type,\n ZKProofLike,\n} from \"@zama-fhe/relayer-sdk/node\";\nimport type { Address, Hex } from \"viem\";\nimport { ConfigurationError, ZamaError } from \"../errors\";\nimport { MemoryStorage } from \"../storage/memory-storage\";\nimport type { GenericStorage } from \"../types\";\nimport { NodeWorkerPool, type NodeWorkerPoolConfig } from \"../worker/worker.node-pool\";\nimport type { GenericLogger } from \"../worker/worker.types\";\nimport { FheArtifactCache } from \"./fhe-artifact-cache\";\nimport type { RelayerSDK } from \"./relayer-sdk\";\nimport type {\n ClearValueType,\n DelegatedUserDecryptParams,\n EIP712TypedData,\n EncryptParams,\n EncryptResult,\n Handle,\n PublicDecryptResult,\n UserDecryptParams,\n} from \"./relayer-sdk.types\";\nimport { buildEIP712DomainType, DefaultConfigs, withRetry } from \"./relayer-utils\";\n\nexport interface RelayerNodeConfig {\n transports: Record<number, Partial<FhevmInstanceConfig>>;\n /** Resolve the current chain ID. Called lazily before each operation; the pool is re-initialized when the value changes. */\n getChainId: () => Promise<number>;\n poolSize?: number;\n /** Optional logger for observing worker lifecycle and request timing. */\n logger?: GenericLogger;\n /**\n * Persistent storage for caching FHE public key and params across sessions.\n * Defaults to `new MemoryStorage()` (in-process, lost on restart).\n * Pass a custom `GenericStorage` with redis for cross-restart persistence.\n */\n fheArtifactStorage?: GenericStorage;\n /** Cache TTL in seconds for FHE public material. Default: 86 400 (24 h). Set to 0 to revalidate on every operation. */\n fheArtifactCacheTTL?: number;\n}\n\n/**\n * RelayerNode — Node.js encryption/decryption layer using a worker thread pool.\n * Offloads CPU-intensive WASM/FHE operations to `node:worker_threads`.\n *\n * Uses the same promise lock pattern as {@link RelayerWeb}:\n * `#ensureLock` serializes concurrent callers, `#initPromise` caches the\n * resolved pool, and chain switches tear down the old pool within the lock.\n * See the RelayerWeb class doc for a detailed explanation.\n */\nexport class RelayerNode implements RelayerSDK {\n readonly #config: RelayerNodeConfig;\n #pool: NodeWorkerPool | null = null;\n #initPromise: Promise<NodeWorkerPool> | null = null;\n #ensureLock: Promise<NodeWorkerPool> | null = null;\n #terminated = false;\n #resolvedChainId: number | null = null;\n #artifactCache: FheArtifactCache | null = null;\n\n constructor(config: RelayerNodeConfig) {\n this.#config = { fheArtifactStorage: new MemoryStorage(), ...config };\n }\n\n async #getPoolConfig(): Promise<NodeWorkerPoolConfig> {\n const chainId = await this.#config.getChainId();\n const { transports, poolSize } = this.#config;\n\n return {\n fhevmConfig: Object.assign({}, DefaultConfigs[chainId], transports[chainId]),\n poolSize,\n logger: this.#config.logger,\n };\n }\n\n async #ensurePool(): Promise<NodeWorkerPool> {\n if (this.#ensureLock) {\n return this.#ensureLock;\n }\n this.#ensureLock = this.#ensurePoolInner();\n try {\n return await this.#ensureLock;\n } finally {\n this.#ensureLock = null;\n }\n }\n\n #tearDown(): void {\n this.#pool?.terminate();\n this.#pool = null;\n this.#initPromise = null;\n this.#artifactCache = null;\n }\n\n async #ensurePoolInner(): Promise<NodeWorkerPool> {\n if (this.#terminated) {\n throw new ConfigurationError(\"RelayerNode has been terminated\");\n }\n\n const chainId = await this.#config.getChainId();\n\n // Chain changed → tear down old pool, re-init\n if (this.#resolvedChainId !== null && chainId !== this.#resolvedChainId) {\n this.#tearDown();\n }\n\n this.#resolvedChainId = chainId;\n\n // Create cache for current chain (when storage is provided)\n if (!this.#artifactCache && this.#config.fheArtifactStorage) {\n const config = Object.assign({}, DefaultConfigs[chainId], this.#config.transports[chainId]);\n this.#artifactCache = new FheArtifactCache({\n storage: this.#config.fheArtifactStorage,\n chainId,\n relayerUrl: config.relayerUrl,\n ttl: this.#config.fheArtifactCacheTTL,\n logger: this.#config.logger,\n });\n }\n\n // Revalidate cached artifacts if due — never let revalidation block init\n if (this.#artifactCache) {\n let stale = false;\n try {\n stale = await this.#artifactCache.revalidateIfDue();\n } catch (err) {\n this.#config.logger?.warn(\n \"Artifact revalidation failed, proceeding with potentially stale cache\",\n { error: err instanceof Error ? err.message : String(err) },\n );\n }\n if (stale) {\n this.#config.logger?.info(\"Cached FHE artifacts are stale — reinitializing\");\n this.#tearDown();\n }\n }\n\n if (!this.#initPromise) {\n this.#initPromise = this.#initPool().catch((error) => {\n this.#initPromise = null;\n throw error instanceof ZamaError\n ? error\n : new ConfigurationError(\"Failed to initialize FHE worker pool\", {\n cause: error,\n });\n });\n }\n return this.#initPromise;\n }\n\n async #initPool(): Promise<NodeWorkerPool> {\n const poolConfig = await this.#getPoolConfig();\n const pool = new NodeWorkerPool(poolConfig);\n await pool.initPool();\n if (this.#terminated) {\n pool.terminate();\n throw new Error(\"RelayerNode was terminated during initialization\");\n }\n this.#pool = pool;\n return pool;\n }\n\n terminate(): void {\n this.#terminated = true;\n if (this.#pool) {\n this.#pool.terminate();\n this.#pool = null;\n }\n this.#initPromise = null;\n this.#ensureLock = null;\n }\n\n async generateKeypair(): Promise<KeypairType<Hex>> {\n const pool = await this.#ensurePool();\n const result = await pool.generateKeypair();\n return {\n publicKey: result.publicKey,\n privateKey: result.privateKey,\n };\n }\n\n async createEIP712(\n publicKey: Hex,\n contractAddresses: Address[],\n startTimestamp: number,\n durationDays = 7,\n ): Promise<EIP712TypedData> {\n const pool = await this.#ensurePool();\n const result = await pool.createEIP712({\n publicKey,\n contractAddresses,\n startTimestamp,\n durationDays,\n });\n\n const domain = {\n name: result.domain.name,\n version: result.domain.version,\n chainId: result.domain.chainId,\n verifyingContract: result.domain.verifyingContract,\n };\n\n return {\n domain,\n types: {\n EIP712Domain: buildEIP712DomainType(domain),\n UserDecryptRequestVerification: result.types.UserDecryptRequestVerification,\n },\n message: {\n publicKey: result.message.publicKey,\n contractAddresses: result.message.contractAddresses,\n startTimestamp: result.message.startTimestamp,\n durationDays: result.message.durationDays,\n extraData: result.message.extraData,\n },\n };\n }\n\n async encrypt(params: EncryptParams): Promise<EncryptResult> {\n return withRetry(async () => {\n const pool = await this.#ensurePool();\n const result = await pool.encrypt(params);\n return { handles: result.handles, inputProof: result.inputProof };\n });\n }\n\n async userDecrypt(params: UserDecryptParams): Promise<Readonly<Record<Handle, ClearValueType>>> {\n return withRetry(async () => {\n const pool = await this.#ensurePool();\n const result = await pool.userDecrypt(params);\n return result.clearValues;\n });\n }\n\n async publicDecrypt(handles: Handle[]): Promise<PublicDecryptResult> {\n return withRetry(async () => {\n const pool = await this.#ensurePool();\n const result = await pool.publicDecrypt(handles);\n return {\n clearValues: result.clearValues,\n abiEncodedClearValues: result.abiEncodedClearValues,\n decryptionProof: result.decryptionProof,\n };\n });\n }\n\n async createDelegatedUserDecryptEIP712(\n publicKey: Hex,\n contractAddresses: Address[],\n delegatorAddress: Address,\n startTimestamp: number,\n durationDays = 7,\n ): Promise<KmsDelegatedUserDecryptEIP712Type> {\n const pool = await this.#ensurePool();\n return pool.createDelegatedUserDecryptEIP712({\n publicKey,\n contractAddresses,\n delegatorAddress,\n startTimestamp,\n durationDays,\n });\n }\n\n async delegatedUserDecrypt(\n params: DelegatedUserDecryptParams,\n ): Promise<Readonly<Record<Handle, ClearValueType>>> {\n return withRetry(async () => {\n const pool = await this.#ensurePool();\n const result = await pool.delegatedUserDecrypt(params);\n return result.clearValues;\n });\n }\n\n async requestZKProofVerification(zkProof: ZKProofLike): Promise<InputProofBytesType> {\n return withRetry(async () => {\n const pool = await this.#ensurePool();\n return pool.requestZKProofVerification(zkProof);\n });\n }\n\n async getPublicKey(): Promise<{\n publicKeyId: string;\n publicKey: Uint8Array;\n } | null> {\n const pool = await this.#ensurePool();\n if (this.#artifactCache) {\n return this.#artifactCache.getPublicKey(async () => (await pool.getPublicKey()).result);\n }\n return (await pool.getPublicKey()).result;\n }\n\n async getPublicParams(\n bits: number,\n ): Promise<{ publicParams: Uint8Array; publicParamsId: string } | null> {\n const pool = await this.#ensurePool();\n if (this.#artifactCache) {\n return this.#artifactCache.getPublicParams(\n bits,\n async () => (await pool.getPublicParams(bits)).result,\n );\n }\n return (await pool.getPublicParams(bits)).result;\n }\n\n async getAclAddress(): Promise<Address> {\n const chainId = await this.#config.getChainId();\n const config = Object.assign({}, DefaultConfigs[chainId], this.#config.transports[chainId]);\n if (!config.aclContractAddress) {\n throw new ConfigurationError(`No ACL address configured for chain ${chainId}`);\n }\n return config.aclContractAddress as Address;\n }\n}\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { GenericStorage } from \"../types\";\n\n/**\n * {@link GenericStorage} backed by Node.js {@link AsyncLocalStorage}.\n *\n * Each async context (e.g. HTTP request) gets its own isolated `Map`,\n * so credentials from one request never leak into another.\n *\n * Call {@link run} to establish a context before using the SDK:\n *\n * ```ts\n * import { asyncLocalStorage } from \"@zama-fhe/sdk/node\";\n *\n * app.post(\"/api/transfer\", (req, res) => {\n * asyncLocalStorage.run(async () => {\n * const sdk = new ZamaSDK({ relayer, signer, storage: asyncLocalStorage });\n * // credentials are scoped to this request\n * });\n * });\n * ```\n */\nexport class AsyncLocalMapStorage implements GenericStorage {\n readonly #als = new AsyncLocalStorage<Map<string, unknown>>();\n\n /** Execute `fn` within an isolated storage context. */\n run<R>(fn: () => R | Promise<R>): R | Promise<R> {\n return this.#als.run(new Map(), fn);\n }\n\n async get<T = unknown>(key: string): Promise<T | null> {\n return (this.#als.getStore()?.get(key) as T) ?? null;\n }\n\n async set<T = unknown>(key: string, value: T): Promise<void> {\n this.#als.getStore()?.set(key, value);\n }\n\n async delete(key: string): Promise<void> {\n this.#als.getStore()?.delete(key);\n }\n}\n\n/** Default singleton for application-wide use. */\nexport const asyncLocalStorage = new AsyncLocalMapStorage();\n"],"mappings":"gaAqBA,IAAa,EAAb,cAAsC,CAAiD,CACrF,YAAY,EAAgC,CAC1C,MAAM,EAAQ,EAAO,OAAO,CAG9B,cAAiC,CAC/B,OAAO,IAAI,EAAO,IAAI,IAAI,6BAA8B,OAAO,KAAK,IAAI,CAAC,CAG3E,WAAqB,EAAsB,CACzC,EAAO,GAAG,UAAY,GAAsC,KAAK,eAAe,EAAS,CAAC,CAC1F,EAAO,GAAG,QAAU,GAAiB,KAAK,kBAAkB,EAAM,QAAQ,CAAC,CAC3E,EAAO,GAAG,mBAAsB,KAAK,0BAA0B,CAAC,CAGlE,YAAsB,EAAgB,EAA8B,CAClE,EAAO,YAAY,EAAQ,CAG7B,gBAA0B,EAAsB,CACzC,EAAO,WAAW,CAGzB,mBAAsC,CACpC,OAAO,GAAY,CAGrB,gBAGE,CACA,MAAO,CACL,KAAM,YACN,QAAS,CAAE,YAAa,KAAK,OAAO,YAAa,CAClD,CAGH,cAAiC,EAAsB,CACrD,EAAO,OAAO,GCRL,EAAb,KAA4B,CAC1B,GAAwC,EAAE,CAC1C,GAAkC,EAAE,CACpC,GACA,GACA,GAAqC,KAMrC,YAAY,EAA8B,CACxC,MAAA,EAAe,EACf,MAAA,EAAiB,EAAO,UAAY,KAAK,IAAI,GAAsB,CAAE,EAAsB,CAG7F,IAAI,UAAmB,CACrB,OAAO,MAAA,EAGT,MAAM,UAA0B,CAC1B,WAAA,EAAc,OAAS,GAQ3B,MALA,CACE,MAAA,IAAoB,MAAA,GAAkB,CAAC,YAAc,CACnD,MAAA,EAAoB,MACpB,CAEG,MAAA,EAGT,MAAA,GAAmC,CACjC,IAAK,IAAI,EAAI,EAAG,EAAI,MAAA,EAAgB,IAClC,MAAA,EAAc,KAAK,IAAI,EAAiB,MAAA,EAAa,CAAC,CACtD,MAAA,EAAkB,KAAK,EAAE,CAE3B,GAAI,CACF,MAAM,QAAQ,IAAI,MAAA,EAAc,IAAK,GAAM,EAAE,YAAY,CAAC,CAAC,OACpD,EAAO,CAEd,IAAK,IAAM,KAAU,MAAA,EACnB,EAAO,WAAW,CAIpB,KAFA,OAAA,EAAc,OAAS,EACvB,MAAA,EAAkB,OAAS,EACrB,GAIV,WAAkB,CAChB,IAAK,IAAM,KAAU,MAAA,EACnB,EAAO,WAAW,CAEpB,MAAA,EAAc,OAAS,EACvB,MAAA,EAAkB,OAAS,EAO7B,IAA0B,CACxB,IAAI,EAAW,EACX,EAAW,MAAA,EAAkB,GACjC,IAAK,IAAI,EAAI,EAAG,EAAI,MAAA,EAAkB,OAAQ,IACxC,MAAA,EAAkB,GAAM,IAC1B,EAAW,MAAA,EAAkB,GAC7B,EAAW,GAGf,OAAO,EAGT,MAAA,EAAmB,EAA0D,CAC3E,GAAI,MAAA,EAAc,SAAW,EAC3B,MAAU,MAAM,yDAAyD,CAE3E,IAAM,EAAQ,MAAA,GAAsB,CACpC,MAAA,EAAkB,KAClB,GAAI,CACF,OAAO,MAAM,EAAG,MAAA,EAAc,GAAQ,QAC9B,CACR,MAAA,EAAkB,MAItB,MAAM,iBAAwD,CAC5D,OAAO,MAAA,EAAgB,GAAM,EAAE,iBAAiB,CAAC,CAGnD,MAAM,aAAa,EAAgE,CACjF,OAAO,MAAA,EAAgB,GAAM,EAAE,aAAa,EAAO,CAAC,CAGtD,MAAM,QAAQ,EAAsD,CAClE,OAAO,MAAA,EAAgB,GAAM,EAAE,QAAQ,EAAO,CAAC,CAGjD,MAAM,YAAY,EAA8D,CAC9E,OAAO,MAAA,EAAgB,GAAM,EAAE,YAAY,EAAO,CAAC,CAGrD,MAAM,cAAc,EAAuD,CACzE,OAAO,MAAA,EAAgB,GAAM,EAAE,cAAc,EAAQ,CAAC,CAGxD,MAAM,iCACJ,EAC4C,CAC5C,OAAO,MAAA,EAAgB,GAAM,EAAE,iCAAiC,EAAO,CAAC,CAG1E,MAAM,qBACJ,EAC2C,CAC3C,OAAO,MAAA,EAAgB,GAAM,EAAE,qBAAqB,EAAO,CAAC,CAG9D,MAAM,2BACJ,EACiD,CACjD,OAAO,MAAA,EAAgB,GAAM,EAAE,2BAA2B,EAAQ,CAAC,CAGrE,MAAM,cAAkD,CACtD,OAAO,MAAA,EAAgB,GAAM,EAAE,cAAc,CAAC,CAGhD,MAAM,gBAAgB,EAAoD,CACxE,OAAO,MAAA,EAAgB,GAAM,EAAE,gBAAgB,EAAK,CAAC,GChI5C,EAAb,KAA+C,CAC7C,GACA,GAA+B,KAC/B,GAA+C,KAC/C,GAA8C,KAC9C,GAAc,GACd,GAAkC,KAClC,GAA0C,KAE1C,YAAY,EAA2B,CACrC,MAAA,EAAe,CAAE,mBAAoB,IAAI,EAAiB,GAAG,EAAQ,CAGvE,MAAA,GAAsD,CACpD,IAAM,EAAU,MAAM,MAAA,EAAa,YAAY,CACzC,CAAE,aAAY,YAAa,MAAA,EAEjC,MAAO,CACL,YAAa,OAAO,OAAO,EAAE,CAAE,EAAe,GAAU,EAAW,GAAS,CAC5E,WACA,OAAQ,MAAA,EAAa,OACtB,CAGH,MAAA,GAA6C,CAC3C,GAAI,MAAA,EACF,OAAO,MAAA,EAET,MAAA,EAAmB,MAAA,GAAuB,CAC1C,GAAI,CACF,OAAO,MAAM,MAAA,SACL,CACR,MAAA,EAAmB,MAIvB,IAAkB,CAChB,MAAA,GAAY,WAAW,CACvB,MAAA,EAAa,KACb,MAAA,EAAoB,KACpB,MAAA,EAAsB,KAGxB,MAAA,GAAkD,CAChD,GAAI,MAAA,EACF,MAAM,IAAI,EAAmB,kCAAkC,CAGjE,IAAM,EAAU,MAAM,MAAA,EAAa,YAAY,CAU/C,GAPI,MAAA,IAA0B,MAAQ,IAAY,MAAA,GAChD,MAAA,GAAgB,CAGlB,MAAA,EAAwB,EAGpB,CAAC,MAAA,GAAuB,MAAA,EAAa,mBAAoB,CAC3D,IAAM,EAAS,OAAO,OAAO,EAAE,CAAE,EAAe,GAAU,MAAA,EAAa,WAAW,GAAS,CAC3F,MAAA,EAAsB,IAAI,EAAiB,CACzC,QAAS,MAAA,EAAa,mBACtB,UACA,WAAY,EAAO,WACnB,IAAK,MAAA,EAAa,oBAClB,OAAQ,MAAA,EAAa,OACtB,CAAC,CAIJ,GAAI,MAAA,EAAqB,CACvB,IAAI,EAAQ,GACZ,GAAI,CACF,EAAQ,MAAM,MAAA,EAAoB,iBAAiB,OAC5C,EAAK,CACZ,MAAA,EAAa,QAAQ,KACnB,wEACA,CAAE,MAAO,aAAe,MAAQ,EAAI,QAAU,OAAO,EAAI,CAAE,CAC5D,CAEC,IACF,MAAA,EAAa,QAAQ,KAAK,kDAAkD,CAC5E,MAAA,GAAgB,EAcpB,MAVA,CACE,MAAA,IAAoB,MAAA,GAAgB,CAAC,MAAO,GAAU,CAEpD,KADA,OAAA,EAAoB,KACd,aAAiB,EACnB,EACA,IAAI,EAAmB,uCAAwC,CAC7D,MAAO,EACR,CAAC,EACN,CAEG,MAAA,EAGT,MAAA,GAA2C,CAEzC,IAAM,EAAO,IAAI,EADE,MAAM,MAAA,GAAqB,CACH,CAE3C,GADA,MAAM,EAAK,UAAU,CACjB,MAAA,EAEF,MADA,EAAK,WAAW,CACN,MAAM,mDAAmD,CAGrE,MADA,OAAA,EAAa,EACN,EAGT,WAAkB,CAChB,MAAA,EAAmB,GACnB,AAEE,MAAA,KADA,MAAA,EAAW,WAAW,CACT,MAEf,MAAA,EAAoB,KACpB,MAAA,EAAmB,KAGrB,MAAM,iBAA6C,CAEjD,IAAM,EAAS,MADF,MAAM,MAAA,GAAkB,EACX,iBAAiB,CAC3C,MAAO,CACL,UAAW,EAAO,UAClB,WAAY,EAAO,WACpB,CAGH,MAAM,aACJ,EACA,EACA,EACA,EAAe,EACW,CAE1B,IAAM,EAAS,MADF,MAAM,MAAA,GAAkB,EACX,aAAa,CACrC,YACA,oBACA,iBACA,eACD,CAAC,CAEI,EAAS,CACb,KAAM,EAAO,OAAO,KACpB,QAAS,EAAO,OAAO,QACvB,QAAS,EAAO,OAAO,QACvB,kBAAmB,EAAO,OAAO,kBAClC,CAED,MAAO,CACL,SACA,MAAO,CACL,aAAc,EAAsB,EAAO,CAC3C,+BAAgC,EAAO,MAAM,+BAC9C,CACD,QAAS,CACP,UAAW,EAAO,QAAQ,UAC1B,kBAAmB,EAAO,QAAQ,kBAClC,eAAgB,EAAO,QAAQ,eAC/B,aAAc,EAAO,QAAQ,aAC7B,UAAW,EAAO,QAAQ,UAC3B,CACF,CAGH,MAAM,QAAQ,EAA+C,CAC3D,OAAO,EAAU,SAAY,CAE3B,IAAM,EAAS,MADF,MAAM,MAAA,GAAkB,EACX,QAAQ,EAAO,CACzC,MAAO,CAAE,QAAS,EAAO,QAAS,WAAY,EAAO,WAAY,EACjE,CAGJ,MAAM,YAAY,EAA8E,CAC9F,OAAO,EAAU,UAEA,MADF,MAAM,MAAA,GAAkB,EACX,YAAY,EAAO,EAC/B,YACd,CAGJ,MAAM,cAAc,EAAiD,CACnE,OAAO,EAAU,SAAY,CAE3B,IAAM,EAAS,MADF,MAAM,MAAA,GAAkB,EACX,cAAc,EAAQ,CAChD,MAAO,CACL,YAAa,EAAO,YACpB,sBAAuB,EAAO,sBAC9B,gBAAiB,EAAO,gBACzB,EACD,CAGJ,MAAM,iCACJ,EACA,EACA,EACA,EACA,EAAe,EAC6B,CAE5C,OADa,MAAM,MAAA,GAAkB,EACzB,iCAAiC,CAC3C,YACA,oBACA,mBACA,iBACA,eACD,CAAC,CAGJ,MAAM,qBACJ,EACmD,CACnD,OAAO,EAAU,UAEA,MADF,MAAM,MAAA,GAAkB,EACX,qBAAqB,EAAO,EACxC,YACd,CAGJ,MAAM,2BAA2B,EAAoD,CACnF,OAAO,EAAU,UACF,MAAM,MAAA,GAAkB,EACzB,2BAA2B,EAAQ,CAC/C,CAGJ,MAAM,cAGI,CACR,IAAM,EAAO,MAAM,MAAA,GAAkB,CAIrC,OAHI,MAAA,EACK,MAAA,EAAoB,aAAa,UAAa,MAAM,EAAK,cAAc,EAAE,OAAO,EAEjF,MAAM,EAAK,cAAc,EAAE,OAGrC,MAAM,gBACJ,EACsE,CACtE,IAAM,EAAO,MAAM,MAAA,GAAkB,CAOrC,OANI,MAAA,EACK,MAAA,EAAoB,gBACzB,EACA,UAAa,MAAM,EAAK,gBAAgB,EAAK,EAAE,OAChD,EAEK,MAAM,EAAK,gBAAgB,EAAK,EAAE,OAG5C,MAAM,eAAkC,CACtC,IAAM,EAAU,MAAM,MAAA,EAAa,YAAY,CACzC,EAAS,OAAO,OAAO,EAAE,CAAE,EAAe,GAAU,MAAA,EAAa,WAAW,GAAS,CAC3F,GAAI,CAAC,EAAO,mBACV,MAAM,IAAI,EAAmB,uCAAuC,IAAU,CAEhF,OAAO,EAAO,qBClSL,EAAb,KAA4D,CAC1D,GAAgB,IAAI,EAGpB,IAAO,EAA0C,CAC/C,OAAO,MAAA,EAAU,IAAI,IAAI,IAAO,EAAG,CAGrC,MAAM,IAAiB,EAAgC,CACrD,OAAQ,MAAA,EAAU,UAAU,EAAE,IAAI,EAAI,EAAU,KAGlD,MAAM,IAAiB,EAAa,EAAyB,CAC3D,MAAA,EAAU,UAAU,EAAE,IAAI,EAAK,EAAM,CAGvC,MAAM,OAAO,EAA4B,CACvC,MAAA,EAAU,UAAU,EAAE,OAAO,EAAI,GAKrC,MAAa,EAAoB,IAAI"}
1
+ {"version":3,"file":"index.js","names":["#workers","#activeCount","#config","#poolSize","#initPromise","#doInitPool","#dispatch","#leastBusyIndex","#config","#getPoolConfig","#ensurePool","#ensureLock","#ensurePoolInner","#pool","#initPromise","#artifactCache","#terminated","#resolvedChainId","#tearDown","#initPool","#als"],"sources":["../../../src/worker/worker.node-client.ts","../../../src/worker/worker.node-pool.ts","../../../src/relayer/relayer-node.ts","../../../src/storage/async-local-storage.ts"],"sourcesContent":["import { Worker } from \"node:worker_threads\";\nimport { randomUUID } from \"node:crypto\";\nimport type { FhevmInstanceConfig } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type {\n GenericLogger,\n WorkerRequest,\n WorkerRequestType,\n WorkerResponse,\n} from \"./worker.types\";\nimport { BaseWorkerClient } from \"./worker.base-client\";\n\nexport interface NodeWorkerClientConfig {\n fhevmConfig: FhevmInstanceConfig;\n /** Optional logger for tracing worker request lifecycle. */\n logger?: GenericLogger;\n}\n\n/**\n * Client for communicating with the RelayerSDK Node.js worker thread.\n * Provides a promise-based API for FHE operations using node:worker_threads.\n */\nexport class NodeWorkerClient extends BaseWorkerClient<Worker, NodeWorkerClientConfig> {\n constructor(config: NodeWorkerClientConfig) {\n super(config, config.logger);\n }\n\n protected createWorker(): Worker {\n return new Worker(new URL(\"relayer-sdk.node-worker.js\", import.meta.url));\n }\n\n protected wireEvents(worker: Worker): void {\n worker.on(\"message\", (response: WorkerResponse<unknown>) => this.handleResponse(response));\n worker.on(\"error\", (error: Error) => this.handleWorkerError(error.message));\n worker.on(\"messageerror\", () => this.handleWorkerMessageError());\n }\n\n protected postMessage(worker: Worker, request: WorkerRequest): void {\n worker.postMessage(request);\n }\n\n protected terminateWorker(worker: Worker): void {\n void worker.terminate();\n }\n\n protected generateRequestId(): string {\n return randomUUID();\n }\n\n protected getInitPayload(): {\n type: WorkerRequestType;\n payload: WorkerRequest[\"payload\"];\n } {\n return {\n type: \"NODE_INIT\",\n payload: { fhevmConfig: this.config.fhevmConfig },\n };\n }\n\n protected override onWorkerReady(worker: Worker): void {\n worker.unref();\n }\n}\n","import { availableParallelism } from \"node:os\";\nimport { NodeWorkerClient } from \"./worker.node-client\";\nimport type { NodeWorkerClientConfig } from \"./worker.node-client\";\nimport type { Handle } from \"../relayer/relayer-sdk.types\";\nimport type { ZKProofLike } from \"@zama-fhe/relayer-sdk/bundle\";\nimport type {\n CreateDelegatedEIP712Payload,\n CreateDelegatedEIP712ResponseData,\n CreateEIP712Payload,\n CreateEIP712ResponseData,\n DelegatedUserDecryptPayload,\n DelegatedUserDecryptResponseData,\n EncryptPayload,\n EncryptResponseData,\n GenerateKeypairResponseData,\n GetPublicKeyResponseData,\n GetPublicParamsResponseData,\n PublicDecryptResponseData,\n RequestZKProofVerificationResponseData,\n UserDecryptPayload,\n UserDecryptResponseData,\n} from \"./worker.types\";\n\nexport interface NodeWorkerPoolConfig extends NodeWorkerClientConfig {\n poolSize?: number;\n}\n\nconst MAX_DEFAULT_POOL_SIZE = 4;\n\n/**\n * Pool of Node.js worker threads for parallel FHE operations.\n *\n * **Default pool size:** `min(os.availableParallelism(), 4)`. Each worker loads\n * the full WASM module (~50–100 MB), so size the pool based on available memory.\n *\n * **Scheduling:** Least-connections — each request is dispatched to the worker\n * with the fewest in-flight operations.\n *\n * **When to override pool size:**\n * - High-throughput batch processing (e.g. bulk encryptions): increase to match CPU cores.\n * - Memory-constrained environments: decrease to 1–2 workers.\n *\n * **Lifecycle:**\n * 1. Construct with config: `new NodeWorkerPool({ fhevmConfig })`\n * 2. Initialize all workers: `await pool.initPool()`\n * 3. Use: `await pool.encrypt(...)`, `await pool.userDecrypt(...)`, etc.\n * 4. Shut down: `pool.terminate()`\n *\n * `initPool()` is idempotent — concurrent calls share the same initialization promise.\n * If any worker fails to initialize, all workers are terminated and the error is propagated.\n */\nexport class NodeWorkerPool {\n readonly #workers: NodeWorkerClient[] = [];\n readonly #activeCount: number[] = [];\n readonly #config: NodeWorkerPoolConfig;\n readonly #poolSize: number;\n #initPromise: Promise<void> | null = null;\n\n /**\n * @param config - Pool configuration. Set `poolSize` to override the default\n * (`min(os.availableParallelism(), 4)`).\n */\n constructor(config: NodeWorkerPoolConfig) {\n this.#config = config;\n this.#poolSize = config.poolSize ?? Math.min(availableParallelism(), MAX_DEFAULT_POOL_SIZE);\n }\n\n get poolSize(): number {\n return this.#poolSize;\n }\n\n async initPool(): Promise<void> {\n if (this.#workers.length > 0) {\n return;\n }\n if (!this.#initPromise) {\n this.#initPromise = this.#doInitPool().finally(() => {\n this.#initPromise = null;\n });\n }\n return this.#initPromise;\n }\n\n async #doInitPool(): Promise<void> {\n for (let i = 0; i < this.#poolSize; i++) {\n this.#workers.push(new NodeWorkerClient(this.#config));\n this.#activeCount.push(0);\n }\n try {\n await Promise.all(this.#workers.map((w) => w.initWorker()));\n } catch (error) {\n // Terminate any workers that did initialize and reset state\n for (const worker of this.#workers) {\n worker.terminate();\n }\n this.#workers.length = 0;\n this.#activeCount.length = 0;\n throw error;\n }\n }\n\n terminate(): void {\n for (const worker of this.#workers) {\n worker.terminate();\n }\n this.#workers.length = 0;\n this.#activeCount.length = 0;\n }\n\n /**\n * Pick the worker with the fewest in-flight requests (least-connections).\n * Returns the index so #dispatch can track the active count.\n */\n #leastBusyIndex(): number {\n let minIndex = 0;\n let minCount = this.#activeCount[0]!;\n for (let i = 1; i < this.#activeCount.length; i++) {\n if (this.#activeCount[i]! < minCount) {\n minCount = this.#activeCount[i]!;\n minIndex = i;\n }\n }\n return minIndex;\n }\n\n async #dispatch<T>(fn: (worker: NodeWorkerClient) => Promise<T>): Promise<T> {\n if (this.#workers.length === 0) {\n throw new Error(\"NodeWorkerPool not initialized. Call initPool() first.\");\n }\n const index = this.#leastBusyIndex();\n this.#activeCount[index]!++;\n try {\n return await fn(this.#workers[index]!);\n } finally {\n this.#activeCount[index]!--;\n }\n }\n\n async generateKeypair(): Promise<GenerateKeypairResponseData> {\n return this.#dispatch((w) => w.generateKeypair());\n }\n\n async createEIP712(params: CreateEIP712Payload): Promise<CreateEIP712ResponseData> {\n return this.#dispatch((w) => w.createEIP712(params));\n }\n\n async encrypt(params: EncryptPayload): Promise<EncryptResponseData> {\n return this.#dispatch((w) => w.encrypt(params));\n }\n\n async userDecrypt(params: UserDecryptPayload): Promise<UserDecryptResponseData> {\n return this.#dispatch((w) => w.userDecrypt(params));\n }\n\n async publicDecrypt(handles: Handle[]): Promise<PublicDecryptResponseData> {\n return this.#dispatch((w) => w.publicDecrypt(handles));\n }\n\n async createDelegatedUserDecryptEIP712(\n params: CreateDelegatedEIP712Payload,\n ): Promise<CreateDelegatedEIP712ResponseData> {\n return this.#dispatch((w) => w.createDelegatedUserDecryptEIP712(params));\n }\n\n async delegatedUserDecrypt(\n params: DelegatedUserDecryptPayload,\n ): Promise<DelegatedUserDecryptResponseData> {\n return this.#dispatch((w) => w.delegatedUserDecrypt(params));\n }\n\n async requestZKProofVerification(\n zkProof: ZKProofLike,\n ): Promise<RequestZKProofVerificationResponseData> {\n return this.#dispatch((w) => w.requestZKProofVerification(zkProof));\n }\n\n async getPublicKey(): Promise<GetPublicKeyResponseData> {\n return this.#dispatch((w) => w.getPublicKey());\n }\n\n async getPublicParams(bits: number): Promise<GetPublicParamsResponseData> {\n return this.#dispatch((w) => w.getPublicParams(bits));\n }\n}\n","import type {\n FhevmInstanceConfig,\n InputProofBytesType,\n KeypairType,\n KmsDelegatedUserDecryptEIP712Type,\n ZKProofLike,\n} from \"@zama-fhe/relayer-sdk/node\";\nimport type { Address, Hex } from \"viem\";\nimport { ConfigurationError, ZamaError } from \"../errors\";\nimport { MemoryStorage } from \"../storage/memory-storage\";\nimport type { GenericStorage } from \"../types\";\nimport { NodeWorkerPool, type NodeWorkerPoolConfig } from \"../worker/worker.node-pool\";\nimport type { GenericLogger } from \"../worker/worker.types\";\nimport { FheArtifactCache } from \"./fhe-artifact-cache\";\nimport type { RelayerSDK } from \"./relayer-sdk\";\nimport type {\n ClearValueType,\n DelegatedUserDecryptParams,\n EIP712TypedData,\n EncryptParams,\n EncryptResult,\n Handle,\n PublicDecryptResult,\n UserDecryptParams,\n} from \"./relayer-sdk.types\";\nimport { buildEIP712DomainType, DefaultConfigs, withRetry } from \"./relayer-utils\";\n\nexport interface RelayerNodeConfig {\n transports: Record<number, Partial<FhevmInstanceConfig>>;\n /** Resolve the current chain ID. Called lazily before each operation; the pool is re-initialized when the value changes. */\n getChainId: () => Promise<number>;\n poolSize?: number;\n /** Optional logger for observing worker lifecycle and request timing. */\n logger?: GenericLogger;\n /**\n * Persistent storage for caching FHE public key and params across sessions.\n * Defaults to `new MemoryStorage()` (in-process, lost on restart).\n * Pass a custom `GenericStorage` with redis for cross-restart persistence.\n */\n fheArtifactStorage?: GenericStorage;\n /** Cache TTL in seconds for FHE public material. Default: 86 400 (24 h). Set to 0 to revalidate on every operation. */\n fheArtifactCacheTTL?: number;\n}\n\n/**\n * RelayerNode — Node.js encryption/decryption layer using a worker thread pool.\n * Offloads CPU-intensive WASM/FHE operations to `node:worker_threads`.\n *\n * Uses the same promise lock pattern as {@link RelayerWeb}:\n * `#ensureLock` serializes concurrent callers, `#initPromise` caches the\n * resolved pool, and chain switches tear down the old pool within the lock.\n * See the RelayerWeb class doc for a detailed explanation.\n */\nexport class RelayerNode implements RelayerSDK, Disposable {\n readonly #config: RelayerNodeConfig;\n #pool: NodeWorkerPool | null = null;\n #initPromise: Promise<NodeWorkerPool> | null = null;\n #ensureLock: Promise<NodeWorkerPool> | null = null;\n #terminated = false;\n #resolvedChainId: number | null = null;\n #artifactCache: FheArtifactCache | null = null;\n\n constructor(config: RelayerNodeConfig) {\n this.#config = { fheArtifactStorage: new MemoryStorage(), ...config };\n }\n\n async #getPoolConfig(): Promise<NodeWorkerPoolConfig> {\n const chainId = await this.#config.getChainId();\n const { transports, poolSize } = this.#config;\n\n return {\n fhevmConfig: Object.assign({}, DefaultConfigs[chainId], transports[chainId]),\n poolSize,\n logger: this.#config.logger,\n };\n }\n\n async #ensurePool(): Promise<NodeWorkerPool> {\n if (this.#ensureLock) {\n return this.#ensureLock;\n }\n this.#ensureLock = this.#ensurePoolInner();\n try {\n return await this.#ensureLock;\n } finally {\n this.#ensureLock = null;\n }\n }\n\n #tearDown(): void {\n this.#pool?.terminate();\n this.#pool = null;\n this.#initPromise = null;\n this.#artifactCache = null;\n }\n\n async #ensurePoolInner(): Promise<NodeWorkerPool> {\n if (this.#terminated) {\n throw new ConfigurationError(\"RelayerNode has been terminated\");\n }\n\n const chainId = await this.#config.getChainId();\n\n // Chain changed → tear down old pool, re-init\n if (this.#resolvedChainId !== null && chainId !== this.#resolvedChainId) {\n this.#tearDown();\n }\n\n this.#resolvedChainId = chainId;\n\n // Create cache for current chain (when storage is provided)\n if (!this.#artifactCache && this.#config.fheArtifactStorage) {\n const config = Object.assign({}, DefaultConfigs[chainId], this.#config.transports[chainId]);\n this.#artifactCache = new FheArtifactCache({\n storage: this.#config.fheArtifactStorage,\n chainId,\n relayerUrl: config.relayerUrl,\n ttl: this.#config.fheArtifactCacheTTL,\n logger: this.#config.logger,\n });\n }\n\n // Revalidate cached artifacts if due — never let revalidation block init\n if (this.#artifactCache) {\n let stale = false;\n try {\n stale = await this.#artifactCache.revalidateIfDue();\n } catch (err) {\n this.#config.logger?.warn(\n \"Artifact revalidation failed, proceeding with potentially stale cache\",\n { error: err instanceof Error ? err.message : String(err) },\n );\n }\n if (stale) {\n this.#config.logger?.info(\"Cached FHE artifacts are stale — reinitializing\");\n this.#tearDown();\n }\n }\n\n if (!this.#initPromise) {\n this.#initPromise = this.#initPool().catch((error) => {\n this.#initPromise = null;\n throw error instanceof ZamaError\n ? error\n : new ConfigurationError(\"Failed to initialize FHE worker pool\", {\n cause: error,\n });\n });\n }\n return this.#initPromise;\n }\n\n async #initPool(): Promise<NodeWorkerPool> {\n const poolConfig = await this.#getPoolConfig();\n const pool = new NodeWorkerPool(poolConfig);\n await pool.initPool();\n if (this.#terminated) {\n pool.terminate();\n throw new Error(\"RelayerNode was terminated during initialization\");\n }\n this.#pool = pool;\n return pool;\n }\n\n terminate(): void {\n this.#terminated = true;\n if (this.#pool) {\n this.#pool.terminate();\n this.#pool = null;\n }\n this.#initPromise = null;\n this.#ensureLock = null;\n }\n\n /** Calls {@link terminate}, shutting down the worker thread pool. */\n [Symbol.dispose](): void {\n this.terminate();\n }\n\n async generateKeypair(): Promise<KeypairType<Hex>> {\n const pool = await this.#ensurePool();\n const result = await pool.generateKeypair();\n return {\n publicKey: result.publicKey,\n privateKey: result.privateKey,\n };\n }\n\n async createEIP712(\n publicKey: Hex,\n contractAddresses: Address[],\n startTimestamp: number,\n durationDays = 7,\n ): Promise<EIP712TypedData> {\n const pool = await this.#ensurePool();\n const result = await pool.createEIP712({\n publicKey,\n contractAddresses,\n startTimestamp,\n durationDays,\n });\n\n const domain = {\n name: result.domain.name,\n version: result.domain.version,\n chainId: result.domain.chainId,\n verifyingContract: result.domain.verifyingContract,\n };\n\n return {\n domain,\n types: {\n EIP712Domain: buildEIP712DomainType(domain),\n UserDecryptRequestVerification: result.types.UserDecryptRequestVerification,\n },\n message: {\n publicKey: result.message.publicKey,\n contractAddresses: result.message.contractAddresses,\n startTimestamp: result.message.startTimestamp,\n durationDays: result.message.durationDays,\n extraData: result.message.extraData,\n },\n };\n }\n\n async encrypt(params: EncryptParams): Promise<EncryptResult> {\n return withRetry(async () => {\n const pool = await this.#ensurePool();\n const result = await pool.encrypt(params);\n return { handles: result.handles, inputProof: result.inputProof };\n });\n }\n\n async userDecrypt(params: UserDecryptParams): Promise<Readonly<Record<Handle, ClearValueType>>> {\n return withRetry(async () => {\n const pool = await this.#ensurePool();\n const result = await pool.userDecrypt(params);\n return result.clearValues;\n });\n }\n\n async publicDecrypt(handles: Handle[]): Promise<PublicDecryptResult> {\n return withRetry(async () => {\n const pool = await this.#ensurePool();\n const result = await pool.publicDecrypt(handles);\n return {\n clearValues: result.clearValues,\n abiEncodedClearValues: result.abiEncodedClearValues,\n decryptionProof: result.decryptionProof,\n };\n });\n }\n\n async createDelegatedUserDecryptEIP712(\n publicKey: Hex,\n contractAddresses: Address[],\n delegatorAddress: Address,\n startTimestamp: number,\n durationDays = 7,\n ): Promise<KmsDelegatedUserDecryptEIP712Type> {\n const pool = await this.#ensurePool();\n return pool.createDelegatedUserDecryptEIP712({\n publicKey,\n contractAddresses,\n delegatorAddress,\n startTimestamp,\n durationDays,\n });\n }\n\n async delegatedUserDecrypt(\n params: DelegatedUserDecryptParams,\n ): Promise<Readonly<Record<Handle, ClearValueType>>> {\n return withRetry(async () => {\n const pool = await this.#ensurePool();\n const result = await pool.delegatedUserDecrypt(params);\n return result.clearValues;\n });\n }\n\n async requestZKProofVerification(zkProof: ZKProofLike): Promise<InputProofBytesType> {\n return withRetry(async () => {\n const pool = await this.#ensurePool();\n return pool.requestZKProofVerification(zkProof);\n });\n }\n\n async getPublicKey(): Promise<{\n publicKeyId: string;\n publicKey: Uint8Array;\n } | null> {\n const pool = await this.#ensurePool();\n if (this.#artifactCache) {\n return this.#artifactCache.getPublicKey(async () => (await pool.getPublicKey()).result);\n }\n return (await pool.getPublicKey()).result;\n }\n\n async getPublicParams(\n bits: number,\n ): Promise<{ publicParams: Uint8Array; publicParamsId: string } | null> {\n const pool = await this.#ensurePool();\n if (this.#artifactCache) {\n return this.#artifactCache.getPublicParams(\n bits,\n async () => (await pool.getPublicParams(bits)).result,\n );\n }\n return (await pool.getPublicParams(bits)).result;\n }\n\n async getAclAddress(): Promise<Address> {\n const chainId = await this.#config.getChainId();\n const config = Object.assign({}, DefaultConfigs[chainId], this.#config.transports[chainId]);\n if (!config.aclContractAddress) {\n throw new ConfigurationError(`No ACL address configured for chain ${chainId}`);\n }\n return config.aclContractAddress as Address;\n }\n}\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { GenericStorage } from \"../types\";\n\n/**\n * {@link GenericStorage} backed by Node.js {@link AsyncLocalStorage}.\n *\n * Each async context (e.g. HTTP request) gets its own isolated `Map`,\n * so credentials from one request never leak into another.\n *\n * Call {@link run} to establish a context before using the SDK:\n *\n * ```ts\n * import { asyncLocalStorage } from \"@zama-fhe/sdk/node\";\n *\n * app.post(\"/api/transfer\", (req, res) => {\n * asyncLocalStorage.run(async () => {\n * const sdk = new ZamaSDK({ relayer, signer, storage: asyncLocalStorage });\n * // credentials are scoped to this request\n * });\n * });\n * ```\n */\nexport class AsyncLocalMapStorage implements GenericStorage {\n readonly #als = new AsyncLocalStorage<Map<string, unknown>>();\n\n /** Execute `fn` within an isolated storage context. */\n run<R>(fn: () => R | Promise<R>): R | Promise<R> {\n return this.#als.run(new Map(), fn);\n }\n\n async get<T = unknown>(key: string): Promise<T | null> {\n return (this.#als.getStore()?.get(key) as T) ?? null;\n }\n\n async set<T = unknown>(key: string, value: T): Promise<void> {\n this.#als.getStore()?.set(key, value);\n }\n\n async delete(key: string): Promise<void> {\n this.#als.getStore()?.delete(key);\n }\n}\n\n/** Default singleton for application-wide use. */\nexport const asyncLocalStorage = new AsyncLocalMapStorage();\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { C as TransactionReceipt, S as RawLog, a as EncryptParams, b as GenericSigner, g as UnshieldCallbacks, h as TransferCallbacks, i as EncryptInput, l as PublicDecryptResult, m as ShieldCallbacks, n as DelegatedUserDecryptParams, o as EncryptResult, p as UserDecryptParams, r as EIP712TypedData, s as Handle, t as ClearValueType, v as StoredCredentials, w as TransactionResult, x as SignerLifecycleCallbacks, y as GenericStorage } from "../relayer-sdk.types-BhV3n5qO.js";
2
- import { n as TokenWrapperPair, r as TokenWrapperPairWithMetadata, t as PaginatedResult } from "../index-C3ELlhM8.js";
3
- import { t as RelayerSDK } from "../relayer-sdk-Cqx3HnZh.js";
4
- import { At as UnshieldPhase1SubmittedEvent, Ct as FinalizeUnwrapSubmittedEvent, Dt as TransactionErrorEvent, Et as ShieldSubmittedEvent, Ft as ZamaSDKEventInput, G as TokenConfig, H as WrappersRegistry, It as ZamaSDKEventListener, Mt as UnshieldPhase2SubmittedEvent, Nt as UnwrapSubmittedEvent, Ot as TransferFromSubmittedEvent, Pt as ZamaSDKEvent, Q as ReadonlyTokenConfig, R as ZamaSDK, Rt as ZamaSDKEvents, S as WrappedEvent, St as EncryptStartEvent, Tt as SessionExpiredEvent, W as Token, X as BatchDecryptOptions, Y as BatchDecryptAsOptions, Z as ReadonlyToken, _t as DecryptErrorEvent, a as ActivityType, at as ApproveUnderlyingSubmittedEvent, b as UnwrappedFinalizedEvent, bt as EncryptEndEvent, ct as CredentialsCachedEvent, dt as CredentialsCreatingEvent, ft as CredentialsExpiredEvent, gt as DecryptEndEvent, h as OnChainEvent, ht as CredentialsRevokedEvent, i as ActivityLogMetadata, it as ApproveSubmittedEvent, jt as UnshieldPhase2StartedEvent, kt as TransferSubmittedEvent, lt as CredentialsCorruptedEvent, mt as CredentialsPersistFailedEvent, n as ActivityDirection, nt as CredentialsManager, ot as BaseEvent, p as ConfidentialTransferEvent, pt as CredentialsLoadingEvent, r as ActivityItem, rt as CredentialsManagerConfig, st as CredentialsAllowedEvent, t as ActivityAmount, ut as CredentialsCreatedEvent, vt as DecryptStartEvent, wt as RevokeDelegationSubmittedEvent, x as UnwrappedStartedEvent, xt as EncryptErrorEvent, y as UnwrapRequestedEvent, yt as DelegationSubmittedEvent, z as ZamaSDKConfig } from "../activity-D8okM6NP.js";
1
+ import { C as GenericSigner, D as TransactionResult, E as TransactionReceipt, S as GenericStorage, T as RawLog, _ as ShieldCallbacks, a as EncryptParams, g as UnshieldOptions, h as TransferOptions, i as EncryptInput, l as PublicDecryptResult, m as ShieldOptions, n as DelegatedUserDecryptParams, o as EncryptResult, p as UserDecryptParams, r as EIP712TypedData, s as Handle, t as ClearValueType, v as TransferCallbacks, w as SignerLifecycleCallbacks, x as StoredCredentials, y as UnshieldCallbacks } from "../relayer-sdk.types-C9GAgQ7q.js";
2
+ import { n as TokenWrapperPair, r as TokenWrapperPairWithMetadata, t as PaginatedResult } from "../index-BXdXzzx4.js";
3
+ import { t as RelayerSDK } from "../relayer-sdk-C_4bkxxH.js";
4
+ import { $t as ShieldSubmittedEvent, At as CredentialsManagerConfig, Bt as CredentialsLoadingEvent, Ct as BatchDecryptOptions, Ft as CredentialsCachedEvent, G as TokenConfig, Gt as DecryptStartEvent, H as WrappersRegistry, Ht as CredentialsRevokedEvent, It as CredentialsCorruptedEvent, Jt as EncryptErrorEvent, Kt as DelegationSubmittedEvent, Lt as CredentialsCreatedEvent, Mt as ApproveUnderlyingSubmittedEvent, Nt as BaseEvent, Pt as CredentialsAllowedEvent, Qt as SessionExpiredEvent, R as ZamaSDK, Rt as CredentialsCreatingEvent, S as WrappedEvent, St as BatchDecryptAsOptions, Tt as ReadonlyTokenConfig, Ut as DecryptEndEvent, Vt as CredentialsPersistFailedEvent, W as Token, Wt as DecryptErrorEvent, Xt as FinalizeUnwrapSubmittedEvent, Yt as EncryptStartEvent, Zt as RevokeDelegationSubmittedEvent, a as ActivityType, an as UnshieldPhase2SubmittedEvent, b as UnwrappedFinalizedEvent, cn as ZamaSDKEventInput, dn as ZamaSDKEvents, en as TransactionErrorEvent, h as OnChainEvent, i as ActivityLogMetadata, in as UnshieldPhase2StartedEvent, jt as ApproveSubmittedEvent, kt as CredentialsManager, ln as ZamaSDKEventListener, n as ActivityDirection, nn as TransferSubmittedEvent, on as UnwrapSubmittedEvent, p as ConfidentialTransferEvent, qt as EncryptEndEvent, r as ActivityItem, rn as UnshieldPhase1SubmittedEvent, sn as ZamaSDKEvent, t as ActivityAmount, tn as TransferFromSubmittedEvent, wt as ReadonlyToken, x as UnwrappedStartedEvent, y as UnwrapRequestedEvent, z as ZamaSDKConfig, zt as CredentialsExpiredEvent } from "../activity-DTBvolDB.js";
5
5
  import { Address, Hex } from "viem";
6
6
  import { InputProofBytesType, KeypairType, KmsDelegatedUserDecryptEIP712Type, ZKProofLike } from "@zama-fhe/relayer-sdk/bundle";
7
7
  import { MutationFunctionContext, QueryKey, QueryObserverOptions, skipToken } from "@tanstack/query-core";
@@ -546,14 +546,12 @@ declare function listPairsQueryOptions(registry: WrappersRegistry, config: ListP
546
546
  //#endregion
547
547
  //#region src/query/shield.d.ts
548
548
  /** Variables for {@link shieldMutationOptions}. */
549
- interface ShieldParams {
549
+ interface ShieldParams extends ShieldCallbacks {
550
550
  amount: bigint;
551
551
  fees?: bigint;
552
552
  approvalStrategy?: "max" | "exact" | "skip";
553
553
  /** Recipient address for the shielded tokens. Defaults to the connected wallet. */
554
554
  to?: Address;
555
- /** Optional progress callbacks for the multi-step shield flow. */
556
- callbacks?: ShieldCallbacks;
557
555
  }
558
556
  declare function shieldMutationOptions(token: Token): MutationFactoryOptions<readonly ["zama.shield", Address], ShieldParams, TransactionResult>;
559
557
  //#endregion
@@ -567,11 +565,9 @@ declare function shieldETHMutationOptions(token: Token): MutationFactoryOptions<
567
565
  //#endregion
568
566
  //#region src/query/transfer.d.ts
569
567
  /** Variables for {@link confidentialTransferMutationOptions}. */
570
- interface ConfidentialTransferParams {
568
+ interface ConfidentialTransferParams extends TransferOptions {
571
569
  to: Address;
572
570
  amount: bigint;
573
- /** Optional progress callbacks for the multi-step transfer flow. */
574
- callbacks?: TransferCallbacks;
575
571
  }
576
572
  declare function confidentialTransferMutationOptions(token: Token): MutationFactoryOptions<readonly ["zama.confidentialTransfer", Address], ConfidentialTransferParams, TransactionResult>;
577
573
  //#endregion
@@ -603,24 +599,20 @@ declare function approveUnderlyingMutationOptions(token: Token): MutationFactory
603
599
  //#endregion
604
600
  //#region src/query/unshield.d.ts
605
601
  /** Variables for {@link unshieldMutationOptions}. */
606
- interface UnshieldParams {
602
+ interface UnshieldParams extends UnshieldOptions {
607
603
  amount: bigint;
608
- callbacks?: UnshieldCallbacks;
609
604
  }
610
605
  declare function unshieldMutationOptions(token: Token): MutationFactoryOptions<readonly ["zama.unshield", Address], UnshieldParams, TransactionResult>;
611
606
  //#endregion
612
607
  //#region src/query/unshield-all.d.ts
613
608
  /** Variables for {@link unshieldAllMutationOptions}. */
614
- interface UnshieldAllParams {
615
- callbacks?: UnshieldCallbacks;
616
- }
609
+ interface UnshieldAllParams extends UnshieldCallbacks {}
617
610
  declare function unshieldAllMutationOptions(token: Token): MutationFactoryOptions<readonly ["zama.unshieldAll", Address], UnshieldAllParams | void, TransactionResult>;
618
611
  //#endregion
619
612
  //#region src/query/resume-unshield.d.ts
620
613
  /** Variables for {@link resumeUnshieldMutationOptions}. */
621
- interface ResumeUnshieldParams {
614
+ interface ResumeUnshieldParams extends UnshieldCallbacks {
622
615
  unwrapTxHash: Hex;
623
- callbacks?: UnshieldCallbacks;
624
616
  }
625
617
  declare function resumeUnshieldMutationOptions(token: Token): MutationFactoryOptions<readonly ["zama.resumeUnshield", Address], ResumeUnshieldParams, TransactionResult>;
626
618
  //#endregion
@@ -756,5 +748,5 @@ declare function delegationStatusQueryOptions(sdk: {
756
748
  relayer: RelayerSDK;
757
749
  }, config: DelegationStatusQueryConfig): QueryFactoryOptions<DelegationStatusData, Error, DelegationStatusData, ReturnType<typeof zamaQueryKeys.delegationStatus.scope>>;
758
750
  //#endregion
759
- export { type ActivityAmount, type ActivityDirection, type ActivityFeedConfig, type ActivityFeedQueryConfig, type ActivityItem, type ActivityLogMetadata, type ActivityType, type ApproveSubmittedEvent, type ApproveUnderlyingParams, type ApproveUnderlyingSubmittedEvent, type BaseEvent, type BatchDecryptAsOptions, type BatchDecryptBalancesAsParams, type BatchDecryptOptions, type ClearValueType, type ConfidentialApproveParams, type ConfidentialBalanceQueryConfig, type ConfidentialBalancesData, type ConfidentialBalancesQueryConfig, type ConfidentialHandleQueryConfig, type ConfidentialHandlesQueryConfig, type ConfidentialIsApprovedQueryConfig, type ConfidentialTokenAddressQueryConfig, type ConfidentialTransferEvent, type ConfidentialTransferFromParams, type ConfidentialTransferParams, type CreateDelegatedUserDecryptEIP712Params, type CreateEIP712Params, type CredentialsAllowedEvent, type CredentialsCachedEvent, type CredentialsCorruptedEvent, type CredentialsCreatedEvent, type CredentialsCreatingEvent, type CredentialsExpiredEvent, type CredentialsLoadingEvent, type CredentialsManager, type CredentialsManagerConfig, type CredentialsPersistFailedEvent, type CredentialsRevokedEvent, type DecryptBalanceAsParams, type DecryptEndEvent, type DecryptErrorEvent, type DecryptHandle, type DecryptStartEvent, type DelegateDecryptionParams, type DelegatedUserDecryptParams, type DelegationStatusData, type DelegationStatusQueryConfig, type DelegationSubmittedEvent, type EIP712TypedData, type EncryptEndEvent, type EncryptErrorEvent, type EncryptInput, type EncryptParams, type EncryptResult, type EncryptStartEvent, type EncryptedBalanceHandle, type FeeQueryConfig, type FinalizeUnwrapParams, type FinalizeUnwrapSubmittedEvent, type GenericSigner, type GenericStorage, type IsAllowedQueryConfig, type IsConfidentialQueryConfig, type IsConfidentialTokenValidQueryConfig, type ListPairsQueryConfig, type MutationFactoryOptions, type OnChainEvent, type PublicDecryptResult, type PublicKeyQueryConfig, type PublicParamsQueryConfig, type QueryClientLike, type QueryFactoryOptions, type QueryFilterLike, type QueryLike, type RawLog, type ReadonlyToken, type ReadonlyTokenConfig, type RelayerSDK, type ResumeUnshieldParams, type RevokeDelegationParams, type RevokeDelegationSubmittedEvent, type SessionExpiredEvent, type ShieldCallbacks, type ShieldETHParams, type ShieldFeeQueryConfig, type ShieldParams, type ShieldSubmittedEvent, type SignerAddressQueryConfig, type SignerLifecycleCallbacks, type StoredCredentials, type StrippedQueryOptionKeys, type Token, type TokenAddressQueryConfig, type TokenConfig, type TokenMetadata, type TokenMetadataQueryConfig, type TokenPairQueryConfig, type TokenPairsSliceQueryConfig, type TotalSupplyQueryConfig, type TransactionErrorEvent, type TransactionReceipt, type TransactionResult, type TransferCallbacks, type TransferFromSubmittedEvent, type TransferSubmittedEvent, type UnderlyingAllowanceQueryConfig, type UnshieldAllParams, type UnshieldCallbacks, type UnshieldFeeQueryConfig, type UnshieldParams, type UnshieldPhase1SubmittedEvent, type UnshieldPhase2StartedEvent, type UnshieldPhase2SubmittedEvent, type UnwrapParams, type UnwrapRequestedEvent, type UnwrapSubmittedEvent, type UnwrappedFinalizedEvent, type UnwrappedStartedEvent, type UserDecryptCallbacks, type UserDecryptMutationParams, type UserDecryptParams, type WrappedEvent, type WrapperDiscoveryQueryConfig, type WrappersRegistryQueryConfig, ZERO_HANDLE, type ZamaSDK, type ZamaSDKConfig, type ZamaSDKEvent, type ZamaSDKEventInput, type ZamaSDKEventListener, ZamaSDKEvents, activityFeedQueryOptions, allowMutationOptions, approveUnderlyingMutationOptions, batchDecryptBalancesAsMutationOptions, batchTransferFeeQueryOptions, confidentialApproveMutationOptions, confidentialBalanceQueryOptions, confidentialBalancesQueryOptions, confidentialHandleQueryOptions, confidentialHandlesQueryOptions, confidentialIsApprovedQueryOptions, confidentialTokenAddressQueryOptions, confidentialTransferFromMutationOptions, confidentialTransferMutationOptions, createDelegatedUserDecryptEIP712MutationOptions, createEIP712MutationOptions, decryptBalanceAsMutationOptions, delegateDecryptionMutationOptions, delegatedUserDecryptMutationOptions, delegationStatusQueryOptions, deriveActivityFeedLogsKey, encryptMutationOptions, feeRecipientQueryOptions, filterQueryOptions, finalizeUnwrapMutationOptions, generateKeypairMutationOptions, hashFn, invalidateAfterApprove, invalidateAfterApproveUnderlying, invalidateAfterShield, invalidateAfterTransfer, invalidateAfterUnshield, invalidateAfterUnwrap, invalidateBalanceQueries, invalidateWagmiBalanceQueries, invalidateWalletLifecycleQueries, isAllowedQueryOptions, isConfidentialQueryOptions, isConfidentialTokenValidQueryOptions, isWrapperQueryOptions, listPairsQueryOptions, publicDecryptMutationOptions, publicKeyQueryOptions, publicParamsQueryOptions, requestZKProofVerificationMutationOptions, resumeUnshieldMutationOptions, revokeDelegationMutationOptions, revokeMutationOptions, revokeSessionMutationOptions, shieldETHMutationOptions, shieldFeeQueryOptions, shieldMutationOptions, signerAddressQueryOptions, tokenAddressQueryOptions, tokenMetadataQueryOptions, tokenPairQueryOptions, tokenPairsLengthQueryOptions, tokenPairsQueryOptions, tokenPairsSliceQueryOptions, totalSupplyQueryOptions, underlyingAllowanceQueryOptions, unshieldAllMutationOptions, unshieldFeeQueryOptions, unshieldMutationOptions, unwrapAllMutationOptions, unwrapMutationOptions, userDecryptMutationOptions, wrapperDiscoveryQueryOptions, zamaQueryKeys };
751
+ export { type ActivityAmount, type ActivityDirection, type ActivityFeedConfig, type ActivityFeedQueryConfig, type ActivityItem, type ActivityLogMetadata, type ActivityType, type ApproveSubmittedEvent, type ApproveUnderlyingParams, type ApproveUnderlyingSubmittedEvent, type BaseEvent, type BatchDecryptAsOptions, type BatchDecryptBalancesAsParams, type BatchDecryptOptions, type ClearValueType, type ConfidentialApproveParams, type ConfidentialBalanceQueryConfig, type ConfidentialBalancesData, type ConfidentialBalancesQueryConfig, type ConfidentialHandleQueryConfig, type ConfidentialHandlesQueryConfig, type ConfidentialIsApprovedQueryConfig, type ConfidentialTokenAddressQueryConfig, type ConfidentialTransferEvent, type ConfidentialTransferFromParams, type ConfidentialTransferParams, type CreateDelegatedUserDecryptEIP712Params, type CreateEIP712Params, type CredentialsAllowedEvent, type CredentialsCachedEvent, type CredentialsCorruptedEvent, type CredentialsCreatedEvent, type CredentialsCreatingEvent, type CredentialsExpiredEvent, type CredentialsLoadingEvent, type CredentialsManager, type CredentialsManagerConfig, type CredentialsPersistFailedEvent, type CredentialsRevokedEvent, type DecryptBalanceAsParams, type DecryptEndEvent, type DecryptErrorEvent, type DecryptHandle, type DecryptStartEvent, type DelegateDecryptionParams, type DelegatedUserDecryptParams, type DelegationStatusData, type DelegationStatusQueryConfig, type DelegationSubmittedEvent, type EIP712TypedData, type EncryptEndEvent, type EncryptErrorEvent, type EncryptInput, type EncryptParams, type EncryptResult, type EncryptStartEvent, type EncryptedBalanceHandle, type FeeQueryConfig, type FinalizeUnwrapParams, type FinalizeUnwrapSubmittedEvent, type GenericSigner, type GenericStorage, type IsAllowedQueryConfig, type IsConfidentialQueryConfig, type IsConfidentialTokenValidQueryConfig, type ListPairsQueryConfig, type MutationFactoryOptions, type OnChainEvent, type PublicDecryptResult, type PublicKeyQueryConfig, type PublicParamsQueryConfig, type QueryClientLike, type QueryFactoryOptions, type QueryFilterLike, type QueryLike, type RawLog, type ReadonlyToken, type ReadonlyTokenConfig, type RelayerSDK, type ResumeUnshieldParams, type RevokeDelegationParams, type RevokeDelegationSubmittedEvent, type SessionExpiredEvent, type ShieldCallbacks, type ShieldETHParams, type ShieldFeeQueryConfig, type ShieldOptions, type ShieldParams, type ShieldSubmittedEvent, type SignerAddressQueryConfig, type SignerLifecycleCallbacks, type StoredCredentials, type StrippedQueryOptionKeys, type Token, type TokenAddressQueryConfig, type TokenConfig, type TokenMetadata, type TokenMetadataQueryConfig, type TokenPairQueryConfig, type TokenPairsSliceQueryConfig, type TotalSupplyQueryConfig, type TransactionErrorEvent, type TransactionReceipt, type TransactionResult, type TransferCallbacks, type TransferFromSubmittedEvent, type TransferOptions, type TransferSubmittedEvent, type UnderlyingAllowanceQueryConfig, type UnshieldAllParams, type UnshieldCallbacks, type UnshieldFeeQueryConfig, type UnshieldOptions, type UnshieldParams, type UnshieldPhase1SubmittedEvent, type UnshieldPhase2StartedEvent, type UnshieldPhase2SubmittedEvent, type UnwrapParams, type UnwrapRequestedEvent, type UnwrapSubmittedEvent, type UnwrappedFinalizedEvent, type UnwrappedStartedEvent, type UserDecryptCallbacks, type UserDecryptMutationParams, type UserDecryptParams, type WrappedEvent, type WrapperDiscoveryQueryConfig, type WrappersRegistryQueryConfig, ZERO_HANDLE, type ZamaSDK, type ZamaSDKConfig, type ZamaSDKEvent, type ZamaSDKEventInput, type ZamaSDKEventListener, ZamaSDKEvents, activityFeedQueryOptions, allowMutationOptions, approveUnderlyingMutationOptions, batchDecryptBalancesAsMutationOptions, batchTransferFeeQueryOptions, confidentialApproveMutationOptions, confidentialBalanceQueryOptions, confidentialBalancesQueryOptions, confidentialHandleQueryOptions, confidentialHandlesQueryOptions, confidentialIsApprovedQueryOptions, confidentialTokenAddressQueryOptions, confidentialTransferFromMutationOptions, confidentialTransferMutationOptions, createDelegatedUserDecryptEIP712MutationOptions, createEIP712MutationOptions, decryptBalanceAsMutationOptions, delegateDecryptionMutationOptions, delegatedUserDecryptMutationOptions, delegationStatusQueryOptions, deriveActivityFeedLogsKey, encryptMutationOptions, feeRecipientQueryOptions, filterQueryOptions, finalizeUnwrapMutationOptions, generateKeypairMutationOptions, hashFn, invalidateAfterApprove, invalidateAfterApproveUnderlying, invalidateAfterShield, invalidateAfterTransfer, invalidateAfterUnshield, invalidateAfterUnwrap, invalidateBalanceQueries, invalidateWagmiBalanceQueries, invalidateWalletLifecycleQueries, isAllowedQueryOptions, isConfidentialQueryOptions, isConfidentialTokenValidQueryOptions, isWrapperQueryOptions, listPairsQueryOptions, publicDecryptMutationOptions, publicKeyQueryOptions, publicParamsQueryOptions, requestZKProofVerificationMutationOptions, resumeUnshieldMutationOptions, revokeDelegationMutationOptions, revokeMutationOptions, revokeSessionMutationOptions, shieldETHMutationOptions, shieldFeeQueryOptions, shieldMutationOptions, signerAddressQueryOptions, tokenAddressQueryOptions, tokenMetadataQueryOptions, tokenPairQueryOptions, tokenPairsLengthQueryOptions, tokenPairsQueryOptions, tokenPairsSliceQueryOptions, totalSupplyQueryOptions, underlyingAllowanceQueryOptions, unshieldAllMutationOptions, unshieldFeeQueryOptions, unshieldMutationOptions, unwrapAllMutationOptions, unwrapMutationOptions, userDecryptMutationOptions, wrapperDiscoveryQueryOptions, zamaQueryKeys };
760
752
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- import{F as e,I as t,L as n,O as r,P as i,R as a,U as o,V as s,W as c,i as l,j as u,k as d,n as f,r as p,t as m,w as h}from"../activity-DVF6Mxsn.js";import{t as g}from"../encryption-UaXE1L_W.js";import{i as _}from"../assertions-Dty7Quc0.js";import{C as v,D as y,_ as b,a as x,d as S,i as C,m as w,n as T,o as ee,r as te,s as ne,t as re,u as ie}from"../wrappers-registry-DqPr_JG2.js";import{getAddress as E,zeroAddress as D}from"viem";function O(e){if(!k(e))return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return!(!k(n)||!n.hasOwnProperty(`isPrototypeOf`))}function k(e){return Object.prototype.toString.call(e)===`[object Object]`}const A=`0x0000000000000000000000000000000000000000000000000000000000000000`;function j(e){let{gcTime:t,staleTime:n,enabled:r,select:i,refetchInterval:a,refetchOnMount:o,refetchOnWindowFocus:s,refetchOnReconnect:c,retry:l,retryDelay:u,retryOnMount:d,queryFn:f,queryKey:p,queryKeyHashFn:m,initialData:h,initialDataUpdatedAt:g,placeholderData:_,structuralSharing:v,throwOnError:y,meta:b,query:x,pollingInterval:S,...C}=e;return C}function M(e){return JSON.stringify(e,(e,t)=>O(t)?Object.keys(t).toSorted().reduce((e,n)=>(e[n]=t[n],e),{}):typeof t==`bigint`?t.toString():t)}const N=e=>e.map(e=>E(e)),P=e=>e===void 0?void 0:E(e),F={signerAddress:{all:[`zama.signerAddress`],scope:e=>[`zama.signerAddress`,{scope:e}],token:e=>[`zama.signerAddress`,{tokenAddress:E(e)}]},confidentialHandle:{all:[`zama.confidentialHandle`],token:e=>[`zama.confidentialHandle`,{tokenAddress:E(e)}],owner:(e,t)=>[`zama.confidentialHandle`,{tokenAddress:E(e),...t?{owner:E(t)}:{}}]},confidentialBalance:{all:[`zama.confidentialBalance`],token:e=>[`zama.confidentialBalance`,{tokenAddress:E(e)}],owner:(e,t,n)=>[`zama.confidentialBalance`,{tokenAddress:E(e),...t?{owner:E(t)}:{},...n===void 0?{}:{handle:n}}]},confidentialHandles:{all:[`zama.confidentialHandles`],tokens:(e,t)=>[`zama.confidentialHandles`,{tokenAddresses:N(e),...t?{owner:E(t)}:{}}]},confidentialBalances:{all:[`zama.confidentialBalances`],tokens:(e,t,n)=>[`zama.confidentialBalances`,{tokenAddresses:N(e),...t?{owner:E(t)}:{},...n===void 0?{}:{handles:n}}]},tokenMetadata:{all:[`zama.tokenMetadata`],token:e=>[`zama.tokenMetadata`,{tokenAddress:E(e)}]},isConfidential:{all:[`zama.isConfidential`],token:e=>[`zama.isConfidential`,{tokenAddress:E(e)}]},isWrapper:{all:[`zama.isWrapper`],token:e=>[`zama.isWrapper`,{tokenAddress:E(e)}]},wrapperDiscovery:{all:[`zama.wrapperDiscovery`],token:(e,t,n)=>{let r=P(e),i=P(t),a=P(n);return[`zama.wrapperDiscovery`,{...r?{tokenAddress:r}:{},...i?{erc20Address:i}:{},...a?{registryAddress:a}:{}}]}},underlyingAllowance:{all:[`zama.underlyingAllowance`],token:e=>[`zama.underlyingAllowance`,{tokenAddress:E(e)}],scope:(e,t,n)=>[`zama.underlyingAllowance`,{tokenAddress:E(e),...t?{owner:E(t)}:{},...n?{wrapperAddress:E(n)}:{}}]},confidentialIsApproved:{all:[`zama.confidentialIsApproved`],token:e=>{let t=P(e);return[`zama.confidentialIsApproved`,t?{tokenAddress:t}:{}]},scope:(e,t,n)=>{let r=P(e),i=P(t),a=P(n);return[`zama.confidentialIsApproved`,{...r?{tokenAddress:r}:{},...i?{holder:i}:{},...a?{spender:a}:{}}]}},totalSupply:{all:[`zama.totalSupply`],token:e=>[`zama.totalSupply`,{tokenAddress:E(e)}]},activityFeed:{all:[`zama.activityFeed`],token:e=>[`zama.activityFeed`,{tokenAddress:E(e)}],scope:(e,t,n,r)=>[`zama.activityFeed`,{tokenAddress:E(e),...t?{userAddress:E(t)}:{},...n?{logsKey:n}:{},...r===void 0?{}:{decrypt:r}}]},fees:{all:[`zama.fees`],shieldFee:(e,t,n,r)=>[`zama.fees`,{type:`shield`,...e?{feeManagerAddress:E(e)}:{},...t===void 0?{}:{amount:t},...n?{from:E(n)}:{},...r?{to:E(r)}:{}}],unshieldFee:(e,t,n,r)=>[`zama.fees`,{type:`unshield`,...e?{feeManagerAddress:E(e)}:{},...t===void 0?{}:{amount:t},...n?{from:E(n)}:{},...r?{to:E(r)}:{}}],batchTransferFee:e=>[`zama.fees`,{type:`batchTransfer`,...e?{feeManagerAddress:E(e)}:{}}],feeRecipient:e=>[`zama.fees`,{type:`feeRecipient`,...e?{feeManagerAddress:E(e)}:{}}]},isAllowed:{all:[`zama.isAllowed`],scope:e=>[`zama.isAllowed`,{account:E(e)}]},publicKey:{all:[`zama.publicKey`]},publicParams:{all:[`zama.publicParams`],bits:e=>[`zama.publicParams`,{bits:e}]},delegationStatus:{all:[`zama.delegationStatus`],token:e=>{let t=P(e);return[`zama.delegationStatus`,t?{tokenAddress:t}:{}]},scope:(e,t,n)=>{let r=P(e),i=P(t),a=P(n);return[`zama.delegationStatus`,{...r?{tokenAddress:r}:{},...i?{delegatorAddress:i}:{},...a?{delegateAddress:a}:{}}]}},decryption:{all:[`zama.decryption`],handle:(e,t)=>[`zama.decryption`,{handle:e,...t===void 0?{}:{contractAddress:E(t)}}]},wrappersRegistry:{all:[`zama.wrappersRegistry`],chainId:()=>[`zama.wrappersRegistry`,{type:`chainId`}],tokenPairs:e=>[`zama.wrappersRegistry`,{type:`tokenPairs`,registryAddress:E(e)}],confidentialTokenAddress:(e,t)=>[`zama.wrappersRegistry`,{type:`confidentialTokenAddress`,registryAddress:E(e),tokenAddress:E(t)}],tokenAddress:(e,t)=>[`zama.wrappersRegistry`,{type:`tokenAddress`,registryAddress:E(e),confidentialTokenAddress:E(t)}],tokenPairsLength:e=>[`zama.wrappersRegistry`,{type:`tokenPairsLength`,registryAddress:E(e)}],tokenPairsSlice:(e,t,n)=>[`zama.wrappersRegistry`,{type:`tokenPairsSlice`,registryAddress:E(e),fromIndex:t,toIndex:n}],tokenPair:(e,t)=>[`zama.wrappersRegistry`,{type:`tokenPair`,registryAddress:E(e),index:t}],isConfidentialTokenValid:(e,t)=>[`zama.wrappersRegistry`,{type:`isConfidentialTokenValid`,registryAddress:E(e),confidentialTokenAddress:E(t)}],listPairs:(e,t,n,r)=>[`zama.wrappersRegistry`,{type:`listPairs`,registryAddress:E(e),page:t,pageSize:n,metadata:r}]}};function I(e,t){e.invalidateQueries({queryKey:F.underlyingAllowance.token(t)})}function L(e,t){R(e,t),I(e,t),K(e),e.invalidateQueries({queryKey:F.activityFeed.token(t)})}function R(e,t){e.invalidateQueries({queryKey:F.confidentialHandle.token(t)}),e.invalidateQueries({queryKey:F.confidentialHandles.all}),e.invalidateQueries({queryKey:F.confidentialBalance.token(t)}),e.invalidateQueries({queryKey:F.confidentialBalances.all})}function z(e,t){R(e,t),I(e,t),K(e),e.invalidateQueries({queryKey:F.activityFeed.token(t)})}function B(e,t){R(e,t),I(e,t),K(e),e.invalidateQueries({queryKey:F.activityFeed.token(t)})}function V(e,t){R(e,t),e.invalidateQueries({queryKey:F.activityFeed.token(t)})}function H(e,t){I(e,t)}function U(e,t){e.invalidateQueries({queryKey:F.confidentialIsApproved.token(t)}),e.invalidateQueries({queryKey:F.activityFeed.token(t)})}function W(e){return Array.isArray(e.queryKey)&&typeof e.queryKey[0]==`string`?e.queryKey[0].startsWith(`zama.`):!1}function G(e){return Array.isArray(e.queryKey)&&e.queryKey.some(e=>typeof e!=`object`||!e||!(`functionName`in e)?!1:e.functionName===`balanceOf`)}function K(e){e.invalidateQueries({predicate:G})}function q(e){e.removeQueries({queryKey:F.signerAddress.all}),e.removeQueries({queryKey:F.decryption.all}),e.invalidateQueries({predicate:W}),K(e)}const J=new WeakMap;let Y=1;function ae(e){let t=J.get(e);if(t!==void 0)return t;let n=Y++;return J.set(e,n),n}function oe(e,t){return{...j(t?.query??{}),queryKey:F.signerAddress.scope(ae(e)),queryFn:async()=>e.getAddress(),staleTime:3e4,enabled:t?.query?.enabled!==!1}}function se(e,t,n){let r=F.tokenMetadata.token(t);return{...j(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{tokenAddress:n}]=t.queryKey,[r,i,a]=await Promise.all([e.readContract(o(n)),e.readContract(c(n)),e.readContract(s(n))]);return{name:r,symbol:i,decimals:a}},staleTime:1/0,enabled:n?.query?.enabled!==!1}}function ce(e,t,n){let r=F.isConfidential.token(t);return{...j(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{tokenAddress:n}]=t.queryKey;return e.readContract(ie(n))},staleTime:1/0,enabled:n?.query?.enabled!==!1}}function le(e,t,n){let r=F.isWrapper.token(t);return{...j(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{tokenAddress:n}]=t.queryKey;return e.readContract(S(n))},staleTime:1/0,enabled:n?.query?.enabled!==!1}}function ue(e,t,n){let r=F.totalSupply.token(t);return{...j(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{tokenAddress:n}]=t.queryKey;return e.readContract(y(n))},staleTime:3e4,enabled:n?.query?.enabled!==!1}}function de(e,t){let n=F.wrapperDiscovery.token(t.tokenAddress,t.erc20Address,t.registryAddress);return{...j(t.query??{}),queryKey:n,queryFn:async()=>{if(!t.erc20Address)throw Error(`erc20Address is required for wrapper discovery query`);let n=await e.getConfidentialToken(t.erc20Address);return n?n.confidentialTokenAddress:null},staleTime:1/0,enabled:!!(t.tokenAddress&&t.erc20Address&&t.registryAddress)&&t.query?.enabled!==!1}}function fe(e,t,n){let r=n.owner,i=n.wrapperAddress,o=n.query?.enabled!==!1,s=F.underlyingAllowance.scope(t,r,i);return{...j(n.query??{}),queryKey:s,queryFn:async t=>{let[,{owner:n,wrapperAddress:r}]=t.queryKey;if(!n)throw Error(`owner is required`);if(!r)throw Error(`wrapperAddress is required`);let i=await e.readContract(w(r));return e.readContract(a(i,n,r))},staleTime:3e4,enabled:!!(r&&i)&&o}}function pe(e,t,n){let r=n.holder,i=n.spender,a=n.query?.enabled!==!1,o=F.confidentialIsApproved.scope(t,r,i);return{...j(n.query??{}),queryKey:o,queryFn:async t=>{let[,{tokenAddress:n,holder:r,spender:i}]=t.queryKey;if(!n)throw Error(`tokenAddress is required`);if(!r)throw Error(`holder is required`);if(!i)throw Error(`spender is required`);return e.readContract(v(n,r,i))},staleTime:3e4,enabled:!!(t&&r&&i)&&a}}function X(e){return e===void 0?void 0:BigInt(e)}function me(e,t){let r=t.amount?.toString(),i=t.feeManagerAddress,a=t.from,o=t.to,s=t.query?.enabled!==!1,c=F.fees.shieldFee(i,r,a,o);return{...j(t.query??{}),queryKey:c,queryFn:async t=>{let[,r]=t.queryKey,i=X(r.amount);if(!r.feeManagerAddress)throw Error(`feeManagerAddress is required`);if(i===void 0)throw Error(`amount is required`);if(!r.from)throw Error(`from is required`);if(!r.to)throw Error(`to is required`);return e.readContract(n(r.feeManagerAddress,i,r.from,r.to))},staleTime:3e4,enabled:!!(i&&r!==void 0&&a&&o)&&s}}function he(e,n){let r=n.amount?.toString(),i=n.feeManagerAddress,a=n.from,o=n.to,s=n.query?.enabled!==!1,c=F.fees.unshieldFee(i,r,a,o);return{...j(n.query??{}),queryKey:c,queryFn:async n=>{let[,r]=n.queryKey,i=X(r.amount);if(!r.feeManagerAddress)throw Error(`feeManagerAddress is required`);if(i===void 0)throw Error(`amount is required`);if(!r.from)throw Error(`from is required`);if(!r.to)throw Error(`to is required`);return e.readContract(t(r.feeManagerAddress,i,r.from,r.to))},staleTime:3e4,enabled:!!(i&&r!==void 0&&a&&o)&&s}}function ge(e,t,n){let r=n?.query?.enabled!==!1,a=F.fees.batchTransferFee(t);return{...j(n?.query??{}),queryKey:a,queryFn:async t=>{let[,{feeManagerAddress:n}]=t.queryKey;if(!n)throw Error(`feeManagerAddress is required`);return e.readContract(i(n))},staleTime:3e4,enabled:!!t&&r}}function _e(t,n,r){let i=r?.query?.enabled!==!1,a=F.fees.feeRecipient(n);return{...j(r?.query??{}),queryKey:a,queryFn:async n=>{let[,{feeManagerAddress:r}]=n.queryKey;if(!r)throw Error(`feeManagerAddress is required`);return t.readContract(e(r))},staleTime:3e4,enabled:!!n&&i}}function ve(e,t){let n=F.publicKey.all;return{...j(t?.query??{}),queryKey:n,queryFn:async()=>e.relayer.getPublicKey(),staleTime:1/0,enabled:t?.query?.enabled!==!1}}function ye(e,t,n){let r=F.publicParams.bits(t);return{...j(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{bits:n}]=t.queryKey;return e.relayer.getPublicParams(n)},staleTime:1/0,enabled:n?.query?.enabled!==!1}}function be(e,t,n){let r=n?.owner,i=n?.query?.enabled!==!1,a=F.confidentialHandle.owner(t,r);return{...j(n?.query??{}),queryKey:a,queryFn:async t=>{let[,{tokenAddress:n,owner:r}]=t.queryKey;if(!r)throw Error(`owner is required`);return await e.readContract(b(n,r))},enabled:!!r&&i,refetchInterval:n?.pollingInterval??1e4}}function xe(e,t){let n=t?.owner,r=t?.handle,i=t?.query?.enabled!==!1,a=F.confidentialBalance.owner(e.address,n,r);return{...j(t?.query??{}),queryKey:a,queryFn:async t=>{let[,{owner:n,handle:r}]=t.queryKey;if(!n)throw Error(`owner is required`);if(!r)throw Error(`handle is required`);return e.decryptBalance(r,n)},enabled:!!(n&&r)&&i,staleTime:1/0}}function Se(e,t,n){let r=n?.owner,i=n?.query?.enabled!==!1,a=F.confidentialHandles.tokens(t,r);return{...j(n?.query??{}),queryKey:a,queryFn:async t=>{let[,{tokenAddresses:n,owner:r}]=t.queryKey;if(!r)throw Error(`owner is required`);return Promise.all(n.map(async t=>await e.readContract(b(t,r))))},enabled:!!(r&&t.length>0)&&i,refetchInterval:n?.pollingInterval??1e4}}function Ce(e,t){let n=e.map(e=>e.address),r=t?.resultAddresses??n,i=t?.owner,a=t?.handles,o=t?.query?.enabled!==!1,s=Array.isArray(a)&&a.length===e.length&&a.every(e=>!!e),c=F.confidentialBalances.tokens(n,i,a);return{...j(t?.query??{}),queryKey:c,queryFn:async n=>{let[,{owner:i,handles:a}]=n.queryKey;if(!i)throw Error(`owner is required`);if(!a)throw Error(`handles are required`);let o=new Map,s=await h.batchDecryptBalances(e,{owner:i,handles:a,maxConcurrency:t?.maxConcurrency,onError:(e,t)=>(o.set(t,e),0n)}),c=new Map,l=new Map;for(let t=0;t<e.length;t++){let n=e[t].address,i=r[t],a=o.get(n);if(a)l.set(i,a);else{let e=s.get(n);e!==void 0&&c.set(i,e)}}if(l.size===e.length&&e.length>0)throw l.values().next().value??new g(`All token balance decryptions failed`);return{balances:c,errors:l,isPartialError:l.size>0}},enabled:r.length===e.length&&!!i&&e.length>0&&s&&o,staleTime:1/0}}function Z(e){if(e)return M([`zama.activityFeed.logs`,e.map(e=>({topics:[...e.topics],data:e.data,transactionHash:e.transactionHash,blockNumber:e.blockNumber,logIndex:e.logIndex}))])}function we(e,t,n){let r=t.userAddress,i=t.decrypt??!0,a=t.logs,o=t.logsKey??Z(a),s=n?.query?.enabled!==!1,c=F.activityFeed.scope(e.address,r,o,i);return{...j(n?.query??{}),queryKey:c,queryFn:async t=>{let[,{userAddress:n,decrypt:r}]=t.queryKey;if(!n)throw Error(`userAddress is required`);if(!a)throw Error(`logs are required`);let i=p(a,n);if(!r)return l(i);let o=f(i);return o.length===0?l(i):l(m(i,await e.decryptHandles(o,n)))},staleTime:1/0,enabled:!!(r&&a)&&s}}const Q=86400*1e3;function Te(e,t){let n=!!t.registryAddress&&t.query?.enabled!==!1,r=F.wrappersRegistry.tokenPairs(t.registryAddress??D);return{...j(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n}]=t.queryKey;return e.readContract(C(n))},staleTime:Q,enabled:n}}function Ee(e,t){let n=!!t.registryAddress&&!!t.tokenAddress&&t.query?.enabled!==!1,r=F.wrappersRegistry.confidentialTokenAddress(t.registryAddress??D,t.tokenAddress??D);return{...j(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,tokenAddress:r}]=t.queryKey;return e.readContract(re(n,r))},staleTime:Q,enabled:n}}function De(e,t){let n=!!t.registryAddress&&!!t.confidentialTokenAddress&&t.query?.enabled!==!1,r=F.wrappersRegistry.tokenAddress(t.registryAddress??D,t.confidentialTokenAddress??D);return{...j(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,confidentialTokenAddress:r}]=t.queryKey;return e.readContract(T(n,r))},staleTime:Q,enabled:n}}function Oe(e,t){let n=!!t.registryAddress&&t.query?.enabled!==!1,r=F.wrappersRegistry.tokenPairsLength(t.registryAddress??D);return{...j(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n}]=t.queryKey;return e.readContract(x(n))},staleTime:Q,enabled:n}}function ke(e,t){let n=!!t.registryAddress&&t.fromIndex!==void 0&&t.toIndex!==void 0&&t.query?.enabled!==!1,r=F.wrappersRegistry.tokenPairsSlice(t.registryAddress??D,String(t.fromIndex??0n),String(t.toIndex??0n));return{...j(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,fromIndex:r,toIndex:i}]=t.queryKey;return e.readContract(ee(n,BigInt(r),BigInt(i)))},staleTime:Q,enabled:n}}function Ae(e,t){let n=!!t.registryAddress&&t.index!==void 0&&t.query?.enabled!==!1,r=F.wrappersRegistry.tokenPair(t.registryAddress??D,String(t.index??0n));return{...j(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,index:r}]=t.queryKey;return e.readContract(te(n,BigInt(r)))},staleTime:Q,enabled:n}}function je(e,t){let n=!!t.registryAddress&&!!t.confidentialTokenAddress&&t.query?.enabled!==!1,r=F.wrappersRegistry.isConfidentialTokenValid(t.registryAddress??D,t.confidentialTokenAddress??D);return{...j(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,confidentialTokenAddress:r}]=t.queryKey;return e.readContract(ne(n,r))},staleTime:Q,enabled:n}}function Me(e,t){let n=t.page??1,r=t.pageSize??100,i=t.metadata??!1,a=!!t.registryAddress&&t.query?.enabled!==!1,o=F.wrappersRegistry.listPairs(t.registryAddress??D,n,r,i);return{...j(t.query??{}),queryKey:o,queryFn:async()=>e.listPairs({page:n,pageSize:r,metadata:i}),staleTime:e.ttlMs,enabled:a}}function Ne(e){return{mutationKey:[`zama.shield`,e.address],mutationFn:async({amount:t,fees:n,approvalStrategy:r,to:i,callbacks:a})=>e.shield(t,{fees:n,approvalStrategy:r,to:i,callbacks:a})}}function Pe(e){return{mutationKey:[`zama.shieldETH`,e.address],mutationFn:async({amount:t,value:n})=>e.shieldETH(t,n)}}function Fe(e){return{mutationKey:[`zama.confidentialTransfer`,e.address],mutationFn:async({to:t,amount:n,callbacks:r})=>e.confidentialTransfer(t,n,r)}}function Ie(e){return{mutationKey:[`zama.confidentialTransferFrom`,e.address],mutationFn:async({from:t,to:n,amount:r,callbacks:i})=>e.confidentialTransferFrom(t,n,r,i)}}function Le(e){return{mutationKey:[`zama.confidentialApprove`,e.address],mutationFn:async({spender:t,until:n})=>e.approve(t,n)}}function Re(e){return{mutationKey:[`zama.approveUnderlying`,e.address],mutationFn:async({amount:t})=>e.approveUnderlying(t)}}function ze(e){return{mutationKey:[`zama.unshield`,e.address],mutationFn:async({amount:t,callbacks:n})=>e.unshield(t,n)}}function Be(e){return{mutationKey:[`zama.unshieldAll`,e.address],mutationFn:async t=>e.unshieldAll(t?.callbacks)}}function Ve(e){return{mutationKey:[`zama.resumeUnshield`,e.address],mutationFn:async({unwrapTxHash:t,callbacks:n})=>e.resumeUnshield(t,n)}}function He(e){return{mutationKey:[`zama.unwrap`,e.address],mutationFn:async({amount:t})=>e.unwrap(t)}}function Ue(e){return{mutationKey:[`zama.unwrapAll`,e.address],mutationFn:async()=>e.unwrapAll()}}function We(e){return{mutationKey:[`zama.finalizeUnwrap`,e.address],mutationFn:async({burnAmountHandle:t})=>e.finalizeUnwrap(t)}}function Ge(e){return{mutationKey:[`zama.encrypt`],mutationFn:async t=>e.relayer.encrypt(t)}}function Ke(e){return{mutationKey:[`zama.generateKeypair`],mutationFn:async()=>e.relayer.generateKeypair()}}function qe(e){return{mutationKey:[`zama.createEIP712`],mutationFn:async({publicKey:t,contractAddresses:n,startTimestamp:r,durationDays:i})=>e.relayer.createEIP712(t,n,r,i)}}function Je(e){return{mutationKey:[`zama.createDelegatedUserDecryptEIP712`],mutationFn:async({publicKey:t,contractAddresses:n,delegatorAddress:r,startTimestamp:i,durationDays:a})=>e.relayer.createDelegatedUserDecryptEIP712(t,n,r,i,a)}}function $(e){return{mutationKey:[`zama.delegatedUserDecrypt`],mutationFn:async t=>e.relayer.delegatedUserDecrypt(t)}}function Ye(e){return{mutationKey:[`zama.publicDecrypt`],mutationFn:async t=>e.relayer.publicDecrypt(t),onSuccess:(e,t,n,r)=>{for(let[t,n]of Object.entries(e.clearValues))r.client.setQueryData(F.decryption.handle(t),n)}}}function Xe(e){return{mutationKey:[`zama.requestZKProofVerification`],mutationFn:async t=>e.relayer.requestZKProofVerification(t)}}function Ze(e){return{mutationKey:[`zama.allow`],mutationFn:t=>e.allow(...t)}}function Qe(e,t){return{...j(t.query??{}),queryKey:F.isAllowed.scope(t.account),queryFn:()=>e.isAllowed(),staleTime:3e4,enabled:t.query?.enabled!==!1}}function $e(e){return{mutationKey:[`zama.revoke`],mutationFn:t=>e.revoke(...t)}}function et(e){return{mutationKey:[`zama.revokeSession`],mutationFn:()=>e.revokeSession()}}function tt(e){return{mutationKey:[`zama.delegateDecryption`,e.address],mutationFn:async({delegateAddress:t,expirationDate:n})=>e.delegateDecryption({delegateAddress:t,expirationDate:n})}}function nt(e,t){return{mutationKey:[`zama.userDecrypt`],mutationFn:async({handles:n})=>{let r=[...new Set(n.map(e=>e.contractAddress))],i=await e.credentials.allow(...r);t?.onCredentialsReady?.();let a=await e.signer.getAddress(),o={},s=new Map;for(let e of n){let t=s.get(e.contractAddress)??[];t.push(e.handle),s.set(e.contractAddress,t)}for(let[t,n]of s){let r=await e.relayer.userDecrypt({handles:n,contractAddress:t,signedContractAddresses:i.contractAddresses,privateKey:i.privateKey,publicKey:i.publicKey,signature:i.signature,signerAddress:a,startTimestamp:i.startTimestamp,durationDays:i.durationDays});Object.assign(o,r)}return t?.onDecrypted?.(o),o},onSuccess:(e,t,n,r)=>{for(let[t,n]of Object.entries(e))r.client.setQueryData(F.decryption.handle(t),n)}}}function rt(e){return{mutationKey:[`zama.decryptBalanceAs`,e.address],mutationFn:async({delegatorAddress:t,owner:n})=>e.decryptBalanceAs({delegatorAddress:t,owner:n})}}function it(e){return{mutationKey:[`zama.batchDecryptBalancesAs`,...e.map(e=>e.address)],mutationFn:async t=>h.batchDecryptBalancesAs(e,t)}}function at(e){return{mutationKey:[`zama.revokeDelegation`,e.address],mutationFn:async({delegateAddress:t})=>e.revokeDelegation({delegateAddress:t})}}function ot(e,t){return{...j(t.query??{}),queryKey:F.delegationStatus.scope(t.tokenAddress,t.delegatorAddress,t.delegateAddress),queryFn:async t=>{let[,{tokenAddress:n,delegatorAddress:r,delegateAddress:i}]=t.queryKey;_(n,`delegationStatusQueryOptions: tokenAddress`),_(r,`delegationStatusQueryOptions: delegatorAddress`),_(i,`delegationStatusQueryOptions: delegateAddress`);let a=await e.relayer.getAclAddress(),o=await e.signer.readContract(u(a,r,i,n)),s;return s=o===0n?!1:o===d?!0:o>await e.signer.getBlockTimestamp(),{isDelegated:s,expiryTimestamp:o}},enabled:!!(t.tokenAddress&&t.delegatorAddress&&t.delegateAddress)&&t.query?.enabled!==!1}}export{A as ZERO_HANDLE,r as ZamaSDKEvents,we as activityFeedQueryOptions,Ze as allowMutationOptions,Re as approveUnderlyingMutationOptions,it as batchDecryptBalancesAsMutationOptions,ge as batchTransferFeeQueryOptions,Le as confidentialApproveMutationOptions,xe as confidentialBalanceQueryOptions,Ce as confidentialBalancesQueryOptions,be as confidentialHandleQueryOptions,Se as confidentialHandlesQueryOptions,pe as confidentialIsApprovedQueryOptions,Ee as confidentialTokenAddressQueryOptions,Ie as confidentialTransferFromMutationOptions,Fe as confidentialTransferMutationOptions,Je as createDelegatedUserDecryptEIP712MutationOptions,qe as createEIP712MutationOptions,rt as decryptBalanceAsMutationOptions,tt as delegateDecryptionMutationOptions,$ as delegatedUserDecryptMutationOptions,ot as delegationStatusQueryOptions,Z as deriveActivityFeedLogsKey,Ge as encryptMutationOptions,_e as feeRecipientQueryOptions,j as filterQueryOptions,We as finalizeUnwrapMutationOptions,Ke as generateKeypairMutationOptions,M as hashFn,U as invalidateAfterApprove,H as invalidateAfterApproveUnderlying,z as invalidateAfterShield,V as invalidateAfterTransfer,B as invalidateAfterUnshield,L as invalidateAfterUnwrap,R as invalidateBalanceQueries,K as invalidateWagmiBalanceQueries,q as invalidateWalletLifecycleQueries,Qe as isAllowedQueryOptions,ce as isConfidentialQueryOptions,je as isConfidentialTokenValidQueryOptions,le as isWrapperQueryOptions,Me as listPairsQueryOptions,Ye as publicDecryptMutationOptions,ve as publicKeyQueryOptions,ye as publicParamsQueryOptions,Xe as requestZKProofVerificationMutationOptions,Ve as resumeUnshieldMutationOptions,at as revokeDelegationMutationOptions,$e as revokeMutationOptions,et as revokeSessionMutationOptions,Pe as shieldETHMutationOptions,me as shieldFeeQueryOptions,Ne as shieldMutationOptions,oe as signerAddressQueryOptions,De as tokenAddressQueryOptions,se as tokenMetadataQueryOptions,Ae as tokenPairQueryOptions,Oe as tokenPairsLengthQueryOptions,Te as tokenPairsQueryOptions,ke as tokenPairsSliceQueryOptions,ue as totalSupplyQueryOptions,fe as underlyingAllowanceQueryOptions,Be as unshieldAllMutationOptions,he as unshieldFeeQueryOptions,ze as unshieldMutationOptions,Ue as unwrapAllMutationOptions,He as unwrapMutationOptions,nt as userDecryptMutationOptions,de as wrapperDiscoveryQueryOptions,F as zamaQueryKeys};
1
+ import{A as e,F as t,G as n,H as r,I as i,L as a,M as o,R as s,W as c,i as l,k as u,n as d,r as f,t as p,w as m,z as h}from"../activity-b2RsqKHW.js";import{t as g}from"../encryption-CmIPBcfP.js";import{i as _}from"../assertions-Dty7Quc0.js";import{r as v}from"../memory-storage-B4_heQa5.js";import{C as y,D as b,_ as x,a as S,d as C,i as w,m as T,n as E,o as ee,r as te,s as ne,t as re,u as ie}from"../wrappers-registry-DqPr_JG2.js";import{getAddress as D,zeroAddress as O}from"viem";function k(e){if(!A(e))return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return!(!A(n)||!n.hasOwnProperty(`isPrototypeOf`))}function A(e){return Object.prototype.toString.call(e)===`[object Object]`}const j=`0x0000000000000000000000000000000000000000000000000000000000000000`;function M(e){let{gcTime:t,staleTime:n,enabled:r,select:i,refetchInterval:a,refetchOnMount:o,refetchOnWindowFocus:s,refetchOnReconnect:c,retry:l,retryDelay:u,retryOnMount:d,queryFn:f,queryKey:p,queryKeyHashFn:m,initialData:h,initialDataUpdatedAt:g,placeholderData:_,structuralSharing:v,throwOnError:y,meta:b,query:x,pollingInterval:S,...C}=e;return C}function N(e){return JSON.stringify(e,(e,t)=>k(t)?Object.keys(t).toSorted().reduce((e,n)=>(e[n]=t[n],e),{}):typeof t==`bigint`?t.toString():t)}const P=e=>e.map(e=>D(e)),F=e=>e===void 0?void 0:D(e),I={signerAddress:{all:[`zama.signerAddress`],scope:e=>[`zama.signerAddress`,{scope:e}],token:e=>[`zama.signerAddress`,{tokenAddress:D(e)}]},confidentialHandle:{all:[`zama.confidentialHandle`],token:e=>[`zama.confidentialHandle`,{tokenAddress:D(e)}],owner:(e,t)=>[`zama.confidentialHandle`,{tokenAddress:D(e),...t?{owner:D(t)}:{}}]},confidentialBalance:{all:[`zama.confidentialBalance`],token:e=>[`zama.confidentialBalance`,{tokenAddress:D(e)}],owner:(e,t,n)=>[`zama.confidentialBalance`,{tokenAddress:D(e),...t?{owner:D(t)}:{},...n===void 0?{}:{handle:n}}]},confidentialHandles:{all:[`zama.confidentialHandles`],tokens:(e,t)=>[`zama.confidentialHandles`,{tokenAddresses:P(e),...t?{owner:D(t)}:{}}]},confidentialBalances:{all:[`zama.confidentialBalances`],tokens:(e,t,n)=>[`zama.confidentialBalances`,{tokenAddresses:P(e),...t?{owner:D(t)}:{},...n===void 0?{}:{handles:n}}]},tokenMetadata:{all:[`zama.tokenMetadata`],token:e=>[`zama.tokenMetadata`,{tokenAddress:D(e)}]},isConfidential:{all:[`zama.isConfidential`],token:e=>[`zama.isConfidential`,{tokenAddress:D(e)}]},isWrapper:{all:[`zama.isWrapper`],token:e=>[`zama.isWrapper`,{tokenAddress:D(e)}]},wrapperDiscovery:{all:[`zama.wrapperDiscovery`],token:(e,t,n)=>{let r=F(e),i=F(t),a=F(n);return[`zama.wrapperDiscovery`,{...r?{tokenAddress:r}:{},...i?{erc20Address:i}:{},...a?{registryAddress:a}:{}}]}},underlyingAllowance:{all:[`zama.underlyingAllowance`],token:e=>[`zama.underlyingAllowance`,{tokenAddress:D(e)}],scope:(e,t,n)=>[`zama.underlyingAllowance`,{tokenAddress:D(e),...t?{owner:D(t)}:{},...n?{wrapperAddress:D(n)}:{}}]},confidentialIsApproved:{all:[`zama.confidentialIsApproved`],token:e=>{let t=F(e);return[`zama.confidentialIsApproved`,t?{tokenAddress:t}:{}]},scope:(e,t,n)=>{let r=F(e),i=F(t),a=F(n);return[`zama.confidentialIsApproved`,{...r?{tokenAddress:r}:{},...i?{holder:i}:{},...a?{spender:a}:{}}]}},totalSupply:{all:[`zama.totalSupply`],token:e=>[`zama.totalSupply`,{tokenAddress:D(e)}]},activityFeed:{all:[`zama.activityFeed`],token:e=>[`zama.activityFeed`,{tokenAddress:D(e)}],scope:(e,t,n,r)=>[`zama.activityFeed`,{tokenAddress:D(e),...t?{userAddress:D(t)}:{},...n?{logsKey:n}:{},...r===void 0?{}:{decrypt:r}}]},fees:{all:[`zama.fees`],shieldFee:(e,t,n,r)=>[`zama.fees`,{type:`shield`,...e?{feeManagerAddress:D(e)}:{},...t===void 0?{}:{amount:t},...n?{from:D(n)}:{},...r?{to:D(r)}:{}}],unshieldFee:(e,t,n,r)=>[`zama.fees`,{type:`unshield`,...e?{feeManagerAddress:D(e)}:{},...t===void 0?{}:{amount:t},...n?{from:D(n)}:{},...r?{to:D(r)}:{}}],batchTransferFee:e=>[`zama.fees`,{type:`batchTransfer`,...e?{feeManagerAddress:D(e)}:{}}],feeRecipient:e=>[`zama.fees`,{type:`feeRecipient`,...e?{feeManagerAddress:D(e)}:{}}]},isAllowed:{all:[`zama.isAllowed`],scope:e=>[`zama.isAllowed`,{account:D(e)}]},publicKey:{all:[`zama.publicKey`]},publicParams:{all:[`zama.publicParams`],bits:e=>[`zama.publicParams`,{bits:e}]},delegationStatus:{all:[`zama.delegationStatus`],token:e=>{let t=F(e);return[`zama.delegationStatus`,t?{tokenAddress:t}:{}]},scope:(e,t,n)=>{let r=F(e),i=F(t),a=F(n);return[`zama.delegationStatus`,{...r?{tokenAddress:r}:{},...i?{delegatorAddress:i}:{},...a?{delegateAddress:a}:{}}]}},decryption:{all:[`zama.decryption`],handle:(e,t)=>[`zama.decryption`,{handle:e,...t===void 0?{}:{contractAddress:D(t)}}]},wrappersRegistry:{all:[`zama.wrappersRegistry`],chainId:()=>[`zama.wrappersRegistry`,{type:`chainId`}],tokenPairs:e=>[`zama.wrappersRegistry`,{type:`tokenPairs`,registryAddress:D(e)}],confidentialTokenAddress:(e,t)=>[`zama.wrappersRegistry`,{type:`confidentialTokenAddress`,registryAddress:D(e),tokenAddress:D(t)}],tokenAddress:(e,t)=>[`zama.wrappersRegistry`,{type:`tokenAddress`,registryAddress:D(e),confidentialTokenAddress:D(t)}],tokenPairsLength:e=>[`zama.wrappersRegistry`,{type:`tokenPairsLength`,registryAddress:D(e)}],tokenPairsSlice:(e,t,n)=>[`zama.wrappersRegistry`,{type:`tokenPairsSlice`,registryAddress:D(e),fromIndex:t,toIndex:n}],tokenPair:(e,t)=>[`zama.wrappersRegistry`,{type:`tokenPair`,registryAddress:D(e),index:t}],isConfidentialTokenValid:(e,t)=>[`zama.wrappersRegistry`,{type:`isConfidentialTokenValid`,registryAddress:D(e),confidentialTokenAddress:D(t)}],listPairs:(e,t,n,r)=>[`zama.wrappersRegistry`,{type:`listPairs`,registryAddress:D(e),page:t,pageSize:n,metadata:r}]}};function L(e,t){e.invalidateQueries({queryKey:I.underlyingAllowance.token(t)})}function R(e,t){z(e,t),L(e,t),q(e),e.invalidateQueries({queryKey:I.activityFeed.token(t)})}function z(e,t){e.invalidateQueries({queryKey:I.confidentialHandle.token(t)}),e.invalidateQueries({queryKey:I.confidentialHandles.all}),e.invalidateQueries({queryKey:I.confidentialBalance.token(t)}),e.invalidateQueries({queryKey:I.confidentialBalances.all})}function B(e,t){z(e,t),L(e,t),q(e),e.invalidateQueries({queryKey:I.activityFeed.token(t)})}function V(e,t){z(e,t),L(e,t),q(e),e.invalidateQueries({queryKey:I.activityFeed.token(t)})}function H(e,t){z(e,t),e.invalidateQueries({queryKey:I.activityFeed.token(t)})}function U(e,t){L(e,t)}function W(e,t){e.invalidateQueries({queryKey:I.confidentialIsApproved.token(t)}),e.invalidateQueries({queryKey:I.activityFeed.token(t)})}function G(e){return Array.isArray(e.queryKey)&&typeof e.queryKey[0]==`string`?e.queryKey[0].startsWith(`zama.`):!1}function K(e){return Array.isArray(e.queryKey)&&e.queryKey.some(e=>typeof e!=`object`||!e||!(`functionName`in e)?!1:e.functionName===`balanceOf`)}function q(e){e.invalidateQueries({predicate:K})}function J(e){e.removeQueries({queryKey:I.signerAddress.all}),e.removeQueries({queryKey:I.decryption.all}),e.invalidateQueries({predicate:G}),q(e)}const Y=new WeakMap;let ae=1;function oe(e){let t=Y.get(e);if(t!==void 0)return t;let n=ae++;return Y.set(e,n),n}function se(e,t){return{...M(t?.query??{}),queryKey:I.signerAddress.scope(oe(e)),queryFn:async()=>e.getAddress(),staleTime:3e4,enabled:t?.query?.enabled!==!1}}function ce(e,t,i){let a=I.tokenMetadata.token(t);return{...M(i?.query??{}),queryKey:a,queryFn:async t=>{let[,{tokenAddress:i}]=t.queryKey,[a,o,s]=await Promise.all([e.readContract(c(i)),e.readContract(n(i)),e.readContract(r(i))]);return{name:a,symbol:o,decimals:s}},staleTime:1/0,enabled:i?.query?.enabled!==!1}}function le(e,t,n){let r=I.isConfidential.token(t);return{...M(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{tokenAddress:n}]=t.queryKey;try{return await e.readContract(ie(n))}catch(e){if(v(e))return!1;throw e}},staleTime:1/0,enabled:n?.query?.enabled!==!1}}function ue(e,t,n){let r=I.isWrapper.token(t);return{...M(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{tokenAddress:n}]=t.queryKey;try{return await e.readContract(C(n))}catch(e){if(v(e))return!1;throw e}},staleTime:1/0,enabled:n?.query?.enabled!==!1}}function de(e,t,n){let r=I.totalSupply.token(t);return{...M(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{tokenAddress:n}]=t.queryKey;return e.readContract(b(n))},staleTime:3e4,enabled:n?.query?.enabled!==!1}}function fe(e,t){let n=I.wrapperDiscovery.token(t.tokenAddress,t.erc20Address,t.registryAddress);return{...M(t.query??{}),queryKey:n,queryFn:async()=>{if(!t.erc20Address)throw Error(`erc20Address is required for wrapper discovery query`);let n=await e.getConfidentialToken(t.erc20Address);return n?n.confidentialTokenAddress:null},staleTime:1/0,enabled:!!(t.tokenAddress&&t.erc20Address&&t.registryAddress)&&t.query?.enabled!==!1}}function pe(e,t,n){let r=n.owner,i=n.wrapperAddress,a=n.query?.enabled!==!1,o=I.underlyingAllowance.scope(t,r,i);return{...M(n.query??{}),queryKey:o,queryFn:async t=>{let[,{owner:n,wrapperAddress:r}]=t.queryKey;_(n,`underlyingAllowanceQueryOptions: owner`),_(r,`underlyingAllowanceQueryOptions: wrapperAddress`);let i=await e.readContract(T(r));return e.readContract(h(i,n,r))},staleTime:3e4,enabled:!!(r&&i)&&a}}function me(e,t,n){let r=n.holder,i=n.spender,a=n.query?.enabled!==!1,o=I.confidentialIsApproved.scope(t,r,i);return{...M(n.query??{}),queryKey:o,queryFn:async t=>{let[,{tokenAddress:n,holder:r,spender:i}]=t.queryKey;return _(n,`confidentialIsApprovedQueryOptions: tokenAddress`),_(r,`confidentialIsApprovedQueryOptions: holder`),_(i,`confidentialIsApprovedQueryOptions: spender`),e.readContract(y(n,r,i))},staleTime:3e4,enabled:!!(t&&r&&i)&&a}}function X(e){return e===void 0?void 0:BigInt(e)}function he(e,t){let n=t.amount?.toString(),r=t.feeManagerAddress,i=t.from,a=t.to,o=t.query?.enabled!==!1,c=I.fees.shieldFee(r,n,i,a);return{...M(t.query??{}),queryKey:c,queryFn:async t=>{let[,n]=t.queryKey,r=X(n.amount);return _(n.feeManagerAddress,`shieldFeeQueryOptions: feeManagerAddress`),_(r,`shieldFeeQueryOptions: amount`),_(n.from,`shieldFeeQueryOptions: from`),_(n.to,`shieldFeeQueryOptions: to`),e.readContract(s(n.feeManagerAddress,r,n.from,n.to))},staleTime:3e4,enabled:!!(r&&n!==void 0&&i&&a)&&o}}function ge(e,t){let n=t.amount?.toString(),r=t.feeManagerAddress,i=t.from,o=t.to,s=t.query?.enabled!==!1,c=I.fees.unshieldFee(r,n,i,o);return{...M(t.query??{}),queryKey:c,queryFn:async t=>{let[,n]=t.queryKey,r=X(n.amount);return _(n.feeManagerAddress,`unshieldFeeQueryOptions: feeManagerAddress`),_(r,`unshieldFeeQueryOptions: amount`),_(n.from,`unshieldFeeQueryOptions: from`),_(n.to,`unshieldFeeQueryOptions: to`),e.readContract(a(n.feeManagerAddress,r,n.from,n.to))},staleTime:3e4,enabled:!!(r&&n!==void 0&&i&&o)&&s}}function _e(e,n,r){let i=r?.query?.enabled!==!1,a=I.fees.batchTransferFee(n);return{...M(r?.query??{}),queryKey:a,queryFn:async n=>{let[,{feeManagerAddress:r}]=n.queryKey;return _(r,`batchTransferFeeQueryOptions: feeManagerAddress`),e.readContract(t(r))},staleTime:3e4,enabled:!!n&&i}}function ve(e,t,n){let r=n?.query?.enabled!==!1,a=I.fees.feeRecipient(t);return{...M(n?.query??{}),queryKey:a,queryFn:async t=>{let[,{feeManagerAddress:n}]=t.queryKey;return _(n,`feeRecipientQueryOptions: feeManagerAddress`),e.readContract(i(n))},staleTime:3e4,enabled:!!t&&r}}function ye(e,t){let n=I.publicKey.all;return{...M(t?.query??{}),queryKey:n,queryFn:async()=>e.relayer.getPublicKey(),staleTime:1/0,enabled:t?.query?.enabled!==!1}}function be(e,t,n){let r=I.publicParams.bits(t);return{...M(n?.query??{}),queryKey:r,queryFn:async t=>{let[,{bits:n}]=t.queryKey;return e.relayer.getPublicParams(n)},staleTime:1/0,enabled:n?.query?.enabled!==!1}}function xe(e,t,n){let r=n?.owner,i=n?.query?.enabled!==!1,a=I.confidentialHandle.owner(t,r);return{...M(n?.query??{}),queryKey:a,queryFn:async t=>{let[,{tokenAddress:n,owner:r}]=t.queryKey;return _(r,`confidentialHandleQueryOptions: owner`),await e.readContract(x(n,r))},enabled:!!r&&i,refetchInterval:n?.pollingInterval??1e4}}function Se(e,t){let n=t?.owner,r=t?.handle,i=t?.query?.enabled!==!1,a=I.confidentialBalance.owner(e.address,n,r);return{...M(t?.query??{}),queryKey:a,queryFn:async t=>{let[,{owner:n,handle:r}]=t.queryKey;return _(n,`confidentialBalanceQueryOptions: owner`),_(r,`confidentialBalanceQueryOptions: handle`),e.decryptBalance(r,n)},enabled:!!(n&&r)&&i,staleTime:1/0}}function Ce(e,t,n){let r=n?.owner,i=n?.query?.enabled!==!1,a=I.confidentialHandles.tokens(t,r);return{...M(n?.query??{}),queryKey:a,queryFn:async t=>{let[,{tokenAddresses:n,owner:r}]=t.queryKey;return _(r,`confidentialHandlesQueryOptions: owner`),Promise.all(n.map(async t=>await e.readContract(x(t,r))))},enabled:!!(r&&t.length>0)&&i,refetchInterval:n?.pollingInterval??1e4}}function we(e,t){let n=e.map(e=>e.address),r=t?.resultAddresses??n,i=t?.owner,a=t?.handles,o=t?.query?.enabled!==!1,s=Array.isArray(a)&&a.length===e.length&&a.every(e=>!!e),c=I.confidentialBalances.tokens(n,i,a);return{...M(t?.query??{}),queryKey:c,queryFn:async n=>{let[,{owner:i,handles:a}]=n.queryKey;_(i,`confidentialBalancesQueryOptions: owner`),_(a,`confidentialBalancesQueryOptions: handles`);let o=new Map,s=await m.batchDecryptBalances(e,{owner:i,handles:a,maxConcurrency:t?.maxConcurrency,onError:(e,t)=>(o.set(t,e),0n)}),c=new Map,l=new Map;for(let t=0;t<e.length;t++){let n=e[t].address,i=r[t],a=o.get(n);if(a)l.set(i,a);else{let e=s.get(n);e!==void 0&&c.set(i,e)}}if(l.size===e.length&&e.length>0)throw l.values().next().value??new g(`All token balance decryptions failed`);return{balances:c,errors:l,isPartialError:l.size>0}},enabled:r.length===e.length&&!!i&&e.length>0&&s&&o,staleTime:1/0}}function Z(e){if(e)return N([`zama.activityFeed.logs`,e.map(e=>({topics:[...e.topics],data:e.data,transactionHash:e.transactionHash,blockNumber:e.blockNumber,logIndex:e.logIndex}))])}function Te(e,t,n){let r=t.userAddress,i=t.decrypt??!0,a=t.logs,o=t.logsKey??Z(a),s=n?.query?.enabled!==!1,c=I.activityFeed.scope(e.address,r,o,i);return{...M(n?.query??{}),queryKey:c,queryFn:async t=>{let[,{userAddress:n,decrypt:r}]=t.queryKey;_(n,`activityFeedQueryOptions: userAddress`),_(a,`activityFeedQueryOptions: logs`);let i=f(a,n);if(!r)return l(i);let o=d(i);return o.length===0?l(i):l(p(i,await e.decryptHandles(o,n)))},staleTime:1/0,enabled:!!(r&&a)&&s}}const Q=86400*1e3;function Ee(e,t){let n=!!t.registryAddress&&t.query?.enabled!==!1,r=I.wrappersRegistry.tokenPairs(t.registryAddress??O);return{...M(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n}]=t.queryKey;return e.readContract(w(n))},staleTime:Q,enabled:n}}function De(e,t){let n=!!t.registryAddress&&!!t.tokenAddress&&t.query?.enabled!==!1,r=I.wrappersRegistry.confidentialTokenAddress(t.registryAddress??O,t.tokenAddress??O);return{...M(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,tokenAddress:r}]=t.queryKey;return e.readContract(re(n,r))},staleTime:Q,enabled:n}}function Oe(e,t){let n=!!t.registryAddress&&!!t.confidentialTokenAddress&&t.query?.enabled!==!1,r=I.wrappersRegistry.tokenAddress(t.registryAddress??O,t.confidentialTokenAddress??O);return{...M(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,confidentialTokenAddress:r}]=t.queryKey;return e.readContract(E(n,r))},staleTime:Q,enabled:n}}function ke(e,t){let n=!!t.registryAddress&&t.query?.enabled!==!1,r=I.wrappersRegistry.tokenPairsLength(t.registryAddress??O);return{...M(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n}]=t.queryKey;return e.readContract(S(n))},staleTime:Q,enabled:n}}function Ae(e,t){let n=!!t.registryAddress&&t.fromIndex!==void 0&&t.toIndex!==void 0&&t.query?.enabled!==!1,r=I.wrappersRegistry.tokenPairsSlice(t.registryAddress??O,String(t.fromIndex??0n),String(t.toIndex??0n));return{...M(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,fromIndex:r,toIndex:i}]=t.queryKey;return e.readContract(ee(n,BigInt(r),BigInt(i)))},staleTime:Q,enabled:n}}function je(e,t){let n=!!t.registryAddress&&t.index!==void 0&&t.query?.enabled!==!1,r=I.wrappersRegistry.tokenPair(t.registryAddress??O,String(t.index??0n));return{...M(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,index:r}]=t.queryKey;return e.readContract(te(n,BigInt(r)))},staleTime:Q,enabled:n}}function Me(e,t){let n=!!t.registryAddress&&!!t.confidentialTokenAddress&&t.query?.enabled!==!1,r=I.wrappersRegistry.isConfidentialTokenValid(t.registryAddress??O,t.confidentialTokenAddress??O);return{...M(t.query??{}),queryKey:r,queryFn:async t=>{let[,{registryAddress:n,confidentialTokenAddress:r}]=t.queryKey;return e.readContract(ne(n,r))},staleTime:Q,enabled:n}}function Ne(e,t){let n=t.page??1,r=t.pageSize??100,i=t.metadata??!1,a=!!t.registryAddress&&t.query?.enabled!==!1,o=I.wrappersRegistry.listPairs(t.registryAddress??O,n,r,i);return{...M(t.query??{}),queryKey:o,queryFn:async()=>e.listPairs({page:n,pageSize:r,metadata:i}),staleTime:e.ttlMs,enabled:a}}function Pe(e){return{mutationKey:[`zama.shield`,e.address],mutationFn:async({amount:t,...n})=>e.shield(t,n)}}function Fe(e){return{mutationKey:[`zama.shieldETH`,e.address],mutationFn:async({amount:t,value:n})=>e.shieldETH(t,n)}}function Ie(e){return{mutationKey:[`zama.confidentialTransfer`,e.address],mutationFn:async({to:t,amount:n,...r})=>e.confidentialTransfer(t,n,r)}}function Le(e){return{mutationKey:[`zama.confidentialTransferFrom`,e.address],mutationFn:async({from:t,to:n,amount:r,callbacks:i})=>e.confidentialTransferFrom(t,n,r,i)}}function Re(e){return{mutationKey:[`zama.confidentialApprove`,e.address],mutationFn:async({spender:t,until:n})=>e.approve(t,n)}}function ze(e){return{mutationKey:[`zama.approveUnderlying`,e.address],mutationFn:async({amount:t})=>e.approveUnderlying(t)}}function Be(e){return{mutationKey:[`zama.unshield`,e.address],mutationFn:async({amount:t,...n})=>e.unshield(t,n)}}function Ve(e){return{mutationKey:[`zama.unshieldAll`,e.address],mutationFn:async t=>e.unshieldAll(t||void 0)}}function He(e){return{mutationKey:[`zama.resumeUnshield`,e.address],mutationFn:async({unwrapTxHash:t,...n})=>e.resumeUnshield(t,n)}}function Ue(e){return{mutationKey:[`zama.unwrap`,e.address],mutationFn:async({amount:t})=>e.unwrap(t)}}function We(e){return{mutationKey:[`zama.unwrapAll`,e.address],mutationFn:async()=>e.unwrapAll()}}function Ge(e){return{mutationKey:[`zama.finalizeUnwrap`,e.address],mutationFn:async({burnAmountHandle:t})=>e.finalizeUnwrap(t)}}function Ke(e){return{mutationKey:[`zama.encrypt`],mutationFn:async t=>e.relayer.encrypt(t)}}function qe(e){return{mutationKey:[`zama.generateKeypair`],mutationFn:async()=>e.relayer.generateKeypair()}}function Je(e){return{mutationKey:[`zama.createEIP712`],mutationFn:async({publicKey:t,contractAddresses:n,startTimestamp:r,durationDays:i})=>e.relayer.createEIP712(t,n,r,i)}}function $(e){return{mutationKey:[`zama.createDelegatedUserDecryptEIP712`],mutationFn:async({publicKey:t,contractAddresses:n,delegatorAddress:r,startTimestamp:i,durationDays:a})=>e.relayer.createDelegatedUserDecryptEIP712(t,n,r,i,a)}}function Ye(e){return{mutationKey:[`zama.delegatedUserDecrypt`],mutationFn:async t=>e.relayer.delegatedUserDecrypt(t)}}function Xe(e){return{mutationKey:[`zama.publicDecrypt`],mutationFn:async t=>e.relayer.publicDecrypt(t),onSuccess:(e,t,n,r)=>{for(let[t,n]of Object.entries(e.clearValues))r.client.setQueryData(I.decryption.handle(t),n)}}}function Ze(e){return{mutationKey:[`zama.requestZKProofVerification`],mutationFn:async t=>e.relayer.requestZKProofVerification(t)}}function Qe(e){return{mutationKey:[`zama.allow`],mutationFn:t=>e.allow(...t)}}function $e(e,t){return{...M(t.query??{}),queryKey:I.isAllowed.scope(t.account),queryFn:()=>e.isAllowed(),staleTime:3e4,enabled:t.query?.enabled!==!1}}function et(e){return{mutationKey:[`zama.revoke`],mutationFn:t=>e.revoke(...t)}}function tt(e){return{mutationKey:[`zama.revokeSession`],mutationFn:()=>e.revokeSession()}}function nt(e){return{mutationKey:[`zama.delegateDecryption`,e.address],mutationFn:async({delegateAddress:t,expirationDate:n})=>e.delegateDecryption({delegateAddress:t,expirationDate:n})}}function rt(e,t){return{mutationKey:[`zama.userDecrypt`],mutationFn:async({handles:n})=>{let r=[...new Set(n.map(e=>e.contractAddress))],i=await e.credentials.allow(...r);t?.onCredentialsReady?.();let a=await e.signer.getAddress(),o={},s=new Map;for(let e of n){let t=s.get(e.contractAddress)??[];t.push(e.handle),s.set(e.contractAddress,t)}for(let[t,n]of s){let r=await e.relayer.userDecrypt({handles:n,contractAddress:t,signedContractAddresses:i.contractAddresses,privateKey:i.privateKey,publicKey:i.publicKey,signature:i.signature,signerAddress:a,startTimestamp:i.startTimestamp,durationDays:i.durationDays});Object.assign(o,r)}return t?.onDecrypted?.(o),o},onSuccess:(e,t,n,r)=>{for(let[t,n]of Object.entries(e))r.client.setQueryData(I.decryption.handle(t),n)}}}function it(e){return{mutationKey:[`zama.decryptBalanceAs`,e.address],mutationFn:async({delegatorAddress:t,owner:n})=>e.decryptBalanceAs({delegatorAddress:t,owner:n})}}function at(e){return{mutationKey:[`zama.batchDecryptBalancesAs`,...e.map(e=>e.address)],mutationFn:async t=>m.batchDecryptBalancesAs(e,t)}}function ot(e){return{mutationKey:[`zama.revokeDelegation`,e.address],mutationFn:async({delegateAddress:t})=>e.revokeDelegation({delegateAddress:t})}}function st(t,n){return{...M(n.query??{}),queryKey:I.delegationStatus.scope(n.tokenAddress,n.delegatorAddress,n.delegateAddress),queryFn:async n=>{let[,{tokenAddress:r,delegatorAddress:i,delegateAddress:a}]=n.queryKey;_(r,`delegationStatusQueryOptions: tokenAddress`),_(i,`delegationStatusQueryOptions: delegatorAddress`),_(a,`delegationStatusQueryOptions: delegateAddress`);let s=await t.relayer.getAclAddress(),c=await t.signer.readContract(o(s,i,a,r)),l;return l=c===0n?!1:c===e?!0:c>await t.signer.getBlockTimestamp(),{isDelegated:l,expiryTimestamp:c}},enabled:!!(n.tokenAddress&&n.delegatorAddress&&n.delegateAddress)&&n.query?.enabled!==!1}}export{j as ZERO_HANDLE,u as ZamaSDKEvents,Te as activityFeedQueryOptions,Qe as allowMutationOptions,ze as approveUnderlyingMutationOptions,at as batchDecryptBalancesAsMutationOptions,_e as batchTransferFeeQueryOptions,Re as confidentialApproveMutationOptions,Se as confidentialBalanceQueryOptions,we as confidentialBalancesQueryOptions,xe as confidentialHandleQueryOptions,Ce as confidentialHandlesQueryOptions,me as confidentialIsApprovedQueryOptions,De as confidentialTokenAddressQueryOptions,Le as confidentialTransferFromMutationOptions,Ie as confidentialTransferMutationOptions,$ as createDelegatedUserDecryptEIP712MutationOptions,Je as createEIP712MutationOptions,it as decryptBalanceAsMutationOptions,nt as delegateDecryptionMutationOptions,Ye as delegatedUserDecryptMutationOptions,st as delegationStatusQueryOptions,Z as deriveActivityFeedLogsKey,Ke as encryptMutationOptions,ve as feeRecipientQueryOptions,M as filterQueryOptions,Ge as finalizeUnwrapMutationOptions,qe as generateKeypairMutationOptions,N as hashFn,W as invalidateAfterApprove,U as invalidateAfterApproveUnderlying,B as invalidateAfterShield,H as invalidateAfterTransfer,V as invalidateAfterUnshield,R as invalidateAfterUnwrap,z as invalidateBalanceQueries,q as invalidateWagmiBalanceQueries,J as invalidateWalletLifecycleQueries,$e as isAllowedQueryOptions,le as isConfidentialQueryOptions,Me as isConfidentialTokenValidQueryOptions,ue as isWrapperQueryOptions,Ne as listPairsQueryOptions,Xe as publicDecryptMutationOptions,ye as publicKeyQueryOptions,be as publicParamsQueryOptions,Ze as requestZKProofVerificationMutationOptions,He as resumeUnshieldMutationOptions,ot as revokeDelegationMutationOptions,et as revokeMutationOptions,tt as revokeSessionMutationOptions,Fe as shieldETHMutationOptions,he as shieldFeeQueryOptions,Pe as shieldMutationOptions,se as signerAddressQueryOptions,Oe as tokenAddressQueryOptions,ce as tokenMetadataQueryOptions,je as tokenPairQueryOptions,ke as tokenPairsLengthQueryOptions,Ee as tokenPairsQueryOptions,Ae as tokenPairsSliceQueryOptions,de as totalSupplyQueryOptions,pe as underlyingAllowanceQueryOptions,Ve as unshieldAllMutationOptions,ge as unshieldFeeQueryOptions,Be as unshieldMutationOptions,We as unwrapAllMutationOptions,Ue as unwrapMutationOptions,rt as userDecryptMutationOptions,fe as wrapperDiscoveryQueryOptions,I as zamaQueryKeys};
2
2
  //# sourceMappingURL=index.js.map