@miden-sdk/miden-sdk 0.13.1 → 0.14.0-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +104 -43
- package/dist/{Cargo-9005c576.js → Cargo-D064yzd4.js} +9285 -11085
- package/dist/Cargo-D064yzd4.js.map +1 -0
- package/dist/api-types.d.ts +521 -0
- package/dist/assets/miden_client_web.wasm +0 -0
- package/dist/crates/miden_client_web.d.ts +3658 -3308
- package/dist/docs-entry.d.ts +36 -0
- package/dist/index.d.ts +27 -109
- package/dist/index.js +1302 -106
- package/dist/index.js.map +1 -1
- package/dist/wasm.js +1 -1
- package/dist/wasm.js.map +1 -1
- package/dist/workers/{Cargo-9005c576-9005c576.js → Cargo-D064yzd4-D064yzd4.js} +9285 -11085
- package/dist/workers/Cargo-D064yzd4-D064yzd4.js.map +1 -0
- package/dist/workers/assets/miden_client_web.wasm +0 -0
- package/dist/workers/web-client-methods-worker.js +43 -45
- package/dist/workers/web-client-methods-worker.js.map +1 -1
- package/package.json +15 -3
- package/dist/Cargo-9005c576.js.map +0 -1
- package/dist/workers/Cargo-9005c576-9005c576.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../js/constants.js","../js/syncLock.js","../js/index.js"],"sourcesContent":["export const WorkerAction = Object.freeze({\n INIT: \"init\",\n INIT_MOCK: \"initMock\",\n CALL_METHOD: \"callMethod\",\n EXECUTE_CALLBACK: \"executeCallback\",\n});\n\nexport const CallbackType = Object.freeze({\n GET_KEY: \"getKey\",\n INSERT_KEY: \"insertKey\",\n SIGN: \"sign\",\n});\n\nexport const MethodName = Object.freeze({\n CREATE_CLIENT: \"createClient\",\n NEW_WALLET: \"newWallet\",\n NEW_FAUCET: \"newFaucet\",\n EXECUTE_TRANSACTION: \"executeTransaction\",\n PROVE_TRANSACTION: \"proveTransaction\",\n SUBMIT_NEW_TRANSACTION: \"submitNewTransaction\",\n SUBMIT_NEW_TRANSACTION_MOCK: \"submitNewTransactionMock\",\n SUBMIT_NEW_TRANSACTION_WITH_PROVER: \"submitNewTransactionWithProver\",\n SUBMIT_NEW_TRANSACTION_WITH_PROVER_MOCK: \"submitNewTransactionWithProverMock\",\n SYNC_STATE: \"syncState\",\n SYNC_STATE_MOCK: \"syncStateMock\",\n});\n","/**\n * Sync Lock Module\n *\n * Provides coordination for concurrent syncState() calls using the Web Locks API\n * with an in-process mutex fallback for older browsers.\n *\n * Behavior:\n * - Uses \"coalescing\": if a sync is in progress, subsequent callers wait and receive\n * the same result\n * - Web Locks for cross-tab coordination (Chrome 69+, Safari 15.4+)\n * - In-process mutex fallback when Web Locks unavailable\n * - Optional timeout support\n */\n\n/**\n * Check if the Web Locks API is available.\n */\nexport function hasWebLocks() {\n return (\n typeof navigator !== \"undefined\" &&\n navigator.locks !== undefined &&\n typeof navigator.locks.request === \"function\"\n );\n}\n\n/**\n * Internal state for tracking in-progress syncs and waiters per database.\n */\nconst syncStates = new Map();\n\n/**\n * Get or create sync state for a database.\n */\nfunction getSyncState(dbId) {\n let state = syncStates.get(dbId);\n if (!state) {\n state = {\n inProgress: false,\n result: null,\n error: null,\n waiters: [],\n releaseLock: null,\n syncGeneration: 0,\n };\n syncStates.set(dbId, state);\n }\n return state;\n}\n\n/**\n * Acquire a sync lock for the given database.\n *\n * If a sync is already in progress:\n * - Returns { acquired: false, coalescedResult } after waiting for the result\n *\n * If no sync is in progress:\n * - Returns { acquired: true } and the caller should perform the sync,\n * then call releaseSyncLock() or releaseSyncLockWithError()\n *\n * @param {string} dbId - The database ID to lock\n * @param {number} timeoutMs - Optional timeout in milliseconds (0 = no timeout)\n * @returns {Promise<{acquired: boolean, coalescedResult?: any}>}\n */\nexport async function acquireSyncLock(dbId, timeoutMs = 0) {\n const state = getSyncState(dbId);\n\n // If a sync is already in progress, wait for it to complete (coalescing)\n if (state.inProgress) {\n return new Promise((resolve, reject) => {\n let timeoutId;\n if (timeoutMs > 0) {\n timeoutId = setTimeout(() => {\n const idx = state.waiters.findIndex((w) => w.resolve === onResult);\n if (idx !== -1) {\n state.waiters.splice(idx, 1);\n }\n reject(new Error(\"Sync lock acquisition timed out\"));\n }, timeoutMs);\n }\n\n const onResult = (result) => {\n if (timeoutId) clearTimeout(timeoutId);\n resolve({ acquired: false, coalescedResult: result });\n };\n\n const onError = (error) => {\n if (timeoutId) clearTimeout(timeoutId);\n reject(error);\n };\n\n state.waiters.push({ resolve: onResult, reject: onError });\n });\n }\n\n // Mark sync as in progress and increment generation\n state.inProgress = true;\n state.result = null;\n state.error = null;\n state.syncGeneration++;\n const currentGeneration = state.syncGeneration;\n\n // Try to acquire Web Lock if available\n if (hasWebLocks()) {\n const lockName = `miden-sync-${dbId}`;\n\n return new Promise((resolve, reject) => {\n let timeoutId;\n let timedOut = false;\n\n if (timeoutMs > 0) {\n timeoutId = setTimeout(() => {\n timedOut = true;\n if (state.syncGeneration === currentGeneration) {\n state.inProgress = false;\n const error = new Error(\"Sync lock acquisition timed out\");\n for (const waiter of state.waiters) {\n waiter.reject(error);\n }\n state.waiters = [];\n }\n reject(new Error(\"Sync lock acquisition timed out\"));\n }, timeoutMs);\n }\n\n navigator.locks\n .request(lockName, { mode: \"exclusive\" }, async () => {\n if (timedOut || state.syncGeneration !== currentGeneration) {\n return;\n }\n\n if (timeoutId) clearTimeout(timeoutId);\n\n return new Promise((releaseLock) => {\n state.releaseLock = releaseLock;\n resolve({ acquired: true });\n });\n })\n .catch((err) => {\n if (timeoutId) clearTimeout(timeoutId);\n if (state.syncGeneration === currentGeneration) {\n state.inProgress = false;\n }\n reject(err instanceof Error ? err : new Error(String(err)));\n });\n });\n } else {\n // Fallback: no Web Locks, just use in-process state\n return { acquired: true };\n }\n}\n\n/**\n * Release the sync lock with a successful result.\n *\n * This notifies all waiting callers with the result and releases the lock.\n *\n * @param {string} dbId - The database ID\n * @param {any} result - The sync result to pass to waiters\n */\nexport function releaseSyncLock(dbId, result) {\n const state = getSyncState(dbId);\n\n if (!state.inProgress) {\n console.warn(\"releaseSyncLock called but no sync was in progress\");\n return;\n }\n\n state.result = result;\n state.inProgress = false;\n\n for (const waiter of state.waiters) {\n waiter.resolve(result);\n }\n state.waiters = [];\n\n if (state.releaseLock) {\n state.releaseLock();\n state.releaseLock = null;\n }\n}\n\n/**\n * Release the sync lock due to an error.\n *\n * This notifies all waiting callers that the sync failed.\n *\n * @param {string} dbId - The database ID\n * @param {Error} error - The error to pass to waiters\n */\nexport function releaseSyncLockWithError(dbId, error) {\n const state = getSyncState(dbId);\n\n if (!state.inProgress) {\n console.warn(\"releaseSyncLockWithError called but no sync was in progress\");\n return;\n }\n\n state.error = error;\n state.inProgress = false;\n\n for (const waiter of state.waiters) {\n waiter.reject(error);\n }\n state.waiters = [];\n\n if (state.releaseLock) {\n state.releaseLock();\n state.releaseLock = null;\n }\n}\n","import loadWasm from \"./wasm.js\";\nimport { CallbackType, MethodName, WorkerAction } from \"./constants.js\";\nimport {\n acquireSyncLock,\n releaseSyncLock,\n releaseSyncLockWithError,\n} from \"./syncLock.js\";\nexport * from \"../Cargo.toml\";\n\nconst buildTypedArraysExport = (exportObject) => {\n return Object.entries(exportObject).reduce(\n (exports, [exportName, _export]) => {\n if (exportName.endsWith(\"Array\")) {\n exports[exportName] = _export;\n }\n return exports;\n },\n {}\n );\n};\n\nconst deserializeError = (errorLike) => {\n if (!errorLike) {\n return new Error(\"Unknown error received from worker\");\n }\n const { name, message, stack, cause, ...rest } = errorLike;\n const reconstructedError = new Error(message ?? \"Unknown worker error\");\n reconstructedError.name = name ?? reconstructedError.name;\n if (stack) {\n reconstructedError.stack = stack;\n }\n if (cause) {\n reconstructedError.cause = deserializeError(cause);\n }\n Object.entries(rest).forEach(([key, value]) => {\n if (value !== undefined) {\n reconstructedError[key] = value;\n }\n });\n return reconstructedError;\n};\n\nexport const MidenArrays = {};\n\nlet wasmModule = null;\nlet wasmLoadPromise = null;\nlet webClientStaticsCopied = false;\n\nconst ensureWasm = async () => {\n if (wasmModule) {\n return wasmModule;\n }\n if (!wasmLoadPromise) {\n wasmLoadPromise = loadWasm().then((module) => {\n wasmModule = module;\n if (module) {\n Object.assign(MidenArrays, buildTypedArraysExport(module));\n if (!webClientStaticsCopied && module.WebClient) {\n copyWebClientStatics(module.WebClient);\n webClientStaticsCopied = true;\n }\n }\n return module;\n });\n }\n return wasmLoadPromise;\n};\n\nconst getWasmOrThrow = async () => {\n const module = await ensureWasm();\n if (!module) {\n throw new Error(\n \"Miden WASM bindings are unavailable in this environment (SSR is disabled).\"\n );\n }\n return module;\n};\n/**\n * WebClient is a wrapper around the underlying WASM WebClient object.\n *\n * This wrapper serves several purposes:\n *\n * 1. It creates a dedicated web worker to offload computationally heavy tasks\n * (such as creating accounts, executing transactions, submitting transactions, etc.)\n * from the main thread, helping to prevent UI freezes in the browser.\n *\n * 2. It defines methods that mirror the API of the underlying WASM WebClient,\n * with the intention of executing these functions via the web worker. This allows us\n * to maintain the same API and parameters while benefiting from asynchronous, worker-based computation.\n *\n * 3. It employs a Proxy to forward any calls not designated for web worker computation\n * directly to the underlying WASM WebClient instance.\n *\n * Additionally, the wrapper provides a static createClient function. This static method\n * instantiates the WebClient object and ensures that the necessary createClient calls are\n * performed both in the main thread and within the worker thread. This dual initialization\n * correctly passes user parameters (RPC URL and seed) to both the main-thread\n * WASM WebClient and the worker-side instance.\n *\n * Because of this implementation, the only breaking change for end users is in the way the\n * web client is instantiated. Users should now use the WebClient.createClient static call.\n */\nexport class WebClient {\n /**\n * Create a WebClient wrapper.\n *\n * @param {string | undefined} rpcUrl - RPC endpoint URL used by the client.\n * @param {Uint8Array | undefined} seed - Optional seed for account initialization.\n * @param {string | undefined} storeName - Optional name for the store to be used by the client.\n * @param {(pubKey: Uint8Array) => Promise<Uint8Array | null | undefined> | Uint8Array | null | undefined} [getKeyCb]\n * - Callback to retrieve the secret key bytes for a given public key. The `pubKey`\n * parameter is the serialized public key (from `PublicKey.serialize()`). Return the\n * corresponding secret key as a `Uint8Array`, or `null`/`undefined` if not found. The\n * return value may be provided synchronously or via a `Promise`.\n * @param {(pubKey: Uint8Array, AuthSecretKey: Uint8Array) => Promise<void> | void} [insertKeyCb]\n * - Callback to persist a secret key. `pubKey` is the serialized public key, and\n * `authSecretKey` is the serialized secret key (from `AuthSecretKey.serialize()`). May return\n * `void` or a `Promise<void>`.\n * @param {(pubKey: Uint8Array, signingInputs: Uint8Array) => Promise<Uint8Array> | Uint8Array} [signCb]\n * - Callback to produce serialized signature bytes for the provided inputs. `pubKey` is the\n * serialized public key, and `signingInputs` is a `Uint8Array` produced by\n * `SigningInputs.serialize()`. Must return a `Uint8Array` containing the serialized\n * signature, either directly or wrapped in a `Promise`.\n * @param {string | undefined} [logLevel] - Optional log verbosity level\n * (\"error\", \"warn\", \"info\", \"debug\", \"trace\", \"off\", or \"none\").\n * When set, Rust tracing output is routed to the browser console.\n */\n constructor(\n rpcUrl,\n noteTransportUrl,\n seed,\n storeName,\n getKeyCb,\n insertKeyCb,\n signCb,\n logLevel\n ) {\n this.rpcUrl = rpcUrl;\n this.noteTransportUrl = noteTransportUrl;\n this.seed = seed;\n this.storeName = storeName;\n this.getKeyCb = getKeyCb;\n this.insertKeyCb = insertKeyCb;\n this.signCb = signCb;\n this.logLevel = logLevel;\n\n // Check if Web Workers are available.\n if (typeof Worker !== \"undefined\") {\n console.log(\"WebClient: Web Workers are available.\");\n // Create the worker.\n this.worker = new Worker(\n new URL(\"./workers/web-client-methods-worker.js\", import.meta.url),\n { type: \"module\" }\n );\n\n // Map to track pending worker requests.\n this.pendingRequests = new Map();\n\n // Promises to track when the worker script is loaded and ready.\n this.loaded = new Promise((resolve) => {\n this.loadedResolver = resolve;\n });\n\n // Create a promise that resolves when the worker signals that it is fully initialized.\n this.ready = new Promise((resolve) => {\n this.readyResolver = resolve;\n });\n\n // Listen for messages from the worker.\n this.worker.addEventListener(\"message\", async (event) => {\n const data = event.data;\n\n // Worker script loaded.\n if (data.loaded) {\n this.loadedResolver();\n return;\n }\n\n // Worker ready.\n if (data.ready) {\n this.readyResolver();\n return;\n }\n\n if (data.action === WorkerAction.EXECUTE_CALLBACK) {\n const { callbackType, args, requestId } = data;\n try {\n const callbackMapping = {\n [CallbackType.GET_KEY]: this.getKeyCb,\n [CallbackType.INSERT_KEY]: this.insertKeyCb,\n [CallbackType.SIGN]: this.signCb,\n };\n if (!callbackMapping[callbackType]) {\n throw new Error(`Callback ${callbackType} not available`);\n }\n const callbackFunction = callbackMapping[callbackType];\n let result = callbackFunction.apply(this, args);\n if (result instanceof Promise) {\n result = await result;\n }\n\n this.worker.postMessage({\n callbackResult: result,\n callbackRequestId: requestId,\n });\n } catch (error) {\n this.worker.postMessage({\n callbackError: error.message,\n callbackRequestId: requestId,\n });\n }\n return;\n }\n\n // Handle responses for method calls.\n const { requestId, error, result, methodName } = data;\n if (requestId && this.pendingRequests.has(requestId)) {\n const { resolve, reject } = this.pendingRequests.get(requestId);\n this.pendingRequests.delete(requestId);\n if (error) {\n const workerError =\n error instanceof Error ? error : deserializeError(error);\n console.error(\n `WebClient: Error from worker in ${methodName}:`,\n workerError\n );\n reject(workerError);\n } else {\n resolve(result);\n }\n }\n });\n\n // Once the worker script has loaded, initialize the worker.\n this.loaded.then(() => this.initializeWorker());\n } else {\n console.log(\"WebClient: Web Workers are not available.\");\n // Worker not available; set up fallback values.\n this.worker = null;\n this.pendingRequests = null;\n this.loaded = Promise.resolve();\n this.ready = Promise.resolve();\n }\n\n // Lazy initialize the underlying WASM WebClient when first requested.\n this.wasmWebClient = null;\n this.wasmWebClientPromise = null;\n }\n\n // TODO: This will soon conflict with some changes in main.\n // More context here:\n // https://github.com/0xMiden/miden-client/pull/1645?notification_referrer_id=NT_kwHOA1yg7NoAJVJlcG9zaXRvcnk7NjU5MzQzNzAyO0lzc3VlOzM3OTY4OTU1Nzk¬ifications_query=is%3Aunread#discussion_r2696075480\n initializeWorker() {\n this.worker.postMessage({\n action: WorkerAction.INIT,\n args: [\n this.rpcUrl,\n this.noteTransportUrl,\n this.seed,\n this.storeName,\n !!this.getKeyCb,\n !!this.insertKeyCb,\n !!this.signCb,\n this.logLevel,\n ],\n });\n }\n\n async getWasmWebClient() {\n if (this.wasmWebClient) {\n return this.wasmWebClient;\n }\n if (!this.wasmWebClientPromise) {\n this.wasmWebClientPromise = (async () => {\n const wasm = await getWasmOrThrow();\n const client = new wasm.WebClient();\n this.wasmWebClient = client;\n return client;\n })();\n }\n return this.wasmWebClientPromise;\n }\n\n /**\n * Factory method to create and initialize a WebClient instance.\n * This method is async so you can await the asynchronous call to createClient().\n *\n * @param {string} rpcUrl - The RPC URL.\n * @param {string} noteTransportUrl - The note transport URL (optional).\n * @param {string} seed - The seed for the account.\n * @param {string | undefined} network - Optional name for the store. Setting this allows multiple clients to be used in the same browser.\n * @param {string | undefined} logLevel - Optional log verbosity level (\"error\", \"warn\", \"info\", \"debug\", \"trace\", \"off\", or \"none\").\n * @returns {Promise<WebClient>} The fully initialized WebClient.\n */\n static async createClient(rpcUrl, noteTransportUrl, seed, network, logLevel) {\n // Construct the instance (synchronously).\n const instance = new WebClient(\n rpcUrl,\n noteTransportUrl,\n seed,\n network,\n undefined,\n undefined,\n undefined,\n logLevel\n );\n\n // Set up logging on the main thread before creating the client.\n if (logLevel) {\n const wasm = await getWasmOrThrow();\n wasm.setupLogging(logLevel);\n }\n\n // Wait for the underlying wasmWebClient to be initialized.\n const wasmWebClient = await instance.getWasmWebClient();\n await wasmWebClient.createClient(rpcUrl, noteTransportUrl, seed, network);\n\n // Wait for the worker to be ready\n await instance.ready;\n\n // Return a proxy that forwards missing properties to wasmWebClient.\n return new Proxy(instance, {\n get(target, prop, receiver) {\n // If the property exists on the wrapper, return it.\n if (prop in target) {\n return Reflect.get(target, prop, receiver);\n }\n // Otherwise, if the wasmWebClient has it, return that.\n if (target.wasmWebClient && prop in target.wasmWebClient) {\n const value = target.wasmWebClient[prop];\n if (typeof value === \"function\") {\n return value.bind(target.wasmWebClient);\n }\n return value;\n }\n return undefined;\n },\n });\n }\n\n /**\n * Factory method to create and initialize a WebClient instance with a remote keystore.\n * This method is async so you can await the asynchronous call to createClientWithExternalKeystore().\n *\n * @param {string} rpcUrl - The RPC URL.\n * @param {string | undefined} noteTransportUrl - The note transport URL (optional).\n * @param {string | undefined} seed - The seed for the account.\n * @param {string | undefined} storeName - Optional name for the store. Setting this allows multiple clients to be used in the same browser.\n * @param {Function | undefined} getKeyCb - The get key callback.\n * @param {Function | undefined} insertKeyCb - The insert key callback.\n * @param {Function | undefined} signCb - The sign callback.\n * @param {string | undefined} logLevel - Optional log verbosity level (\"error\", \"warn\", \"info\", \"debug\", \"trace\", \"off\", or \"none\").\n * @returns {Promise<WebClient>} The fully initialized WebClient.\n */\n static async createClientWithExternalKeystore(\n rpcUrl,\n noteTransportUrl,\n seed,\n storeName,\n getKeyCb,\n insertKeyCb,\n signCb,\n logLevel\n ) {\n // Construct the instance (synchronously).\n const instance = new WebClient(\n rpcUrl,\n noteTransportUrl,\n seed,\n storeName,\n getKeyCb,\n insertKeyCb,\n signCb,\n logLevel\n );\n\n // Set up logging on the main thread before creating the client.\n if (logLevel) {\n const wasm = await getWasmOrThrow();\n wasm.setupLogging(logLevel);\n }\n\n // Wait for the underlying wasmWebClient to be initialized.\n const wasmWebClient = await instance.getWasmWebClient();\n await wasmWebClient.createClientWithExternalKeystore(\n rpcUrl,\n noteTransportUrl,\n seed,\n storeName,\n getKeyCb,\n insertKeyCb,\n signCb\n );\n\n await instance.ready;\n // Return a proxy that forwards missing properties to wasmWebClient.\n return new Proxy(instance, {\n get(target, prop, receiver) {\n // If the property exists on the wrapper, return it.\n if (prop in target) {\n return Reflect.get(target, prop, receiver);\n }\n // Otherwise, if the wasmWebClient has it, return that.\n if (target.wasmWebClient && prop in target.wasmWebClient) {\n const value = target.wasmWebClient[prop];\n if (typeof value === \"function\") {\n return value.bind(target.wasmWebClient);\n }\n return value;\n }\n return undefined;\n },\n });\n }\n\n /**\n * Call a method via the worker.\n * @param {string} methodName - Name of the method to call.\n * @param {...any} args - Arguments for the method.\n * @returns {Promise<any>}\n */\n async callMethodWithWorker(methodName, ...args) {\n await this.ready;\n // Create a unique request ID.\n const requestId = `${methodName}-${Date.now()}-${Math.random()}`;\n return new Promise((resolve, reject) => {\n // Save the resolve and reject callbacks in the pendingRequests map.\n this.pendingRequests.set(requestId, { resolve, reject });\n // Send the method call request to the worker.\n this.worker.postMessage({\n action: WorkerAction.CALL_METHOD,\n methodName,\n args,\n requestId,\n });\n });\n }\n\n // ----- Explicitly Wrapped Methods (Worker-Forwarded) -----\n\n async newWallet(storageMode, mutable, authSchemeId, seed) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.newWallet(\n storageMode,\n mutable,\n authSchemeId,\n seed\n );\n }\n const wasm = await getWasmOrThrow();\n const serializedStorageMode = storageMode.asStr();\n const serializedAccountBytes = await this.callMethodWithWorker(\n MethodName.NEW_WALLET,\n serializedStorageMode,\n mutable,\n authSchemeId,\n seed\n );\n return wasm.Account.deserialize(new Uint8Array(serializedAccountBytes));\n } catch (error) {\n console.error(\"INDEX.JS: Error in newWallet:\", error);\n throw error;\n }\n }\n\n async newFaucet(\n storageMode,\n nonFungible,\n tokenSymbol,\n decimals,\n maxSupply,\n authSchemeId\n ) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.newFaucet(\n storageMode,\n nonFungible,\n tokenSymbol,\n decimals,\n maxSupply,\n authSchemeId\n );\n }\n const wasm = await getWasmOrThrow();\n const serializedStorageMode = storageMode.asStr();\n const serializedMaxSupply = maxSupply.toString();\n const serializedAccountBytes = await this.callMethodWithWorker(\n MethodName.NEW_FAUCET,\n serializedStorageMode,\n nonFungible,\n tokenSymbol,\n decimals,\n serializedMaxSupply,\n authSchemeId\n );\n\n return wasm.Account.deserialize(new Uint8Array(serializedAccountBytes));\n } catch (error) {\n console.error(\"INDEX.JS: Error in newFaucet:\", error);\n throw error;\n }\n }\n\n async submitNewTransaction(accountId, transactionRequest) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.submitNewTransaction(\n accountId,\n transactionRequest\n );\n }\n\n const wasm = await getWasmOrThrow();\n const serializedTransactionRequest = transactionRequest.serialize();\n const result = await this.callMethodWithWorker(\n MethodName.SUBMIT_NEW_TRANSACTION,\n accountId.toString(),\n serializedTransactionRequest\n );\n\n const transactionResult = wasm.TransactionResult.deserialize(\n new Uint8Array(result.serializedTransactionResult)\n );\n\n return transactionResult.id();\n } catch (error) {\n console.error(\"INDEX.JS: Error in submitNewTransaction:\", error);\n throw error;\n }\n }\n\n async submitNewTransactionWithProver(accountId, transactionRequest, prover) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.submitNewTransactionWithProver(\n accountId,\n transactionRequest,\n prover\n );\n }\n\n const wasm = await getWasmOrThrow();\n const serializedTransactionRequest = transactionRequest.serialize();\n const proverPayload = prover.serialize();\n const result = await this.callMethodWithWorker(\n MethodName.SUBMIT_NEW_TRANSACTION_WITH_PROVER,\n accountId.toString(),\n serializedTransactionRequest,\n proverPayload\n );\n\n const transactionResult = wasm.TransactionResult.deserialize(\n new Uint8Array(result.serializedTransactionResult)\n );\n\n return transactionResult.id();\n } catch (error) {\n console.error(\n \"INDEX.JS: Error in submitNewTransactionWithProver:\",\n error\n );\n throw error;\n }\n }\n\n async executeTransaction(accountId, transactionRequest) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.executeTransaction(\n accountId,\n transactionRequest\n );\n }\n\n const wasm = await getWasmOrThrow();\n const serializedTransactionRequest = transactionRequest.serialize();\n const serializedResultBytes = await this.callMethodWithWorker(\n MethodName.EXECUTE_TRANSACTION,\n accountId.toString(),\n serializedTransactionRequest\n );\n\n return wasm.TransactionResult.deserialize(\n new Uint8Array(serializedResultBytes)\n );\n } catch (error) {\n console.error(\"INDEX.JS: Error in executeTransaction:\", error);\n throw error;\n }\n }\n\n async proveTransaction(transactionResult, prover) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.proveTransaction(transactionResult, prover);\n }\n\n const wasm = await getWasmOrThrow();\n const serializedTransactionResult = transactionResult.serialize();\n const proverPayload = prover ? prover.serialize() : null;\n\n const serializedProvenBytes = await this.callMethodWithWorker(\n MethodName.PROVE_TRANSACTION,\n serializedTransactionResult,\n proverPayload\n );\n\n return wasm.ProvenTransaction.deserialize(\n new Uint8Array(serializedProvenBytes)\n );\n } catch (error) {\n console.error(\"INDEX.JS: Error in proveTransaction:\", error);\n throw error;\n }\n }\n\n /**\n * Syncs the client state with the node.\n *\n * This method coordinates concurrent sync calls using the Web Locks API when available,\n * with an in-process mutex fallback for older browsers. If a sync is already in progress,\n * subsequent callers will wait and receive the same result (coalescing behavior).\n *\n * @returns {Promise<SyncSummary>} The sync summary\n */\n async syncState() {\n return this.syncStateWithTimeout(0);\n }\n\n /**\n * Syncs the client state with the node with an optional timeout.\n *\n * This method coordinates concurrent sync calls using the Web Locks API when available,\n * with an in-process mutex fallback for older browsers. If a sync is already in progress,\n * subsequent callers will wait and receive the same result (coalescing behavior).\n *\n * @param {number} timeoutMs - Timeout in milliseconds (0 = no timeout)\n * @returns {Promise<SyncSummary>} The sync summary\n */\n async syncStateWithTimeout(timeoutMs = 0) {\n // Use storeName as the database ID for lock coordination\n const dbId = this.storeName || \"default\";\n\n try {\n // Acquire the sync lock (coordinates concurrent calls)\n const lockHandle = await acquireSyncLock(dbId, timeoutMs);\n\n if (!lockHandle.acquired) {\n // We're coalescing - return the result from the in-progress sync\n return lockHandle.coalescedResult;\n }\n\n // We acquired the lock - perform the sync\n try {\n let result;\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n result = await wasmWebClient.syncStateImpl();\n } else {\n const wasm = await getWasmOrThrow();\n const serializedSyncSummaryBytes = await this.callMethodWithWorker(\n MethodName.SYNC_STATE\n );\n result = wasm.SyncSummary.deserialize(\n new Uint8Array(serializedSyncSummaryBytes)\n );\n }\n\n // Release the lock with the result\n releaseSyncLock(dbId, result);\n return result;\n } catch (error) {\n // Release the lock with the error\n releaseSyncLockWithError(dbId, error);\n throw error;\n }\n } catch (error) {\n console.error(\"INDEX.JS: Error in syncState:\", error);\n throw error;\n }\n }\n\n terminate() {\n if (this.worker) {\n this.worker.terminate();\n }\n }\n}\n\nexport class MockWebClient extends WebClient {\n constructor(seed, logLevel) {\n super(null, null, seed, \"mock\", undefined, undefined, undefined, logLevel);\n }\n\n initializeWorker() {\n this.worker.postMessage({\n action: WorkerAction.INIT_MOCK,\n args: [this.seed, this.logLevel],\n });\n }\n\n /**\n * Factory method to create a WebClient with a mock chain for testing purposes.\n *\n * @param serializedMockChain - Serialized mock chain data (optional). Will use an empty chain if not provided.\n * @param serializedMockNoteTransportNode - Serialized mock note transport node data (optional). Will use a new instance if not provided.\n * @param seed - The seed for the account (optional).\n * @returns A promise that resolves to a MockWebClient.\n */\n static async createClient(\n serializedMockChain,\n serializedMockNoteTransportNode,\n seed,\n logLevel\n ) {\n // Construct the instance (synchronously).\n const instance = new MockWebClient(seed, logLevel);\n\n // Set up logging on the main thread before creating the client.\n if (logLevel) {\n const wasm = await getWasmOrThrow();\n wasm.setupLogging(logLevel);\n }\n\n // Wait for the underlying wasmWebClient to be initialized.\n const wasmWebClient = await instance.getWasmWebClient();\n await wasmWebClient.createMockClient(\n seed,\n serializedMockChain,\n serializedMockNoteTransportNode\n );\n\n // Wait for the worker to be ready\n await instance.ready;\n\n // Return a proxy that forwards missing properties to wasmWebClient.\n return new Proxy(instance, {\n get(target, prop, receiver) {\n // If the property exists on the wrapper, return it.\n if (prop in target) {\n return Reflect.get(target, prop, receiver);\n }\n // Otherwise, if the wasmWebClient has it, return that.\n if (target.wasmWebClient && prop in target.wasmWebClient) {\n const value = target.wasmWebClient[prop];\n if (typeof value === \"function\") {\n return value.bind(target.wasmWebClient);\n }\n return value;\n }\n return undefined;\n },\n });\n }\n\n /**\n * Syncs the mock client state.\n *\n * This method coordinates concurrent sync calls using the Web Locks API when available,\n * with an in-process mutex fallback for older browsers. If a sync is already in progress,\n * subsequent callers will wait and receive the same result (coalescing behavior).\n *\n * @returns {Promise<SyncSummary>} The sync summary\n */\n async syncState() {\n return this.syncStateWithTimeout(0);\n }\n\n /**\n * Syncs the mock client state with an optional timeout.\n *\n * @param {number} timeoutMs - Timeout in milliseconds (0 = no timeout)\n * @returns {Promise<SyncSummary>} The sync summary\n */\n async syncStateWithTimeout(timeoutMs = 0) {\n const dbId = this.storeName || \"mock\";\n\n try {\n const lockHandle = await acquireSyncLock(dbId, timeoutMs);\n\n if (!lockHandle.acquired) {\n return lockHandle.coalescedResult;\n }\n\n try {\n let result;\n const wasmWebClient = await this.getWasmWebClient();\n\n if (!this.worker) {\n result = await wasmWebClient.syncStateImpl();\n } else {\n let serializedMockChain = wasmWebClient.serializeMockChain().buffer;\n let serializedMockNoteTransportNode =\n wasmWebClient.serializeMockNoteTransportNode().buffer;\n\n const wasm = await getWasmOrThrow();\n\n const serializedSyncSummaryBytes = await this.callMethodWithWorker(\n MethodName.SYNC_STATE_MOCK,\n serializedMockChain,\n serializedMockNoteTransportNode\n );\n\n result = wasm.SyncSummary.deserialize(\n new Uint8Array(serializedSyncSummaryBytes)\n );\n }\n\n releaseSyncLock(dbId, result);\n return result;\n } catch (error) {\n releaseSyncLockWithError(dbId, error);\n throw error;\n }\n } catch (error) {\n console.error(\"INDEX.JS: Error in syncState:\", error);\n throw error;\n }\n }\n\n async submitNewTransaction(accountId, transactionRequest) {\n try {\n if (!this.worker) {\n return await super.submitNewTransaction(accountId, transactionRequest);\n }\n\n const wasmWebClient = await this.getWasmWebClient();\n const wasm = await getWasmOrThrow();\n const serializedTransactionRequest = transactionRequest.serialize();\n const serializedMockChain = wasmWebClient.serializeMockChain().buffer;\n const serializedMockNoteTransportNode =\n wasmWebClient.serializeMockNoteTransportNode().buffer;\n\n const result = await this.callMethodWithWorker(\n MethodName.SUBMIT_NEW_TRANSACTION_MOCK,\n accountId.toString(),\n serializedTransactionRequest,\n serializedMockChain,\n serializedMockNoteTransportNode\n );\n\n const newMockChain = new Uint8Array(result.serializedMockChain);\n const newMockNoteTransportNode = result.serializedMockNoteTransportNode\n ? new Uint8Array(result.serializedMockNoteTransportNode)\n : undefined;\n\n const transactionResult = wasm.TransactionResult.deserialize(\n new Uint8Array(result.serializedTransactionResult)\n );\n\n if (!(this instanceof MockWebClient)) {\n return transactionResult.id();\n }\n\n this.wasmWebClient = new wasm.WebClient();\n this.wasmWebClientPromise = Promise.resolve(this.wasmWebClient);\n await this.wasmWebClient.createMockClient(\n this.seed,\n newMockChain,\n newMockNoteTransportNode\n );\n\n return transactionResult.id();\n } catch (error) {\n console.error(\"INDEX.JS: Error in submitNewTransaction:\", error);\n throw error;\n }\n }\n\n async submitNewTransactionWithProver(accountId, transactionRequest, prover) {\n try {\n if (!this.worker) {\n return await super.submitNewTransactionWithProver(\n accountId,\n transactionRequest,\n prover\n );\n }\n\n const wasmWebClient = await this.getWasmWebClient();\n const wasm = await getWasmOrThrow();\n const serializedTransactionRequest = transactionRequest.serialize();\n const proverPayload = prover.serialize();\n const serializedMockChain = wasmWebClient.serializeMockChain().buffer;\n const serializedMockNoteTransportNode =\n wasmWebClient.serializeMockNoteTransportNode().buffer;\n\n const result = await this.callMethodWithWorker(\n MethodName.SUBMIT_NEW_TRANSACTION_WITH_PROVER_MOCK,\n accountId.toString(),\n serializedTransactionRequest,\n proverPayload,\n serializedMockChain,\n serializedMockNoteTransportNode\n );\n\n const newMockChain = new Uint8Array(result.serializedMockChain);\n const newMockNoteTransportNode = result.serializedMockNoteTransportNode\n ? new Uint8Array(result.serializedMockNoteTransportNode)\n : undefined;\n\n const transactionResult = wasm.TransactionResult.deserialize(\n new Uint8Array(result.serializedTransactionResult)\n );\n\n if (!(this instanceof MockWebClient)) {\n return transactionResult.id();\n }\n\n this.wasmWebClient = new wasm.WebClient();\n this.wasmWebClientPromise = Promise.resolve(this.wasmWebClient);\n await this.wasmWebClient.createMockClient(\n this.seed,\n newMockChain,\n newMockNoteTransportNode\n );\n\n return transactionResult.id();\n } catch (error) {\n console.error(\n \"INDEX.JS: Error in submitNewTransactionWithProver:\",\n error\n );\n throw error;\n }\n }\n}\n\nfunction copyWebClientStatics(WasmWebClient) {\n if (!WasmWebClient) {\n return;\n }\n Object.getOwnPropertyNames(WasmWebClient).forEach((prop) => {\n if (\n typeof WasmWebClient[prop] === \"function\" &&\n prop !== \"constructor\" &&\n prop !== \"prototype\"\n ) {\n WebClient[prop] = WasmWebClient[prop];\n }\n });\n}\n"],"names":[],"mappings":";;;AAAO,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;AAC1C,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,SAAS,EAAE,UAAU;AACvB,EAAE,WAAW,EAAE,YAAY;AAC3B,EAAE,gBAAgB,EAAE,iBAAiB;AACrC,CAAC,CAAC,CAAC;AACH;AACO,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;AAC1C,EAAE,OAAO,EAAE,QAAQ;AACnB,EAAE,UAAU,EAAE,WAAW;AACzB,EAAE,IAAI,EAAE,MAAM;AACd,CAAC,CAAC,CAAC;AACH;AACO,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;AACxC,EAAE,aAAa,EAAE,cAAc;AAC/B,EAAE,UAAU,EAAE,WAAW;AACzB,EAAE,UAAU,EAAE,WAAW;AACzB,EAAE,mBAAmB,EAAE,oBAAoB;AAC3C,EAAE,iBAAiB,EAAE,kBAAkB;AACvC,EAAE,sBAAsB,EAAE,sBAAsB;AAChD,EAAE,2BAA2B,EAAE,0BAA0B;AACzD,EAAE,kCAAkC,EAAE,gCAAgC;AACtE,EAAE,uCAAuC,EAAE,oCAAoC;AAC/E,EAAE,UAAU,EAAE,WAAW;AACzB,EAAE,eAAe,EAAE,eAAe;AAClC,CAAC,CAAC;;ACzBF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,GAAG;AAC9B,EAAE;AACF,IAAI,OAAO,SAAS,KAAK,WAAW;AACpC,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS;AACjC,IAAI,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU;AACjD,IAAI;AACJ,CAAC;AACD;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;AAC7B;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,IAAI,EAAE;AAC5B,EAAE,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnC,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,IAAI,KAAK,GAAG;AACZ,MAAM,UAAU,EAAE,KAAK;AACvB,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,KAAK,EAAE,IAAI;AACjB,MAAM,OAAO,EAAE,EAAE;AACjB,MAAM,WAAW,EAAE,IAAI;AACvB,MAAM,cAAc,EAAE,CAAC;AACvB,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAChC,GAAG;AACH,EAAE,OAAO,KAAK,CAAC;AACf,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE;AAC3D,EAAE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AACnC;AACA;AACA,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI,SAAS,CAAC;AACpB,MAAM,IAAI,SAAS,GAAG,CAAC,EAAE;AACzB,QAAQ,SAAS,GAAG,UAAU,CAAC,MAAM;AACrC,UAAU,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;AAC7E,UAAU,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;AAC1B,YAAY,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACzC,WAAW;AACX,UAAU,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;AAC/D,SAAS,EAAE,SAAS,CAAC,CAAC;AACtB,OAAO;AACP;AACA,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,KAAK;AACnC,QAAQ,IAAI,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/C,QAAQ,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC;AAC9D,OAAO,CAAC;AACR;AACA,MAAM,MAAM,OAAO,GAAG,CAAC,KAAK,KAAK;AACjC,QAAQ,IAAI,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/C,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB,OAAO,CAAC;AACR;AACA,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AACjE,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA;AACA,EAAE,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAC1B,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;AACzB,EAAE,MAAM,iBAAiB,GAAG,KAAK,CAAC,cAAc,CAAC;AACjD;AACA;AACA,EAAE,IAAI,WAAW,EAAE,EAAE;AACrB,IAAI,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1C;AACA,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI,SAAS,CAAC;AACpB,MAAM,IAAI,QAAQ,GAAG,KAAK,CAAC;AAC3B;AACA,MAAM,IAAI,SAAS,GAAG,CAAC,EAAE;AACzB,QAAQ,SAAS,GAAG,UAAU,CAAC,MAAM;AACrC,UAAU,QAAQ,GAAG,IAAI,CAAC;AAC1B,UAAU,IAAI,KAAK,CAAC,cAAc,KAAK,iBAAiB,EAAE;AAC1D,YAAY,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;AACrC,YAAY,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACvE,YAAY,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE;AAChD,cAAc,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnC,aAAa;AACb,YAAY,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AAC/B,WAAW;AACX,UAAU,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;AAC/D,SAAS,EAAE,SAAS,CAAC,CAAC;AACtB,OAAO;AACP;AACA,MAAM,SAAS,CAAC,KAAK;AACrB,SAAS,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,YAAY;AAC9D,UAAU,IAAI,QAAQ,IAAI,KAAK,CAAC,cAAc,KAAK,iBAAiB,EAAE;AACtE,YAAY,OAAO;AACnB,WAAW;AACX;AACA,UAAU,IAAI,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;AACjD;AACA,UAAU,OAAO,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK;AAC9C,YAAY,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;AAC5C,YAAY,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACxC,WAAW,CAAC,CAAC;AACb,SAAS,CAAC;AACV,SAAS,KAAK,CAAC,CAAC,GAAG,KAAK;AACxB,UAAU,IAAI,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;AACjD,UAAU,IAAI,KAAK,CAAC,cAAc,KAAK,iBAAiB,EAAE;AAC1D,YAAY,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;AACrC,WAAW;AACX,UAAU,MAAM,CAAC,GAAG,YAAY,KAAK,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtE,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC;AACP,GAAG,MAAM;AACT;AACA,IAAI,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC9B,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE;AAC9C,EAAE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AACnC;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACzB,IAAI,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;AACvE,IAAI,OAAO;AACX,GAAG;AACH;AACA,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACxB,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;AAC3B;AACA,EAAE,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE;AACtC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3B,GAAG;AACH,EAAE,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE;AACzB,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;AACxB,IAAI,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;AAC7B,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAwB,CAAC,IAAI,EAAE,KAAK,EAAE;AACtD,EAAE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AACnC;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACzB,IAAI,OAAO,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;AAChF,IAAI,OAAO;AACX,GAAG;AACH;AACA,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AACtB,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;AAC3B;AACA,EAAE,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE;AACtC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,GAAG;AACH,EAAE,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE;AACzB,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;AACxB,IAAI,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;AAC7B,GAAG;AACH;;ACxMA,MAAM,sBAAsB,GAAG,CAAC,YAAY,KAAK;AACjD,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM;AAC5C,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK;AACxC,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACxC,QAAQ,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;AACtC,OAAO;AACP,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK;AACL,IAAI,EAAE;AACN,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA,MAAM,gBAAgB,GAAG,CAAC,SAAS,KAAK;AACxC,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,IAAI,OAAO,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;AAC3D,GAAG;AACH,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC;AAC7D,EAAE,MAAM,kBAAkB,GAAG,IAAI,KAAK,CAAC,OAAO,IAAI,sBAAsB,CAAC,CAAC;AAC1E,EAAE,kBAAkB,CAAC,IAAI,GAAG,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC;AAC5D,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,kBAAkB,CAAC,KAAK,GAAG,KAAK,CAAC;AACrC,GAAG;AACH,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,kBAAkB,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACvD,GAAG;AACH,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACjD,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,MAAM,kBAAkB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtC,KAAK;AACL,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,kBAAkB,CAAC;AAC5B,CAAC,CAAC;AACF;AACY,MAAC,WAAW,GAAG,GAAG;AAC9B;AACA,IAAI,UAAU,GAAG,IAAI,CAAC;AACtB,IAAI,eAAe,GAAG,IAAI,CAAC;AAC3B,IAAI,sBAAsB,GAAG,KAAK,CAAC;AACnC;AACA,MAAM,UAAU,GAAG,YAAY;AAC/B,EAAE,IAAI,UAAU,EAAE;AAClB,IAAI,OAAO,UAAU,CAAC;AACtB,GAAG;AACH,EAAE,IAAI,CAAC,eAAe,EAAE;AACxB,IAAI,eAAe,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK;AAClD,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,IAAI,MAAM,EAAE;AAClB,QAAQ,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;AACnE,QAAQ,IAAI,CAAC,sBAAsB,IAAI,MAAM,CAAC,SAAS,EAAE;AACzD,UAAU,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACjD,UAAU,sBAAsB,GAAG,IAAI,CAAC;AACxC,SAAS;AACT,OAAO;AACP,MAAM,OAAO,MAAM,CAAC;AACpB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AACF;AACA,MAAM,cAAc,GAAG,YAAY;AACnC,EAAE,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;AACpC,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,MAAM,IAAI,KAAK;AACnB,MAAM,4EAA4E;AAClF,KAAK,CAAC;AACN,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,SAAS,CAAC;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW;AACb,IAAI,MAAM;AACV,IAAI,gBAAgB;AACpB,IAAI,IAAI;AACR,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,WAAW;AACf,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI;AACJ,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,IAAI,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;AAC7C,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC/B,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7B,IAAI,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACnC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7B;AACA;AACA,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACvC,MAAM,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;AAC3D;AACA,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM;AAC9B,QAAQ,IAAI,GAAG,CAAC,wCAAwC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1E,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC1B,OAAO,CAAC;AACR;AACA;AACA,MAAM,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;AACvC;AACA;AACA,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AAC7C,QAAQ,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;AACtC,OAAO,CAAC,CAAC;AACT;AACA;AACA,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AAC5C,QAAQ,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;AACrC,OAAO,CAAC,CAAC;AACT;AACA;AACA,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,KAAK,KAAK;AAC/D,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AAChC;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,UAAU,IAAI,CAAC,cAAc,EAAE,CAAC;AAChC,UAAU,OAAO;AACjB,SAAS;AACT;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;AACxB,UAAU,IAAI,CAAC,aAAa,EAAE,CAAC;AAC/B,UAAU,OAAO;AACjB,SAAS;AACT;AACA,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,gBAAgB,EAAE;AAC3D,UAAU,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;AACzD,UAAU,IAAI;AACd,YAAY,MAAM,eAAe,GAAG;AACpC,cAAc,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ;AACnD,cAAc,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW;AACzD,cAAc,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM;AAC9C,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE;AAChD,cAAc,MAAM,IAAI,KAAK,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;AACxE,aAAa;AACb,YAAY,MAAM,gBAAgB,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;AACnE,YAAY,IAAI,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5D,YAAY,IAAI,MAAM,YAAY,OAAO,EAAE;AAC3C,cAAc,MAAM,GAAG,MAAM,MAAM,CAAC;AACpC,aAAa;AACb;AACA,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AACpC,cAAc,cAAc,EAAE,MAAM;AACpC,cAAc,iBAAiB,EAAE,SAAS;AAC1C,aAAa,CAAC,CAAC;AACf,WAAW,CAAC,OAAO,KAAK,EAAE;AAC1B,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AACpC,cAAc,aAAa,EAAE,KAAK,CAAC,OAAO;AAC1C,cAAc,iBAAiB,EAAE,SAAS;AAC1C,aAAa,CAAC,CAAC;AACf,WAAW;AACX,UAAU,OAAO;AACjB,SAAS;AACT;AACA;AACA,QAAQ,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;AAC9D,QAAQ,IAAI,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AAC9D,UAAU,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC1E,UAAU,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACjD,UAAU,IAAI,KAAK,EAAE;AACrB,YAAY,MAAM,WAAW;AAC7B,cAAc,KAAK,YAAY,KAAK,GAAG,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACvE,YAAY,OAAO,CAAC,KAAK;AACzB,cAAc,CAAC,gCAAgC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC9D,cAAc,WAAW;AACzB,aAAa,CAAC;AACd,YAAY,MAAM,CAAC,WAAW,CAAC,CAAC;AAChC,WAAW,MAAM;AACjB,YAAY,OAAO,CAAC,MAAM,CAAC,CAAC;AAC5B,WAAW;AACX,SAAS;AACT,OAAO,CAAC,CAAC;AACT;AACA;AACA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACtD,KAAK,MAAM;AACX,MAAM,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;AAC/D;AACA,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACzB,MAAM,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAClC,MAAM,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;AACtC,MAAM,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,KAAK;AACL;AACA;AACA,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,IAAI,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACrC,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AAC5B,MAAM,MAAM,EAAE,YAAY,CAAC,IAAI;AAC/B,MAAM,IAAI,EAAE;AACZ,QAAQ,IAAI,CAAC,MAAM;AACnB,QAAQ,IAAI,CAAC,gBAAgB;AAC7B,QAAQ,IAAI,CAAC,IAAI;AACjB,QAAQ,IAAI,CAAC,SAAS;AACtB,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ;AACvB,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW;AAC1B,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM;AACrB,QAAQ,IAAI,CAAC,QAAQ;AACrB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,MAAM,gBAAgB,GAAG;AAC3B,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;AAC5B,MAAM,OAAO,IAAI,CAAC,aAAa,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACpC,MAAM,IAAI,CAAC,oBAAoB,GAAG,CAAC,YAAY;AAC/C,QAAQ,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;AAC5C,QAAQ,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;AAC5C,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;AACpC,QAAQ,OAAO,MAAM,CAAC;AACtB,OAAO,GAAG,CAAC;AACX,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,oBAAoB,CAAC;AACrC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,YAAY,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC/E;AACA,IAAI,MAAM,QAAQ,GAAG,IAAI,SAAS;AAClC,MAAM,MAAM;AACZ,MAAM,gBAAgB;AACtB,MAAM,IAAI;AACV,MAAM,OAAO;AACb,MAAM,SAAS;AACf,MAAM,SAAS;AACf,MAAM,SAAS;AACf,MAAM,QAAQ;AACd,KAAK,CAAC;AACN;AACA;AACA,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;AAC1C,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AAClC,KAAK;AACL;AACA;AACA,IAAI,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;AAC5D,IAAI,MAAM,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9E;AACA;AACA,IAAI,MAAM,QAAQ,CAAC,KAAK,CAAC;AACzB;AACA;AACA,IAAI,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;AAC/B,MAAM,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AAClC;AACA,QAAQ,IAAI,IAAI,IAAI,MAAM,EAAE;AAC5B,UAAU,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrD,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE;AAClE,UAAU,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACnD,UAAU,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;AAC3C,YAAY,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACpD,WAAW;AACX,UAAU,OAAO,KAAK,CAAC;AACvB,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC;AACzB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,gCAAgC;AAC/C,IAAI,MAAM;AACV,IAAI,gBAAgB;AACpB,IAAI,IAAI;AACR,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,WAAW;AACf,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI;AACJ;AACA,IAAI,MAAM,QAAQ,GAAG,IAAI,SAAS;AAClC,MAAM,MAAM;AACZ,MAAM,gBAAgB;AACtB,MAAM,IAAI;AACV,MAAM,SAAS;AACf,MAAM,QAAQ;AACd,MAAM,WAAW;AACjB,MAAM,MAAM;AACZ,MAAM,QAAQ;AACd,KAAK,CAAC;AACN;AACA;AACA,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;AAC1C,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AAClC,KAAK;AACL;AACA;AACA,IAAI,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;AAC5D,IAAI,MAAM,aAAa,CAAC,gCAAgC;AACxD,MAAM,MAAM;AACZ,MAAM,gBAAgB;AACtB,MAAM,IAAI;AACV,MAAM,SAAS;AACf,MAAM,QAAQ;AACd,MAAM,WAAW;AACjB,MAAM,MAAM;AACZ,KAAK,CAAC;AACN;AACA,IAAI,MAAM,QAAQ,CAAC,KAAK,CAAC;AACzB;AACA,IAAI,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;AAC/B,MAAM,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AAClC;AACA,QAAQ,IAAI,IAAI,IAAI,MAAM,EAAE;AAC5B,UAAU,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrD,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE;AAClE,UAAU,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACnD,UAAU,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;AAC3C,YAAY,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACpD,WAAW;AACX,UAAU,OAAO,KAAK,CAAC;AACvB,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC;AACzB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,oBAAoB,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE;AAClD,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC;AACrB;AACA,IAAI,MAAM,SAAS,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACrE,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C;AACA,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/D;AACA,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AAC9B,QAAQ,MAAM,EAAE,YAAY,CAAC,WAAW;AACxC,QAAQ,UAAU;AAClB,QAAQ,IAAI;AACZ,QAAQ,SAAS;AACjB,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA;AACA;AACA,EAAE,MAAM,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE;AAC5D,IAAI,IAAI;AACR,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACxB,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5D,QAAQ,OAAO,MAAM,aAAa,CAAC,SAAS;AAC5C,UAAU,WAAW;AACrB,UAAU,OAAO;AACjB,UAAU,YAAY;AACtB,UAAU,IAAI;AACd,SAAS,CAAC;AACV,OAAO;AACP,MAAM,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;AAC1C,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;AACxD,MAAM,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,oBAAoB;AACpE,QAAQ,UAAU,CAAC,UAAU;AAC7B,QAAQ,qBAAqB;AAC7B,QAAQ,OAAO;AACf,QAAQ,YAAY;AACpB,QAAQ,IAAI;AACZ,OAAO,CAAC;AACR,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC9E,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;AAC5D,MAAM,MAAM,KAAK,CAAC;AAClB,KAAK;AACL,GAAG;AACH;AACA,EAAE,MAAM,SAAS;AACjB,IAAI,WAAW;AACf,IAAI,WAAW;AACf,IAAI,WAAW;AACf,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,YAAY;AAChB,IAAI;AACJ,IAAI,IAAI;AACR,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACxB,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5D,QAAQ,OAAO,MAAM,aAAa,CAAC,SAAS;AAC5C,UAAU,WAAW;AACrB,UAAU,WAAW;AACrB,UAAU,WAAW;AACrB,UAAU,QAAQ;AAClB,UAAU,SAAS;AACnB,UAAU,YAAY;AACtB,SAAS,CAAC;AACV,OAAO;AACP,MAAM,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;AAC1C,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;AACxD,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;AACvD,MAAM,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,oBAAoB;AACpE,QAAQ,UAAU,CAAC,UAAU;AAC7B,QAAQ,qBAAqB;AAC7B,QAAQ,WAAW;AACnB,QAAQ,WAAW;AACnB,QAAQ,QAAQ;AAChB,QAAQ,mBAAmB;AAC3B,QAAQ,YAAY;AACpB,OAAO,CAAC;AACR;AACA,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC9E,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;AAC5D,MAAM,MAAM,KAAK,CAAC;AAClB,KAAK;AACL,GAAG;AACH;AACA,EAAE,MAAM,oBAAoB,CAAC,SAAS,EAAE,kBAAkB,EAAE;AAC5D,IAAI,IAAI;AACR,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACxB,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5D,QAAQ,OAAO,MAAM,aAAa,CAAC,oBAAoB;AACvD,UAAU,SAAS;AACnB,UAAU,kBAAkB;AAC5B,SAAS,CAAC;AACV,OAAO;AACP;AACA,MAAM,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;AAC1C,MAAM,MAAM,4BAA4B,GAAG,kBAAkB,CAAC,SAAS,EAAE,CAAC;AAC1E,MAAM,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB;AACpD,QAAQ,UAAU,CAAC,sBAAsB;AACzC,QAAQ,SAAS,CAAC,QAAQ,EAAE;AAC5B,QAAQ,4BAA4B;AACpC,OAAO,CAAC;AACR;AACA,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW;AAClE,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,2BAA2B,CAAC;AAC1D,OAAO,CAAC;AACR;AACA,MAAM,OAAO,iBAAiB,CAAC,EAAE,EAAE,CAAC;AACpC,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;AACvE,MAAM,MAAM,KAAK,CAAC;AAClB,KAAK;AACL,GAAG;AACH;AACA,EAAE,MAAM,8BAA8B,CAAC,SAAS,EAAE,kBAAkB,EAAE,MAAM,EAAE;AAC9E,IAAI,IAAI;AACR,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACxB,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5D,QAAQ,OAAO,MAAM,aAAa,CAAC,8BAA8B;AACjE,UAAU,SAAS;AACnB,UAAU,kBAAkB;AAC5B,UAAU,MAAM;AAChB,SAAS,CAAC;AACV,OAAO;AACP;AACA,MAAM,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;AAC1C,MAAM,MAAM,4BAA4B,GAAG,kBAAkB,CAAC,SAAS,EAAE,CAAC;AAC1E,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AAC/C,MAAM,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB;AACpD,QAAQ,UAAU,CAAC,kCAAkC;AACrD,QAAQ,SAAS,CAAC,QAAQ,EAAE;AAC5B,QAAQ,4BAA4B;AACpC,QAAQ,aAAa;AACrB,OAAO,CAAC;AACR;AACA,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW;AAClE,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,2BAA2B,CAAC;AAC1D,OAAO,CAAC;AACR;AACA,MAAM,OAAO,iBAAiB,CAAC,EAAE,EAAE,CAAC;AACpC,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,oDAAoD;AAC5D,QAAQ,KAAK;AACb,OAAO,CAAC;AACR,MAAM,MAAM,KAAK,CAAC;AAClB,KAAK;AACL,GAAG;AACH;AACA,EAAE,MAAM,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,EAAE;AAC1D,IAAI,IAAI;AACR,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACxB,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5D,QAAQ,OAAO,MAAM,aAAa,CAAC,kBAAkB;AACrD,UAAU,SAAS;AACnB,UAAU,kBAAkB;AAC5B,SAAS,CAAC;AACV,OAAO;AACP;AACA,MAAM,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;AAC1C,MAAM,MAAM,4BAA4B,GAAG,kBAAkB,CAAC,SAAS,EAAE,CAAC;AAC1E,MAAM,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,oBAAoB;AACnE,QAAQ,UAAU,CAAC,mBAAmB;AACtC,QAAQ,SAAS,CAAC,QAAQ,EAAE;AAC5B,QAAQ,4BAA4B;AACpC,OAAO,CAAC;AACR;AACA,MAAM,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW;AAC/C,QAAQ,IAAI,UAAU,CAAC,qBAAqB,CAAC;AAC7C,OAAO,CAAC;AACR,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;AACrE,MAAM,MAAM,KAAK,CAAC;AAClB,KAAK;AACL,GAAG;AACH;AACA,EAAE,MAAM,gBAAgB,CAAC,iBAAiB,EAAE,MAAM,EAAE;AACpD,IAAI,IAAI;AACR,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACxB,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5D,QAAQ,OAAO,MAAM,aAAa,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAC/E,OAAO;AACP;AACA,MAAM,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;AAC1C,MAAM,MAAM,2BAA2B,GAAG,iBAAiB,CAAC,SAAS,EAAE,CAAC;AACxE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC;AAC/D;AACA,MAAM,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,oBAAoB;AACnE,QAAQ,UAAU,CAAC,iBAAiB;AACpC,QAAQ,2BAA2B;AACnC,QAAQ,aAAa;AACrB,OAAO,CAAC;AACR;AACA,MAAM,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW;AAC/C,QAAQ,IAAI,UAAU,CAAC,qBAAqB,CAAC;AAC7C,OAAO,CAAC;AACR,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;AACnE,MAAM,MAAM,KAAK,CAAC;AAClB,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,SAAS,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AACxC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,oBAAoB,CAAC,SAAS,GAAG,CAAC,EAAE;AAC5C;AACA,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC;AAC7C;AACA,IAAI,IAAI;AACR;AACA,MAAM,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAChE;AACA,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AAChC;AACA,QAAQ,OAAO,UAAU,CAAC,eAAe,CAAC;AAC1C,OAAO;AACP;AACA;AACA,MAAM,IAAI;AACV,QAAQ,IAAI,MAAM,CAAC;AACnB,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1B,UAAU,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC9D,UAAU,MAAM,GAAG,MAAM,aAAa,CAAC,aAAa,EAAE,CAAC;AACvD,SAAS,MAAM;AACf,UAAU,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;AAC9C,UAAU,MAAM,0BAA0B,GAAG,MAAM,IAAI,CAAC,oBAAoB;AAC5E,YAAY,UAAU,CAAC,UAAU;AACjC,WAAW,CAAC;AACZ,UAAU,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW;AAC/C,YAAY,IAAI,UAAU,CAAC,0BAA0B,CAAC;AACtD,WAAW,CAAC;AACZ,SAAS;AACT;AACA;AACA,QAAQ,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACtC,QAAQ,OAAO,MAAM,CAAC;AACtB,OAAO,CAAC,OAAO,KAAK,EAAE;AACtB;AACA,QAAQ,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC9C,QAAQ,MAAM,KAAK,CAAC;AACpB,OAAO;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;AAC5D,MAAM,MAAM,KAAK,CAAC;AAClB,KAAK;AACL,GAAG;AACH;AACA,EAAE,SAAS,GAAG;AACd,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;AAC9B,KAAK;AACL,GAAG;AACH,CAAC;AACD;AACO,MAAM,aAAa,SAAS,SAAS,CAAC;AAC7C,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC9B,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC/E,GAAG;AACH;AACA,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AAC5B,MAAM,MAAM,EAAE,YAAY,CAAC,SAAS;AACpC,MAAM,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;AACtC,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,YAAY;AAC3B,IAAI,mBAAmB;AACvB,IAAI,+BAA+B;AACnC,IAAI,IAAI;AACR,IAAI,QAAQ;AACZ,IAAI;AACJ;AACA,IAAI,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACvD;AACA;AACA,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;AAC1C,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AAClC,KAAK;AACL;AACA;AACA,IAAI,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;AAC5D,IAAI,MAAM,aAAa,CAAC,gBAAgB;AACxC,MAAM,IAAI;AACV,MAAM,mBAAmB;AACzB,MAAM,+BAA+B;AACrC,KAAK,CAAC;AACN;AACA;AACA,IAAI,MAAM,QAAQ,CAAC,KAAK,CAAC;AACzB;AACA;AACA,IAAI,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;AAC/B,MAAM,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AAClC;AACA,QAAQ,IAAI,IAAI,IAAI,MAAM,EAAE;AAC5B,UAAU,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrD,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE;AAClE,UAAU,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACnD,UAAU,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;AAC3C,YAAY,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACpD,WAAW;AACX,UAAU,OAAO,KAAK,CAAC;AACvB,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC;AACzB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,SAAS,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AACxC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,oBAAoB,CAAC,SAAS,GAAG,CAAC,EAAE;AAC5C,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;AAC1C;AACA,IAAI,IAAI;AACR,MAAM,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAChE;AACA,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AAChC,QAAQ,OAAO,UAAU,CAAC,eAAe,CAAC;AAC1C,OAAO;AACP;AACA,MAAM,IAAI;AACV,QAAQ,IAAI,MAAM,CAAC;AACnB,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5D;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1B,UAAU,MAAM,GAAG,MAAM,aAAa,CAAC,aAAa,EAAE,CAAC;AACvD,SAAS,MAAM;AACf,UAAU,IAAI,mBAAmB,GAAG,aAAa,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC;AAC9E,UAAU,IAAI,+BAA+B;AAC7C,YAAY,aAAa,CAAC,8BAA8B,EAAE,CAAC,MAAM,CAAC;AAClE;AACA,UAAU,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;AAC9C;AACA,UAAU,MAAM,0BAA0B,GAAG,MAAM,IAAI,CAAC,oBAAoB;AAC5E,YAAY,UAAU,CAAC,eAAe;AACtC,YAAY,mBAAmB;AAC/B,YAAY,+BAA+B;AAC3C,WAAW,CAAC;AACZ;AACA,UAAU,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW;AAC/C,YAAY,IAAI,UAAU,CAAC,0BAA0B,CAAC;AACtD,WAAW,CAAC;AACZ,SAAS;AACT;AACA,QAAQ,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACtC,QAAQ,OAAO,MAAM,CAAC;AACtB,OAAO,CAAC,OAAO,KAAK,EAAE;AACtB,QAAQ,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC9C,QAAQ,MAAM,KAAK,CAAC;AACpB,OAAO;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;AAC5D,MAAM,MAAM,KAAK,CAAC;AAClB,KAAK;AACL,GAAG;AACH;AACA,EAAE,MAAM,oBAAoB,CAAC,SAAS,EAAE,kBAAkB,EAAE;AAC5D,IAAI,IAAI;AACR,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACxB,QAAQ,OAAO,MAAM,KAAK,CAAC,oBAAoB,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;AAC/E,OAAO;AACP;AACA,MAAM,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1D,MAAM,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;AAC1C,MAAM,MAAM,4BAA4B,GAAG,kBAAkB,CAAC,SAAS,EAAE,CAAC;AAC1E,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC;AAC5E,MAAM,MAAM,+BAA+B;AAC3C,QAAQ,aAAa,CAAC,8BAA8B,EAAE,CAAC,MAAM,CAAC;AAC9D;AACA,MAAM,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB;AACpD,QAAQ,UAAU,CAAC,2BAA2B;AAC9C,QAAQ,SAAS,CAAC,QAAQ,EAAE;AAC5B,QAAQ,4BAA4B;AACpC,QAAQ,mBAAmB;AAC3B,QAAQ,+BAA+B;AACvC,OAAO,CAAC;AACR;AACA,MAAM,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,+BAA+B;AAC7E,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,+BAA+B,CAAC;AAChE,UAAU,SAAS,CAAC;AACpB;AACA,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW;AAClE,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,2BAA2B,CAAC;AAC1D,OAAO,CAAC;AACR;AACA,MAAM,IAAI,EAAE,IAAI,YAAY,aAAa,CAAC,EAAE;AAC5C,QAAQ,OAAO,iBAAiB,CAAC,EAAE,EAAE,CAAC;AACtC,OAAO;AACP;AACA,MAAM,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;AAChD,MAAM,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACtE,MAAM,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB;AAC/C,QAAQ,IAAI,CAAC,IAAI;AACjB,QAAQ,YAAY;AACpB,QAAQ,wBAAwB;AAChC,OAAO,CAAC;AACR;AACA,MAAM,OAAO,iBAAiB,CAAC,EAAE,EAAE,CAAC;AACpC,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;AACvE,MAAM,MAAM,KAAK,CAAC;AAClB,KAAK;AACL,GAAG;AACH;AACA,EAAE,MAAM,8BAA8B,CAAC,SAAS,EAAE,kBAAkB,EAAE,MAAM,EAAE;AAC9E,IAAI,IAAI;AACR,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACxB,QAAQ,OAAO,MAAM,KAAK,CAAC,8BAA8B;AACzD,UAAU,SAAS;AACnB,UAAU,kBAAkB;AAC5B,UAAU,MAAM;AAChB,SAAS,CAAC;AACV,OAAO;AACP;AACA,MAAM,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1D,MAAM,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;AAC1C,MAAM,MAAM,4BAA4B,GAAG,kBAAkB,CAAC,SAAS,EAAE,CAAC;AAC1E,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AAC/C,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC;AAC5E,MAAM,MAAM,+BAA+B;AAC3C,QAAQ,aAAa,CAAC,8BAA8B,EAAE,CAAC,MAAM,CAAC;AAC9D;AACA,MAAM,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB;AACpD,QAAQ,UAAU,CAAC,uCAAuC;AAC1D,QAAQ,SAAS,CAAC,QAAQ,EAAE;AAC5B,QAAQ,4BAA4B;AACpC,QAAQ,aAAa;AACrB,QAAQ,mBAAmB;AAC3B,QAAQ,+BAA+B;AACvC,OAAO,CAAC;AACR;AACA,MAAM,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,+BAA+B;AAC7E,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,+BAA+B,CAAC;AAChE,UAAU,SAAS,CAAC;AACpB;AACA,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW;AAClE,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,2BAA2B,CAAC;AAC1D,OAAO,CAAC;AACR;AACA,MAAM,IAAI,EAAE,IAAI,YAAY,aAAa,CAAC,EAAE;AAC5C,QAAQ,OAAO,iBAAiB,CAAC,EAAE,EAAE,CAAC;AACtC,OAAO;AACP;AACA,MAAM,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;AAChD,MAAM,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACtE,MAAM,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB;AAC/C,QAAQ,IAAI,CAAC,IAAI;AACjB,QAAQ,YAAY;AACpB,QAAQ,wBAAwB;AAChC,OAAO,CAAC;AACR;AACA,MAAM,OAAO,iBAAiB,CAAC,EAAE,EAAE,CAAC;AACpC,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,oDAAoD;AAC5D,QAAQ,KAAK;AACb,OAAO,CAAC;AACR,MAAM,MAAM,KAAK,CAAC;AAClB,KAAK;AACL,GAAG;AACH,CAAC;AACD;AACA,SAAS,oBAAoB,CAAC,aAAa,EAAE;AAC7C,EAAE,IAAI,CAAC,aAAa,EAAE;AACtB,IAAI,OAAO;AACX,GAAG;AACH,EAAE,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC9D,IAAI;AACJ,MAAM,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,UAAU;AAC/C,MAAM,IAAI,KAAK,aAAa;AAC5B,MAAM,IAAI,KAAK,WAAW;AAC1B,MAAM;AACN,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AAC5C,KAAK;AACL,GAAG,CAAC,CAAC;AACL;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../js/constants.js","../js/syncLock.js","../js/utils.js","../js/resources/accounts.js","../js/resources/transactions.js","../js/resources/notes.js","../js/resources/tags.js","../js/resources/settings.js","../js/client.js","../js/standalone.js","../js/index.js"],"sourcesContent":["export const WorkerAction = Object.freeze({\n INIT: \"init\",\n INIT_MOCK: \"initMock\",\n CALL_METHOD: \"callMethod\",\n EXECUTE_CALLBACK: \"executeCallback\",\n});\n\nexport const CallbackType = Object.freeze({\n GET_KEY: \"getKey\",\n INSERT_KEY: \"insertKey\",\n SIGN: \"sign\",\n});\n\nexport const MethodName = Object.freeze({\n CREATE_CLIENT: \"createClient\",\n APPLY_TRANSACTION: \"applyTransaction\",\n EXECUTE_TRANSACTION: \"executeTransaction\",\n PROVE_TRANSACTION: \"proveTransaction\",\n SUBMIT_NEW_TRANSACTION: \"submitNewTransaction\",\n SUBMIT_NEW_TRANSACTION_MOCK: \"submitNewTransactionMock\",\n SUBMIT_NEW_TRANSACTION_WITH_PROVER: \"submitNewTransactionWithProver\",\n SUBMIT_NEW_TRANSACTION_WITH_PROVER_MOCK: \"submitNewTransactionWithProverMock\",\n SYNC_STATE: \"syncState\",\n SYNC_STATE_MOCK: \"syncStateMock\",\n});\n","/**\n * Sync Lock Module\n *\n * Provides coordination for concurrent syncState() calls using the Web Locks API\n * with an in-process mutex fallback for older browsers.\n *\n * Behavior:\n * - Uses \"coalescing\": if a sync is in progress, subsequent callers wait and receive\n * the same result\n * - Web Locks for cross-tab coordination (Chrome 69+, Safari 15.4+)\n * - In-process mutex fallback when Web Locks unavailable\n * - Optional timeout support\n */\n\n/**\n * Check if the Web Locks API is available.\n */\nexport function hasWebLocks() {\n return (\n typeof navigator !== \"undefined\" &&\n navigator.locks !== undefined &&\n typeof navigator.locks.request === \"function\"\n );\n}\n\n/**\n * Internal state for tracking in-progress syncs and waiters per database.\n */\nconst syncStates = new Map();\n\n/**\n * Get or create sync state for a database.\n */\nfunction getSyncState(dbId) {\n let state = syncStates.get(dbId);\n if (!state) {\n state = {\n inProgress: false,\n result: null,\n error: null,\n waiters: [],\n releaseLock: null,\n syncGeneration: 0,\n };\n syncStates.set(dbId, state);\n }\n return state;\n}\n\n/**\n * Acquire a sync lock for the given database.\n *\n * If a sync is already in progress:\n * - Returns { acquired: false, coalescedResult } after waiting for the result\n *\n * If no sync is in progress:\n * - Returns { acquired: true } and the caller should perform the sync,\n * then call releaseSyncLock() or releaseSyncLockWithError()\n *\n * @param {string} dbId - The database ID to lock\n * @param {number} timeoutMs - Optional timeout in milliseconds (0 = no timeout)\n * @returns {Promise<{acquired: boolean, coalescedResult?: any}>}\n */\nexport async function acquireSyncLock(dbId, timeoutMs = 0) {\n const state = getSyncState(dbId);\n\n // If a sync is already in progress, wait for it to complete (coalescing)\n if (state.inProgress) {\n return new Promise((resolve, reject) => {\n let timeoutId;\n if (timeoutMs > 0) {\n timeoutId = setTimeout(() => {\n const idx = state.waiters.findIndex((w) => w.resolve === onResult);\n if (idx !== -1) {\n state.waiters.splice(idx, 1);\n }\n reject(new Error(\"Sync lock acquisition timed out\"));\n }, timeoutMs);\n }\n\n const onResult = (result) => {\n if (timeoutId) clearTimeout(timeoutId);\n resolve({ acquired: false, coalescedResult: result });\n };\n\n const onError = (error) => {\n if (timeoutId) clearTimeout(timeoutId);\n reject(error);\n };\n\n state.waiters.push({ resolve: onResult, reject: onError });\n });\n }\n\n // Mark sync as in progress and increment generation\n state.inProgress = true;\n state.result = null;\n state.error = null;\n state.syncGeneration++;\n const currentGeneration = state.syncGeneration;\n\n // Try to acquire Web Lock if available\n if (hasWebLocks()) {\n const lockName = `miden-sync-${dbId}`;\n\n return new Promise((resolve, reject) => {\n let timeoutId;\n let timedOut = false;\n\n if (timeoutMs > 0) {\n timeoutId = setTimeout(() => {\n timedOut = true;\n if (state.syncGeneration === currentGeneration) {\n state.inProgress = false;\n const error = new Error(\"Sync lock acquisition timed out\");\n for (const waiter of state.waiters) {\n waiter.reject(error);\n }\n state.waiters = [];\n }\n reject(new Error(\"Sync lock acquisition timed out\"));\n }, timeoutMs);\n }\n\n navigator.locks\n .request(lockName, { mode: \"exclusive\" }, async () => {\n if (timedOut || state.syncGeneration !== currentGeneration) {\n return;\n }\n\n if (timeoutId) clearTimeout(timeoutId);\n\n return new Promise((releaseLock) => {\n state.releaseLock = releaseLock;\n resolve({ acquired: true });\n });\n })\n .catch((err) => {\n if (timeoutId) clearTimeout(timeoutId);\n if (state.syncGeneration === currentGeneration) {\n state.inProgress = false;\n }\n reject(err instanceof Error ? err : new Error(String(err)));\n });\n });\n } else {\n // Fallback: no Web Locks, just use in-process state\n return { acquired: true };\n }\n}\n\n/**\n * Release the sync lock with a successful result.\n *\n * This notifies all waiting callers with the result and releases the lock.\n *\n * @param {string} dbId - The database ID\n * @param {any} result - The sync result to pass to waiters\n */\nexport function releaseSyncLock(dbId, result) {\n const state = getSyncState(dbId);\n\n if (!state.inProgress) {\n console.warn(\"releaseSyncLock called but no sync was in progress\");\n return;\n }\n\n state.result = result;\n state.inProgress = false;\n\n for (const waiter of state.waiters) {\n waiter.resolve(result);\n }\n state.waiters = [];\n\n if (state.releaseLock) {\n state.releaseLock();\n state.releaseLock = null;\n }\n}\n\n/**\n * Release the sync lock due to an error.\n *\n * This notifies all waiting callers that the sync failed.\n *\n * @param {string} dbId - The database ID\n * @param {Error} error - The error to pass to waiters\n */\nexport function releaseSyncLockWithError(dbId, error) {\n const state = getSyncState(dbId);\n\n if (!state.inProgress) {\n console.warn(\"releaseSyncLockWithError called but no sync was in progress\");\n return;\n }\n\n state.error = error;\n state.inProgress = false;\n\n for (const waiter of state.waiters) {\n waiter.reject(error);\n }\n state.waiters = [];\n\n if (state.releaseLock) {\n state.releaseLock();\n state.releaseLock = null;\n }\n}\n","/**\n * Shared utility functions for the MidenClient resource classes.\n * Each function accepts a `wasm` parameter (the WASM module) for constructing typed objects.\n */\n\n/**\n * Resolves an AccountRef (string | Account | AccountId) to an AccountId.\n *\n * - Strings starting with `0x`/`0X` are parsed as hex via `AccountId.fromHex()`.\n * - Other strings are parsed as bech32 via `AccountId.fromBech32()`.\n * - Objects with an `.id()` method (Account) are resolved by calling `.id()`.\n * - Otherwise, the value is assumed to be an AccountId pass-through.\n *\n * @param {string | Account | AccountId} ref - The account reference to resolve.\n * @param {object} wasm - The WASM module.\n * @returns {AccountId} The resolved AccountId.\n */\nexport function resolveAccountRef(ref, wasm) {\n if (ref == null) {\n throw new Error(\"Account reference cannot be null or undefined\");\n }\n if (typeof ref === \"string\") {\n if (ref.startsWith(\"0x\") || ref.startsWith(\"0X\")) {\n return wasm.AccountId.fromHex(ref);\n }\n return wasm.AccountId.fromBech32(ref);\n }\n if (ref && typeof ref.id === \"function\") {\n return ref.id();\n }\n return ref;\n}\n\n/**\n * Resolves an AccountRef to a WASM Address object.\n *\n * - Strings starting with bech32 prefixes (`m`) are parsed via `Address.fromBech32()`.\n * - Strings starting with `0x`/`0X` are parsed as hex AccountId, then wrapped in Address.\n * - Account objects are resolved via `.id()` then wrapped in Address.\n * - AccountId objects are wrapped in Address directly.\n *\n * @param {string | Account | AccountId} ref - The account reference to resolve.\n * @param {object} wasm - The WASM module.\n * @returns {Address} The resolved Address.\n */\nexport function resolveAddress(ref, wasm) {\n if (ref == null) {\n throw new Error(\"Address reference cannot be null or undefined\");\n }\n if (typeof ref === \"string\") {\n if (ref.startsWith(\"0x\") || ref.startsWith(\"0X\")) {\n const accountId = wasm.AccountId.fromHex(ref);\n return wasm.Address.fromAccountId(accountId, undefined);\n }\n return wasm.Address.fromBech32(ref);\n }\n if (ref && typeof ref.id === \"function\") {\n const accountId = ref.id();\n return wasm.Address.fromAccountId(accountId, undefined);\n }\n return wasm.Address.fromAccountId(ref, undefined);\n}\n\n/**\n * Resolves a NoteVisibility string to a WASM NoteType value.\n *\n * @param {string | undefined} type - \"public\" or \"private\". Defaults to \"public\".\n * @param {object} wasm - The WASM module.\n * @returns {number} The NoteType enum value.\n */\nexport function resolveNoteType(type, wasm) {\n if (type === \"private\") {\n return wasm.NoteType.Private;\n }\n if (type === \"public\" || type == null) {\n return wasm.NoteType.Public;\n }\n throw new Error(\n `Unknown note type: \"${type}\". Expected \"public\" or \"private\".`\n );\n}\n\n/**\n * Resolves a storage mode string to a WASM AccountStorageMode instance.\n *\n * @param {string | undefined} mode - \"private\", \"public\", or \"network\". Defaults to \"private\".\n * @param {object} wasm - The WASM module.\n * @returns {AccountStorageMode} The storage mode instance.\n */\nexport function resolveStorageMode(mode, wasm) {\n switch (mode) {\n case \"public\":\n return wasm.AccountStorageMode.public();\n case \"network\":\n return wasm.AccountStorageMode.network();\n case \"private\":\n case undefined:\n case null:\n return wasm.AccountStorageMode.private();\n default:\n throw new Error(\n `Unknown storage mode: \"${mode}\". Expected \"private\", \"public\", or \"network\".`\n );\n }\n}\n\n/**\n * Resolves an auth scheme string to a WASM AuthScheme enum value.\n *\n * @param {string | undefined} scheme - \"falcon\" or \"ecdsa\". Defaults to \"falcon\".\n * @param {object} wasm - The WASM module.\n * @returns {number} The AuthScheme enum value.\n */\nexport function resolveAuthScheme(scheme, wasm) {\n if (scheme === \"ecdsa\") {\n return wasm.AuthScheme.AuthEcdsaK256Keccak;\n }\n if (scheme === \"falcon\" || scheme == null) {\n return wasm.AuthScheme.AuthRpoFalcon512;\n }\n throw new Error(\n `Unknown auth scheme: \"${scheme}\". Expected \"falcon\" or \"ecdsa\".`\n );\n}\n\n/**\n * Resolves a simplified AccountType string to a boolean `mutable` flag\n * for the underlying WASM `newWallet()` / `importPublicAccountFromSeed()` calls.\n *\n * @param {string | undefined} accountType - \"MutableWallet\", \"ImmutableWallet\", or undefined.\n * Defaults to mutable wallet when undefined.\n * @returns {boolean} Whether the account code is mutable.\n */\nexport function resolveAccountMutability(accountType) {\n if (accountType == null || accountType === \"MutableWallet\") {\n return true;\n }\n if (accountType === \"ImmutableWallet\") {\n return false;\n }\n throw new Error(\n `Unknown wallet account type: \"${accountType}\". Expected \"MutableWallet\" or \"ImmutableWallet\".`\n );\n}\n\n/**\n * Hashes a seed value. Strings are hashed via SHA-256 to produce a 32-byte Uint8Array.\n * Uint8Array values are passed through unchanged.\n *\n * @param {string | Uint8Array} seed - The seed to hash.\n * @returns {Promise<Uint8Array>} The hashed seed.\n */\nexport async function hashSeed(seed) {\n if (seed instanceof Uint8Array) {\n return seed;\n }\n if (typeof seed === \"string\") {\n const encoded = new TextEncoder().encode(seed);\n const hash = await crypto.subtle.digest(\"SHA-256\", encoded);\n return new Uint8Array(hash);\n }\n throw new TypeError(\n `Invalid seed type: expected string or Uint8Array, got ${typeof seed}`\n );\n}\n","import {\n resolveAccountRef,\n resolveStorageMode,\n resolveAuthScheme,\n resolveAccountMutability,\n hashSeed,\n} from \"../utils.js\";\n\nexport class AccountsResource {\n #inner;\n #getWasm;\n #client;\n\n constructor(inner, getWasm, client) {\n this.#inner = inner;\n this.#getWasm = getWasm;\n this.#client = client;\n }\n\n async create(opts) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n\n if (opts?.type === \"FungibleFaucet\") {\n const storageMode = resolveStorageMode(opts.storage ?? \"public\", wasm);\n const authScheme = resolveAuthScheme(opts.auth, wasm);\n return await this.#inner.newFaucet(\n storageMode,\n false,\n opts.symbol,\n opts.decimals,\n BigInt(opts.maxSupply),\n authScheme\n );\n }\n\n // Default: wallet (mutable or immutable based on type)\n const mutable = resolveAccountMutability(opts?.type);\n const storageMode = resolveStorageMode(opts?.storage ?? \"private\", wasm);\n const authScheme = resolveAuthScheme(opts?.auth, wasm);\n const seed = opts?.seed ? await hashSeed(opts.seed) : undefined;\n return await this.#inner.newWallet(storageMode, mutable, authScheme, seed);\n }\n\n async get(ref) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const id = resolveAccountRef(ref, wasm);\n const account = await this.#inner.getAccount(id);\n return account ?? null;\n }\n\n async list() {\n this.#client.assertNotTerminated();\n return await this.#inner.getAccounts();\n }\n\n async getDetails(ref) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const id = resolveAccountRef(ref, wasm);\n const account = await this.#inner.getAccount(id);\n if (!account) {\n throw new Error(`Account not found: ${id.toString()}`);\n }\n const keys = await this.#inner.getPublicKeyCommitmentsOfAccount(id);\n return {\n account,\n vault: account.vault(),\n storage: account.storage(),\n code: account.code() ?? null,\n keys,\n };\n }\n\n async getBalance(accountRef, tokenRef) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const accountId = resolveAccountRef(accountRef, wasm);\n const faucetId = resolveAccountRef(tokenRef, wasm);\n const reader = this.#inner.accountReader(accountId);\n return await reader.getBalance(faucetId);\n }\n\n async import(input) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n\n if (typeof input === \"string\") {\n // Import by ID (hex or bech32 string)\n const id = resolveAccountRef(input, wasm);\n await this.#inner.importAccountById(id);\n return await this.#inner.getAccount(id);\n }\n\n if (input.file) {\n // Extract accountId before importAccountFile — WASM consumes the\n // AccountFile by value, invalidating the JS wrapper after the call.\n const accountId =\n typeof input.file.accountId === \"function\"\n ? input.file.accountId()\n : null;\n await this.#inner.importAccountFile(input.file);\n if (accountId) {\n return await this.#inner.getAccount(accountId);\n }\n throw new Error(\n \"Could not determine account ID from AccountFile. \" +\n \"Ensure the file contains a valid account.\"\n );\n }\n\n if (input.seed) {\n // Import public account from seed\n const authScheme = resolveAuthScheme(input.auth, wasm);\n const mutable = resolveAccountMutability(input.type);\n return await this.#inner.importPublicAccountFromSeed(\n input.seed,\n mutable,\n authScheme\n );\n }\n\n throw new Error(\n \"Invalid import input: expected a string, { file }, or { seed }\"\n );\n }\n\n async export(ref) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const id = resolveAccountRef(ref, wasm);\n return await this.#inner.exportAccountFile(id);\n }\n\n async addAddress(ref, addr) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const id = resolveAccountRef(ref, wasm);\n const address = wasm.Address.fromBech32(addr);\n await this.#inner.insertAccountAddress(id, address);\n }\n\n async removeAddress(ref, addr) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const id = resolveAccountRef(ref, wasm);\n const address = wasm.Address.fromBech32(addr);\n await this.#inner.removeAccountAddress(id, address);\n }\n}\n","import { resolveAccountRef, resolveNoteType } from \"../utils.js\";\n\nexport class TransactionsResource {\n #inner;\n #getWasm;\n #client;\n\n constructor(inner, getWasm, client) {\n this.#inner = inner;\n this.#getWasm = getWasm;\n this.#client = client;\n }\n\n async send(opts) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const { accountId, request } = await this.#buildSendRequest(opts, wasm);\n\n const txId = await this.#submitOrSubmitWithProver(\n accountId,\n request,\n opts.prover\n );\n\n if (opts.waitForConfirmation) {\n await this.waitFor(txId.toHex(), { timeout: opts.timeout });\n }\n\n return txId;\n }\n\n async mint(opts) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const { accountId, request } = await this.#buildMintRequest(opts, wasm);\n\n const txId = await this.#submitOrSubmitWithProver(\n accountId,\n request,\n opts.prover\n );\n\n if (opts.waitForConfirmation) {\n await this.waitFor(txId.toHex(), { timeout: opts.timeout });\n }\n\n return txId;\n }\n\n async consume(opts) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const { accountId, request } = await this.#buildConsumeRequest(opts, wasm);\n\n const txId = await this.#submitOrSubmitWithProver(\n accountId,\n request,\n opts.prover\n );\n\n if (opts.waitForConfirmation) {\n await this.waitFor(txId.toHex(), { timeout: opts.timeout });\n }\n\n return txId;\n }\n\n async consumeAll(opts) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n\n // getConsumableNotes takes AccountId by value (consumed by WASM).\n // Save hex so we can reconstruct for submitNewTransaction.\n const accountId = resolveAccountRef(opts.account, wasm);\n const accountIdHex = accountId.toString();\n const consumable = await this.#inner.getConsumableNotes(accountId);\n\n if (!consumable || consumable.length === 0) {\n return { txId: null, consumed: 0, remaining: 0 };\n }\n\n const total = consumable.length;\n const toConsume =\n opts.maxNotes != null ? consumable.slice(0, opts.maxNotes) : consumable;\n\n if (toConsume.length === 0) {\n return { txId: null, consumed: 0, remaining: total };\n }\n\n const notes = toConsume.map((c) => c.inputNoteRecord().toNote());\n\n const request = await this.#inner.newConsumeTransactionRequest(notes);\n\n const txId = await this.#submitOrSubmitWithProver(\n wasm.AccountId.fromHex(accountIdHex),\n request,\n opts.prover\n );\n\n if (opts.waitForConfirmation) {\n await this.waitFor(txId.toHex(), { timeout: opts.timeout });\n }\n\n return {\n txId,\n consumed: toConsume.length,\n remaining: total - toConsume.length,\n };\n }\n\n async swap(opts) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const { accountId, request } = await this.#buildSwapRequest(opts, wasm);\n\n const txId = await this.#submitOrSubmitWithProver(\n accountId,\n request,\n opts.prover\n );\n\n if (opts.waitForConfirmation) {\n await this.waitFor(txId.toHex(), { timeout: opts.timeout });\n }\n\n return txId;\n }\n\n async preview(opts) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n\n let accountId;\n let request;\n\n switch (opts.operation) {\n case \"send\": {\n ({ accountId, request } = await this.#buildSendRequest(opts, wasm));\n break;\n }\n case \"mint\": {\n ({ accountId, request } = await this.#buildMintRequest(opts, wasm));\n break;\n }\n case \"consume\": {\n ({ accountId, request } = await this.#buildConsumeRequest(opts, wasm));\n break;\n }\n case \"swap\": {\n ({ accountId, request } = await this.#buildSwapRequest(opts, wasm));\n break;\n }\n default:\n throw new Error(`Unknown preview operation: ${opts.operation}`);\n }\n\n return await this.#inner.executeForSummary(accountId, request);\n }\n\n async submit(account, request, opts) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const accountId = resolveAccountRef(account, wasm);\n return await this.#submitOrSubmitWithProver(\n accountId,\n request,\n opts?.prover\n );\n }\n\n async list(query) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n\n let filter;\n if (!query) {\n filter = wasm.TransactionFilter.all();\n } else if (query.status === \"uncommitted\") {\n filter = wasm.TransactionFilter.uncommitted();\n } else if (query.ids) {\n const txIds = query.ids.map((id) => wasm.TransactionId.fromHex(id));\n filter = wasm.TransactionFilter.ids(txIds);\n } else if (query.expiredBefore !== undefined) {\n filter = wasm.TransactionFilter.expiredBefore(query.expiredBefore);\n } else {\n filter = wasm.TransactionFilter.all();\n }\n\n return await this.#inner.getTransactions(filter);\n }\n\n /**\n * Polls for transaction confirmation.\n *\n * @param {string} txId - Transaction ID hex string.\n * @param {WaitOptions} [opts] - Polling options.\n * @param {number} [opts.timeout=60000] - Wall-clock polling timeout in\n * milliseconds. This is NOT a block height — it controls how long the\n * client waits before giving up. Set to 0 to disable the timeout and poll\n * indefinitely until the transaction is committed or discarded.\n * @param {number} [opts.interval=5000] - Polling interval in ms.\n * @param {function} [opts.onProgress] - Called with the current status on\n * each poll iteration (\"pending\", \"submitted\", or \"committed\").\n */\n async waitFor(txId, opts) {\n this.#client.assertNotTerminated();\n const timeout = opts?.timeout ?? 60_000;\n const interval = opts?.interval ?? 5_000;\n const start = Date.now();\n\n const wasm = await this.#getWasm();\n\n while (true) {\n const elapsed = Date.now() - start;\n if (timeout > 0 && elapsed >= timeout) {\n throw new Error(\n `Transaction confirmation timed out after ${timeout}ms`\n );\n }\n\n try {\n await this.#inner.syncStateWithTimeout(0);\n } catch {\n // Sync may fail transiently; continue polling\n }\n\n // Recreate filter each iteration — WASM consumes it by value\n const filter = wasm.TransactionFilter.ids([\n wasm.TransactionId.fromHex(txId),\n ]);\n const txs = await this.#inner.getTransactions(filter);\n\n if (txs && txs.length > 0) {\n const tx = txs[0];\n const status = tx.transactionStatus?.();\n\n if (status) {\n if (status.isCommitted()) {\n opts?.onProgress?.(\"committed\");\n return;\n }\n if (status.isDiscarded()) {\n throw new Error(`Transaction rejected: ${txId}`);\n }\n }\n\n opts?.onProgress?.(\"submitted\");\n } else {\n opts?.onProgress?.(\"pending\");\n }\n\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n }\n\n // ── Shared request builders ──\n\n async #buildSendRequest(opts, wasm) {\n const accountId = resolveAccountRef(opts.account, wasm);\n const targetId = resolveAccountRef(opts.to, wasm);\n const faucetId = resolveAccountRef(opts.token, wasm);\n const noteType = resolveNoteType(opts.type, wasm);\n const amount = BigInt(opts.amount);\n\n const request = await this.#inner.newSendTransactionRequest(\n accountId,\n targetId,\n faucetId,\n noteType,\n amount,\n opts.reclaimAfter,\n opts.timelockUntil\n );\n return { accountId, request };\n }\n\n async #buildMintRequest(opts, wasm) {\n const accountId = resolveAccountRef(opts.account, wasm);\n const targetId = resolveAccountRef(opts.to, wasm);\n const noteType = resolveNoteType(opts.type, wasm);\n const amount = BigInt(opts.amount);\n\n // WASM signature: newMintTransactionRequest(target, faucet, noteType, amount)\n const request = await this.#inner.newMintTransactionRequest(\n targetId,\n accountId,\n noteType,\n amount\n );\n return { accountId, request };\n }\n\n async #buildConsumeRequest(opts, wasm) {\n const accountId = resolveAccountRef(opts.account, wasm);\n const noteInputs = Array.isArray(opts.notes) ? opts.notes : [opts.notes];\n const notes = await Promise.all(\n noteInputs.map((input) => this.#resolveNoteInput(input))\n );\n const request = await this.#inner.newConsumeTransactionRequest(notes);\n return { accountId, request };\n }\n\n async #buildSwapRequest(opts, wasm) {\n const accountId = resolveAccountRef(opts.account, wasm);\n const offeredFaucetId = resolveAccountRef(opts.offer.token, wasm);\n const requestedFaucetId = resolveAccountRef(opts.request.token, wasm);\n const noteType = resolveNoteType(opts.type, wasm);\n const paybackNoteType = resolveNoteType(\n opts.paybackType ?? opts.type,\n wasm\n );\n\n const request = await this.#inner.newSwapTransactionRequest(\n accountId,\n offeredFaucetId,\n BigInt(opts.offer.amount),\n requestedFaucetId,\n BigInt(opts.request.amount),\n noteType,\n paybackNoteType\n );\n return { accountId, request };\n }\n\n async #resolveNoteInput(input) {\n if (typeof input === \"string\") {\n const record = await this.#inner.getInputNote(input);\n if (!record) {\n throw new Error(`Note not found: ${input}`);\n }\n return record.toNote();\n }\n // InputNoteRecord — unwrap to Note\n if (input && typeof input.toNote === \"function\") {\n return input.toNote();\n }\n // NoteId — look up the note by its hex ID\n if (input && input.constructor?.name === \"NoteId\") {\n const hex = input.toString();\n const record = await this.#inner.getInputNote(hex);\n if (!record) {\n throw new Error(`Note not found: ${hex}`);\n }\n return record.toNote();\n }\n // Assume it's already a Note object\n return input;\n }\n\n async #submitOrSubmitWithProver(accountId, request, perCallProver) {\n const prover = perCallProver ?? this.#client.defaultProver;\n if (prover) {\n return await this.#inner.submitNewTransactionWithProver(\n accountId,\n request,\n prover\n );\n }\n return await this.#inner.submitNewTransaction(accountId, request);\n }\n}\n","import { resolveAccountRef, resolveAddress } from \"../utils.js\";\n\nexport class NotesResource {\n #inner;\n #getWasm;\n #client;\n\n constructor(inner, getWasm, client) {\n this.#inner = inner;\n this.#getWasm = getWasm;\n this.#client = client;\n }\n\n async list(query) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const filter = buildNoteFilter(query, wasm);\n return await this.#inner.getInputNotes(filter);\n }\n\n async get(noteId) {\n this.#client.assertNotTerminated();\n const result = await this.#inner.getInputNote(noteId);\n return result ?? null;\n }\n\n async listSent(query) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const filter = buildNoteFilter(query, wasm);\n return await this.#inner.getOutputNotes(filter);\n }\n\n async listAvailable(opts) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const accountId = resolveAccountRef(opts.account, wasm);\n return await this.#inner.getConsumableNotes(accountId);\n }\n\n async import(noteFile) {\n this.#client.assertNotTerminated();\n return await this.#inner.importNoteFile(noteFile);\n }\n\n async export(noteId, opts) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const format = opts?.format ?? wasm.NoteExportFormat.Full;\n return await this.#inner.exportNoteFile(noteId, format);\n }\n\n async fetchPrivate(opts) {\n this.#client.assertNotTerminated();\n if (opts?.mode === \"all\") {\n await this.#inner.fetchAllPrivateNotes();\n } else {\n await this.#inner.fetchPrivateNotes();\n }\n }\n\n async sendPrivate(opts) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const noteRecord = await this.#inner.getInputNote(opts.noteId);\n if (!noteRecord) {\n throw new Error(`Note not found: ${opts.noteId}`);\n }\n const note = noteRecord.toNote();\n const address = resolveAddress(opts.to, wasm);\n await this.#inner.sendPrivateNote(note, address);\n }\n}\n\nfunction buildNoteFilter(query, wasm) {\n if (!query) {\n return new wasm.NoteFilter(wasm.NoteFilterTypes.All, undefined);\n }\n\n if (query.ids) {\n const noteIds = query.ids.map((id) => wasm.NoteId.fromHex(id));\n return new wasm.NoteFilter(wasm.NoteFilterTypes.List, noteIds);\n }\n\n if (query.status) {\n const statusMap = {\n consumed: wasm.NoteFilterTypes.Consumed,\n committed: wasm.NoteFilterTypes.Committed,\n expected: wasm.NoteFilterTypes.Expected,\n processing: wasm.NoteFilterTypes.Processing,\n unverified: wasm.NoteFilterTypes.Unverified,\n };\n const filterType = statusMap[query.status];\n if (filterType === undefined) {\n throw new Error(`Unknown note status: ${query.status}`);\n }\n return new wasm.NoteFilter(filterType, undefined);\n }\n\n return new wasm.NoteFilter(wasm.NoteFilterTypes.All, undefined);\n}\n","export class TagsResource {\n #inner;\n #client;\n\n constructor(inner, getWasm, client) {\n this.#inner = inner;\n this.#client = client;\n }\n\n async add(tag) {\n this.#client.assertNotTerminated();\n await this.#inner.addTag(String(tag));\n }\n\n async remove(tag) {\n this.#client.assertNotTerminated();\n await this.#inner.removeTag(String(tag));\n }\n\n async list() {\n this.#client.assertNotTerminated();\n const tags = await this.#inner.listTags();\n return Array.from(tags).map((t) => {\n const n = Number(t);\n if (Number.isNaN(n)) {\n throw new Error(`Invalid tag value: ${t}`);\n }\n return n;\n });\n }\n}\n","export class SettingsResource {\n #inner;\n #client;\n\n constructor(inner, _getWasm, client) {\n this.#inner = inner;\n this.#client = client;\n }\n\n async get(key) {\n this.#client.assertNotTerminated();\n const value = await this.#inner.getSetting(key);\n return value === undefined ? null : value;\n }\n\n async set(key, value) {\n this.#client.assertNotTerminated();\n await this.#inner.setSetting(key, value);\n }\n\n async remove(key) {\n this.#client.assertNotTerminated();\n await this.#inner.removeSetting(key);\n }\n\n async listKeys() {\n this.#client.assertNotTerminated();\n return await this.#inner.listSettingKeys();\n }\n}\n","import { AccountsResource } from \"./resources/accounts.js\";\nimport { TransactionsResource } from \"./resources/transactions.js\";\nimport { NotesResource } from \"./resources/notes.js\";\nimport { TagsResource } from \"./resources/tags.js\";\nimport { SettingsResource } from \"./resources/settings.js\";\nimport { hashSeed } from \"./utils.js\";\n\n/**\n * MidenClient wraps the existing proxy-wrapped WebClient with a resource-based API.\n *\n * Resource classes receive the proxy client and call its methods, handling all type\n * conversions (string -> AccountId, number -> BigInt, string -> enum).\n */\nexport class MidenClient {\n // Injected by index.js to resolve circular imports\n static _WasmWebClient = null;\n static _MockWasmWebClient = null;\n static _getWasmOrThrow = null;\n\n #inner;\n #getWasm;\n #terminated = false;\n #defaultProver = null;\n #isMock = false;\n\n constructor(inner, getWasm, defaultProver) {\n this.#inner = inner;\n this.#getWasm = getWasm;\n this.#defaultProver = defaultProver ?? null;\n\n this.accounts = new AccountsResource(inner, getWasm, this);\n this.transactions = new TransactionsResource(inner, getWasm, this);\n this.notes = new NotesResource(inner, getWasm, this);\n this.tags = new TagsResource(inner, getWasm, this);\n this.settings = new SettingsResource(inner, getWasm, this);\n }\n\n /**\n * Creates and initializes a new MidenClient.\n *\n * @param {ClientOptions} [options] - Client configuration options.\n * @returns {Promise<MidenClient>} A fully initialized client.\n */\n static async create(options) {\n const getWasm = MidenClient._getWasmOrThrow;\n const WebClientClass = MidenClient._WasmWebClient;\n\n if (!WebClientClass || !getWasm) {\n throw new Error(\n \"MidenClient not initialized. Import from the SDK package entry point.\"\n );\n }\n\n const seed = options?.seed ? await hashSeed(options.seed) : undefined;\n\n let inner;\n if (options?.keystore) {\n inner = await WebClientClass.createClientWithExternalKeystore(\n options?.rpcUrl,\n options?.noteTransportUrl,\n seed,\n options?.storeName,\n options.keystore.getKey,\n options.keystore.insertKey,\n options.keystore.sign\n );\n } else {\n inner = await WebClientClass.createClient(\n options?.rpcUrl,\n options?.noteTransportUrl,\n seed,\n options?.storeName\n );\n }\n\n let defaultProver = null;\n if (options?.proverUrl) {\n const wasm = await getWasm();\n defaultProver = wasm.TransactionProver.newRemoteProver(\n options.proverUrl,\n undefined\n );\n }\n\n const client = new MidenClient(inner, getWasm, defaultProver);\n\n if (options?.autoSync) {\n await client.sync();\n }\n\n return client;\n }\n\n /**\n * Creates a client preconfigured for testnet use.\n * Defaults to autoSync: true.\n *\n * @param {object} [options] - Options (autoSync can be overridden).\n * @returns {Promise<MidenClient>} A fully initialized testnet client.\n */\n static async createTestnet(options) {\n return MidenClient.create({\n ...options,\n autoSync: options?.autoSync ?? true,\n });\n }\n\n /**\n * Creates a mock client for testing.\n *\n * @param {MockOptions} [options] - Mock client options.\n * @returns {Promise<MidenClient>} A mock client.\n */\n static async createMock(options) {\n const getWasm = MidenClient._getWasmOrThrow;\n const MockWebClientClass = MidenClient._MockWasmWebClient;\n\n if (!MockWebClientClass || !getWasm) {\n throw new Error(\n \"MidenClient not initialized. Import from the SDK package entry point.\"\n );\n }\n\n const seed = options?.seed ? await hashSeed(options.seed) : undefined;\n\n const inner = await MockWebClientClass.createClient(\n options?.serializedMockChain,\n options?.serializedNoteTransport,\n seed\n );\n\n const client = new MidenClient(inner, getWasm, null);\n client.#isMock = true;\n return client;\n }\n\n /** Returns the client-level default prover (set from ClientOptions.proverUrl). */\n get defaultProver() {\n return this.#defaultProver;\n }\n\n /**\n * Syncs the client state with the Miden node.\n *\n * @param {object} [opts] - Sync options.\n * @param {number} [opts.timeout] - Timeout in milliseconds (0 = no timeout).\n * @returns {Promise<SyncSummary>} The sync summary.\n */\n async sync(opts) {\n this.assertNotTerminated();\n return await this.#inner.syncStateWithTimeout(opts?.timeout ?? 0);\n }\n\n /**\n * Returns the current sync height.\n *\n * @returns {Promise<number>} The current sync height.\n */\n async getSyncHeight() {\n this.assertNotTerminated();\n return await this.#inner.getSyncHeight();\n }\n\n /**\n * Terminates the underlying Web Worker. After this, all method calls will throw.\n */\n terminate() {\n this.#terminated = true;\n this.#inner.terminate?.();\n }\n\n [Symbol.dispose]() {\n this.terminate();\n }\n\n async [Symbol.asyncDispose]() {\n this.terminate();\n }\n\n /**\n * Exports the client store as a versioned snapshot.\n *\n * @returns {Promise<StoreSnapshot>} The store snapshot.\n */\n async exportStore() {\n this.assertNotTerminated();\n const data = await this.#inner.exportStore();\n return { version: 1, data };\n }\n\n /**\n * Imports a previously exported store snapshot.\n *\n * @param {StoreSnapshot} snapshot - The store snapshot to import.\n */\n async importStore(snapshot) {\n this.assertNotTerminated();\n if (!snapshot || snapshot.version !== 1) {\n throw new Error(\n `Unsupported store snapshot version: ${snapshot?.version}. Expected version 1.`\n );\n }\n // Second arg is the store password (empty string = no encryption)\n await this.#inner.forceImportStore(snapshot.data, \"\");\n }\n\n // ── Mock-only methods ──\n\n /** Advances the mock chain by one block. Only available on mock clients. */\n proveBlock() {\n this.assertNotTerminated();\n this.#assertMock(\"proveBlock\");\n return this.#inner.proveBlock();\n }\n\n /** Returns true if this client uses a mock chain. */\n usesMockChain() {\n return this.#isMock;\n }\n\n /** Serializes the mock chain state for snapshot/restore in tests. */\n serializeMockChain() {\n this.assertNotTerminated();\n this.#assertMock(\"serializeMockChain\");\n return this.#inner.serializeMockChain();\n }\n\n /** Serializes the mock note transport node state. */\n serializeMockNoteTransportNode() {\n this.assertNotTerminated();\n this.#assertMock(\"serializeMockNoteTransportNode\");\n return this.#inner.serializeMockNoteTransportNode();\n }\n\n // ── Internal ──\n\n /** @internal Throws if the client has been terminated. */\n assertNotTerminated() {\n if (this.#terminated) {\n throw new Error(\"Client terminated\");\n }\n }\n\n #assertMock(method) {\n if (!this.#isMock) {\n throw new Error(`${method}() is only available on mock clients`);\n }\n }\n}\n","import { resolveAccountRef, resolveNoteType } from \"./utils.js\";\n\n// Module-level WASM reference, set by index.js after initialization\nlet _wasm = null;\nlet _WebClient = null;\n\nexport function _setWasm(wasm) {\n _wasm = wasm;\n}\n\nexport function _setWebClient(WebClientClass) {\n _WebClient = WebClientClass;\n}\n\nfunction getWasm() {\n if (!_wasm) {\n throw new Error(\n \"WASM not initialized. Ensure the SDK is loaded before calling standalone utilities.\"\n );\n }\n return _wasm;\n}\n\n/**\n * Creates a P2ID (Pay-to-ID) note.\n *\n * @param {NoteOptions} opts - Note creation options.\n * @returns {OutputNote} The created output note.\n */\nexport function createP2IDNote(opts) {\n const wasm = getWasm();\n const sender = resolveAccountRef(opts.from, wasm);\n const target = resolveAccountRef(opts.to, wasm);\n const noteAssets = buildNoteAssets(opts.assets, wasm);\n const noteType = resolveNoteType(opts.type, wasm);\n const attachment = opts.attachment\n ? new wasm.NoteAttachment(opts.attachment)\n : new wasm.NoteAttachment([]);\n\n const note = wasm.Note.createP2IDNote(\n sender,\n target,\n noteAssets,\n noteType,\n attachment\n );\n return wasm.OutputNote.full(note);\n}\n\n/**\n * Creates a P2IDE (Pay-to-ID with Expiration) note.\n *\n * @param {P2IDEOptions} opts - Note creation options with timelock/reclaim.\n * @returns {OutputNote} The created output note.\n */\nexport function createP2IDENote(opts) {\n const wasm = getWasm();\n const sender = resolveAccountRef(opts.from, wasm);\n const target = resolveAccountRef(opts.to, wasm);\n const noteAssets = buildNoteAssets(opts.assets, wasm);\n const noteType = resolveNoteType(opts.type, wasm);\n const attachment = opts.attachment\n ? new wasm.NoteAttachment(opts.attachment)\n : new wasm.NoteAttachment([]);\n\n const note = wasm.Note.createP2IDENote(\n sender,\n target,\n noteAssets,\n opts.reclaimAfter,\n opts.timelockUntil,\n noteType,\n attachment\n );\n return wasm.OutputNote.full(note);\n}\n\n/**\n * Builds a swap tag for note matching.\n *\n * @param {BuildSwapTagOptions} opts - Swap tag options.\n * @returns {NoteTag} The computed swap tag.\n */\nexport function buildSwapTag(opts) {\n const wasm = getWasm();\n if (!_WebClient || typeof _WebClient.buildSwapTag !== \"function\") {\n throw new Error(\n \"WebClient.buildSwapTag is not available. Ensure the SDK is fully loaded.\"\n );\n }\n const noteType = resolveNoteType(opts.type, wasm);\n const offeredFaucetId = resolveAccountRef(opts.offer.token, wasm);\n const requestedFaucetId = resolveAccountRef(opts.request.token, wasm);\n\n return _WebClient.buildSwapTag(\n noteType,\n offeredFaucetId,\n BigInt(opts.offer.amount),\n requestedFaucetId,\n BigInt(opts.request.amount)\n );\n}\n\nfunction buildNoteAssets(assets, wasm) {\n const assetArray = Array.isArray(assets) ? assets : [assets];\n const fungibleAssets = assetArray.map((asset) => {\n const faucetId = resolveAccountRef(asset.token, wasm);\n return new wasm.FungibleAsset(faucetId, BigInt(asset.amount));\n });\n return new wasm.NoteAssets(fungibleAssets);\n}\n","import loadWasm from \"./wasm.js\";\nimport { CallbackType, MethodName, WorkerAction } from \"./constants.js\";\nimport {\n acquireSyncLock,\n releaseSyncLock,\n releaseSyncLockWithError,\n} from \"./syncLock.js\";\nimport { MidenClient } from \"./client.js\";\nimport {\n createP2IDNote,\n createP2IDENote,\n buildSwapTag,\n _setWasm as _setStandaloneWasm,\n _setWebClient as _setStandaloneWebClient,\n} from \"./standalone.js\";\nexport * from \"../Cargo.toml\";\n\nexport const AccountType = Object.freeze({\n MutableWallet: \"MutableWallet\",\n ImmutableWallet: \"ImmutableWallet\",\n FungibleFaucet: \"FungibleFaucet\",\n});\n\nexport const AuthScheme = Object.freeze({\n Falcon: \"falcon\",\n ECDSA: \"ecdsa\",\n});\n\nexport { MidenClient };\nexport { createP2IDNote, createP2IDENote, buildSwapTag };\n\n// Internal exports — used by integration tests that need direct access to the low-level WebClient proxy.\nexport { WebClient as WasmWebClient, MockWebClient as MockWasmWebClient };\n\nconst buildTypedArraysExport = (exportObject) => {\n return Object.entries(exportObject).reduce(\n (exports, [exportName, _export]) => {\n if (exportName.endsWith(\"Array\")) {\n exports[exportName] = _export;\n }\n return exports;\n },\n {}\n );\n};\n\nconst deserializeError = (errorLike) => {\n if (!errorLike) {\n return new Error(\"Unknown error received from worker\");\n }\n const { name, message, stack, cause, ...rest } = errorLike;\n const reconstructedError = new Error(message ?? \"Unknown worker error\");\n reconstructedError.name = name ?? reconstructedError.name;\n if (stack) {\n reconstructedError.stack = stack;\n }\n if (cause) {\n reconstructedError.cause = deserializeError(cause);\n }\n Object.entries(rest).forEach(([key, value]) => {\n if (value !== undefined) {\n reconstructedError[key] = value;\n }\n });\n return reconstructedError;\n};\n\nexport const MidenArrays = {};\n\nlet wasmModule = null;\nlet wasmLoadPromise = null;\nlet webClientStaticsCopied = false;\n\nconst ensureWasm = async () => {\n if (wasmModule) {\n return wasmModule;\n }\n if (!wasmLoadPromise) {\n wasmLoadPromise = loadWasm().then((module) => {\n wasmModule = module;\n if (module) {\n Object.assign(MidenArrays, buildTypedArraysExport(module));\n if (!webClientStaticsCopied && module.WebClient) {\n copyWebClientStatics(module.WebClient);\n webClientStaticsCopied = true;\n }\n // Set WASM module for standalone utilities\n _setStandaloneWasm(module);\n }\n return module;\n });\n }\n return wasmLoadPromise;\n};\n\nexport const getWasmOrThrow = async () => {\n const module = await ensureWasm();\n if (!module) {\n throw new Error(\n \"Miden WASM bindings are unavailable in this environment (SSR is disabled).\"\n );\n }\n return module;\n};\n/**\n * WebClient is a wrapper around the underlying WASM WebClient object.\n *\n * This wrapper serves several purposes:\n *\n * 1. It creates a dedicated web worker to offload computationally heavy tasks\n * (such as creating accounts, executing transactions, submitting transactions, etc.)\n * from the main thread, helping to prevent UI freezes in the browser.\n *\n * 2. It defines methods that mirror the API of the underlying WASM WebClient,\n * with the intention of executing these functions via the web worker. This allows us\n * to maintain the same API and parameters while benefiting from asynchronous, worker-based computation.\n *\n * 3. It employs a Proxy to forward any calls not designated for web worker computation\n * directly to the underlying WASM WebClient instance.\n *\n * Additionally, the wrapper provides a static createClient function. This static method\n * instantiates the WebClient object and ensures that the necessary createClient calls are\n * performed both in the main thread and within the worker thread. This dual initialization\n * correctly passes user parameters (RPC URL and seed) to both the main-thread\n * WASM WebClient and the worker-side instance.\n *\n * Because of this implementation, the only breaking change for end users is in the way the\n * web client is instantiated. Users should now use the WebClient.createClient static call.\n */\n/**\n * Create a Proxy that forwards missing properties to the underlying WASM\n * WebClient.\n */\nfunction createClientProxy(instance) {\n return new Proxy(instance, {\n get(target, prop, receiver) {\n if (prop in target) {\n return Reflect.get(target, prop, receiver);\n }\n if (target.wasmWebClient && prop in target.wasmWebClient) {\n const value = target.wasmWebClient[prop];\n if (typeof value === \"function\") {\n return value.bind(target.wasmWebClient);\n }\n return value;\n }\n return undefined;\n },\n });\n}\n\nclass WebClient {\n /**\n * Create a WebClient wrapper.\n *\n * @param {string | undefined} rpcUrl - RPC endpoint URL used by the client.\n * @param {Uint8Array | undefined} seed - Optional seed for account initialization.\n * @param {string | undefined} storeName - Optional name for the store to be used by the client.\n * @param {(pubKey: Uint8Array) => Promise<Uint8Array | null | undefined> | Uint8Array | null | undefined} [getKeyCb]\n * - Callback to retrieve the secret key bytes for a given public key. The `pubKey`\n * parameter is the serialized public key (from `PublicKey.serialize()`). Return the\n * corresponding secret key as a `Uint8Array`, or `null`/`undefined` if not found. The\n * return value may be provided synchronously or via a `Promise`.\n * @param {(pubKey: Uint8Array, AuthSecretKey: Uint8Array) => Promise<void> | void} [insertKeyCb]\n * - Callback to persist a secret key. `pubKey` is the serialized public key, and\n * `authSecretKey` is the serialized secret key (from `AuthSecretKey.serialize()`). May return\n * `void` or a `Promise<void>`.\n * @param {(pubKey: Uint8Array, signingInputs: Uint8Array) => Promise<Uint8Array> | Uint8Array} [signCb]\n * - Callback to produce serialized signature bytes for the provided inputs. `pubKey` is the\n * serialized public key, and `signingInputs` is a `Uint8Array` produced by\n * `SigningInputs.serialize()`. Must return a `Uint8Array` containing the serialized\n * signature, either directly or wrapped in a `Promise`.\n * @param {string | undefined} [logLevel] - Optional log verbosity level\n * (\"error\", \"warn\", \"info\", \"debug\", \"trace\", \"off\", or \"none\").\n * When set, Rust tracing output is routed to the browser console.\n */\n constructor(\n rpcUrl,\n noteTransportUrl,\n seed,\n storeName,\n getKeyCb,\n insertKeyCb,\n signCb,\n logLevel\n ) {\n this.rpcUrl = rpcUrl;\n this.noteTransportUrl = noteTransportUrl;\n this.seed = seed;\n this.storeName = storeName;\n this.getKeyCb = getKeyCb;\n this.insertKeyCb = insertKeyCb;\n this.signCb = signCb;\n this.logLevel = logLevel;\n\n // Check if Web Workers are available.\n if (typeof Worker !== \"undefined\") {\n console.log(\"WebClient: Web Workers are available.\");\n // Create the worker.\n this.worker = new Worker(\n new URL(\"./workers/web-client-methods-worker.js\", import.meta.url),\n { type: \"module\" }\n );\n\n // Map to track pending worker requests.\n this.pendingRequests = new Map();\n\n // Promises to track when the worker script is loaded and ready.\n this.loaded = new Promise((resolve) => {\n this.loadedResolver = resolve;\n });\n\n // Create a promise that resolves when the worker signals that it is fully initialized.\n this.ready = new Promise((resolve) => {\n this.readyResolver = resolve;\n });\n\n // Listen for messages from the worker.\n this.worker.addEventListener(\"message\", async (event) => {\n const data = event.data;\n\n // Worker script loaded.\n if (data.loaded) {\n this.loadedResolver();\n return;\n }\n\n // Worker ready.\n if (data.ready) {\n this.readyResolver();\n return;\n }\n\n if (data.action === WorkerAction.EXECUTE_CALLBACK) {\n const { callbackType, args, requestId } = data;\n try {\n const callbackMapping = {\n [CallbackType.GET_KEY]: this.getKeyCb,\n [CallbackType.INSERT_KEY]: this.insertKeyCb,\n [CallbackType.SIGN]: this.signCb,\n };\n if (!callbackMapping[callbackType]) {\n throw new Error(`Callback ${callbackType} not available`);\n }\n const callbackFunction = callbackMapping[callbackType];\n let result = callbackFunction.apply(this, args);\n if (result instanceof Promise) {\n result = await result;\n }\n\n this.worker.postMessage({\n callbackResult: result,\n callbackRequestId: requestId,\n });\n } catch (error) {\n this.worker.postMessage({\n callbackError: error.message,\n callbackRequestId: requestId,\n });\n }\n return;\n }\n\n // Handle responses for method calls.\n const { requestId, error, result, methodName } = data;\n if (requestId && this.pendingRequests.has(requestId)) {\n const { resolve, reject } = this.pendingRequests.get(requestId);\n this.pendingRequests.delete(requestId);\n if (error) {\n const workerError =\n error instanceof Error ? error : deserializeError(error);\n console.error(\n `WebClient: Error from worker in ${methodName}:`,\n workerError\n );\n reject(workerError);\n } else {\n resolve(result);\n }\n }\n });\n\n // Once the worker script has loaded, initialize the worker.\n this.loaded.then(() => this.initializeWorker());\n } else {\n console.log(\"WebClient: Web Workers are not available.\");\n // Worker not available; set up fallback values.\n this.worker = null;\n this.pendingRequests = null;\n this.loaded = Promise.resolve();\n this.ready = Promise.resolve();\n }\n\n // Lazy initialize the underlying WASM WebClient when first requested.\n this.wasmWebClient = null;\n this.wasmWebClientPromise = null;\n\n // Promise chain to serialize direct WASM calls that require exclusive\n // (&mut self) access. Without this, concurrent calls on the same client\n // would panic with \"recursive use of an object detected\" due to\n // wasm-bindgen's internal RefCell.\n this._wasmCallChain = Promise.resolve();\n }\n\n /**\n * Serialize a WASM call that requires exclusive (&mut self) access.\n * Concurrent calls are queued and executed one at a time.\n *\n * @param {() => Promise<any>} fn - The async function to execute.\n * @returns {Promise<any>} The result of fn.\n */\n _serializeWasmCall(fn) {\n const result = this._wasmCallChain.catch(() => {}).then(fn);\n this._wasmCallChain = result.catch(() => {});\n return result;\n }\n\n // TODO: This will soon conflict with some changes in main.\n // More context here:\n // https://github.com/0xMiden/miden-client/pull/1645?notification_referrer_id=NT_kwHOA1yg7NoAJVJlcG9zaXRvcnk7NjU5MzQzNzAyO0lzc3VlOzM3OTY4OTU1Nzk¬ifications_query=is%3Aunread#discussion_r2696075480\n initializeWorker() {\n this.worker.postMessage({\n action: WorkerAction.INIT,\n args: [\n this.rpcUrl,\n this.noteTransportUrl,\n this.seed,\n this.storeName,\n !!this.getKeyCb,\n !!this.insertKeyCb,\n !!this.signCb,\n this.logLevel,\n ],\n });\n }\n\n async getWasmWebClient() {\n if (this.wasmWebClient) {\n return this.wasmWebClient;\n }\n if (!this.wasmWebClientPromise) {\n this.wasmWebClientPromise = (async () => {\n const wasm = await getWasmOrThrow();\n const client = new wasm.WebClient();\n this.wasmWebClient = client;\n return client;\n })();\n }\n return this.wasmWebClientPromise;\n }\n\n /**\n * Factory method to create and initialize a WebClient instance.\n * This method is async so you can await the asynchronous call to createClient().\n *\n * @param {string} rpcUrl - The RPC URL.\n * @param {string} noteTransportUrl - The note transport URL (optional).\n * @param {string} seed - The seed for the account.\n * @param {string | undefined} network - Optional name for the store. Setting this allows multiple clients to be used in the same browser.\n * @param {string | undefined} logLevel - Optional log verbosity level (\"error\", \"warn\", \"info\", \"debug\", \"trace\", \"off\", or \"none\").\n * @returns {Promise<WebClient>} The fully initialized WebClient.\n */\n static async createClient(rpcUrl, noteTransportUrl, seed, network, logLevel) {\n // Construct the instance (synchronously).\n const instance = new WebClient(\n rpcUrl,\n noteTransportUrl,\n seed,\n network,\n undefined,\n undefined,\n undefined,\n logLevel\n );\n\n // Set up logging on the main thread before creating the client.\n if (logLevel) {\n const wasm = await getWasmOrThrow();\n wasm.setupLogging(logLevel);\n }\n\n // Wait for the underlying wasmWebClient to be initialized.\n const wasmWebClient = await instance.getWasmWebClient();\n await wasmWebClient.createClient(rpcUrl, noteTransportUrl, seed, network);\n\n // Wait for the worker to be ready\n await instance.ready;\n\n return createClientProxy(instance);\n }\n\n /**\n * Factory method to create and initialize a WebClient instance with a remote keystore.\n * This method is async so you can await the asynchronous call to createClientWithExternalKeystore().\n *\n * @param {string} rpcUrl - The RPC URL.\n * @param {string | undefined} noteTransportUrl - The note transport URL (optional).\n * @param {string | undefined} seed - The seed for the account.\n * @param {string | undefined} storeName - Optional name for the store. Setting this allows multiple clients to be used in the same browser.\n * @param {Function | undefined} getKeyCb - The get key callback.\n * @param {Function | undefined} insertKeyCb - The insert key callback.\n * @param {Function | undefined} signCb - The sign callback.\n * @param {string | undefined} logLevel - Optional log verbosity level (\"error\", \"warn\", \"info\", \"debug\", \"trace\", \"off\", or \"none\").\n * @returns {Promise<WebClient>} The fully initialized WebClient.\n */\n static async createClientWithExternalKeystore(\n rpcUrl,\n noteTransportUrl,\n seed,\n storeName,\n getKeyCb,\n insertKeyCb,\n signCb,\n logLevel\n ) {\n // Construct the instance (synchronously).\n const instance = new WebClient(\n rpcUrl,\n noteTransportUrl,\n seed,\n storeName,\n getKeyCb,\n insertKeyCb,\n signCb,\n logLevel\n );\n\n // Set up logging on the main thread before creating the client.\n if (logLevel) {\n const wasm = await getWasmOrThrow();\n wasm.setupLogging(logLevel);\n }\n\n // Wait for the underlying wasmWebClient to be initialized.\n const wasmWebClient = await instance.getWasmWebClient();\n await wasmWebClient.createClientWithExternalKeystore(\n rpcUrl,\n noteTransportUrl,\n seed,\n storeName,\n getKeyCb,\n insertKeyCb,\n signCb\n );\n\n await instance.ready;\n return createClientProxy(instance);\n }\n\n /**\n * Call a method via the worker.\n * @param {string} methodName - Name of the method to call.\n * @param {...any} args - Arguments for the method.\n * @returns {Promise<any>}\n */\n async callMethodWithWorker(methodName, ...args) {\n await this.ready;\n // Create a unique request ID.\n const requestId = `${methodName}-${Date.now()}-${Math.random()}`;\n return new Promise((resolve, reject) => {\n // Save the resolve and reject callbacks in the pendingRequests map.\n this.pendingRequests.set(requestId, { resolve, reject });\n // Send the method call request to the worker.\n this.worker.postMessage({\n action: WorkerAction.CALL_METHOD,\n methodName,\n args,\n requestId,\n });\n });\n }\n\n // ----- Explicitly Wrapped Methods (Worker-Forwarded) -----\n\n async newWallet(storageMode, mutable, authSchemeId, seed) {\n return this._serializeWasmCall(async () => {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.newWallet(\n storageMode,\n mutable,\n authSchemeId,\n seed\n );\n });\n }\n\n async newFaucet(\n storageMode,\n nonFungible,\n tokenSymbol,\n decimals,\n maxSupply,\n authSchemeId\n ) {\n return this._serializeWasmCall(async () => {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.newFaucet(\n storageMode,\n nonFungible,\n tokenSymbol,\n decimals,\n maxSupply,\n authSchemeId\n );\n });\n }\n\n async submitNewTransaction(accountId, transactionRequest) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.submitNewTransaction(\n accountId,\n transactionRequest\n );\n }\n\n const wasm = await getWasmOrThrow();\n const serializedTransactionRequest = transactionRequest.serialize();\n const result = await this.callMethodWithWorker(\n MethodName.SUBMIT_NEW_TRANSACTION,\n accountId.toString(),\n serializedTransactionRequest\n );\n\n const transactionResult = wasm.TransactionResult.deserialize(\n new Uint8Array(result.serializedTransactionResult)\n );\n\n return transactionResult.id();\n } catch (error) {\n console.error(\"INDEX.JS: Error in submitNewTransaction:\", error);\n throw error;\n }\n }\n\n async submitNewTransactionWithProver(accountId, transactionRequest, prover) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.submitNewTransactionWithProver(\n accountId,\n transactionRequest,\n prover\n );\n }\n\n const wasm = await getWasmOrThrow();\n const serializedTransactionRequest = transactionRequest.serialize();\n const proverPayload = prover.serialize();\n const result = await this.callMethodWithWorker(\n MethodName.SUBMIT_NEW_TRANSACTION_WITH_PROVER,\n accountId.toString(),\n serializedTransactionRequest,\n proverPayload\n );\n\n const transactionResult = wasm.TransactionResult.deserialize(\n new Uint8Array(result.serializedTransactionResult)\n );\n\n return transactionResult.id();\n } catch (error) {\n console.error(\n \"INDEX.JS: Error in submitNewTransactionWithProver:\",\n error\n );\n throw error;\n }\n }\n\n async executeTransaction(accountId, transactionRequest) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.executeTransaction(\n accountId,\n transactionRequest\n );\n }\n\n const wasm = await getWasmOrThrow();\n const serializedTransactionRequest = transactionRequest.serialize();\n const serializedResultBytes = await this.callMethodWithWorker(\n MethodName.EXECUTE_TRANSACTION,\n accountId.toString(),\n serializedTransactionRequest\n );\n\n return wasm.TransactionResult.deserialize(\n new Uint8Array(serializedResultBytes)\n );\n } catch (error) {\n console.error(\"INDEX.JS: Error in executeTransaction:\", error);\n throw error;\n }\n }\n\n async proveTransaction(transactionResult, prover) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.proveTransaction(transactionResult, prover);\n }\n\n const wasm = await getWasmOrThrow();\n const serializedTransactionResult = transactionResult.serialize();\n const proverPayload = prover ? prover.serialize() : null;\n\n const serializedProvenBytes = await this.callMethodWithWorker(\n MethodName.PROVE_TRANSACTION,\n serializedTransactionResult,\n proverPayload\n );\n\n return wasm.ProvenTransaction.deserialize(\n new Uint8Array(serializedProvenBytes)\n );\n } catch (error) {\n console.error(\"INDEX.JS: Error in proveTransaction:\", error);\n throw error;\n }\n }\n\n async applyTransaction(transactionResult, submissionHeight) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.applyTransaction(\n transactionResult,\n submissionHeight\n );\n }\n\n const wasm = await getWasmOrThrow();\n const serializedTransactionResult = transactionResult.serialize();\n const serializedUpdateBytes = await this.callMethodWithWorker(\n MethodName.APPLY_TRANSACTION,\n serializedTransactionResult,\n submissionHeight\n );\n\n return wasm.TransactionStoreUpdate.deserialize(\n new Uint8Array(serializedUpdateBytes)\n );\n } catch (error) {\n console.error(\"INDEX.JS: Error in applyTransaction:\", error);\n throw error;\n }\n }\n\n /**\n * Syncs the client state with the node.\n *\n * This method coordinates concurrent sync calls using the Web Locks API when available,\n * with an in-process mutex fallback for older browsers. If a sync is already in progress,\n * subsequent callers will wait and receive the same result (coalescing behavior).\n *\n * @returns {Promise<SyncSummary>} The sync summary\n */\n async syncState() {\n return this.syncStateWithTimeout(0);\n }\n\n /**\n * Syncs the client state with the node with an optional timeout.\n *\n * This method coordinates concurrent sync calls using the Web Locks API when available,\n * with an in-process mutex fallback for older browsers. If a sync is already in progress,\n * subsequent callers will wait and receive the same result (coalescing behavior).\n *\n * @param {number} timeoutMs - Timeout in milliseconds (0 = no timeout)\n * @returns {Promise<SyncSummary>} The sync summary\n */\n async syncStateWithTimeout(timeoutMs = 0) {\n // Use storeName as the database ID for lock coordination\n const dbId = this.storeName || \"default\";\n\n try {\n // Acquire the sync lock (coordinates concurrent calls)\n const lockHandle = await acquireSyncLock(dbId, timeoutMs);\n\n if (!lockHandle.acquired) {\n // We're coalescing - return the result from the in-progress sync\n return lockHandle.coalescedResult;\n }\n\n // We acquired the lock - perform the sync\n try {\n let result;\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n result = await wasmWebClient.syncStateImpl();\n } else {\n const wasm = await getWasmOrThrow();\n const serializedSyncSummaryBytes = await this.callMethodWithWorker(\n MethodName.SYNC_STATE\n );\n result = wasm.SyncSummary.deserialize(\n new Uint8Array(serializedSyncSummaryBytes)\n );\n }\n\n // Release the lock with the result\n releaseSyncLock(dbId, result);\n return result;\n } catch (error) {\n // Release the lock with the error\n releaseSyncLockWithError(dbId, error);\n throw error;\n }\n } catch (error) {\n console.error(\"INDEX.JS: Error in syncState:\", error);\n throw error;\n }\n }\n\n /**\n * Terminates the underlying Web Worker used by this WebClient instance.\n *\n * Call this method when you're done using a WebClient to free up browser\n * resources. Each WebClient instance uses a dedicated Web Worker for\n * computationally intensive operations. Terminating releases that thread.\n *\n * After calling terminate(), the WebClient should not be used.\n */\n terminate() {\n if (this.worker) {\n this.worker.terminate();\n }\n }\n}\n\nclass MockWebClient extends WebClient {\n constructor(seed, logLevel) {\n super(null, null, seed, \"mock\", undefined, undefined, undefined, logLevel);\n }\n\n initializeWorker() {\n this.worker.postMessage({\n action: WorkerAction.INIT_MOCK,\n args: [this.seed, this.logLevel],\n });\n }\n\n /**\n * Factory method to create a WebClient with a mock chain for testing purposes.\n *\n * @param serializedMockChain - Serialized mock chain data (optional). Will use an empty chain if not provided.\n * @param serializedMockNoteTransportNode - Serialized mock note transport node data (optional). Will use a new instance if not provided.\n * @param seed - The seed for the account (optional).\n * @returns A promise that resolves to a MockWebClient.\n */\n static async createClient(\n serializedMockChain,\n serializedMockNoteTransportNode,\n seed,\n logLevel\n ) {\n // Construct the instance (synchronously).\n const instance = new MockWebClient(seed, logLevel);\n\n // Set up logging on the main thread before creating the client.\n if (logLevel) {\n const wasm = await getWasmOrThrow();\n wasm.setupLogging(logLevel);\n }\n\n // Wait for the underlying wasmWebClient to be initialized.\n const wasmWebClient = await instance.getWasmWebClient();\n await wasmWebClient.createMockClient(\n seed,\n serializedMockChain,\n serializedMockNoteTransportNode\n );\n\n // Wait for the worker to be ready\n await instance.ready;\n\n return createClientProxy(instance);\n }\n\n /**\n * Syncs the mock client state.\n *\n * This method coordinates concurrent sync calls using the Web Locks API when available,\n * with an in-process mutex fallback for older browsers. If a sync is already in progress,\n * subsequent callers will wait and receive the same result (coalescing behavior).\n *\n * @returns {Promise<SyncSummary>} The sync summary\n */\n async syncState() {\n return this.syncStateWithTimeout(0);\n }\n\n /**\n * Syncs the mock client state with an optional timeout.\n *\n * @param {number} timeoutMs - Timeout in milliseconds (0 = no timeout)\n * @returns {Promise<SyncSummary>} The sync summary\n */\n async syncStateWithTimeout(timeoutMs = 0) {\n const dbId = this.storeName || \"mock\";\n\n try {\n const lockHandle = await acquireSyncLock(dbId, timeoutMs);\n\n if (!lockHandle.acquired) {\n return lockHandle.coalescedResult;\n }\n\n try {\n let result;\n const wasmWebClient = await this.getWasmWebClient();\n\n if (!this.worker) {\n result = await wasmWebClient.syncStateImpl();\n } else {\n let serializedMockChain = wasmWebClient.serializeMockChain().buffer;\n let serializedMockNoteTransportNode =\n wasmWebClient.serializeMockNoteTransportNode().buffer;\n\n const wasm = await getWasmOrThrow();\n\n const serializedSyncSummaryBytes = await this.callMethodWithWorker(\n MethodName.SYNC_STATE_MOCK,\n serializedMockChain,\n serializedMockNoteTransportNode\n );\n\n result = wasm.SyncSummary.deserialize(\n new Uint8Array(serializedSyncSummaryBytes)\n );\n }\n\n releaseSyncLock(dbId, result);\n return result;\n } catch (error) {\n releaseSyncLockWithError(dbId, error);\n throw error;\n }\n } catch (error) {\n console.error(\"INDEX.JS: Error in syncState:\", error);\n throw error;\n }\n }\n\n async submitNewTransaction(accountId, transactionRequest) {\n try {\n if (!this.worker) {\n return await super.submitNewTransaction(accountId, transactionRequest);\n }\n\n const wasmWebClient = await this.getWasmWebClient();\n const wasm = await getWasmOrThrow();\n const serializedTransactionRequest = transactionRequest.serialize();\n const serializedMockChain = wasmWebClient.serializeMockChain().buffer;\n const serializedMockNoteTransportNode =\n wasmWebClient.serializeMockNoteTransportNode().buffer;\n\n const result = await this.callMethodWithWorker(\n MethodName.SUBMIT_NEW_TRANSACTION_MOCK,\n accountId.toString(),\n serializedTransactionRequest,\n serializedMockChain,\n serializedMockNoteTransportNode\n );\n\n const newMockChain = new Uint8Array(result.serializedMockChain);\n const newMockNoteTransportNode = result.serializedMockNoteTransportNode\n ? new Uint8Array(result.serializedMockNoteTransportNode)\n : undefined;\n\n const transactionResult = wasm.TransactionResult.deserialize(\n new Uint8Array(result.serializedTransactionResult)\n );\n\n if (!(this instanceof MockWebClient)) {\n return transactionResult.id();\n }\n\n this.wasmWebClient = new wasm.WebClient();\n this.wasmWebClientPromise = Promise.resolve(this.wasmWebClient);\n await this.wasmWebClient.createMockClient(\n this.seed,\n newMockChain,\n newMockNoteTransportNode\n );\n\n return transactionResult.id();\n } catch (error) {\n console.error(\"INDEX.JS: Error in submitNewTransaction:\", error);\n throw error;\n }\n }\n\n async submitNewTransactionWithProver(accountId, transactionRequest, prover) {\n try {\n if (!this.worker) {\n return await super.submitNewTransactionWithProver(\n accountId,\n transactionRequest,\n prover\n );\n }\n\n const wasmWebClient = await this.getWasmWebClient();\n const wasm = await getWasmOrThrow();\n const serializedTransactionRequest = transactionRequest.serialize();\n const proverPayload = prover.serialize();\n const serializedMockChain = wasmWebClient.serializeMockChain().buffer;\n const serializedMockNoteTransportNode =\n wasmWebClient.serializeMockNoteTransportNode().buffer;\n\n const result = await this.callMethodWithWorker(\n MethodName.SUBMIT_NEW_TRANSACTION_WITH_PROVER_MOCK,\n accountId.toString(),\n serializedTransactionRequest,\n proverPayload,\n serializedMockChain,\n serializedMockNoteTransportNode\n );\n\n const newMockChain = new Uint8Array(result.serializedMockChain);\n const newMockNoteTransportNode = result.serializedMockNoteTransportNode\n ? new Uint8Array(result.serializedMockNoteTransportNode)\n : undefined;\n\n const transactionResult = wasm.TransactionResult.deserialize(\n new Uint8Array(result.serializedTransactionResult)\n );\n\n if (!(this instanceof MockWebClient)) {\n return transactionResult.id();\n }\n\n this.wasmWebClient = new wasm.WebClient();\n this.wasmWebClientPromise = Promise.resolve(this.wasmWebClient);\n await this.wasmWebClient.createMockClient(\n this.seed,\n newMockChain,\n newMockNoteTransportNode\n );\n\n return transactionResult.id();\n } catch (error) {\n console.error(\n \"INDEX.JS: Error in submitNewTransactionWithProver:\",\n error\n );\n throw error;\n }\n }\n}\n\nfunction copyWebClientStatics(WasmWebClient) {\n if (!WasmWebClient) {\n return;\n }\n Object.getOwnPropertyNames(WasmWebClient).forEach((prop) => {\n if (\n typeof WasmWebClient[prop] === \"function\" &&\n prop !== \"constructor\" &&\n prop !== \"prototype\"\n ) {\n WebClient[prop] = WasmWebClient[prop];\n }\n });\n}\n\n// Wire MidenClient dependencies (resolves circular import)\nMidenClient._WasmWebClient = WebClient;\nMidenClient._MockWasmWebClient = MockWebClient;\nMidenClient._getWasmOrThrow = getWasmOrThrow;\n_setStandaloneWebClient(WebClient);\n"],"names":["exports","_setStandaloneWasm","_setStandaloneWebClient"],"mappings":"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"}
|
package/dist/wasm.js
CHANGED
package/dist/wasm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasm.js","sources":["../js/wasm.js"],"sourcesContent":["// This is a documented workaround that should avoid issues with Vite projects\n// https://github.com/wasm-tool/rollup-plugin-rust?tab=readme-ov-file#usage-with-vite\n// Also, this effectively disables SSR.\nasync function loadWasm() {\n let wasmModule;\n if (!import.meta.env || (import.meta.env && !import.meta.env.SSR)) {\n wasmModule = await import(\"../Cargo.toml\");\n }\n return wasmModule;\n}\nexport default loadWasm;\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA,eAAe,QAAQ,GAAG;AAC1B,EAAE,IAAI,UAAU
|
|
1
|
+
{"version":3,"file":"wasm.js","sources":["../js/wasm.js"],"sourcesContent":["// This is a documented workaround that should avoid issues with Vite projects\n// https://github.com/wasm-tool/rollup-plugin-rust?tab=readme-ov-file#usage-with-vite\n// Also, this effectively disables SSR.\nasync function loadWasm() {\n let wasmModule;\n if (!import.meta.env || (import.meta.env && !import.meta.env.SSR)) {\n wasmModule = await import(\"../Cargo.toml\");\n }\n return wasmModule;\n}\nexport default loadWasm;\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA,eAAe,QAAQ,GAAG;AAC1B,EAAE,IAAI,UAAU;AAChB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACrE,IAAI,UAAU,GAAG,MAAM,OAAO,qBAAe,CAAC;AAC9C,EAAE;AACF,EAAE,OAAO,UAAU;AACnB;;;;"}
|