@miden-sdk/miden-sdk 0.14.4 → 0.14.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Cargo-Bwjf7IkR.js → Cargo-M3382VZc.js} +163 -103
- package/dist/Cargo-M3382VZc.js.map +1 -0
- package/dist/api-types.d.ts +18 -2
- package/dist/assets/miden_client_web.wasm +0 -0
- package/dist/crates/miden_client_web.d.ts +96 -0
- package/dist/eager.js +2 -2
- package/dist/index.d.ts +7 -0
- package/dist/index.js +73 -8
- package/dist/index.js.map +1 -1
- package/dist/wasm.js +1 -1
- package/dist/workers/{Cargo-Bwjf7IkR-Cz54YuXA.js → Cargo-M3382VZc-Dfw4tXwh.js} +163 -103
- package/dist/workers/Cargo-M3382VZc-Dfw4tXwh.js.map +1 -0
- package/dist/workers/assets/miden_client_web.wasm +0 -0
- package/dist/workers/web-client-methods-worker.js +164 -104
- package/dist/workers/web-client-methods-worker.js.map +1 -1
- package/dist/workers/web-client-methods-worker.module.js +1 -1
- package/dist/workers/web-client-methods-worker.module.js.map +1 -1
- package/package.json +1 -1
- package/dist/Cargo-Bwjf7IkR.js.map +0 -1
- package/dist/workers/Cargo-Bwjf7IkR-Cz54YuXA.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/utils.js","../js/resources/accounts.js","../js/resources/transactions.js","../js/resources/notes.js","../js/resources/tags.js","../js/resources/settings.js","../js/resources/compiler.js","../js/resources/keystore.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 an AccountType value to a boolean `mutable` flag\n * for the underlying WASM `newWallet()` / `importPublicAccountFromSeed()` calls.\n *\n * Accepts the numeric WASM enum values (2 = immutable, 3 = mutable) or the\n * legacy string aliases (\"MutableWallet\", \"ImmutableWallet\"). Defaults to\n * mutable when undefined.\n *\n * @param {number | string | undefined} accountType\n * @returns {boolean} Whether the account code is mutable.\n */\nexport function resolveAccountMutability(accountType) {\n if (\n accountType == null ||\n accountType === \"MutableWallet\" ||\n accountType === 3\n ) {\n return true;\n }\n if (accountType === \"ImmutableWallet\" || accountType === 2) {\n return false;\n }\n throw new Error(\n `Unknown wallet account type: \"${accountType}\". Expected AccountType.MutableWallet (3) or AccountType.ImmutableWallet (2).`\n );\n}\n\n/**\n * Resolves a NoteInput (string | NoteId | InputNoteRecord | Note) to a hex string.\n *\n * - Strings are passed through unchanged.\n * - NoteId WASM objects are converted via `.toString()`.\n * - InputNoteRecord and Note objects (with an `.id()` method) are resolved via `.id().toString()`.\n *\n * @param {string | object} input - The note reference to resolve.\n * @returns {string} The hex note ID string.\n */\nexport function resolveNoteIdHex(input) {\n if (input == null) {\n throw new Error(\"Note ID cannot be null or undefined\");\n }\n if (typeof input === \"string\") {\n return input;\n }\n // NoteId WASM object — has toString() but not id() (unlike InputNoteRecord/Note).\n // Check for constructor.fromHex to distinguish from plain objects (which also inherit toString).\n if (\n typeof input.toString === \"function\" &&\n typeof input.id !== \"function\" &&\n input.constructor?.fromHex !== undefined\n ) {\n return input.toString();\n }\n // InputNoteRecord, Note, or other object with id() returning NoteId\n if (typeof input.id === \"function\") {\n return input.id().toString();\n }\n throw new TypeError(\n `Cannot resolve note ID: expected string, NoteId, InputNoteRecord, or Note, got ${typeof input}`\n );\n}\n\n/**\n * Resolves a TransactionId reference (string | TransactionId) to a hex string.\n *\n * - Strings are passed through unchanged.\n * - TransactionId WASM objects are converted via `.toHex()`.\n *\n * @param {string | object} input - The transaction ID reference to resolve.\n * @returns {string} The hex transaction ID string.\n */\nexport function resolveTransactionIdHex(input) {\n if (input == null) {\n throw new Error(\"Transaction ID cannot be null or undefined\");\n }\n if (typeof input === \"string\") {\n return input;\n }\n // TransactionId WASM object — toHex() returns hex\n if (typeof input.toHex === \"function\") {\n return input.toHex();\n }\n throw new TypeError(\n `Cannot resolve transaction ID: expected string or TransactionId, got ${typeof input}`\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 const type = opts?.type;\n\n if (\n type === 0 ||\n type === 1 ||\n type === \"FungibleFaucet\" ||\n type === \"NonFungibleFaucet\"\n ) {\n const storageMode = resolveStorageMode(opts.storage ?? \"public\", wasm);\n const authScheme = resolveAuthScheme(opts.auth, wasm);\n return await this.#inner.newFaucet(\n storageMode,\n type === 1 || type === \"NonFungibleFaucet\",\n opts.symbol,\n opts.decimals,\n BigInt(opts.maxSupply),\n authScheme\n );\n } else if (\n type === \"ImmutableContract\" ||\n type === \"MutableContract\" ||\n opts?.components // Contracts are distinguished from wallets by having components\n ) {\n return await this.#createContract(opts, wasm);\n } else {\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(\n storageMode,\n mutable,\n authScheme,\n seed\n );\n }\n }\n\n async #createContract(opts, wasm) {\n if (!opts.seed)\n throw new Error(\"Contract creation requires a 'seed' (Uint8Array)\");\n if (!opts.auth)\n throw new Error(\"Contract creation requires an 'auth' (AuthSecretKey)\");\n\n // Default to immutable when type is omitted (safer for contracts)\n const mutable = opts.type === \"MutableContract\" || opts.type === 3;\n const accountTypeEnum = mutable\n ? wasm.AccountType.RegularAccountUpdatableCode\n : wasm.AccountType.RegularAccountImmutableCode;\n const storageMode = resolveStorageMode(opts.storage ?? \"public\", wasm);\n const authComponent =\n wasm.AccountComponent.createAuthComponentFromSecretKey(opts.auth);\n\n let builder = new wasm.AccountBuilder(opts.seed)\n .accountType(accountTypeEnum)\n .storageMode(storageMode)\n .withAuthComponent(authComponent);\n\n for (const component of opts.components ?? []) {\n builder = builder.withComponent(component);\n }\n\n const built = builder.build();\n const account = built.account;\n\n await this.#inner.newAccountWithSecretKey(account, opts.auth);\n return account;\n }\n\n async insert({ account, overwrite = false }) {\n this.#client.assertNotTerminated();\n await this.#inner.newAccount(account, overwrite);\n }\n\n async getOrImport(ref) {\n this.#client.assertNotTerminated();\n return (await this.get(ref)) ?? (await this.import(ref));\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.keystore.getCommitments(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 // Early exit for string, Account, and AccountHeader types before property\n // checks, preventing misrouting if a WASM object ever gains a .file or .seed\n // property. Bare AccountId (no .id() method) falls through to the fallback.\n if (typeof input === \"string\" || typeof input.id === \"function\") {\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 // Fallback: treat as AccountRef (string, AccountId, Account, AccountHeader)\n const id = resolveAccountRef(input, wasm);\n await this.#inner.importAccountById(id);\n return await this.#inner.getAccount(id);\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 {\n resolveAccountRef,\n resolveNoteType,\n resolveTransactionIdHex,\n} 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\n if (opts.returnNote === true) {\n // returnNote path — build the P2ID note in JS so we can return the Note\n // object to the caller (e.g. for out-of-band delivery to the recipient).\n if (opts.reclaimAfter != null || opts.timelockUntil != null) {\n throw new Error(\n \"reclaimAfter and timelockUntil are not supported when returnNote is true\"\n );\n }\n\n const senderId = resolveAccountRef(opts.account, wasm);\n const receiverId = resolveAccountRef(opts.to, wasm);\n const faucetId = resolveAccountRef(opts.token, wasm);\n const noteType = resolveNoteType(opts.type, wasm);\n\n const note = wasm.Note.createP2IDNote(\n senderId,\n receiverId,\n new wasm.NoteAssets([\n new wasm.FungibleAsset(faucetId, BigInt(opts.amount)),\n ]),\n noteType,\n new wasm.NoteAttachment()\n );\n\n // NoteArray constructor consumes its elements; use push(¬e) to keep\n // `note` valid so we can return it to the caller below.\n const ownOutputs = new wasm.NoteArray();\n ownOutputs.push(note);\n const request = new wasm.TransactionRequestBuilder()\n .withOwnOutputNotes(ownOutputs)\n .build();\n\n const { txId, result } = await this.#submitOrSubmitWithProver(\n senderId,\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, note, result };\n }\n\n // Default path — note built in WASM with optional reclaim/timelock\n const { accountId, request } = await this.#buildSendRequest(opts, wasm);\n const { txId, result } = 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, note: null, result };\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, result } = 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, result };\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, result } = 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, result };\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, result } = 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 result,\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, result } = 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, result };\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 case \"custom\": {\n accountId = resolveAccountRef(opts.account, wasm);\n request = opts.request;\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 execute(opts) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const accountId = resolveAccountRef(opts.account, wasm);\n\n let builder = new wasm.TransactionRequestBuilder().withCustomScript(\n opts.script\n );\n\n if (opts.foreignAccounts?.length) {\n const accounts = opts.foreignAccounts.map((fa) => {\n // Distinguish { id: AccountRef, storage? } wrapper objects from WASM types\n // (Account/AccountHeader expose .id() as a method, wrappers have .id as a property)\n const isWrapper =\n fa !== null &&\n typeof fa === \"object\" &&\n \"id\" in fa &&\n typeof fa.id !== \"function\";\n const id = resolveAccountRef(isWrapper ? fa.id : fa, wasm);\n const storage =\n isWrapper && fa.storage\n ? fa.storage\n : new wasm.AccountStorageRequirements();\n return wasm.ForeignAccount.public(id, storage);\n });\n builder = builder.withForeignAccounts(\n new wasm.ForeignAccountArray(accounts)\n );\n }\n\n const request = builder.build();\n const { txId, result } = 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, result };\n }\n\n async executeProgram(opts) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const accountId = resolveAccountRef(opts.account, wasm);\n\n let foreignAccountsArray = new wasm.ForeignAccountArray();\n if (opts.foreignAccounts?.length) {\n const accounts = opts.foreignAccounts.map((fa) => {\n const isWrapper =\n fa !== null &&\n typeof fa === \"object\" &&\n \"id\" in fa &&\n typeof fa.id !== \"function\";\n const id = resolveAccountRef(isWrapper ? fa.id : fa, wasm);\n const storage =\n isWrapper && fa.storage\n ? fa.storage\n : new wasm.AccountStorageRequirements();\n return wasm.ForeignAccount.public(id, storage);\n });\n foreignAccountsArray = new wasm.ForeignAccountArray(accounts);\n }\n\n return await this.#inner.executeProgram(\n accountId,\n opts.script,\n opts.adviceInputs ?? new wasm.AdviceInputs(),\n foreignAccountsArray\n );\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) =>\n wasm.TransactionId.fromHex(resolveTransactionIdHex(id))\n );\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 | TransactionId} txId - Transaction ID hex string or TransactionId object.\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 hex = resolveTransactionIdHex(txId);\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(hex),\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: ${hex}`);\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\n const isDirectNote = (input) =>\n input !== null &&\n typeof input === \"object\" &&\n typeof input.id === \"function\" &&\n typeof input.toNote !== \"function\";\n\n const hasDirectNotes = noteInputs.some(isDirectNote);\n\n if (hasDirectNotes) {\n // At least one raw Note object — use NoteAndArgs builder path\n // (the only WASM path that accepts unauthenticated notes not in the store).\n const resolvedNotes = await Promise.all(\n noteInputs.map(async (input) => {\n if (isDirectNote(input)) return input;\n if (input && typeof input.toNote === \"function\")\n return input.toNote();\n return await this.#resolveNoteInput(input);\n })\n );\n\n const noteAndArgsArr = resolvedNotes.map(\n (note) => new wasm.NoteAndArgs(note, null)\n );\n const request = new wasm.TransactionRequestBuilder()\n .withInputNotes(new wasm.NoteAndArgsArray(noteAndArgsArr))\n .build();\n return { accountId, request };\n }\n\n // Standard path: all inputs are IDs or records — look up from store.\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 — has toString() but not toNote() or id() (unlike InputNoteRecord/Note).\n // Check for constructor.fromHex to distinguish from plain objects.\n if (\n input &&\n typeof input.toString === \"function\" &&\n typeof input.toNote !== \"function\" &&\n typeof input.id !== \"function\" &&\n input.constructor?.fromHex !== undefined\n ) {\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 result = await this.#inner.executeTransaction(accountId, request);\n const prover = perCallProver ?? this.#client.defaultProver;\n // Use proveTransactionWithProver (by-reference) when a prover is\n // provided, so the JS-side handle is NOT consumed by wasm-bindgen.\n // Passing the prover by value would transfer ownership and invalidate\n // the JS object after one call, causing silent fallback to local\n // proving on reuse.\n const proven = prover\n ? await this.#inner.proveTransactionWithProver(result, prover)\n : await this.#inner.proveTransaction(result);\n const txId = result.id();\n const height = await this.#inner.submitProvenTransaction(proven, result);\n await this.#inner.applyTransaction(result, height);\n return { txId, result };\n }\n}\n","import {\n resolveAccountRef,\n resolveAddress,\n resolveNoteIdHex,\n} 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(resolveNoteIdHex(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 const consumable = await this.#inner.getConsumableNotes(accountId);\n return consumable.map((c) => c.inputNoteRecord());\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(resolveNoteIdHex(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\n let note;\n const input = opts.note;\n // Check if input is a Note object (has .id() and .assets() but not .toNote())\n if (\n input &&\n typeof input === \"object\" &&\n typeof input.id === \"function\" &&\n typeof input.assets === \"function\" &&\n typeof input.toNote !== \"function\"\n ) {\n note = input;\n } else {\n const noteHex = resolveNoteIdHex(input);\n const noteRecord = await this.#inner.getInputNote(noteHex);\n if (!noteRecord) {\n throw new Error(`Note not found: ${noteHex}`);\n }\n note = noteRecord.toNote();\n }\n\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) =>\n wasm.NoteId.fromHex(resolveNoteIdHex(id))\n );\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","export class CompilerResource {\n #inner;\n #getWasm;\n #client;\n\n constructor(inner, getWasm, client = null) {\n this.#inner = inner;\n this.#getWasm = getWasm;\n this.#client = client;\n }\n\n /**\n * Compiles MASM code + slots into an AccountComponent ready for accounts.create().\n *\n * @param {{ code: string, slots: StorageSlot[], supportAllTypes?: boolean }} opts\n * @returns {Promise<AccountComponent>}\n */\n async component({ code, slots = [], supportAllTypes = true }) {\n this.#client?.assertNotTerminated();\n const wasm = await this.#getWasm();\n const builder = this.#inner.createCodeBuilder();\n const compiled = builder.compileAccountComponentCode(code);\n const component = wasm.AccountComponent.compile(compiled, slots);\n return supportAllTypes ? component.withSupportsAllTypes() : component;\n }\n\n /**\n * Compiles a transaction script, optionally linking named libraries inline.\n *\n * @param {{ code: string, libraries?: Array<{ namespace: string, code: string, linking?: \"dynamic\" | \"static\" }> }} opts\n * @returns {Promise<TransactionScript>}\n */\n async txScript({ code, libraries = [] }) {\n this.#client?.assertNotTerminated();\n // Ensure WASM is initialized (result unused — only #inner needs it)\n await this.#getWasm();\n const builder = this.#inner.createCodeBuilder();\n linkLibraries(builder, libraries);\n return builder.compileTxScript(code);\n }\n\n /**\n * Compiles a note script, optionally linking named libraries inline.\n *\n * @param {{ code: string, libraries?: Array<{ namespace: string, code: string, linking?: \"dynamic\" | \"static\" }> }} opts\n * @returns {Promise<NoteScript>}\n */\n async noteScript({ code, libraries = [] }) {\n this.#client?.assertNotTerminated();\n await this.#getWasm();\n const builder = this.#inner.createCodeBuilder();\n linkLibraries(builder, libraries);\n return builder.compileNoteScript(code);\n }\n}\n\n// Builds and links each library entry against `builder`. Inline\n// `{ namespace, code, linking? }` entries are built via `buildLibrary` and\n// linked according to `linking` (defaulting to dynamic, matching tutorial\n// behavior). Pre-built library objects are linked dynamically.\nfunction linkLibraries(builder, libraries) {\n for (const lib of libraries) {\n if (lib && typeof lib.namespace === \"string\") {\n const built = builder.buildLibrary(lib.namespace, lib.code);\n if (lib.linking === \"static\") {\n builder.linkStaticLibrary(built);\n } else {\n builder.linkDynamicLibrary(built);\n }\n } else {\n builder.linkDynamicLibrary(lib);\n }\n }\n}\n","export class KeystoreResource {\n #inner;\n #client;\n\n constructor(inner, client) {\n this.#inner = inner;\n this.#client = client;\n }\n\n async insert(accountId, secretKey) {\n this.#client.assertNotTerminated();\n const ks = this.#inner.keystore;\n return await ks.insert(accountId, secretKey);\n }\n\n async get(pubKeyCommitment) {\n this.#client.assertNotTerminated();\n const ks = this.#inner.keystore;\n return await ks.get(pubKeyCommitment);\n }\n\n async remove(pubKeyCommitment) {\n this.#client.assertNotTerminated();\n const ks = this.#inner.keystore;\n return await ks.remove(pubKeyCommitment);\n }\n\n async getCommitments(accountId) {\n this.#client.assertNotTerminated();\n const ks = this.#inner.keystore;\n return await ks.getCommitments(accountId);\n }\n\n async getAccountId(pubKeyCommitment) {\n this.#client.assertNotTerminated();\n const ks = this.#inner.keystore;\n return await ks.getAccountId(pubKeyCommitment);\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 { CompilerResource } from \"./resources/compiler.js\";\nimport { KeystoreResource } from \"./resources/keystore.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 this.compile = new CompilerResource(inner, getWasm, this);\n this.keystore = new KeystoreResource(inner, this);\n }\n\n /**\n * Creates and initializes a new MidenClient.\n *\n * If no `rpcUrl` is provided, defaults to testnet with full configuration\n * (RPC, prover, note transport, autoSync).\n *\n * @param {ClientOptions} [options] - Client configuration options.\n * @returns {Promise<MidenClient>} A fully initialized client.\n */\n static async create(options) {\n if (!options?.rpcUrl) {\n return MidenClient.createTestnet(options);\n }\n\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 const rpcUrl = resolveRpcUrl(options?.rpcUrl);\n const noteTransportUrl = resolveNoteTransportUrl(options?.noteTransportUrl);\n\n let inner;\n if (options?.keystore) {\n inner = await WebClientClass.createClientWithExternalKeystore(\n rpcUrl,\n 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 rpcUrl,\n noteTransportUrl,\n seed,\n options?.storeName\n );\n }\n\n let defaultProver = null;\n if (options?.proverUrl) {\n const wasm = await getWasm();\n defaultProver = resolveProver(options.proverUrl, wasm);\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 *\n * Defaults: rpcUrl \"testnet\", proverUrl \"testnet\", noteTransportUrl \"testnet\", autoSync true.\n * All defaults can be overridden via options.\n *\n * @param {ClientOptions} [options] - Options to override defaults.\n * @returns {Promise<MidenClient>} A fully initialized testnet client.\n */\n static async createTestnet(options) {\n return MidenClient.create({\n rpcUrl: \"testnet\",\n proverUrl: \"testnet\",\n noteTransportUrl: \"testnet\",\n autoSync: true,\n ...options,\n });\n }\n\n /**\n * Creates a client preconfigured for devnet use.\n *\n * Defaults: rpcUrl \"devnet\", proverUrl \"devnet\", noteTransportUrl \"devnet\", autoSync true.\n * All defaults can be overridden via options.\n *\n * @param {ClientOptions} [options] - Options to override defaults.\n * @returns {Promise<MidenClient>} A fully initialized devnet client.\n */\n static async createDevnet(options) {\n return MidenClient.create({\n rpcUrl: \"devnet\",\n proverUrl: \"devnet\",\n noteTransportUrl: \"devnet\",\n autoSync: true,\n ...options,\n });\n }\n\n /**\n * Resolves once the WASM module is initialized and safe to use.\n *\n * Idempotent and shared across callers: the underlying loader memoizes the\n * in-flight promise, so concurrent `ready()` calls await the same\n * initialization and post-init callers resolve immediately from a cached\n * module. Safe to call from `MidenProvider`, tutorial helpers, and any\n * other consumer simultaneously.\n *\n * Useful on the `/lazy` entry (e.g. Next.js / Capacitor), where no\n * top-level await runs at import time. On the default (eager) entry this\n * is redundant — importing the module already awaits WASM — but calling it\n * is still harmless.\n *\n * @returns {Promise<void>} Resolves when WASM is initialized.\n */\n static async ready() {\n const getWasm = MidenClient._getWasmOrThrow;\n if (!getWasm) {\n throw new Error(\n \"MidenClient not initialized. Import from the SDK package entry point.\"\n );\n }\n await getWasm();\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 * Resolves once every serialized WASM call that was already on the\n * internal `_serializeWasmCall` chain when `waitForIdle()` was called\n * (execute, submit, prove, apply, sync, or account creation) has\n * settled. Use this from callers that need to perform a non-WASM-side\n * action — e.g. clearing an in-memory auth key on wallet lock — after\n * the kernel finishes, so its auth callback doesn't race with the key\n * being cleared.\n *\n * Does NOT wait for calls enqueued after `waitForIdle()` returns —\n * intentional, so a caller can drain and proceed without being blocked\n * indefinitely by concurrent workload.\n *\n * Caveat for `syncState`: `syncStateWithTimeout` awaits the sync lock\n * (`acquireSyncLock`, which uses Web Locks) BEFORE putting its WASM\n * call onto the chain, so a `syncState` that is queued on the sync\n * lock — but has not yet begun its WASM phase — is not visible to\n * `waitForIdle` and will not be awaited. Other methods (`newWallet`,\n * `executeTransaction`, etc.) route through the chain synchronously\n * on call and are always observed.\n *\n * Safe to call at any time; returns immediately if nothing was in\n * flight.\n *\n * @returns {Promise<void>}\n */\n async waitForIdle() {\n this.assertNotTerminated();\n await this.#inner.waitForIdle();\n }\n\n /**\n * Returns the raw JS value that the most recent sign-callback invocation\n * threw, or `null` if the last sign call succeeded (or no call has\n * happened yet).\n *\n * Useful for recovering structured metadata (e.g. a `reason: 'locked'`\n * property) that the kernel-level `auth::request` diagnostic would\n * otherwise erase. Call immediately after catching a failed\n * `transactions.submit` / `transactions.send` / `transactions.consume`.\n *\n * @returns {any} The raw thrown value, or `null`.\n */\n lastAuthError() {\n this.assertNotTerminated();\n return this.#inner.lastAuthError();\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 * Returns the identifier of the underlying store (e.g. IndexedDB database name, file path).\n *\n * @returns {string} The store identifier.\n */\n storeIdentifier() {\n this.assertNotTerminated();\n return this.#inner.storeIdentifier();\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\nconst RPC_URLS = {\n testnet: \"https://rpc.testnet.miden.io\",\n devnet: \"https://rpc.devnet.miden.io\",\n localhost: \"http://localhost:57291\",\n local: \"http://localhost:57291\",\n};\n\n/**\n * Resolves an rpcUrl shorthand or raw URL into a concrete endpoint string.\n *\n * @param {string | undefined} rpcUrl - \"testnet\", \"devnet\", \"localhost\", \"local\", or a raw URL.\n * @returns {string | undefined} A fully qualified URL, or undefined to use the SDK default.\n */\nfunction resolveRpcUrl(rpcUrl) {\n if (!rpcUrl) return undefined;\n return RPC_URLS[rpcUrl.trim().toLowerCase()] ?? rpcUrl;\n}\n\nconst PROVER_URLS = {\n devnet: \"https://tx-prover.devnet.miden.io\",\n testnet: \"https://tx-prover.testnet.miden.io\",\n};\n\nconst NOTE_TRANSPORT_URLS = {\n testnet: \"https://transport.miden.io\",\n devnet: \"https://transport.devnet.miden.io\",\n};\n\n/**\n * Resolves a noteTransportUrl shorthand or raw URL into a concrete endpoint string.\n *\n * @param {string | undefined} noteTransportUrl - \"testnet\", \"devnet\", or a raw URL.\n * @returns {string | undefined} A fully qualified URL, or undefined if omitted.\n */\nfunction resolveNoteTransportUrl(noteTransportUrl) {\n if (!noteTransportUrl) return undefined;\n return (\n NOTE_TRANSPORT_URLS[noteTransportUrl.trim().toLowerCase()] ??\n noteTransportUrl\n );\n}\n\n/**\n * Resolves a proverUrl shorthand or raw URL into a TransactionProver.\n *\n * @param {string} proverUrl - \"local\", \"devnet\", \"testnet\", or a raw URL.\n * @param {object} wasm - Loaded WASM module.\n * @returns {object} A TransactionProver instance.\n */\nfunction resolveProver(proverUrl, wasm) {\n const normalized = proverUrl.trim().toLowerCase();\n if (normalized === \"local\") {\n return wasm.TransactionProver.newLocalProver();\n }\n const remoteUrl = PROVER_URLS[normalized] ?? proverUrl;\n return wasm.TransactionProver.newRemoteProver(remoteUrl, undefined);\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 {Note} The created 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 return wasm.Note.createP2IDNote(\n sender,\n target,\n noteAssets,\n noteType,\n attachment\n );\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 {Note} The created 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 return wasm.Note.createP2IDENote(\n sender,\n target,\n noteAssets,\n opts.reclaimAfter,\n opts.timelockUntil,\n noteType,\n attachment\n );\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 { CompilerResource } from \"./resources/compiler.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 // WASM-compatible numeric values — usable with AccountBuilder directly\n FungibleFaucet: 0,\n NonFungibleFaucet: 1,\n RegularAccountImmutableCode: 2,\n RegularAccountUpdatableCode: 3,\n // SDK-friendly aliases (same numeric values as their WASM equivalents)\n MutableWallet: 3,\n ImmutableWallet: 2,\n ImmutableContract: 2,\n MutableContract: 3,\n});\n\nexport const AuthScheme = Object.freeze({\n Falcon: \"falcon\",\n ECDSA: \"ecdsa\",\n});\n\nexport const NoteVisibility = Object.freeze({\n Public: \"public\",\n Private: \"private\",\n});\n\nexport const StorageMode = Object.freeze({\n Public: \"public\",\n Private: \"private\",\n Network: \"network\",\n});\n\nexport const Linking = Object.freeze({\n Dynamic: \"dynamic\",\n Static: \"static\",\n});\n\nexport { MidenClient };\nexport { CompilerResource };\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\n// Method classification sets — used by scripts/check-method-classification.js to ensure\n// every WASM export is explicitly categorised. Update when adding new WASM methods.\n//\n// Note on `SYNC_METHODS`: the classifier is \"synchronous in JS\" — i.e.\n// `pub fn ...` in Rust, not `pub async fn ...`. Two sub-cases:\n// 1. Factory methods that return a non-Promise value (`accountReader`\n// returns `AccountReader`; the transaction-request builders return\n// `TransactionRequestBuilder`; `createCodeBuilder` returns a builder).\n// Wrapping these in `_serializeWasmCall` would turn their return\n// value into `Promise<T>` and break callers that use the result\n// immediately (e.g. `const reader = client.accountReader(id);\n// await reader.nonce();`).\n// 2. Sync methods that still take `&mut self` in Rust (`proveBlock`,\n// `serializeMockChain`, `setDebugMode`). Safe to opt out because JS\n// is single-threaded — the event loop cannot interleave another\n// call during their synchronous execution, so the RefCell borrow\n// is always released before any other borrow can start.\n// Do NOT move a sync-in-JS method into `WRITE_METHODS` / `READ_METHODS`\n// just because it takes `&mut self` or `&self`; wrapping changes its\n// return shape and breaks every caller.\nconst SYNC_METHODS = new Set([\n \"accountReader\",\n \"buildSwapTag\",\n \"createCodeBuilder\",\n \"lastAuthError\",\n \"newConsumeTransactionRequest\",\n \"newMintTransactionRequest\",\n \"newSendTransactionRequest\",\n \"newSwapTransactionRequest\",\n \"proveBlock\",\n \"serializeMockChain\",\n \"serializeMockNoteTransportNode\",\n \"setDebugMode\",\n \"storeIdentifier\",\n \"usesMockChain\",\n]);\n\nconst WRITE_METHODS = new Set([\n \"addTag\",\n \"executeForSummary\",\n \"executeProgram\",\n \"fetchAllPrivateNotes\",\n \"fetchPrivateNotes\",\n \"forceImportStore\",\n \"importAccountById\",\n \"importAccountFile\",\n \"importNoteFile\",\n \"importPublicAccountFromSeed\",\n \"insertAccountAddress\",\n \"newAccount\",\n \"pruneAccountHistory\",\n \"removeAccountAddress\",\n \"removeTag\",\n \"removeSetting\",\n \"sendPrivateNote\",\n \"setSetting\",\n \"submitProvenTransaction\",\n]);\n\nconst READ_METHODS = new Set([\n \"exportAccountFile\",\n \"exportNoteFile\",\n \"exportStore\",\n \"getAccount\",\n \"getAccountCode\",\n \"getAccountStorage\",\n \"getAccountVault\",\n \"getAccounts\",\n \"getConsumableNotes\",\n \"getInputNote\",\n \"getInputNotes\",\n \"getOutputNote\",\n \"getOutputNotes\",\n \"getSetting\",\n \"getSyncHeight\",\n \"getTransactions\",\n \"listSettingKeys\",\n \"listTags\",\n \"executeProgram\",\n]);\n\nconst MOCK_STORE_NAME = \"mock_client_db\";\n\n// `SYNC_METHODS` is read by `createClientProxy` to decide whether a\n// proxy-fallback call should stay synchronous. `WRITE_METHODS` /\n// `READ_METHODS` are consulted only by the CI lint (see\n// scripts/check-method-classification.js); suppress unused-variable\n// warnings for those two.\nvoid WRITE_METHODS;\nvoid READ_METHODS;\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 *\n * Async proxy-fallback methods (every WASM method that borrows the\n * WebClient's RefCell — reads included, since `&self` and `&mut self` both\n * trip wasm-bindgen's \"recursive use of an object detected\" panic if\n * another borrow is live) are routed through `_serializeWasmCall` so they\n * queue on the same chain as the explicitly-wrapped methods.\n *\n * `SYNC_METHODS` opts out: they are synchronous in JS and wrapping them\n * would change their return type to `Promise<T>`, which is a breaking\n * change for consumers that use them as plain getters or builders.\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 if (typeof prop === \"string\" && SYNC_METHODS.has(prop)) {\n return value.bind(target.wasmWebClient);\n }\n return (...args) =>\n target._serializeWasmCall(() =>\n value.apply(target.wasmWebClient, args)\n );\n }\n return value;\n }\n return undefined;\n },\n });\n}\n\nclass WebClient {\n /**\n * Controls which worker variant is spawned when a WebClient is constructed.\n *\n * - `\"auto\"` (default): pick `classic` on Safari/WKWebView (where module\n * workers have a very slow cold start), `module` everywhere else.\n * - `\"module\"`: always use the `.mjs` ES-module worker. Required for webpack\n * 5 / Next.js consumers so the asset tracer can see the WASM URL.\n * - `\"classic\"`: always use the `.js` classic-script worker. Required on\n * Safari/WKWebView. Set this if your consumer bundler (or your host app)\n * does not support module workers.\n *\n * Set before the first `WebClient.createClient(...)` call.\n */\n static workerMode = \"auto\";\n\n /**\n * Decide between the module and classic worker variants based on\n * `WebClient.workerMode` and (when `auto`) the current user agent.\n * @returns {boolean} true when the classic script should be used.\n * @private\n */\n static _shouldUseClassicWorker() {\n const mode = WebClient.workerMode;\n if (mode === \"module\") return false;\n if (mode === \"classic\") return true;\n // auto: classic on Safari/WKWebView, module everywhere else.\n const ua =\n typeof navigator !== \"undefined\" && navigator.userAgent\n ? navigator.userAgent\n : \"\";\n // Chromium-based browsers (Chrome, Edge, Brave, Opera, Chromium-based\n // Android WebView) handle module workers fine.\n if (/Chrome\\/|Chromium\\//.test(ua)) return false;\n // Safari (desktop + iOS) and WKWebView-without-Chrome (e.g. Capacitor host)\n // both have AppleWebKit but no Chrome/Chromium in the UA. Prefer classic.\n if (/AppleWebKit/.test(ua)) return true;\n // Firefox, jsdom, node without navigator, etc. — module worker is fine.\n return false;\n }\n\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 // Pick between the module and classic worker variants at runtime — see\n // `WebClient.workerMode` below. Both branches keep the\n // `new Worker(new URL(\"...\", import.meta.url), ...)` form fully literal:\n // webpack 5's new-worker detector is PURELY SYNTACTIC and only triggers\n // a proper worker sub-compilation (with asset+chunk tracing into the\n // Cargo glue and the sibling WASM) when it sees that exact pattern\n // spelled inline. Hoisting either URL into a variable downgrades the\n // detection to a plain \"copy file as asset\" — which in turn makes the\n // worker's `await import(\"./Cargo-*.js\")` 404 because webpack never\n // emitted a chunk for it. The bit of duplication here is load-bearing.\n //\n // - module (`.module.js` with `{ type: \"module\" }`): `import.meta.url`\n // inside the Cargo glue is preserved so webpack/Vite can resolve the\n // WASM URL statically. Preferred everywhere EXCEPT Safari/WKWebView.\n // - classic (`.js`, no options): self-contained async IIFE with\n // `import.meta.url` rewritten to `self.location.href`; the only form\n // Safari/WKWebView can cold-start in a reasonable time.\n if (WebClient._shouldUseClassicWorker()) {\n this.worker = new Worker(\n new URL(\"./workers/web-client-methods-worker.js\", import.meta.url)\n );\n } else {\n this.worker = new Worker(\n new URL(\n \"./workers/web-client-methods-worker.module.js\",\n import.meta.url\n ),\n { type: \"module\" }\n );\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 * Wraps both the direct (in-thread) path and the worker-dispatched path.\n * On the worker path this is redundant with the worker's own message queue,\n * but harmless (the chain resolves immediately on the main thread once the\n * worker's postMessage returns). On the direct path it is load-bearing —\n * without it, concurrent main-thread callers would panic with\n * \"recursive use of an object detected\" (wasm-bindgen's internal RefCell).\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 /**\n * Returns a promise that resolves once every serialized WASM call that\n * was already on `_wasmCallChain` when `waitForIdle()` was called has\n * settled. Use this from callers that need to perform a non-WASM-side\n * action (e.g. clear an in-memory auth key) AFTER any in-flight\n * execute / submit / sync has completed, so the WASM kernel's auth\n * callback doesn't race with the key being cleared.\n *\n * Does NOT wait for calls enqueued after `waitForIdle()` returns —\n * this is intentional, so a caller can drain and then proceed without\n * being blocked indefinitely by a concurrent workload.\n *\n * Caveat for `syncState`: `syncStateWithTimeout` awaits\n * `acquireSyncLock` (Web Locks) BEFORE wrapping its WASM call in\n * `_serializeWasmCall`, so a sync that is queued on the sync lock but\n * has not yet reached its WASM phase is not on the chain and will not\n * be awaited. Every other serialized method (`executeTransaction`,\n * `newWallet`, `submitNewTransaction`, `proveTransaction`,\n * `applyTransaction`, and the proxy-fallback reads) routes through\n * the chain synchronously on call and is always observed.\n *\n * @returns {Promise<void>}\n */\n async waitForIdle() {\n // Chain on `_wasmCallChain`; by the time this resolves, any in-flight\n // serialized call has settled. Catch so the chain state doesn't leak.\n await this._wasmCallChain.catch(() => {});\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 newAccount(account, overwrite) {\n return this._serializeWasmCall(async () => {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.newAccount(account, overwrite);\n });\n }\n\n async newAccountWithSecretKey(account, secretKey) {\n return this._serializeWasmCall(async () => {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.newAccountWithSecretKey(account, secretKey);\n });\n }\n\n async submitNewTransaction(accountId, transactionRequest) {\n return this._serializeWasmCall(async () => {\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\n async submitNewTransactionWithProver(accountId, transactionRequest, prover) {\n return this._serializeWasmCall(async () => {\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\n async executeTransaction(accountId, transactionRequest) {\n return this._serializeWasmCall(async () => {\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\n async proveTransaction(transactionResult, prover) {\n return this._serializeWasmCall(async () => {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return prover\n ? await wasmWebClient.proveTransactionWithProver(\n transactionResult,\n prover\n )\n : await wasmWebClient.proveTransaction(transactionResult);\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 // Delegates to `proveTransaction`, which already routes through\n // `_serializeWasmCall` and dispatches to the WASM `proveTransactionWithProver`\n // binding when `prover` is present. Kept as a wrapper (rather than elided)\n // so the method classification lint sees an explicit match for the WASM\n // method name.\n async proveTransactionWithProver(transactionResult, prover) {\n return this.proveTransaction(transactionResult, prover);\n }\n\n async applyTransaction(transactionResult, submissionHeight) {\n return this._serializeWasmCall(async () => {\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 /**\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. Wrap the actual WASM\n // call in _serializeWasmCall so it can't race with any other\n // mutating method (executeTransaction, submitNewTransaction, etc.)\n // on the same WebClient. The outer coalescing lock stays in place\n // so concurrent syncState callers still share one in-flight sync.\n try {\n const result = await this._serializeWasmCall(async () => {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.syncStateImpl();\n }\n const wasm = await getWasmOrThrow();\n const serializedSyncSummaryBytes = await this.callMethodWithWorker(\n MethodName.SYNC_STATE\n );\n return 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(\n null,\n null,\n seed,\n MOCK_STORE_NAME,\n undefined,\n undefined,\n undefined,\n logLevel\n );\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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"}
|
|
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/resources/compiler.js","../js/resources/keystore.js","../js/client.js","../js/standalone.js","../js/safe-arrays.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 numeric value.\n *\n * The public `AuthScheme` constant exposes SDK-friendly strings\n * (`\"falcon\"` / `\"ecdsa\"`), but low-level wasm-bindgen methods such as\n * `AccountComponent.createAuthComponentFromCommitment(commitment, scheme)`\n * expect the numeric variant from the Rust `AuthScheme` enum. This helper\n * bridges the two so callers never touch wasm-bindgen internals directly.\n *\n * `wasm` is optional: when provided (by internal callers who already have\n * the module loaded), the numeric value is read from the binding itself,\n * keeping the mapping robust if wasm-bindgen ever renumbers the enum. When\n * omitted (public callers who don't have a handle to the WASM module), the\n * hardcoded discriminants below are used — these are pinned to the Rust\n * enum order by a cross-check test in `test/account_component.test.ts`.\n *\n * @param {\"falcon\" | \"ecdsa\" | undefined} scheme - Defaults to `\"falcon\"`.\n * @param {object} [wasm] - Optional WASM module handle.\n * @returns {number} The AuthScheme enum numeric value (1 or 2).\n */\nexport function resolveAuthScheme(scheme, wasm) {\n if (scheme === \"ecdsa\") {\n return wasm?.AuthScheme?.AuthEcdsaK256Keccak ?? 1;\n }\n if (scheme === \"falcon\" || scheme == null) {\n return wasm?.AuthScheme?.AuthRpoFalcon512 ?? 2;\n }\n throw new Error(\n `Unknown auth scheme: \"${scheme}\". Expected \"falcon\" or \"ecdsa\".`\n );\n}\n\n/**\n * Resolves an AccountType value to a boolean `mutable` flag\n * for the underlying WASM `newWallet()` / `importPublicAccountFromSeed()` calls.\n *\n * Accepts the numeric WASM enum values (2 = immutable, 3 = mutable) or the\n * legacy string aliases (\"MutableWallet\", \"ImmutableWallet\"). Defaults to\n * mutable when undefined.\n *\n * @param {number | string | undefined} accountType\n * @returns {boolean} Whether the account code is mutable.\n */\nexport function resolveAccountMutability(accountType) {\n if (\n accountType == null ||\n accountType === \"MutableWallet\" ||\n accountType === 3\n ) {\n return true;\n }\n if (accountType === \"ImmutableWallet\" || accountType === 2) {\n return false;\n }\n throw new Error(\n `Unknown wallet account type: \"${accountType}\". Expected AccountType.MutableWallet (3) or AccountType.ImmutableWallet (2).`\n );\n}\n\n/**\n * Resolves a NoteInput (string | NoteId | InputNoteRecord | Note) to a hex string.\n *\n * - Strings are passed through unchanged.\n * - NoteId WASM objects are converted via `.toString()`.\n * - InputNoteRecord and Note objects (with an `.id()` method) are resolved via `.id().toString()`.\n *\n * @param {string | object} input - The note reference to resolve.\n * @returns {string} The hex note ID string.\n */\nexport function resolveNoteIdHex(input) {\n if (input == null) {\n throw new Error(\"Note ID cannot be null or undefined\");\n }\n if (typeof input === \"string\") {\n return input;\n }\n // NoteId WASM object — has toString() but not id() (unlike InputNoteRecord/Note).\n // Check for constructor.fromHex to distinguish from plain objects (which also inherit toString).\n if (\n typeof input.toString === \"function\" &&\n typeof input.id !== \"function\" &&\n input.constructor?.fromHex !== undefined\n ) {\n return input.toString();\n }\n // InputNoteRecord, Note, or other object with id() returning NoteId\n if (typeof input.id === \"function\") {\n return input.id().toString();\n }\n throw new TypeError(\n `Cannot resolve note ID: expected string, NoteId, InputNoteRecord, or Note, got ${typeof input}`\n );\n}\n\n/**\n * Resolves a TransactionId reference (string | TransactionId) to a hex string.\n *\n * - Strings are passed through unchanged.\n * - TransactionId WASM objects are converted via `.toHex()`.\n *\n * @param {string | object} input - The transaction ID reference to resolve.\n * @returns {string} The hex transaction ID string.\n */\nexport function resolveTransactionIdHex(input) {\n if (input == null) {\n throw new Error(\"Transaction ID cannot be null or undefined\");\n }\n if (typeof input === \"string\") {\n return input;\n }\n // TransactionId WASM object — toHex() returns hex\n if (typeof input.toHex === \"function\") {\n return input.toHex();\n }\n throw new TypeError(\n `Cannot resolve transaction ID: expected string or TransactionId, got ${typeof input}`\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 const type = opts?.type;\n\n if (\n type === 0 ||\n type === 1 ||\n type === \"FungibleFaucet\" ||\n type === \"NonFungibleFaucet\"\n ) {\n const storageMode = resolveStorageMode(opts.storage ?? \"public\", wasm);\n const authScheme = resolveAuthScheme(opts.auth, wasm);\n return await this.#inner.newFaucet(\n storageMode,\n type === 1 || type === \"NonFungibleFaucet\",\n opts.symbol,\n opts.decimals,\n BigInt(opts.maxSupply),\n authScheme\n );\n } else if (\n type === \"ImmutableContract\" ||\n type === \"MutableContract\" ||\n opts?.components // Contracts are distinguished from wallets by having components\n ) {\n return await this.#createContract(opts, wasm);\n } else {\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(\n storageMode,\n mutable,\n authScheme,\n seed\n );\n }\n }\n\n async #createContract(opts, wasm) {\n if (!opts.seed)\n throw new Error(\"Contract creation requires a 'seed' (Uint8Array)\");\n if (!opts.auth)\n throw new Error(\"Contract creation requires an 'auth' (AuthSecretKey)\");\n\n // Default to immutable when type is omitted (safer for contracts)\n const mutable = opts.type === \"MutableContract\" || opts.type === 3;\n const accountTypeEnum = mutable\n ? wasm.AccountType.RegularAccountUpdatableCode\n : wasm.AccountType.RegularAccountImmutableCode;\n const storageMode = resolveStorageMode(opts.storage ?? \"public\", wasm);\n const authComponent =\n wasm.AccountComponent.createAuthComponentFromSecretKey(opts.auth);\n\n let builder = new wasm.AccountBuilder(opts.seed)\n .accountType(accountTypeEnum)\n .storageMode(storageMode)\n .withAuthComponent(authComponent);\n\n for (const component of opts.components ?? []) {\n builder = builder.withComponent(component);\n }\n\n const built = builder.build();\n const account = built.account;\n\n await this.#inner.newAccountWithSecretKey(account, opts.auth);\n return account;\n }\n\n async insert({ account, overwrite = false }) {\n this.#client.assertNotTerminated();\n await this.#inner.newAccount(account, overwrite);\n }\n\n async getOrImport(ref) {\n this.#client.assertNotTerminated();\n return (await this.get(ref)) ?? (await this.import(ref));\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.keystore.getCommitments(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 // Early exit for string, Account, and AccountHeader types before property\n // checks, preventing misrouting if a WASM object ever gains a .file or .seed\n // property. Bare AccountId (no .id() method) falls through to the fallback.\n if (typeof input === \"string\" || typeof input.id === \"function\") {\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 // Fallback: treat as AccountRef (string, AccountId, Account, AccountHeader)\n const id = resolveAccountRef(input, wasm);\n await this.#inner.importAccountById(id);\n return await this.#inner.getAccount(id);\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 {\n resolveAccountRef,\n resolveNoteType,\n resolveTransactionIdHex,\n} 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\n if (opts.returnNote === true) {\n // returnNote path — build the P2ID note in JS so we can return the Note\n // object to the caller (e.g. for out-of-band delivery to the recipient).\n if (opts.reclaimAfter != null || opts.timelockUntil != null) {\n throw new Error(\n \"reclaimAfter and timelockUntil are not supported when returnNote is true\"\n );\n }\n\n const senderId = resolveAccountRef(opts.account, wasm);\n const receiverId = resolveAccountRef(opts.to, wasm);\n const faucetId = resolveAccountRef(opts.token, wasm);\n const noteType = resolveNoteType(opts.type, wasm);\n\n const note = wasm.Note.createP2IDNote(\n senderId,\n receiverId,\n new wasm.NoteAssets([\n new wasm.FungibleAsset(faucetId, BigInt(opts.amount)),\n ]),\n noteType,\n new wasm.NoteAttachment()\n );\n\n // NoteArray constructor consumes its elements; use push(¬e) to keep\n // `note` valid so we can return it to the caller below.\n const ownOutputs = new wasm.NoteArray();\n ownOutputs.push(note);\n const request = new wasm.TransactionRequestBuilder()\n .withOwnOutputNotes(ownOutputs)\n .build();\n\n const { txId, result } = await this.#submitOrSubmitWithProver(\n senderId,\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, note, result };\n }\n\n // Default path — note built in WASM with optional reclaim/timelock\n const { accountId, request } = await this.#buildSendRequest(opts, wasm);\n const { txId, result } = 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, note: null, result };\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, result } = 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, result };\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, result } = 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, result };\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, result } = 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 result,\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, result } = 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, result };\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 case \"custom\": {\n accountId = resolveAccountRef(opts.account, wasm);\n request = opts.request;\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 execute(opts) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const accountId = resolveAccountRef(opts.account, wasm);\n\n let builder = new wasm.TransactionRequestBuilder().withCustomScript(\n opts.script\n );\n\n if (opts.foreignAccounts?.length) {\n const accounts = opts.foreignAccounts.map((fa) => {\n // Distinguish { id: AccountRef, storage? } wrapper objects from WASM types\n // (Account/AccountHeader expose .id() as a method, wrappers have .id as a property)\n const isWrapper =\n fa !== null &&\n typeof fa === \"object\" &&\n \"id\" in fa &&\n typeof fa.id !== \"function\";\n const id = resolveAccountRef(isWrapper ? fa.id : fa, wasm);\n const storage =\n isWrapper && fa.storage\n ? fa.storage\n : new wasm.AccountStorageRequirements();\n return wasm.ForeignAccount.public(id, storage);\n });\n builder = builder.withForeignAccounts(\n new wasm.ForeignAccountArray(accounts)\n );\n }\n\n const request = builder.build();\n const { txId, result } = 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, result };\n }\n\n async executeProgram(opts) {\n this.#client.assertNotTerminated();\n const wasm = await this.#getWasm();\n const accountId = resolveAccountRef(opts.account, wasm);\n\n let foreignAccountsArray = new wasm.ForeignAccountArray();\n if (opts.foreignAccounts?.length) {\n const accounts = opts.foreignAccounts.map((fa) => {\n const isWrapper =\n fa !== null &&\n typeof fa === \"object\" &&\n \"id\" in fa &&\n typeof fa.id !== \"function\";\n const id = resolveAccountRef(isWrapper ? fa.id : fa, wasm);\n const storage =\n isWrapper && fa.storage\n ? fa.storage\n : new wasm.AccountStorageRequirements();\n return wasm.ForeignAccount.public(id, storage);\n });\n foreignAccountsArray = new wasm.ForeignAccountArray(accounts);\n }\n\n return await this.#inner.executeProgram(\n accountId,\n opts.script,\n opts.adviceInputs ?? new wasm.AdviceInputs(),\n foreignAccountsArray\n );\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) =>\n wasm.TransactionId.fromHex(resolveTransactionIdHex(id))\n );\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 | TransactionId} txId - Transaction ID hex string or TransactionId object.\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 hex = resolveTransactionIdHex(txId);\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(hex),\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: ${hex}`);\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\n const isDirectNote = (input) =>\n input !== null &&\n typeof input === \"object\" &&\n typeof input.id === \"function\" &&\n typeof input.toNote !== \"function\";\n\n const hasDirectNotes = noteInputs.some(isDirectNote);\n\n if (hasDirectNotes) {\n // At least one raw Note object — use NoteAndArgs builder path\n // (the only WASM path that accepts unauthenticated notes not in the store).\n const resolvedNotes = await Promise.all(\n noteInputs.map(async (input) => {\n if (isDirectNote(input)) return input;\n if (input && typeof input.toNote === \"function\")\n return input.toNote();\n return await this.#resolveNoteInput(input);\n })\n );\n\n const noteAndArgsArr = resolvedNotes.map(\n (note) => new wasm.NoteAndArgs(note, null)\n );\n const request = new wasm.TransactionRequestBuilder()\n .withInputNotes(new wasm.NoteAndArgsArray(noteAndArgsArr))\n .build();\n return { accountId, request };\n }\n\n // Standard path: all inputs are IDs or records — look up from store.\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 — has toString() but not toNote() or id() (unlike InputNoteRecord/Note).\n // Check for constructor.fromHex to distinguish from plain objects.\n if (\n input &&\n typeof input.toString === \"function\" &&\n typeof input.toNote !== \"function\" &&\n typeof input.id !== \"function\" &&\n input.constructor?.fromHex !== undefined\n ) {\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 result = await this.#inner.executeTransaction(accountId, request);\n const prover = perCallProver ?? this.#client.defaultProver;\n // Use proveTransactionWithProver (by-reference) when a prover is\n // provided, so the JS-side handle is NOT consumed by wasm-bindgen.\n // Passing the prover by value would transfer ownership and invalidate\n // the JS object after one call, causing silent fallback to local\n // proving on reuse.\n const proven = prover\n ? await this.#inner.proveTransactionWithProver(result, prover)\n : await this.#inner.proveTransaction(result);\n const txId = result.id();\n const height = await this.#inner.submitProvenTransaction(proven, result);\n await this.#inner.applyTransaction(result, height);\n return { txId, result };\n }\n}\n","import {\n resolveAccountRef,\n resolveAddress,\n resolveNoteIdHex,\n} 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(resolveNoteIdHex(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 const consumable = await this.#inner.getConsumableNotes(accountId);\n return consumable.map((c) => c.inputNoteRecord());\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(resolveNoteIdHex(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\n let note;\n const input = opts.note;\n // Check if input is a Note object (has .id() and .assets() but not .toNote())\n if (\n input &&\n typeof input === \"object\" &&\n typeof input.id === \"function\" &&\n typeof input.assets === \"function\" &&\n typeof input.toNote !== \"function\"\n ) {\n note = input;\n } else {\n const noteHex = resolveNoteIdHex(input);\n const noteRecord = await this.#inner.getInputNote(noteHex);\n if (!noteRecord) {\n throw new Error(`Note not found: ${noteHex}`);\n }\n note = noteRecord.toNote();\n }\n\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) =>\n wasm.NoteId.fromHex(resolveNoteIdHex(id))\n );\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","export class CompilerResource {\n #inner;\n #getWasm;\n #client;\n\n constructor(inner, getWasm, client = null) {\n this.#inner = inner;\n this.#getWasm = getWasm;\n this.#client = client;\n }\n\n /**\n * Compiles MASM code + slots into an AccountComponent ready for accounts.create().\n *\n * @param {{ code: string, slots: StorageSlot[], supportAllTypes?: boolean }} opts\n * @returns {Promise<AccountComponent>}\n */\n async component({ code, slots = [], supportAllTypes = true }) {\n this.#client?.assertNotTerminated();\n const wasm = await this.#getWasm();\n const builder = this.#inner.createCodeBuilder();\n const compiled = builder.compileAccountComponentCode(code);\n const component = wasm.AccountComponent.compile(compiled, slots);\n return supportAllTypes ? component.withSupportsAllTypes() : component;\n }\n\n /**\n * Compiles a transaction script, optionally linking named libraries inline.\n *\n * @param {{ code: string, libraries?: Array<{ namespace: string, code: string, linking?: \"dynamic\" | \"static\" }> }} opts\n * @returns {Promise<TransactionScript>}\n */\n async txScript({ code, libraries = [] }) {\n this.#client?.assertNotTerminated();\n // Ensure WASM is initialized (result unused — only #inner needs it)\n await this.#getWasm();\n const builder = this.#inner.createCodeBuilder();\n linkLibraries(builder, libraries);\n return builder.compileTxScript(code);\n }\n\n /**\n * Compiles a note script, optionally linking named libraries inline.\n *\n * @param {{ code: string, libraries?: Array<{ namespace: string, code: string, linking?: \"dynamic\" | \"static\" }> }} opts\n * @returns {Promise<NoteScript>}\n */\n async noteScript({ code, libraries = [] }) {\n this.#client?.assertNotTerminated();\n await this.#getWasm();\n const builder = this.#inner.createCodeBuilder();\n linkLibraries(builder, libraries);\n return builder.compileNoteScript(code);\n }\n}\n\n// Builds and links each library entry against `builder`. Inline\n// `{ namespace, code, linking? }` entries are built via `buildLibrary` and\n// linked according to `linking` (defaulting to dynamic, matching tutorial\n// behavior). Pre-built library objects are linked dynamically.\nfunction linkLibraries(builder, libraries) {\n for (const lib of libraries) {\n if (lib && typeof lib.namespace === \"string\") {\n const built = builder.buildLibrary(lib.namespace, lib.code);\n if (lib.linking === \"static\") {\n builder.linkStaticLibrary(built);\n } else {\n builder.linkDynamicLibrary(built);\n }\n } else {\n builder.linkDynamicLibrary(lib);\n }\n }\n}\n","export class KeystoreResource {\n #inner;\n #client;\n\n constructor(inner, client) {\n this.#inner = inner;\n this.#client = client;\n }\n\n async insert(accountId, secretKey) {\n this.#client.assertNotTerminated();\n const ks = this.#inner.keystore;\n return await ks.insert(accountId, secretKey);\n }\n\n async get(pubKeyCommitment) {\n this.#client.assertNotTerminated();\n const ks = this.#inner.keystore;\n return await ks.get(pubKeyCommitment);\n }\n\n async remove(pubKeyCommitment) {\n this.#client.assertNotTerminated();\n const ks = this.#inner.keystore;\n return await ks.remove(pubKeyCommitment);\n }\n\n async getCommitments(accountId) {\n this.#client.assertNotTerminated();\n const ks = this.#inner.keystore;\n return await ks.getCommitments(accountId);\n }\n\n async getAccountId(pubKeyCommitment) {\n this.#client.assertNotTerminated();\n const ks = this.#inner.keystore;\n return await ks.getAccountId(pubKeyCommitment);\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 { CompilerResource } from \"./resources/compiler.js\";\nimport { KeystoreResource } from \"./resources/keystore.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 this.compile = new CompilerResource(inner, getWasm, this);\n this.keystore = new KeystoreResource(inner, this);\n }\n\n /**\n * Creates and initializes a new MidenClient.\n *\n * If no `rpcUrl` is provided, defaults to testnet with full configuration\n * (RPC, prover, note transport, autoSync).\n *\n * @param {ClientOptions} [options] - Client configuration options.\n * @returns {Promise<MidenClient>} A fully initialized client.\n */\n static async create(options) {\n if (!options?.rpcUrl) {\n return MidenClient.createTestnet(options);\n }\n\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 const rpcUrl = resolveRpcUrl(options?.rpcUrl);\n const noteTransportUrl = resolveNoteTransportUrl(options?.noteTransportUrl);\n\n let inner;\n if (options?.keystore) {\n inner = await WebClientClass.createClientWithExternalKeystore(\n rpcUrl,\n 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 rpcUrl,\n noteTransportUrl,\n seed,\n options?.storeName\n );\n }\n\n let defaultProver = null;\n if (options?.proverUrl) {\n const wasm = await getWasm();\n defaultProver = resolveProver(options.proverUrl, wasm);\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 *\n * Defaults: rpcUrl \"testnet\", proverUrl \"testnet\", noteTransportUrl \"testnet\", autoSync true.\n * All defaults can be overridden via options.\n *\n * @param {ClientOptions} [options] - Options to override defaults.\n * @returns {Promise<MidenClient>} A fully initialized testnet client.\n */\n static async createTestnet(options) {\n return MidenClient.create({\n rpcUrl: \"testnet\",\n proverUrl: \"testnet\",\n noteTransportUrl: \"testnet\",\n autoSync: true,\n ...options,\n });\n }\n\n /**\n * Creates a client preconfigured for devnet use.\n *\n * Defaults: rpcUrl \"devnet\", proverUrl \"devnet\", noteTransportUrl \"devnet\", autoSync true.\n * All defaults can be overridden via options.\n *\n * @param {ClientOptions} [options] - Options to override defaults.\n * @returns {Promise<MidenClient>} A fully initialized devnet client.\n */\n static async createDevnet(options) {\n return MidenClient.create({\n rpcUrl: \"devnet\",\n proverUrl: \"devnet\",\n noteTransportUrl: \"devnet\",\n autoSync: true,\n ...options,\n });\n }\n\n /**\n * Resolves once the WASM module is initialized and safe to use.\n *\n * Idempotent and shared across callers: the underlying loader memoizes the\n * in-flight promise, so concurrent `ready()` calls await the same\n * initialization and post-init callers resolve immediately from a cached\n * module. Safe to call from `MidenProvider`, tutorial helpers, and any\n * other consumer simultaneously.\n *\n * Useful on the `/lazy` entry (e.g. Next.js / Capacitor), where no\n * top-level await runs at import time. On the default (eager) entry this\n * is redundant — importing the module already awaits WASM — but calling it\n * is still harmless.\n *\n * @returns {Promise<void>} Resolves when WASM is initialized.\n */\n static async ready() {\n const getWasm = MidenClient._getWasmOrThrow;\n if (!getWasm) {\n throw new Error(\n \"MidenClient not initialized. Import from the SDK package entry point.\"\n );\n }\n await getWasm();\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 * Resolves once every serialized WASM call that was already on the\n * internal `_serializeWasmCall` chain when `waitForIdle()` was called\n * (execute, submit, prove, apply, sync, or account creation) has\n * settled. Use this from callers that need to perform a non-WASM-side\n * action — e.g. clearing an in-memory auth key on wallet lock — after\n * the kernel finishes, so its auth callback doesn't race with the key\n * being cleared.\n *\n * Does NOT wait for calls enqueued after `waitForIdle()` returns —\n * intentional, so a caller can drain and proceed without being blocked\n * indefinitely by concurrent workload.\n *\n * Caveat for `syncState`: `syncStateWithTimeout` awaits the sync lock\n * (`acquireSyncLock`, which uses Web Locks) BEFORE putting its WASM\n * call onto the chain, so a `syncState` that is queued on the sync\n * lock — but has not yet begun its WASM phase — is not visible to\n * `waitForIdle` and will not be awaited. Other methods (`newWallet`,\n * `executeTransaction`, etc.) route through the chain synchronously\n * on call and are always observed.\n *\n * Safe to call at any time; returns immediately if nothing was in\n * flight.\n *\n * @returns {Promise<void>}\n */\n async waitForIdle() {\n this.assertNotTerminated();\n await this.#inner.waitForIdle();\n }\n\n /**\n * Returns the raw JS value that the most recent sign-callback invocation\n * threw, or `null` if the last sign call succeeded (or no call has\n * happened yet).\n *\n * Useful for recovering structured metadata (e.g. a `reason: 'locked'`\n * property) that the kernel-level `auth::request` diagnostic would\n * otherwise erase. Call immediately after catching a failed\n * `transactions.submit` / `transactions.send` / `transactions.consume`.\n *\n * @returns {any} The raw thrown value, or `null`.\n */\n lastAuthError() {\n this.assertNotTerminated();\n return this.#inner.lastAuthError();\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 * Returns the identifier of the underlying store (e.g. IndexedDB database name, file path).\n *\n * @returns {string} The store identifier.\n */\n storeIdentifier() {\n this.assertNotTerminated();\n return this.#inner.storeIdentifier();\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\nconst RPC_URLS = {\n testnet: \"https://rpc.testnet.miden.io\",\n devnet: \"https://rpc.devnet.miden.io\",\n localhost: \"http://localhost:57291\",\n local: \"http://localhost:57291\",\n};\n\n/**\n * Resolves an rpcUrl shorthand or raw URL into a concrete endpoint string.\n *\n * @param {string | undefined} rpcUrl - \"testnet\", \"devnet\", \"localhost\", \"local\", or a raw URL.\n * @returns {string | undefined} A fully qualified URL, or undefined to use the SDK default.\n */\nfunction resolveRpcUrl(rpcUrl) {\n if (!rpcUrl) return undefined;\n return RPC_URLS[rpcUrl.trim().toLowerCase()] ?? rpcUrl;\n}\n\nconst PROVER_URLS = {\n devnet: \"https://tx-prover.devnet.miden.io\",\n testnet: \"https://tx-prover.testnet.miden.io\",\n};\n\nconst NOTE_TRANSPORT_URLS = {\n testnet: \"https://transport.miden.io\",\n devnet: \"https://transport.devnet.miden.io\",\n};\n\n/**\n * Resolves a noteTransportUrl shorthand or raw URL into a concrete endpoint string.\n *\n * @param {string | undefined} noteTransportUrl - \"testnet\", \"devnet\", or a raw URL.\n * @returns {string | undefined} A fully qualified URL, or undefined if omitted.\n */\nfunction resolveNoteTransportUrl(noteTransportUrl) {\n if (!noteTransportUrl) return undefined;\n return (\n NOTE_TRANSPORT_URLS[noteTransportUrl.trim().toLowerCase()] ??\n noteTransportUrl\n );\n}\n\n/**\n * Resolves a proverUrl shorthand or raw URL into a TransactionProver.\n *\n * @param {string} proverUrl - \"local\", \"devnet\", \"testnet\", or a raw URL.\n * @param {object} wasm - Loaded WASM module.\n * @returns {object} A TransactionProver instance.\n */\nfunction resolveProver(proverUrl, wasm) {\n const normalized = proverUrl.trim().toLowerCase();\n if (normalized === \"local\") {\n return wasm.TransactionProver.newLocalProver();\n }\n const remoteUrl = PROVER_URLS[normalized] ?? proverUrl;\n return wasm.TransactionProver.newRemoteProver(remoteUrl, undefined);\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 {Note} The created 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 return wasm.Note.createP2IDNote(\n sender,\n target,\n noteAssets,\n noteType,\n attachment\n );\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 {Note} The created 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 return wasm.Note.createP2IDENote(\n sender,\n target,\n noteAssets,\n opts.reclaimAfter,\n opts.timelockUntil,\n noteType,\n attachment\n );\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","/**\n * Non-consuming wrappers for wasm-bindgen-generated array classes.\n *\n * The default wasm-bindgen-generated constructor for an exported `Vec<T>`\n * parameter (e.g. `pub fn new(elements: Option<Vec<Note>>) -> Self`) takes\n * each input element by value: the Rust-side value is moved out of the\n * caller's JS handle. The handle is left dangling — its `__wbg_ptr` field\n * is unchanged so the JS object looks fine, but any subsequent method call\n * panics inside WASM with the opaque `\"null pointer passed to rust\"`\n * error from wasm-bindgen.\n *\n * That's a footgun for JS users, who don't expect \"this object can no\n * longer be used\" semantics from a constructor like\n * `new NoteArray([note])`. So we wrap each affected array with a class\n * that builds the same array via `push(&T)` — which already borrows +\n * clones — leaving the originals fully usable afterwards.\n *\n * The wrapper extends the wasm-bindgen base class, so `instanceof` checks\n * (including `_assertClass(...)` in other auto-generated wasm-bindgen\n * methods) keep working transparently.\n */\n\nimport {\n AccountArray as _AccountArray,\n AccountIdArray as _AccountIdArray,\n FeltArray as _FeltArray,\n ForeignAccountArray as _ForeignAccountArray,\n NoteAndArgsArray as _NoteAndArgsArray,\n NoteArray as _NoteArray,\n NoteIdAndArgsArray as _NoteIdAndArgsArray,\n NoteRecipientArray as _NoteRecipientArray,\n OutputNoteArray as _OutputNoteArray,\n StorageSlotArray as _StorageSlotArray,\n TransactionScriptInputPairArray as _TransactionScriptInputPairArray,\n} from \"../Cargo.toml\";\n\nfunction makeSafeArray(Base) {\n return class extends Base {\n constructor(elements) {\n super(); // empty Rust Vec — no consume\n if (Array.isArray(elements)) {\n for (const el of elements) {\n // push(&T) on Base borrows and clones — input handles stay valid.\n this.push(el);\n }\n }\n }\n };\n}\n\nexport const AccountArray = makeSafeArray(_AccountArray);\nexport const AccountIdArray = makeSafeArray(_AccountIdArray);\nexport const FeltArray = makeSafeArray(_FeltArray);\nexport const ForeignAccountArray = makeSafeArray(_ForeignAccountArray);\nexport const NoteAndArgsArray = makeSafeArray(_NoteAndArgsArray);\nexport const NoteArray = makeSafeArray(_NoteArray);\nexport const NoteIdAndArgsArray = makeSafeArray(_NoteIdAndArgsArray);\nexport const NoteRecipientArray = makeSafeArray(_NoteRecipientArray);\nexport const OutputNoteArray = makeSafeArray(_OutputNoteArray);\nexport const StorageSlotArray = makeSafeArray(_StorageSlotArray);\nexport const TransactionScriptInputPairArray = makeSafeArray(\n _TransactionScriptInputPairArray\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 { CompilerResource } from \"./resources/compiler.js\";\nimport {\n createP2IDNote,\n createP2IDENote,\n buildSwapTag,\n _setWasm as _setStandaloneWasm,\n _setWebClient as _setStandaloneWebClient,\n} from \"./standalone.js\";\nimport { resolveAuthScheme } from \"./utils.js\";\nexport { resolveAuthScheme };\nexport * from \"../Cargo.toml\";\n\n// Override the auto-generated wasm-bindgen array constructors with\n// wrappers that build via push() instead of taking Vec<T> by value.\n// Without this override, e.g. `new NoteArray([note])` silently moves the\n// underlying Rust value out of the caller's `note` handle, and any later\n// method call on `note` panics with \"null pointer passed to rust\".\n// See ./safe-arrays.js for the full rationale.\nexport {\n AccountArray,\n AccountIdArray,\n FeltArray,\n ForeignAccountArray,\n NoteAndArgsArray,\n NoteArray,\n NoteIdAndArgsArray,\n NoteRecipientArray,\n OutputNoteArray,\n StorageSlotArray,\n TransactionScriptInputPairArray,\n} from \"./safe-arrays.js\";\n\nexport const AccountType = Object.freeze({\n // WASM-compatible numeric values — usable with AccountBuilder directly\n FungibleFaucet: 0,\n NonFungibleFaucet: 1,\n RegularAccountImmutableCode: 2,\n RegularAccountUpdatableCode: 3,\n // SDK-friendly aliases (same numeric values as their WASM equivalents)\n MutableWallet: 3,\n ImmutableWallet: 2,\n ImmutableContract: 2,\n MutableContract: 3,\n});\n\nexport const AuthScheme = Object.freeze({\n Falcon: \"falcon\",\n ECDSA: \"ecdsa\",\n});\n\nexport const NoteVisibility = Object.freeze({\n Public: \"public\",\n Private: \"private\",\n});\n\nexport const StorageMode = Object.freeze({\n Public: \"public\",\n Private: \"private\",\n Network: \"network\",\n});\n\nexport const Linking = Object.freeze({\n Dynamic: \"dynamic\",\n Static: \"static\",\n});\n\nexport { MidenClient };\nexport { CompilerResource };\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\n// Method classification sets — used by scripts/check-method-classification.js to ensure\n// every WASM export is explicitly categorised. Update when adding new WASM methods.\n//\n// Note on `SYNC_METHODS`: the classifier is \"synchronous in JS\" — i.e.\n// `pub fn ...` in Rust, not `pub async fn ...`. Two sub-cases:\n// 1. Factory methods that return a non-Promise value (`accountReader`\n// returns `AccountReader`; the transaction-request builders return\n// `TransactionRequestBuilder`; `createCodeBuilder` returns a builder).\n// Wrapping these in `_serializeWasmCall` would turn their return\n// value into `Promise<T>` and break callers that use the result\n// immediately (e.g. `const reader = client.accountReader(id);\n// await reader.nonce();`).\n// 2. Sync methods that still take `&mut self` in Rust (`proveBlock`,\n// `serializeMockChain`, `setDebugMode`). Safe to opt out because JS\n// is single-threaded — the event loop cannot interleave another\n// call during their synchronous execution, so the RefCell borrow\n// is always released before any other borrow can start.\n// Do NOT move a sync-in-JS method into `WRITE_METHODS` / `READ_METHODS`\n// just because it takes `&mut self` or `&self`; wrapping changes its\n// return shape and breaks every caller.\nconst SYNC_METHODS = new Set([\n \"accountReader\",\n \"buildSwapTag\",\n \"createCodeBuilder\",\n \"lastAuthError\",\n \"newConsumeTransactionRequest\",\n \"newMintTransactionRequest\",\n \"newSendTransactionRequest\",\n \"newSwapTransactionRequest\",\n \"proveBlock\",\n \"serializeMockChain\",\n \"serializeMockNoteTransportNode\",\n \"setDebugMode\",\n \"storeIdentifier\",\n \"usesMockChain\",\n]);\n\nconst WRITE_METHODS = new Set([\n \"addTag\",\n \"executeForSummary\",\n \"executeProgram\",\n \"fetchAllPrivateNotes\",\n \"fetchPrivateNotes\",\n \"forceImportStore\",\n \"importAccountById\",\n \"importAccountFile\",\n \"importNoteFile\",\n \"importPublicAccountFromSeed\",\n \"insertAccountAddress\",\n \"newAccount\",\n \"pruneAccountHistory\",\n \"removeAccountAddress\",\n \"removeTag\",\n \"removeSetting\",\n \"sendPrivateNote\",\n \"setSetting\",\n \"submitProvenTransaction\",\n]);\n\nconst READ_METHODS = new Set([\n \"exportAccountFile\",\n \"exportNoteFile\",\n \"exportStore\",\n \"getAccount\",\n \"getAccountCode\",\n \"getAccountStorage\",\n \"getAccountVault\",\n \"getAccounts\",\n \"getConsumableNotes\",\n \"getInputNote\",\n \"getInputNotes\",\n \"getOutputNote\",\n \"getOutputNotes\",\n \"getSetting\",\n \"getSyncHeight\",\n \"getTransactions\",\n \"listSettingKeys\",\n \"listTags\",\n \"executeProgram\",\n]);\n\nconst MOCK_STORE_NAME = \"mock_client_db\";\n\n// `SYNC_METHODS` is read by `createClientProxy` to decide whether a\n// proxy-fallback call should stay synchronous. `WRITE_METHODS` /\n// `READ_METHODS` are consulted only by the CI lint (see\n// scripts/check-method-classification.js); suppress unused-variable\n// warnings for those two.\nvoid WRITE_METHODS;\nvoid READ_METHODS;\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 *\n * Async proxy-fallback methods (every WASM method that borrows the\n * WebClient's RefCell — reads included, since `&self` and `&mut self` both\n * trip wasm-bindgen's \"recursive use of an object detected\" panic if\n * another borrow is live) are routed through `_serializeWasmCall` so they\n * queue on the same chain as the explicitly-wrapped methods.\n *\n * `SYNC_METHODS` opts out: they are synchronous in JS and wrapping them\n * would change their return type to `Promise<T>`, which is a breaking\n * change for consumers that use them as plain getters or builders.\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 if (typeof prop === \"string\" && SYNC_METHODS.has(prop)) {\n return value.bind(target.wasmWebClient);\n }\n return (...args) =>\n target._serializeWasmCall(() =>\n value.apply(target.wasmWebClient, args)\n );\n }\n return value;\n }\n return undefined;\n },\n });\n}\n\nclass WebClient {\n /**\n * Controls which worker variant is spawned when a WebClient is constructed.\n *\n * - `\"auto\"` (default): pick `classic` on Safari/WKWebView (where module\n * workers have a very slow cold start), `module` everywhere else.\n * - `\"module\"`: always use the `.mjs` ES-module worker. Required for webpack\n * 5 / Next.js consumers so the asset tracer can see the WASM URL.\n * - `\"classic\"`: always use the `.js` classic-script worker. Required on\n * Safari/WKWebView. Set this if your consumer bundler (or your host app)\n * does not support module workers.\n *\n * Set before the first `WebClient.createClient(...)` call.\n */\n static workerMode = \"auto\";\n\n /**\n * Decide between the module and classic worker variants based on\n * `WebClient.workerMode` and (when `auto`) the current user agent.\n * @returns {boolean} true when the classic script should be used.\n * @private\n */\n static _shouldUseClassicWorker() {\n const mode = WebClient.workerMode;\n if (mode === \"module\") return false;\n if (mode === \"classic\") return true;\n // auto: classic on Safari/WKWebView, module everywhere else.\n const ua =\n typeof navigator !== \"undefined\" && navigator.userAgent\n ? navigator.userAgent\n : \"\";\n // Chromium-based browsers (Chrome, Edge, Brave, Opera, Chromium-based\n // Android WebView) handle module workers fine.\n if (/Chrome\\/|Chromium\\//.test(ua)) return false;\n // Safari (desktop + iOS) and WKWebView-without-Chrome (e.g. Capacitor host)\n // both have AppleWebKit but no Chrome/Chromium in the UA. Prefer classic.\n if (/AppleWebKit/.test(ua)) return true;\n // Firefox, jsdom, node without navigator, etc. — module worker is fine.\n return false;\n }\n\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 // Pick between the module and classic worker variants at runtime — see\n // `WebClient.workerMode` below. Both branches keep the\n // `new Worker(new URL(\"...\", import.meta.url), ...)` form fully literal:\n // webpack 5's new-worker detector is PURELY SYNTACTIC and only triggers\n // a proper worker sub-compilation (with asset+chunk tracing into the\n // Cargo glue and the sibling WASM) when it sees that exact pattern\n // spelled inline. Hoisting either URL into a variable downgrades the\n // detection to a plain \"copy file as asset\" — which in turn makes the\n // worker's `await import(\"./Cargo-*.js\")` 404 because webpack never\n // emitted a chunk for it. The bit of duplication here is load-bearing.\n //\n // - module (`.module.js` with `{ type: \"module\" }`): `import.meta.url`\n // inside the Cargo glue is preserved so webpack/Vite can resolve the\n // WASM URL statically. Preferred everywhere EXCEPT Safari/WKWebView.\n // - classic (`.js`, no options): self-contained async IIFE with\n // `import.meta.url` rewritten to `self.location.href`; the only form\n // Safari/WKWebView can cold-start in a reasonable time.\n if (WebClient._shouldUseClassicWorker()) {\n this.worker = new Worker(\n new URL(\"./workers/web-client-methods-worker.js\", import.meta.url)\n );\n } else {\n this.worker = new Worker(\n new URL(\n \"./workers/web-client-methods-worker.module.js\",\n import.meta.url\n ),\n { type: \"module\" }\n );\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 * Wraps both the direct (in-thread) path and the worker-dispatched path.\n * On the worker path this is redundant with the worker's own message queue,\n * but harmless (the chain resolves immediately on the main thread once the\n * worker's postMessage returns). On the direct path it is load-bearing —\n * without it, concurrent main-thread callers would panic with\n * \"recursive use of an object detected\" (wasm-bindgen's internal RefCell).\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 /**\n * Returns a promise that resolves once every serialized WASM call that\n * was already on `_wasmCallChain` when `waitForIdle()` was called has\n * settled. Use this from callers that need to perform a non-WASM-side\n * action (e.g. clear an in-memory auth key) AFTER any in-flight\n * execute / submit / sync has completed, so the WASM kernel's auth\n * callback doesn't race with the key being cleared.\n *\n * Does NOT wait for calls enqueued after `waitForIdle()` returns —\n * this is intentional, so a caller can drain and then proceed without\n * being blocked indefinitely by a concurrent workload.\n *\n * Caveat for `syncState`: `syncStateWithTimeout` awaits\n * `acquireSyncLock` (Web Locks) BEFORE wrapping its WASM call in\n * `_serializeWasmCall`, so a sync that is queued on the sync lock but\n * has not yet reached its WASM phase is not on the chain and will not\n * be awaited. Every other serialized method (`executeTransaction`,\n * `newWallet`, `submitNewTransaction`, `proveTransaction`,\n * `applyTransaction`, and the proxy-fallback reads) routes through\n * the chain synchronously on call and is always observed.\n *\n * @returns {Promise<void>}\n */\n async waitForIdle() {\n // Chain on `_wasmCallChain`; by the time this resolves, any in-flight\n // serialized call has settled. Catch so the chain state doesn't leak.\n await this._wasmCallChain.catch(() => {});\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 newAccount(account, overwrite) {\n return this._serializeWasmCall(async () => {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.newAccount(account, overwrite);\n });\n }\n\n async newAccountWithSecretKey(account, secretKey) {\n return this._serializeWasmCall(async () => {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.newAccountWithSecretKey(account, secretKey);\n });\n }\n\n async submitNewTransaction(accountId, transactionRequest) {\n return this._serializeWasmCall(async () => {\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\n async submitNewTransactionWithProver(accountId, transactionRequest, prover) {\n return this._serializeWasmCall(async () => {\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\n async executeTransaction(accountId, transactionRequest) {\n return this._serializeWasmCall(async () => {\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\n async proveTransaction(transactionResult, prover) {\n return this._serializeWasmCall(async () => {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return prover\n ? await wasmWebClient.proveTransactionWithProver(\n transactionResult,\n prover\n )\n : await wasmWebClient.proveTransaction(transactionResult);\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 // Delegates to `proveTransaction`, which already routes through\n // `_serializeWasmCall` and dispatches to the WASM `proveTransactionWithProver`\n // binding when `prover` is present. Kept as a wrapper (rather than elided)\n // so the method classification lint sees an explicit match for the WASM\n // method name.\n async proveTransactionWithProver(transactionResult, prover) {\n return this.proveTransaction(transactionResult, prover);\n }\n\n async applyTransaction(transactionResult, submissionHeight) {\n return this._serializeWasmCall(async () => {\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 /**\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. Wrap the actual WASM\n // call in _serializeWasmCall so it can't race with any other\n // mutating method (executeTransaction, submitNewTransaction, etc.)\n // on the same WebClient. The outer coalescing lock stays in place\n // so concurrent syncState callers still share one in-flight sync.\n try {\n const result = await this._serializeWasmCall(async () => {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.syncStateImpl();\n }\n const wasm = await getWasmOrThrow();\n const serializedSyncSummaryBytes = await this.callMethodWithWorker(\n MethodName.SYNC_STATE\n );\n return 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(\n null,\n null,\n seed,\n MOCK_STORE_NAME,\n undefined,\n undefined,\n undefined,\n logLevel\n );\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":["_AccountArray","_AccountIdArray","_FeltArray","_ForeignAccountArray","_NoteAndArgsArray","_NoteArray","_NoteIdAndArgsArray","_NoteRecipientArray","_OutputNoteArray","_StorageSlotArray","_TransactionScriptInputPairArray","exports","_setStandaloneWasm","_setStandaloneWebClient"],"mappings":"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"}
|