@bounded-sh/client 0.0.104 → 0.0.106

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +24 -3
  2. package/dist/auth/index.d.ts +1 -1
  3. package/dist/auth/oidc-auth.d.ts +17 -13
  4. package/dist/{email-auth-provider-aMa0EDuc.js → email-auth-provider-C_0SoVG4.js} +2 -2
  5. package/dist/{email-auth-provider-aMa0EDuc.js.map → email-auth-provider-C_0SoVG4.js.map} +1 -1
  6. package/dist/{email-auth-provider-CGhDN-8d.js → email-auth-provider-Czo-xM6n.js} +2 -2
  7. package/dist/{email-auth-provider-CGhDN-8d.js.map → email-auth-provider-Czo-xM6n.js.map} +1 -1
  8. package/dist/{email-auth-provider-CdBqgLWw.mjs → email-auth-provider-D9SQu9c1.mjs} +2 -2
  9. package/dist/{email-auth-provider-DA2dPFXt.mjs.map → email-auth-provider-D9SQu9c1.mjs.map} +1 -1
  10. package/dist/{email-auth-provider-DA2dPFXt.mjs → email-auth-provider-DEchcb2r.mjs} +2 -2
  11. package/dist/{email-auth-provider-CdBqgLWw.mjs.map → email-auth-provider-DEchcb2r.mjs.map} +1 -1
  12. package/dist/global.d.ts +2 -0
  13. package/dist/{guest-auth-provider-BiWPelOD.mjs → guest-auth-provider-CF1zahC4.mjs} +2 -2
  14. package/dist/{guest-auth-provider-pDVr5YRg.mjs.map → guest-auth-provider-CF1zahC4.mjs.map} +1 -1
  15. package/dist/{guest-auth-provider-BT9JPOpp.js → guest-auth-provider-DJ5nCGjq.js} +2 -2
  16. package/dist/{guest-auth-provider-BT9JPOpp.js.map → guest-auth-provider-DJ5nCGjq.js.map} +1 -1
  17. package/dist/{guest-auth-provider-Ca50pehK.js → guest-auth-provider-DPZRPch_.js} +2 -2
  18. package/dist/{guest-auth-provider-Ca50pehK.js.map → guest-auth-provider-DPZRPch_.js.map} +1 -1
  19. package/dist/{guest-auth-provider-pDVr5YRg.mjs → guest-auth-provider-DsFTB844.mjs} +2 -2
  20. package/dist/{guest-auth-provider-BiWPelOD.mjs.map → guest-auth-provider-DsFTB844.mjs.map} +1 -1
  21. package/dist/hosted-identity.d.ts +10 -0
  22. package/dist/{index-DKkAO0g-.mjs → index-nVYK3QUO.mjs} +428 -124
  23. package/dist/index-nVYK3QUO.mjs.map +1 -0
  24. package/dist/{index-DTBxbfUl.js → index-ok-Nn6DV.js} +426 -122
  25. package/dist/index-ok-Nn6DV.js.map +1 -0
  26. package/dist/index.d.ts +9 -2
  27. package/dist/index.js +2 -2
  28. package/dist/index.mjs +1 -1
  29. package/dist/{index.native-Bl2W-Wsi.mjs → index.native-BSOqaKIz.mjs} +313 -97
  30. package/dist/index.native-BSOqaKIz.mjs.map +1 -0
  31. package/dist/{index.native-CNW3iAoP.js → index.native-BpcNwWQX.js} +313 -97
  32. package/dist/index.native-BpcNwWQX.js.map +1 -0
  33. package/dist/index.native.d.ts +1 -1
  34. package/dist/index.native.js +2 -2
  35. package/dist/index.native.mjs +1 -1
  36. package/dist/{injected-evm-wallet-provider-B8PWHQdb.js → injected-evm-wallet-provider-C3Z2c4Yl.js} +2 -2
  37. package/dist/{injected-evm-wallet-provider-B8PWHQdb.js.map → injected-evm-wallet-provider-C3Z2c4Yl.js.map} +1 -1
  38. package/dist/{injected-evm-wallet-provider-HbgMQAbf.mjs → injected-evm-wallet-provider-Xb2G-ZGI.mjs} +2 -2
  39. package/dist/{injected-evm-wallet-provider-HbgMQAbf.mjs.map → injected-evm-wallet-provider-Xb2G-ZGI.mjs.map} +1 -1
  40. package/dist/{injected-evm-wallet-provider-Cym2uENX.js → injected-evm-wallet-provider-_UNpc_hM.js} +2 -2
  41. package/dist/{injected-evm-wallet-provider-Cym2uENX.js.map → injected-evm-wallet-provider-_UNpc_hM.js.map} +1 -1
  42. package/dist/{injected-evm-wallet-provider-BPkcFSQX.mjs → injected-evm-wallet-provider-pI1JMr7g.mjs} +2 -2
  43. package/dist/{injected-evm-wallet-provider-BPkcFSQX.mjs.map → injected-evm-wallet-provider-pI1JMr7g.mjs.map} +1 -1
  44. package/dist/{injected-wallet-provider-FY9JLEPR.js → injected-wallet-provider-C7Q0haGY.js} +2 -2
  45. package/dist/{injected-wallet-provider-FY9JLEPR.js.map → injected-wallet-provider-C7Q0haGY.js.map} +1 -1
  46. package/dist/{injected-wallet-provider-oWtACL_7.js → injected-wallet-provider-CEtgcsQl.js} +2 -2
  47. package/dist/{injected-wallet-provider-oWtACL_7.js.map → injected-wallet-provider-CEtgcsQl.js.map} +1 -1
  48. package/dist/{injected-wallet-provider-BGeNaoEY.mjs → injected-wallet-provider-DNZA1IJ9.mjs} +2 -2
  49. package/dist/{injected-wallet-provider-BGeNaoEY.mjs.map → injected-wallet-provider-DNZA1IJ9.mjs.map} +1 -1
  50. package/dist/{injected-wallet-provider-D39pzPTV.mjs → injected-wallet-provider-DZOwvKgd.mjs} +2 -2
  51. package/dist/{injected-wallet-provider-D39pzPTV.mjs.map → injected-wallet-provider-DZOwvKgd.mjs.map} +1 -1
  52. package/package.json +2 -2
  53. package/dist/index-DKkAO0g-.mjs.map +0 -1
  54. package/dist/index-DTBxbfUl.js.map +0 -1
  55. package/dist/index.native-Bl2W-Wsi.mjs.map +0 -1
  56. package/dist/index.native-CNW3iAoP.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-ok-Nn6DV.js","sources":["../.rollup-tmp/auth/turnkey-wallet-context.js","../.rollup-tmp/platform.js","../.rollup-tmp/auth/providers/offchain-auth-provider.js","../.rollup-tmp/auth/issuer-logout-bounce.js","../.rollup-tmp/auth/stored-auth-method.js","../.rollup-tmp/auth/session-provider.js","../.rollup-tmp/auth/solana-rpc.js","../node_modules/@wallet-standard/app/lib/esm/wallets.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/index.js","../node_modules/safe-buffer/index.js","../node_modules/base-x/src/index.js","../node_modules/bs58/src/esm/index.js","../.rollup-tmp/auth/providers/solana-mobile-registration.js","../.rollup-tmp/auth/bounded-widget-modal.js","../.rollup-tmp/auth/turnkey-wallet-widget.js","../.rollup-tmp/auth/turnkey-signer-frame.js","../.rollup-tmp/auth/turnkey-signing-capability.js","../.rollup-tmp/auth/turnkey-signer-bridge.js","../.rollup-tmp/auth/oidc-auth.js","../.rollup-tmp/auth/index.js","../.rollup-tmp/global.js","../.rollup-tmp/hosted-identity.js","../.rollup-tmp/auth/bounded-widget-ownership.js","../node_modules/@solana/wallet-standard-features/lib/esm/signAndSendTransaction.js","../node_modules/@solana/wallet-standard-features/lib/esm/signIn.js","../node_modules/@solana/wallet-standard-features/lib/esm/signMessage.js","../node_modules/@solana/wallet-standard-features/lib/esm/signTransaction.js","../node_modules/@wallet-standard/features/lib/esm/connect.js","../node_modules/@wallet-standard/features/lib/esm/disconnect.js","../.rollup-tmp/auth/providers/wallet-standard-discovery.js","../.rollup-tmp/auth/wallet-lane.js","../.rollup-tmp/auth/turnkey-auth.js","../.rollup-tmp/auth/bounded-login-widget.js","../.rollup-tmp/auth/ensure-signed-in.js","../.rollup-tmp/auth/hooks/useAuth.js","../.rollup-tmp/hooks/useQuery.js","../.rollup-tmp/builds/client.js","../.rollup-tmp/builds/types.js","../.rollup-tmp/builds/watch.js","../.rollup-tmp/hooks/useBuildRun.js","../.rollup-tmp/builds/media-tools.js","../.rollup-tmp/builds/index.js","../.rollup-tmp/builds/apps.js","../.rollup-tmp/utils.js","../.rollup-tmp/onramp.js","../.rollup-tmp/auth/providers/transaction-utils.js","../.rollup-tmp/auth/providers/privy-expo-provider.js","../.rollup-tmp/auth/providers/injected-wallet-types.js","../.rollup-tmp/auth/providers/injected-evm-wallet-types.js","../.rollup-tmp/services/broadcast.js","../.rollup-tmp/services/session.js","../.rollup-tmp/index.js"],"sourcesContent":["export function walletContextFromClaims(claims, baseUrl, expectedAppId, tenantOrigin) {\n const base = baseUrl.replace(/\\/$/, '');\n const scope = claims['custom:walletScope'];\n const protocol = claims['custom:walletProtocol'];\n if (scope !== undefined && scope !== 'legacy' && scope !== 'app')\n throw new Error('wallet_scope_invalid');\n if ((scope === 'app' && protocol !== 2) || (scope === 'legacy' && protocol !== 1)\n || (scope === undefined && protocol !== undefined))\n throw new Error('wallet_protocol_invalid');\n const appId = claims['custom:appId'];\n const userId = claims['custom:userId'];\n const address = claims['custom:walletAddress'];\n if (scope === 'app' && (appId !== expectedAppId || typeof appId !== 'string'\n || !/^[a-f0-9]{24}$/.test(appId) || typeof userId !== 'string' || !userId\n || claims.iss !== base))\n throw new Error('wallet_session_context_invalid');\n const resolvedScope = scope === 'app' ? 'app' : 'legacy';\n const route = resolvedScope === 'app' ? `/wallet/turnkey/app/${appId}` : '/wallet/turnkey';\n return {\n scope: resolvedScope, appId: String(appId || expectedAppId), userId: String(userId || ''),\n address: typeof address === 'string' ? address : '', base, origin: new URL(base).origin,\n url: `${base}${route}/signer${resolvedScope === 'app' ? `?origin=${encodeURIComponent(tenantOrigin)}` : ''}`,\n key: JSON.stringify([base, appId || expectedAppId, userId || '', address || '', resolvedScope]),\n };\n}\nlet loginGeneration = 0;\nexport function invalidatePendingWalletLogin() { ++loginGeneration; }\nexport function walletOperationGuard() {\n const generation = loginGeneration;\n return () => {\n if (generation !== loginGeneration)\n throw new Error('wallet_session_changed');\n };\n}\nexport function walletLoginGuard(signal) {\n const generation = ++loginGeneration;\n return () => {\n if ((signal === null || signal === void 0 ? void 0 : signal.aborted) || generation !== loginGeneration)\n throw new Error('wallet_login_cancelled');\n };\n}\n// This realm owns one active SDK session and one retained signer frame.\nlet activeWalletState;\nexport function setWalletSessionState(key, state) { activeWalletState = { key, state }; }\nexport function walletSessionState(key) {\n if ((activeWalletState === null || activeWalletState === void 0 ? void 0 : activeWalletState.key) !== key)\n return { status: 'verification-required' };\n const state = activeWalletState.state;\n if (state.status === 'ready' && (!Number.isFinite(state.expiresAt) || state.expiresAt <= Date.now())) {\n return { status: 'verification-required', reason: 'wallet_session_expired' };\n }\n return state;\n}\n","/**\n * Platform abstraction layer for React Native compatibility.\n *\n * This module provides interfaces and default (web) implementations for\n * browser-specific APIs that are unavailable in React Native:\n * - Storage (localStorage / sessionStorage)\n * - TextEncoder\n * - Base-64 (btoa / atob)\n * - SubtleCrypto (crypto.subtle.digest)\n * - DOM helpers (document.*, requestAnimationFrame)\n * - Location (window.location.origin)\n * - UserAgent (navigator.userAgent)\n *\n * React Native consumers call `setPlatform(adapter)` once at startup to\n * supply their own implementations (e.g. AsyncStorage-backed storage,\n * expo-crypto, react-native-get-random-values, etc.).\n *\n * Web consumers don't need to do anything — the defaults use the browser APIs.\n */\nvar _a;\n/**\n * DS3-0416: brand for the volatile in-memory fallback so callers whose\n * correctness depends on durability (idempotency keys that must survive a reload\n * / RN restart) can detect that no durable store is present and fail closed\n * instead of silently persisting to memory that vanishes on restart.\n */\nconst VOLATILE_STORAGE = Symbol.for('bounded.volatileStorage');\n/** In-memory fallback when neither browser storage nor a custom adapter exist. */\nclass MemoryStorage {\n constructor() {\n this[_a] = true;\n this.store = new Map();\n }\n getItem(key) { var _b; return (_b = this.store.get(key)) !== null && _b !== void 0 ? _b : null; }\n setItem(key, value) { this.store.set(key, value); }\n removeItem(key) { this.store.delete(key); }\n}\n_a = VOLATILE_STORAGE;\n/**\n * DS3-0416: true when the adapter is the volatile in-memory fallback (no durable\n * browser storage and no custom platform adapter). A branded value rather than\n * an `instanceof` so it survives bundling and works for any future volatile\n * fallback that opts in.\n */\nexport function isVolatileStorage(store) {\n return !!(store === null || store === void 0 ? void 0 : store[VOLATILE_STORAGE]);\n}\n// ---------------------------------------------------------------------------\n// Default web implementation\n// ---------------------------------------------------------------------------\nfunction createWebPlatform() {\n const hasWindow = typeof window !== 'undefined';\n const hasDoc = typeof document !== 'undefined';\n return {\n storage: hasWindow && typeof localStorage !== 'undefined'\n ? localStorage\n : new MemoryStorage(),\n sessionStorage: hasWindow && typeof sessionStorage !== 'undefined'\n ? sessionStorage\n : new MemoryStorage(),\n textEncode(input) {\n return new TextEncoder().encode(input);\n },\n atob(input) {\n if (hasWindow)\n return window.atob(input);\n // Node / SSR fallback\n return Buffer.from(input, 'base64').toString('binary');\n },\n btoa(input) {\n if (hasWindow)\n return window.btoa(input);\n return Buffer.from(input, 'binary').toString('base64');\n },\n async sha256(data) {\n if (typeof crypto !== 'undefined' && crypto.subtle) {\n return crypto.subtle.digest('SHA-256', data);\n }\n // Node / SSR fallback. Keep the specifier indirect so browser\n // bundlers do not externalize or preload a Node-only module in the\n // email/guest graph; this branch is unreachable when WebCrypto is\n // available (all supported browsers and current Node releases).\n const nodeCryptoSpecifier = 'node:crypto';\n const { createHash } = await import(/* @vite-ignore */ nodeCryptoSpecifier);\n const hash = createHash('sha256').update(data).digest();\n return hash.buffer.slice(hash.byteOffset, hash.byteOffset + hash.byteLength);\n },\n getRandomBytes(length) {\n const out = new Uint8Array(length);\n const g = typeof globalThis !== 'undefined' ? globalThis : undefined;\n if (g && g.crypto && typeof g.crypto.getRandomValues === 'function') {\n g.crypto.getRandomValues(out);\n return out;\n }\n throw new Error('No secure random source available for PKCE. On React Native, either import ' +\n \"'react-native-get-random-values' once at your app entry, or pass getRandomBytes \" +\n 'via setPlatform({ getRandomBytes }) (e.g. expo-crypto getRandomBytes).');\n },\n getUserAgent() {\n if (hasWindow && typeof navigator !== 'undefined')\n return navigator.userAgent;\n return '';\n },\n getLocationOrigin() {\n if (hasWindow && window.location)\n return window.location.origin;\n return undefined;\n },\n hasDOM: hasDoc,\n };\n}\n// ---------------------------------------------------------------------------\n// Singleton & public API\n// ---------------------------------------------------------------------------\nlet _platform = createWebPlatform();\nlet _platformConfigured = false;\n/**\n * Override the platform adapter (call once at app startup in React Native).\n *\n * Must be called **before** `init()`. Can only be called once — subsequent\n * calls throw to prevent accidental mid-session storage swaps.\n *\n * ```ts\n * import { setPlatform } from '@bounded-sh/client';\n * import AsyncStorage from '@react-native-async-storage/async-storage';\n *\n * // Create a synchronous wrapper around AsyncStorage for the adapter\n * // (see docs for a full example).\n * setPlatform({ storage: myStorage, ... });\n * ```\n */\nexport function setPlatform(adapter) {\n if (_platformConfigured) {\n throw new Error('setPlatform() has already been called. It can only be invoked once at startup.');\n }\n _platformConfigured = true;\n _platform = Object.assign(Object.assign({}, _platform), adapter);\n}\n/** Get the current platform adapter. */\nexport function getPlatform() {\n return _platform;\n}\n// ---------------------------------------------------------------------------\n// Mobile / Android detection helpers\n// ---------------------------------------------------------------------------\n/**\n * Detect mobile device even when Chrome \"Request Desktop Site\" is active.\n *\n * Desktop mode on Android strips \"Android\" and \"Mobile\" from the UA, leaving\n * something like \"Linux x86_64 …\". The fallback detects this by looking for\n * touch capability + small viewport + a UA that doesn't belong to a known\n * desktop OS (ChromeOS, Windows, macOS).\n */\nexport function detectMobile() {\n const ua = _platform.getUserAgent();\n if (/Android|iPhone|iPad|iPod/i.test(ua))\n return true;\n if (typeof navigator !== 'undefined' && typeof window !== 'undefined') {\n const hasTouch = navigator.maxTouchPoints > 0;\n // Macs don't have touch screens, so \"Macintosh\" + touch = iOS desktop mode\n // (also catches iPadOS 13+ which always reports as Macintosh)\n if (/Macintosh/i.test(ua) && hasTouch)\n return true;\n // Android desktop mode: Linux UA + touch + small viewport, excluding\n // known desktop OSes (ChromeOS, Windows, macOS)\n const isSmallViewport = window.innerWidth <= 1024;\n const isDesktopOS = /CrOS|Windows|Macintosh/i.test(ua);\n if (hasTouch && isSmallViewport && !isDesktopOS)\n return true;\n }\n return false;\n}\n/**\n * Detect Android, including desktop-mode Chrome and Seeker/Saga in-app browsers.\n */\nexport function detectAndroid() {\n const ua = _platform.getUserAgent();\n if (/Android/i.test(ua))\n return true;\n if (/SolanaWallet|SeedVault/i.test(ua))\n return true;\n // Desktop-mode fallback: detected as mobile + Linux UA + not another OS\n if (detectMobile() && /Linux/i.test(ua) && !/CrOS|Macintosh|iPhone|iPad/i.test(ua))\n return true;\n return false;\n}\n/**\n * Reset the platform to web defaults and clear the configured flag.\n * **For testing only** — not exported from the public API.\n * @internal\n */\nexport function _resetPlatformForTesting() {\n _platform = createWebPlatform();\n _platformConfigured = false;\n}\n","import { getPlatform } from \"../../platform\";\n/**\n * OffchainAuthProvider wraps a real auth provider (Turnkey, Phantom, ...) for the\n * poofnet environment.\n *\n * Poofnet has no chain, but its onchain writes are still signed: the worker\n * issues an unsendable approval message and verifies the wallet's signature\n * before committing. So `signTransaction` and `signMessage` go straight to the\n * wrapped wallet, whose own prompt is the only one the user sees. Only a raw\n * submit - which needs a real cluster - is refused here.\n */\nexport class OffchainAuthProvider {\n constructor(wrappedProvider, config = {}) {\n this.wrappedProvider = wrappedProvider;\n this.config = config;\n }\n // ============ Delegated Methods ============\n async login() {\n const user = await this.wrappedProvider.login();\n if (user) {\n return Object.assign(Object.assign({}, user), { provider: this });\n }\n return null;\n }\n // Forward per-call login overrides (theme/title/subtitle and the `method`\n // directive) to the wrapped provider. Without this, the top-level login()\n // forwarder (which duck-types `setLoginOverrides` on the active provider)\n // skips the wrapper and the override — including `method` — is dropped on\n // offchain/Poofnet builds.\n setLoginOverrides(opts) {\n var _a, _b;\n (_b = (_a = this.wrappedProvider).setLoginOverrides) === null || _b === void 0 ? void 0 : _b.call(_a, opts);\n }\n async logout() {\n await this.wrappedProvider.logout();\n }\n async restoreSession() {\n const user = await this.wrappedProvider.restoreSession();\n if (user) {\n return Object.assign(Object.assign({}, user), { provider: this });\n }\n return null;\n }\n async signTransaction(tx) {\n return this.wrappedProvider.signTransaction(tx);\n }\n /**\n * Sign and submit transaction - not supported in poofnet environment.\n * See the real providers (PhantomWalletProvider, SolanaKeypairProvider)\n * for the full implementation with blockhash handling and feePayer support.\n */\n async signAndSubmitTransaction(_transaction, _feePayer) {\n if (getPlatform().hasDOM) {\n await this.showUnsupportedTransactionModal();\n }\n throw new Error('Poofnet does not support real Solana transactions. Deploy your project to mainnet to use this feature.');\n }\n async getNativeMethods() {\n return this.wrappedProvider.getNativeMethods();\n }\n // Forward wallet export to the wrapped provider (only Privy embedded wallets\n // implement it). Duck-typed so wrappers around non-embedded providers throw\n // a clear error rather than a \"not a function\" crash.\n async exportWallet(address) {\n if (typeof this.wrappedProvider.exportWallet !== 'function') {\n throw new Error('Wallet export is not available for this wallet.');\n }\n await this.wrappedProvider.exportWallet(address);\n }\n async signMessage(message) {\n var _a, _b, _c, _d, _e, _f;\n (_b = (_a = this.config).onSigningStart) === null || _b === void 0 ? void 0 : _b.call(_a);\n try {\n const signature = await this.wrappedProvider.signMessage(message);\n (_d = (_c = this.config).onSigningComplete) === null || _d === void 0 ? void 0 : _d.call(_c, signature);\n return signature;\n }\n catch (error) {\n (_f = (_e = this.config).onSigningError) === null || _f === void 0 ? void 0 : _f.call(_e, error);\n throw error;\n }\n }\n // ============ Modal Implementation ============\n async showUnsupportedTransactionModal() {\n return new Promise((resolve) => {\n // Create modal container. Captured in this closure so every teardown\n // path acts on exactly this prompt, never on a newer one that may have\n // replaced a shared field.\n const container = document.createElement(\"div\");\n container.id = \"poofnet-unsupported-modal\";\n container.appendChild(this.buildUnsupportedModalContent());\n document.body.appendChild(container);\n // Add styles\n const style = document.createElement(\"style\");\n style.textContent = this.getModalStyles();\n container.appendChild(style);\n // Mark all OTHER body children as inert, recording only the ones this\n // modal changed (skipping any already-inert) so cleanup restores exactly\n // what we set and never re-enables app-owned inert regions.\n const selfInerted = [];\n document.body.childNodes.forEach((child) => {\n if (child !== container &&\n child instanceof HTMLElement &&\n !child.hasAttribute(\"inert\")) {\n child.setAttribute(\"inert\", \"\");\n selfInerted.push(child);\n }\n });\n // Animate in\n requestAnimationFrame(() => {\n const overlay = container.querySelector(\".poofnet-modal-overlay\");\n const content = container.querySelector(\".poofnet-modal-content\");\n if (overlay)\n overlay.style.opacity = \"1\";\n if (content) {\n content.style.opacity = \"1\";\n content.style.transform = \"translateY(0)\";\n }\n });\n // Single idempotent teardown for every settlement path: removes the key\n // handler, restores only self-added inert, and removes exactly this\n // captured container after the exit animation.\n let settled = false;\n const escHandler = (e) => {\n if (e.key === \"Escape\")\n dismiss();\n };\n const cleanup = () => {\n if (settled)\n return;\n settled = true;\n document.removeEventListener(\"keydown\", escHandler);\n for (const el of selfInerted)\n el.removeAttribute(\"inert\");\n const overlay = container.querySelector(\".poofnet-modal-overlay\");\n const content = container.querySelector(\".poofnet-modal-content\");\n if (overlay)\n overlay.style.opacity = \"0\";\n if (content) {\n content.style.opacity = \"0\";\n content.style.transform = \"translateY(20px)\";\n }\n setTimeout(() => container.remove(), 200);\n };\n const dismiss = () => {\n cleanup();\n resolve();\n };\n // Handle close button\n const closeBtn = container.querySelector(\"#poofnet-close-btn\");\n closeBtn === null || closeBtn === void 0 ? void 0 : closeBtn.addEventListener(\"click\", dismiss);\n // Handle cancel button\n const cancelBtn = container.querySelector(\"#poofnet-cancel-btn\");\n cancelBtn === null || cancelBtn === void 0 ? void 0 : cancelBtn.addEventListener(\"click\", dismiss);\n // Handle overlay click\n const overlay = container.querySelector(\".poofnet-modal-overlay\");\n overlay === null || overlay === void 0 ? void 0 : overlay.addEventListener(\"click\", (e) => {\n if (e.target === overlay)\n dismiss();\n });\n // Handle escape key\n document.addEventListener(\"keydown\", escHandler);\n });\n }\n createElement(tag, className, text) {\n const el = document.createElement(tag);\n if (className)\n el.className = className;\n if (text !== undefined)\n el.textContent = text;\n return el;\n }\n appendTextElement(parent, tag, className, text) {\n const el = this.createElement(tag, className, text);\n parent.appendChild(el);\n return el;\n }\n buildModalShell(icon, title) {\n const overlay = this.createElement(\"div\", \"poofnet-modal-overlay\");\n const content = this.createElement(\"div\", \"poofnet-modal-content\");\n overlay.appendChild(content);\n const close = this.createElement(\"button\", \"poofnet-close-btn\", \"×\");\n close.id = \"poofnet-close-btn\";\n close.setAttribute(\"aria-label\", \"Close\");\n close.type = \"button\";\n content.appendChild(close);\n const header = this.createElement(\"div\", \"poofnet-modal-header\");\n this.appendTextElement(header, \"div\", \"poofnet-modal-icon\", icon);\n this.appendTextElement(header, \"h2\", \"poofnet-modal-title\", title);\n this.appendTextElement(header, \"p\", \"poofnet-modal-subtitle\", \"Poofnet Simulated Blockchain\");\n content.appendChild(header);\n const body = this.createElement(\"div\", \"poofnet-modal-body\");\n content.appendChild(body);\n const footer = this.createElement(\"div\", \"poofnet-modal-footer\");\n content.appendChild(footer);\n return { overlay, body, footer };\n }\n buildInfoBox(text, warning = false) {\n const info = this.createElement(\"div\", \"poofnet-info-box\");\n if (warning)\n info.style.background = \"#fef3c7\";\n this.appendTextElement(info, \"span\", \"poofnet-info-icon\", \"ℹ️\");\n const infoText = this.createElement(\"span\", \"poofnet-info-text\", text);\n if (warning)\n infoText.style.color = \"#92400e\";\n info.appendChild(infoText);\n return info;\n }\n buildUnsupportedModalContent() {\n const { overlay, body, footer } = this.buildModalShell(\"⚠️\", \"Transaction Not Supported\");\n body.appendChild(this.buildInfoBox(\"Poofnet is a simulated blockchain and does not support real Solana transactions. Deploy your project to mainnet to test real transactions.\", true));\n const close = this.createElement(\"button\", \"poofnet-btn poofnet-btn-cancel\", \"Close\");\n close.id = \"poofnet-cancel-btn\";\n close.type = \"button\";\n close.style.flex = \"1\";\n footer.appendChild(close);\n return overlay;\n }\n getModalStyles() {\n return `\n /* Ensure inert elements remain visible while being non-interactive */\n [inert] {\n visibility: visible !important;\n opacity: 1 !important;\n display: unset !important;\n }\n\n .poofnet-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 999999;\n opacity: 0;\n transition: opacity 0.2s ease;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n .poofnet-modal-content {\n background: white;\n border-radius: 16px;\n width: 90%;\n max-width: 420px;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n opacity: 0;\n transform: translateY(20px);\n transition: all 0.2s ease;\n max-height: 90vh;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n position: relative;\n }\n\n .poofnet-close-btn {\n position: absolute;\n top: 12px;\n right: 12px;\n width: 28px;\n height: 28px;\n border: none;\n background: #f3f4f6;\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #6b7280;\n transition: all 0.15s ease;\n z-index: 1;\n }\n\n .poofnet-close-btn:hover {\n background: #e5e7eb;\n color: #374151;\n }\n\n .poofnet-modal-header {\n padding: 24px 24px 16px;\n text-align: center;\n border-bottom: 1px solid #f0f0f0;\n flex-shrink: 0;\n }\n\n .poofnet-modal-icon {\n font-size: 40px;\n margin-bottom: 8px;\n }\n\n .poofnet-modal-title {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #1a1a1a;\n }\n\n .poofnet-modal-subtitle {\n margin: 4px 0 0;\n font-size: 13px;\n color: #8b5cf6;\n font-weight: 500;\n }\n\n .poofnet-modal-body {\n padding: 16px 20px;\n overflow-y: auto;\n flex: 1;\n }\n\n .poofnet-info-box {\n display: flex;\n align-items: center;\n gap: 8px;\n background: #faf5ff;\n border-radius: 8px;\n padding: 10px 12px;\n margin-top: 12px;\n }\n\n .poofnet-info-icon {\n font-size: 14px;\n flex-shrink: 0;\n }\n\n .poofnet-info-text {\n font-size: 11px;\n color: #7c3aed;\n line-height: 1.4;\n }\n\n .poofnet-modal-footer {\n padding: 16px 20px 20px;\n display: flex;\n gap: 12px;\n flex-shrink: 0;\n border-top: 1px solid #f0f0f0;\n }\n\n .poofnet-btn {\n flex: 1;\n padding: 12px 16px;\n border-radius: 10px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.15s ease;\n border: none;\n }\n\n .poofnet-btn-cancel {\n background: #f3f4f6;\n color: #4b5563;\n }\n\n .poofnet-btn-cancel:hover {\n background: #e5e7eb;\n }\n `;\n }\n}\n","// issuer-logout-bounce.ts - commit the top-level navigation that ends the hosted\n// issuer's browser session (the Better Auth cookie on auth.bounded.sh).\n//\n// The issuer cookie is SameSite=Lax, so only a TOP-LEVEL navigation carries it:\n// a credentialed fetch or a hidden iframe cannot end that session. Assigning\n// `window.location.href` only QUEUES that navigation, though. logout() used to\n// resolve immediately after the assignment, so a caller that navigated again\n// right away - `await logout(); location.reload()` is the dashboard's exact\n// sign-out handler - replaced the still-pending bounce: the issuer cookie\n// survived and the next social login silently signed the \"signed-out\" account\n// straight back in.\n//\n// The fix is simply to NOT resolve while the navigation is in flight. A\n// successful navigation destroys this document, so the caller never resumes and\n// can never cancel the bounce; the timer exists only so a navigation that never\n// commits (e.g. a user declining a `beforeunload` dialog) cannot hang the caller\n// forever. Local session state is already cleared before this runs, so resuming\n// on that fallback still leaves the app fully logged out.\n//\n// Verified in a real browser: with an immediate resolve the tab stays on the\n// caller's page (bounce lost); holding until the document is destroyed lands on\n// the issuer.\n/** Navigate to the issuer /logout bounce. The returned promise stays pending\n * while the navigation is in flight - a successful navigation tears down this\n * document instead of resolving it - and settles only via `capMs` if the\n * navigation never commits. */\nexport function commitIssuerLogoutBounce(bounce, capMs = 15000) {\n return new Promise((resolve) => {\n setTimeout(resolve, capMs);\n window.location.href = bounce;\n });\n}\n","// Single source of truth for the two localStorage markers that record WHICH auth\n// method minted the active session, and whether that session owns a hosted\n// issuer browser cookie. Every writer must go through setStoredAuthMethod():\n// a provider that writes the method key directly leaves a stale\n// `bounded_issuer_session_kind` behind, which is what taught logout() to bounce\n// a wallet reader at an issuer that has no /logout route.\nimport { getPlatform } from '../platform';\nexport const STORED_AUTH_METHOD_KEY = 'bounded_last_auth_method';\nexport const ISSUER_SESSION_KIND_KEY = 'bounded_issuer_session_kind';\nexport function getStoredAuthMethod() {\n try {\n return getPlatform().storage.getItem(STORED_AUTH_METHOD_KEY);\n }\n catch (_a) {\n return null;\n }\n}\nexport function setStoredAuthMethod(method) {\n try {\n if (method) {\n getPlatform().storage.setItem(STORED_AUTH_METHOD_KEY, method);\n }\n else {\n getPlatform().storage.removeItem(STORED_AUTH_METHOD_KEY);\n }\n // Non-email providers cannot own a Better Auth browser session. Clear\n // any prior hosted/inline classification when the active provider is\n // replaced or the session is removed.\n if (method !== 'email') {\n getPlatform().storage.removeItem(ISSUER_SESSION_KIND_KEY);\n }\n }\n catch (_a) {\n // storage might not be available\n }\n}\nexport function getIssuerSessionKind() {\n try {\n return getPlatform().storage.getItem(ISSUER_SESSION_KIND_KEY);\n }\n catch (_a) {\n return null;\n }\n}\n","import { getConfig } from '@bounded-sh/core';\nimport { setAuthProviderInstance, setCurrentUser } from '../global';\nimport { invalidatePendingWalletLogin } from './turnkey-wallet-context';\nimport { setStoredAuthMethod } from './stored-auth-method';\nlet registrySync = null;\nexport function registerAuthRegistrySync(fn) {\n registrySync = fn;\n}\n/**\n * Atomically commit `provider` as the owner of the active session. The single await\n * happens BEFORE any state is touched; every write below it runs in one synchronous\n * block, so no listener or concurrent caller can ever observe a mixed identity\n * (e.g. the new provider with the old user, or the new user on the old signer).\n *\n * Pass `user` to publish the session's user inside the same block (listeners fire\n * after every pointer already agrees). Omit it when the caller manages the user\n * separately (e.g. a path that publishes the user only after further checks).\n * Returns the normalized user published by this commit, or null when omitted.\n */\nexport async function adoptSessionProvider(opts) {\n var _a;\n const coreConfig = await getConfig();\n (_a = opts.beforeCommit) === null || _a === void 0 ? void 0 : _a.call(opts);\n invalidatePendingWalletLogin();\n coreConfig.authProvider = opts.provider;\n coreConfig.authMethod = opts.method;\n setAuthProviderInstance(opts.provider);\n registrySync === null || registrySync === void 0 ? void 0 : registrySync(opts.provider, opts.method, opts.configKey);\n setStoredAuthMethod(opts.method);\n return opts.user !== undefined ? setCurrentUser(opts.user) : null;\n}\n/**\n * REPAIR, not establishment: rebuild the provider pointers from the init config\n * after a prior logout nulled them, so `login()` / `logout()` can dispatch again.\n *\n * Deliberately does NOT write the stored auth-method marker, and that omission is\n * load-bearing rather than an oversight: logout()'s self-heal runs BEFORE it reads\n * `getIssuerSessionKind()`, and setStoredAuthMethod clears that kind marker for any\n * non-email method - so stamping a marker here would erase the evidence that the\n * session being logged out was hosted and silently skip the issuer-cookie bounce.\n * No session is being established here; the marker already describes the live one.\n */\nexport async function adoptRebuiltProvider(provider, method) {\n const coreConfig = await getConfig();\n coreConfig.authProvider = provider;\n coreConfig.authMethod = method;\n setAuthProviderInstance(provider);\n // The module registry (and its config key) is already correct here: the caller\n // rebuilt the provider through getAuthProvider(), which assigns both.\n}\n/**\n * The logout-side mirror: clear every pointer a session adoption sets, so a later\n * login cannot inherit a dead signer. Deliberately LEAVES the global\n * authProviderInstance in place - global.ts's login()/logout() wrappers treat a null\n * instance as \"not initialized\" and would throw at the user after a legitimate\n * logout; auth/index.ts's own self-heal branches rebuild the registry from\n * initConfig on the next call either way.\n */\nexport async function clearSessionProviderForLogout() {\n const coreConfig = await getConfig();\n coreConfig.authProvider = null;\n // 'none' is the config default meaning \"no auth configured\" - the closest\n // honest value for \"no session owns the signer any more\".\n coreConfig.authMethod = 'none';\n registrySync === null || registrySync === void 0 ? void 0 : registrySync(null, null, null);\n setStoredAuthMethod(null);\n}\n","export const SOLANA_DEVNET_RPC_URL = \"https://idelle-8nxsep-fast-devnet.helius-rpc.com\";\nexport const SOLANA_MAINNET_RPC_URL = \"https://celestia-cegncv-fast-mainnet.helius-rpc.com\";\nconst SUPPORTED_SOLANA_NETWORKS = new Set([\n \"solana_devnet\",\n \"solana_mainnet\",\n]);\nexport function normalizeSolanaRpcUrl(rpcUrl) {\n if (typeof rpcUrl !== \"string\")\n return null;\n const trimmed = rpcUrl.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\nexport function isSupportedSolanaRpcNetwork(network) {\n return typeof network === \"string\" && SUPPORTED_SOLANA_NETWORKS.has(network);\n}\nexport function resolveSolanaWalletStandardChain(network, context) {\n switch (network) {\n case \"solana_devnet\":\n return \"solana:devnet\";\n case \"solana_mainnet\":\n return \"solana:mainnet\";\n case undefined:\n case null:\n case \"\":\n throw new Error(`${context} requires an explicit Solana network. ` +\n `Provide one of: solana_devnet, solana_mainnet.`);\n default:\n throw new Error(`${context} does not support Solana network \"${network}\". ` +\n `Expected one of: solana_devnet, solana_mainnet.`);\n }\n}\nexport function resolveSolanaRpcUrl(explicitRpcUrl, network, context) {\n if (network != null && network !== \"\" && !isSupportedSolanaRpcNetwork(network)) {\n throw new Error(`${context} does not support Solana network \"${network}\". ` +\n `Expected one of: solana_devnet, solana_mainnet.`);\n }\n const rpcUrl = normalizeSolanaRpcUrl(explicitRpcUrl);\n if (rpcUrl)\n return rpcUrl;\n throw new Error(`${context} requires an explicit Solana RPC URL. Pass config.rpcUrl before signing or submitting onchain transactions.`);\n}\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _AppReadyEvent_detail;\nlet wallets = undefined;\nconst registeredWalletsSet = new Set();\nfunction addRegisteredWallet(wallet) {\n cachedWalletsArray = undefined;\n registeredWalletsSet.add(wallet);\n}\nfunction removeRegisteredWallet(wallet) {\n cachedWalletsArray = undefined;\n registeredWalletsSet.delete(wallet);\n}\nconst listeners = {};\n/**\n * Get an API for {@link Wallets.get | getting}, {@link Wallets.on | listening for}, and\n * {@link Wallets.register | registering} {@link \"@wallet-standard/base\".Wallet | Wallets}.\n *\n * When called for the first time --\n *\n * This dispatches a {@link \"@wallet-standard/base\".WindowAppReadyEvent} to notify each Wallet that the app is ready\n * to register it.\n *\n * This also adds a listener for {@link \"@wallet-standard/base\".WindowRegisterWalletEvent} to listen for a notification\n * from each Wallet that the Wallet is ready to be registered by the app.\n *\n * This combination of event dispatch and listener guarantees that each Wallet will be registered synchronously as soon\n * as the app is ready whether the app loads before or after each Wallet.\n *\n * @return API for getting, listening for, and registering Wallets.\n *\n * @group App\n */\nexport function getWallets() {\n if (wallets)\n return wallets;\n wallets = Object.freeze({ register, get, on });\n if (typeof window === 'undefined')\n return wallets;\n const api = Object.freeze({ register });\n try {\n window.addEventListener('wallet-standard:register-wallet', ({ detail: callback }) => callback(api));\n }\n catch (error) {\n console.error('wallet-standard:register-wallet event listener could not be added\\n', error);\n }\n try {\n window.dispatchEvent(new AppReadyEvent(api));\n }\n catch (error) {\n console.error('wallet-standard:app-ready event could not be dispatched\\n', error);\n }\n return wallets;\n}\nfunction register(...wallets) {\n // Filter out wallets that have already been registered.\n // This prevents the same wallet from being registered twice, but it also prevents wallets from being\n // unregistered by reusing a reference to the wallet to obtain the unregister function for it.\n wallets = wallets.filter((wallet) => !registeredWalletsSet.has(wallet));\n // If there are no new wallets to register, just return a no-op unregister function.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n if (!wallets.length)\n return () => { };\n wallets.forEach((wallet) => addRegisteredWallet(wallet));\n listeners['register']?.forEach((listener) => guard(() => listener(...wallets)));\n // Return a function that unregisters the registered wallets.\n return function unregister() {\n wallets.forEach((wallet) => removeRegisteredWallet(wallet));\n listeners['unregister']?.forEach((listener) => guard(() => listener(...wallets)));\n };\n}\nlet cachedWalletsArray;\nfunction get() {\n if (!cachedWalletsArray) {\n cachedWalletsArray = [...registeredWalletsSet];\n }\n return cachedWalletsArray;\n}\nfunction on(event, listener) {\n listeners[event]?.push(listener) || (listeners[event] = [listener]);\n // Return a function that removes the event listener.\n return function off() {\n listeners[event] = listeners[event]?.filter((existingListener) => listener !== existingListener);\n };\n}\nfunction guard(callback) {\n try {\n callback();\n }\n catch (error) {\n console.error(error);\n }\n}\nclass AppReadyEvent extends Event {\n get detail() {\n return __classPrivateFieldGet(this, _AppReadyEvent_detail, \"f\");\n }\n get type() {\n return 'wallet-standard:app-ready';\n }\n constructor(api) {\n super('wallet-standard:app-ready', {\n bubbles: false,\n cancelable: false,\n composed: false,\n });\n _AppReadyEvent_detail.set(this, void 0);\n __classPrivateFieldSet(this, _AppReadyEvent_detail, api, \"f\");\n }\n /** @deprecated */\n preventDefault() {\n throw new Error('preventDefault cannot be called');\n }\n /** @deprecated */\n stopImmediatePropagation() {\n throw new Error('stopImmediatePropagation cannot be called');\n }\n /** @deprecated */\n stopPropagation() {\n throw new Error('stopPropagation cannot be called');\n }\n}\n_AppReadyEvent_detail = new WeakMap();\n/**\n * @deprecated Use {@link getWallets} instead.\n *\n * @group Deprecated\n */\nexport function DEPRECATED_getWallets() {\n if (wallets)\n return wallets;\n wallets = getWallets();\n if (typeof window === 'undefined')\n return wallets;\n const callbacks = window.navigator.wallets || [];\n if (!Array.isArray(callbacks)) {\n console.error('window.navigator.wallets is not an array');\n return wallets;\n }\n const { register } = wallets;\n const push = (...callbacks) => callbacks.forEach((callback) => guard(() => callback({ register })));\n try {\n Object.defineProperty(window.navigator, 'wallets', {\n value: Object.freeze({ push }),\n });\n }\n catch (error) {\n console.error('window.navigator.wallets could not be set');\n return wallets;\n }\n push(...callbacks);\n return wallets;\n}\n//# sourceMappingURL=wallets.js.map","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (psz < source.length) {\n // Find code of next character\n var charCode = source.charCodeAt(psz)\n // Base map can not be indexed using char code\n if (charCode > 255) { return }\n // Decode character\n var carry = BASE_MAP[charCode]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","import basex from 'base-x';\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\nexport default basex(ALPHABET);\n","import { getWallets } from '@wallet-standard/app';\nimport bs58 from 'bs58';\nimport { getPlatform } from '../../platform';\n// The MWA authorization is CLUSTER-SCOPED, and transactions are signed on the\n// app's configured network (resolveSolanaWalletStandardChain). Registering on a\n// different chain than the app signs on produces a wallet that authorizes for\n// one cluster and is asked to sign for another, so the two must agree - and the\n// only chains that can agree are the ones the signing path supports.\nconst CLUSTER_CHAINS = {\n 'mainnet-beta': 'solana:mainnet',\n devnet: 'solana:devnet',\n};\n/**\n * The app's own configuration is wrong (a network we cannot map, a cluster that\n * contradicts it, a page already registered for another chain). Distinct from an\n * availability failure because it degrades differently: a wallet that simply is\n * not there leaves the lane working for every other wallet, while this is a\n * developer bug that must stay loud instead of quietly removing the lane.\n */\nexport class WalletConfigError extends Error {\n constructor(message) {\n super(message);\n this.name = 'WalletConfigError';\n }\n}\n/** Wallet Standard chain id the MWA wallet is registered for.\n *\n * `network` is the caller's already-resolved authoritative Solana network\n * (getConfiguredSolanaNetwork: the wallet-lane override, else config.chain) -\n * the SAME value the provider signs and submits on. It is passed in rather\n * than re-derived here so registration can never disagree with signing, and so\n * this module stays out of the auth barrel's import cycle.\n * `mobileWalletConfig.cluster` may name the chain explicitly (the only way a\n * chainless, login-only app can authorize off mainnet) but may never\n * contradict it. A chainless app with no cluster defaults to mainnet. Throws on\n * a contradiction or an unsupported cluster: that is the app developer's bug,\n * and a silent mismatch would only surface as a wallet rejection at signing\n * time. */\nfunction mwaChain(config, network) {\n var _a;\n const fromNetwork = network === 'solana_mainnet'\n ? 'solana:mainnet'\n : network === 'solana_devnet'\n ? 'solana:devnet'\n : null;\n // A network the mapping above does not recognise must NEVER fall through to\n // the chainless default: registering mainnet for an app configured with,\n // say, solana_testnet authorizes a cluster it will never transact on. Only\n // the genuine absence of a network takes the default.\n if (network != null && network !== '' && fromNetwork === null) {\n throw new WalletConfigError(`Bounded: the Solana Mobile wallet cannot be registered for network \"${network}\". ` +\n `Expected one of: solana_devnet, solana_mainnet.`);\n }\n const cluster = (_a = config.mobileWalletConfig) === null || _a === void 0 ? void 0 : _a.cluster;\n if (cluster == null)\n return fromNetwork !== null && fromNetwork !== void 0 ? fromNetwork : 'solana:mainnet';\n const fromCluster = CLUSTER_CHAINS[cluster];\n if (!fromCluster) {\n throw new WalletConfigError(`Bounded: mobileWalletConfig.cluster \"${cluster}\" is not supported. ` +\n `Use \"mainnet-beta\" or \"devnet\".`);\n }\n if (fromNetwork && fromNetwork !== fromCluster) {\n throw new WalletConfigError(`Bounded: mobileWalletConfig.cluster \"${cluster}\" contradicts the app's Solana network ` +\n `\"${network}\". The mobile wallet authorizes per cluster and signs on that network, so ` +\n `they must match - drop the cluster override, or set the network you actually mean.`);\n }\n return fromCluster;\n}\n/** Per the MWA spec `appIdentity.icon` is a path the wallet resolves RELATIVE to\n * `appIdentity.uri`. Resolve whatever the app configured (usually\n * config.logoUrl) and hand back a path that round-trips: stripping the leading\n * slash is only correct when `uri` is a bare origin, and silently pointed at\n * `<uri-dir>/icon.svg` for any `uri` carrying a path. A cross-origin icon\n * cannot be expressed as a relative path at all and is dropped. */\nfunction relativeAppIcon(icon, uri) {\n if (!icon)\n return undefined;\n try {\n const base = new URL(uri);\n const resolved = new URL(icon, base);\n if (resolved.origin !== base.origin)\n return undefined;\n // Walk from the uri's DIRECTORY (a uri with no trailing slash resolves\n // relative to its parent, exactly as the wallet will) to the icon.\n const from = base.pathname.replace(/[^/]*$/, '').split('/').filter(Boolean);\n const to = resolved.pathname.split('/').filter(Boolean);\n let shared = 0;\n while (shared < from.length && shared < to.length && from[shared] === to[shared])\n shared += 1;\n const up = '../'.repeat(from.length - shared);\n return up + to.slice(shared).join('/') + resolved.search;\n }\n catch (_a) {\n return undefined;\n }\n}\n/**\n * The transaction features a wallet's OWN reported capabilities allow.\n *\n * Strictly, on POSITIVE evidence only. The library exposes both transaction\n * features optimistically at the wallet level - including a fallback that offers\n * sign-and-send to a wallet reporting neither - but that exposure is not the\n * executable contract: both transports re-read the live capabilities inside\n * signAndSendTransaction and throw before touching the wallet unless\n * `supports_sign_and_send_transactions` is true. Mirroring the optimistic\n * exposure would therefore only route a doomed call down the native branch\n * instead of Bounded's sign-then-submit fallback.\n */\nfunction walletAllowedTxFeatures(capabilities) {\n return {\n signAndSend: (capabilities === null || capabilities === void 0 ? void 0 : capabilities.supports_sign_and_send_transactions) === true,\n sign: Array.isArray(capabilities === null || capabilities === void 0 ? void 0 : capabilities.features)\n ? capabilities.features.includes('solana:signTransactions')\n : false,\n };\n}\n/**\n * A persisted MWA authorization, scoped to the chain (and app identity) it was\n * granted for.\n *\n * The library's own cache keeps ONE record under one localStorage key and hands\n * it back without comparing chains, so a mainnet authorization cached earlier\n * is reused by a devnet-configured page later: the wallet then advertises\n * devnet while holding a mainnet authorization, and its native send follows the\n * authorization rather than the app. localStorage survives a reload, so\n * \"reload the page\" cannot clear it either. Keying the record by chain and app\n * identity makes that mismatch unrepresentable instead of silently signing on\n * the wrong cluster.\n */\nfunction chainScopedAuthorizationCache(chain, identityUri) {\n const key = `bounded:mwa-authorization:${identityUri}:${chain}`;\n const storage = () => {\n try {\n return window.localStorage;\n }\n catch (_a) {\n return null;\n }\n };\n return {\n async get() {\n var _a;\n try {\n const raw = (_a = storage()) === null || _a === void 0 ? void 0 : _a.getItem(key);\n if (!raw)\n return undefined;\n const parsed = JSON.parse(raw);\n // Belt and braces: refuse a record that does not name our chain,\n // however it came to be stored under this key.\n if ((parsed === null || parsed === void 0 ? void 0 : parsed.chain) !== chain)\n return undefined;\n if (!Array.isArray(parsed.accounts))\n return parsed;\n // REVIVE the account keys. JSON has no Uint8Array, so a plain\n // round trip hands the wallet a `{0:..,1:..}` object and the\n // address it derives from it comes out empty. This mirrors the\n // upstream cache's revival exactly - only the key and the chain\n // check are ours.\n // RECONCILE the account capabilities against what the wallet\n // itself reported, which this record also carries. An\n // authorization that named no per-account features was stored\n // with the library's optimistic defaults - and those include\n // sign-and-send. The library narrows its wallet-level features\n // from the cached capabilities on its SILENT path only; an\n // interactive connect that hits this cache (a returning user on\n // a fresh page) leaves them at the constructor's optimistic\n // pair. The account would then be the only thing standing\n // between a sign-only wallet and the native-send branch - and it\n // would wave it through, so the wallet rejects the call instead\n // of Bounded falling back to sign-then-submit.\n // A record with accounts but no capabilities cannot be judged at\n // all, and guessing is what this exists to stop. Drop it: the\n // library then re-authorizes once and stores a complete record,\n // so it self-heals instead of overstating the wallet forever.\n if (!parsed.capabilities)\n return undefined;\n const allowed = walletAllowedTxFeatures(parsed.capabilities);\n const permitted = (feature) => (feature === 'solana:signAndSendTransaction' ? allowed.signAndSend\n : feature === 'solana:signTransaction' ? allowed.sign\n : true);\n return Object.assign(Object.assign({}, parsed), { accounts: parsed.accounts.map((account) => (Object.assign(Object.assign(Object.assign({}, account), { publicKey: 'publicKey' in account\n ? new Uint8Array(Object.values(account.publicKey))\n : bs58.decode(account.address) }), (Array.isArray(account.features)\n ? { features: account.features.filter(permitted) }\n : {})))) });\n }\n catch (_b) {\n return undefined;\n }\n },\n async set(authorization) {\n var _a;\n try {\n if ((authorization === null || authorization === void 0 ? void 0 : authorization.chain) !== chain)\n return;\n (_a = storage()) === null || _a === void 0 ? void 0 : _a.setItem(key, JSON.stringify(authorization));\n }\n catch ( /* private mode / quota: an uncached authorization just re-prompts */_b) { /* private mode / quota: an uncached authorization just re-prompts */ }\n },\n async clear() {\n var _a;\n try {\n (_a = storage()) === null || _a === void 0 ? void 0 : _a.removeItem(key);\n }\n catch ( /* nothing to clear */_b) { /* nothing to clear */ }\n },\n };\n}\n// One attempt per distinct registration input. A no-op attempt (an ordinary\n// desktop browser registers nothing) is memoized only for the input that\n// produced it, so later adding a remoteHostAuthority - which enables the remote\n// QR wallet - gets a real second attempt instead of the first one's silence.\nconst attempts = new Map();\n// The chain of the wallet that ACTUALLY registered, and of an attempt still in\n// flight. Both block a conflicting chain: once a wallet exists it cannot be\n// moved, and while one is being created the outcome is already decided.\nlet registeredChain = null;\nlet pendingChain = null;\n// The material configuration of an attempt still in flight. Chain alone is not\n// enough: two concurrent same-chain calls with different reflectors would both\n// pass a chain-only check and register two adapters that can never be withdrawn.\nlet pendingConfig = null;\n// The exact effective configuration a registration SUCCEEDED with. A wallet in\n// the registry cannot be withdrawn, so once this is set any material change is\n// refused rather than quietly registering a second, unreachable adapter beside\n// the first (discovery would keep serving the original).\nlet registeredConfig = null;\n// The wallet OBJECTS registerMwa() actually put in the registry. Identity, not\n// name: a display name is a label anyone can reuse (another SDK on the page can\n// register its own \"Mobile Wallet Adapter\"), and mistaking someone else's wallet\n// for ours - or failing to recognise our own - decides whether a fresh gesture\n// is collected. Weak so a wallet that goes away is not retained here.\nconst mobileWallets = new WeakSet();\n// The NAMES the MWA package registers under, captured from its own exports.\n// Identity answers \"is this the wallet we registered\"; this answers a different\n// question - \"is this an MWA-transport wallet at all\", including one another SDK\n// registered. A label is exactly what a lookalike copies, so it is the only\n// signal available there, and being wrong only costs a duplicate chooser entry\n// rather than hiding a wallet the user has installed.\n// The names the Mobile Wallet Adapter package registers under. They are the\n// library's own exported constants, restated here because the answer is needed\n// BEFORE (and without) loading that chunk - a page that never opts into wallet\n// login must still be able to tell that a wallet another SDK registered speaks\n// this transport. Registration re-adds whatever the installed library actually\n// exports, so an upstream rename degrades to \"we also know the new name\" rather\n// than to a wrong answer.\nconst LOCAL_MOBILE_WALLET_NAME = 'Mobile Wallet Adapter';\nconst mobileWalletNames = new Set([\n LOCAL_MOBILE_WALLET_NAME,\n 'Remote Mobile Wallet Adapter',\n]);\n/**\n * Whether a discovered wallet is the Solana Mobile one this module registered.\n *\n * Callers need it because that wallet is the only one that LEAVES THE PAGE to\n * sign - it needs a fresh user gesture per operation (see\n * InjectedWalletConfig.confirmWalletAction). False before registration, for\n * every injected wallet, and for a lookalike another SDK registered.\n */\nexport function isSolanaMobileWallet(wallet) {\n return !!wallet && mobileWallets.has(wallet);\n}\n/**\n * Whether a registered wallet reaches its signer through the Mobile Wallet\n * Adapter transport - ours OR a lookalike another SDK registered. Used to decide\n * whether the registry already covers the IN-PAGE wallets, which is a question\n * about transport, not ownership.\n */\nexport function looksLikeSolanaMobileWallet(name) {\n return mobileWalletNames.has(name);\n}\n/**\n * Whether reaching this wallet LEAVES THE PAGE, which is what makes a fresh\n * user gesture necessary. True for the local (on-device) transport, which\n * dispatches an Android intent per operation. NOT true for the remote QR\n * transport: it keeps its websocket session and drives an in-page modal, so an\n * extra \"one more tap\" screen there would be friction for nothing.\n */\nexport function solanaMobileWalletLeavesPage(name) {\n return name === LOCAL_MOBILE_WALLET_NAME;\n}\n/**\n * Register Solana Mobile's MWA wallet with the Wallet Standard registry so\n * wallet discovery surfaces it. Idempotent - the first wallet-lane activation\n * (init with a wallet authMethod, loginWithWallet, or the login widget) wins\n * for the page's lifetime.\n *\n * Rejects on a contradictory/unsupported config, and on a later activation that\n * needs a DIFFERENT chain than the one already registered: the MWA\n * authorization is cluster-scoped and `registerMwa` hands back no unregister\n * handle, so the wallet in the registry cannot be moved. Failing loudly beats\n * leaving a wallet that authorizes on one cluster and is asked to sign on\n * another - and the app's own fix (reload before switching networks) is one the\n * error can state. A registration or environment failure resolves after\n * warning: it degrades to \"MWA not listed\" rather than breaking the injected\n * wallets sharing the lane.\n */\nexport async function ensureSolanaMobileWalletRegistered(config, network) {\n var _a, _b, _c, _d, _e;\n // React Native exposes a partial `window` but has no DOM; wallet-standard\n // registration is meaningless there (RN uses the MWA protocol directly via\n // its own providers). registerMwa also requires window, but gate here so\n // the chunk is never even fetched off-web.\n // Off-web there is nothing to register and nothing to wait for.\n if (typeof window === 'undefined' || !getPlatform().hasDOM)\n return 'not-applicable';\n // Resolve the chain BEFORE the memo so a contradictory config rejects to the\n // caller. Config errors are the app developer's bug and must be loud; only\n // the environment/registration failures inside the memo degrade to a warning.\n const chain = mwaChain(config, network);\n const identity = (_b = (_a = config.mobileWalletConfig) === null || _a === void 0 ? void 0 : _a.appIdentity) !== null && _b !== void 0 ? _b : {};\n const uri = (_c = identity.uri) !== null && _c !== void 0 ? _c : window.location.origin;\n // What a registered wallet CANNOT change. The chain scopes its authorization;\n // the reflector authority decides whether registerMwa creates the local or\n // the remote (QR) wallet, so a different one means a different wallet object\n // - and since the registration cannot be withdrawn, registering it anyway\n // would leave a second adapter that discovery never serves. The app identity\n // is deliberately NOT here: it is what the wallet displays, so a page that\n // re-inits with a new name keeps the first label rather than losing login\n // over a cosmetic difference.\n const effective = JSON.stringify({\n chain,\n remoteHostAuthority: (_e = (_d = config.mobileWalletConfig) === null || _d === void 0 ? void 0 : _d.remoteHostAuthority) !== null && _e !== void 0 ? _e : null,\n });\n // A wallet already in (or entering) the registry cannot be withdrawn, so\n // anything material that differs means this page is asking for a wallet it\n // cannot have. Check the chain first: it is the common case and deserves the\n // specific message.\n const committedChain = registeredChain !== null && registeredChain !== void 0 ? registeredChain : pendingChain;\n if (committedChain && committedChain !== chain) {\n throw new WalletConfigError(`Bounded: the Solana Mobile wallet is already registered for ${committedChain} and ` +\n `cannot be moved to ${chain} on a live page (its authorization is cluster-scoped and ` +\n `the Wallet Standard registration cannot be withdrawn). Reload the page after ` +\n `changing the app's Solana network.`);\n }\n const committed = registeredConfig !== null && registeredConfig !== void 0 ? registeredConfig : pendingConfig;\n if (committed && committed !== effective) {\n throw new WalletConfigError(`Bounded: the Solana Mobile wallet is already registered for this page ` +\n `(${committedChain !== null && committedChain !== void 0 ? committedChain : chain}) and its registration cannot be withdrawn, so its ` +\n `network and reflector are fixed for the page's lifetime. Reload after changing ` +\n `the app's Solana network or mobileWalletConfig.remoteHostAuthority.`);\n }\n const attemptKey = effective;\n const inFlight = attempts.get(attemptKey);\n if (!inFlight) {\n pendingChain = chain;\n pendingConfig = effective;\n const run = (async () => {\n var _a, _b, _c, _d;\n // Optional peer dependency, loaded only on the one path that needs a\n // mobile wallet. Keeping it OFF the hard dependency list keeps\n // react-native (and the whole metro toolchain underneath it) out of\n // every web consumer's install; a missing module here is a config\n // problem in the consuming app, not a runtime fault, so name it as\n // one instead of surfacing a bare MODULE_NOT_FOUND.\n let mwa;\n try {\n mwa = await import('@solana-mobile/wallet-standard-mobile');\n }\n catch (_e) {\n throw new WalletConfigError(`Bounded: Solana Mobile wallet support needs the optional peer dependency ` +\n `'@solana-mobile/wallet-standard-mobile', which is not installed. Install it ` +\n `in your app to enable the mobile wallet, or leave the Solana Mobile wallet ` +\n `out of this app's wallet configuration.`);\n }\n const { registerMwa, createDefaultChainSelector, SolanaMobileWalletAdapterWalletName, SolanaMobileWalletAdapterRemoteWalletName, } = mwa;\n const before = new Set(getWallets().get());\n registerMwa({\n appIdentity: {\n uri,\n name: (_b = (_a = identity.name) !== null && _a !== void 0 ? _a : config.name) !== null && _b !== void 0 ? _b : (document.title || 'Bounded App'),\n icon: relativeAppIcon((_c = identity.icon) !== null && _c !== void 0 ? _c : config.logoUrl, uri),\n },\n authorizationCache: chainScopedAuthorizationCache(chain, uri),\n chains: [chain],\n chainSelector: createDefaultChainSelector(),\n remoteHostAuthority: (_d = config.mobileWalletConfig) === null || _d === void 0 ? void 0 : _d.remoteHostAuthority,\n // Suppress the library's \"we can't find a wallet\" modal: it is\n // misleading when ERROR_WALLET_NOT_FOUND fires during Seeker's\n // first-time Local-Network-Access consent race (the wallet IS\n // installed), and Bounded's own login surface already shows the\n // failure inline in its UI.\n onWalletNotFound: async () => { },\n });\n // registerMwa decides per environment and REGISTERS NOTHING on an\n // ordinary desktop browser (no Android, no remote authority).\n // Claim only the wallet OBJECTS this call added, and only when they\n // carry a name the library itself exports: someone else's wallet\n // sharing that label is not ours, and adopting it would record a\n // chain we never registered.\n const mwaNames = new Set([\n SolanaMobileWalletAdapterWalletName,\n SolanaMobileWalletAdapterRemoteWalletName,\n ]);\n for (const name of mwaNames)\n mobileWalletNames.add(name);\n let added = false;\n for (const wallet of getWallets().get()) {\n if (before.has(wallet) || !mwaNames.has(wallet.name))\n continue;\n mobileWallets.add(wallet);\n added = true;\n }\n // No wallet materialized (the ordinary desktop path): claim no\n // chain, so a later network change is not rejected as though an\n // immovable wallet existed.\n if (!added)\n return 'not-applicable';\n registeredChain = chain;\n registeredConfig = effective;\n return 'registered';\n })().catch((error) => {\n console.warn('[Bounded] Solana Mobile wallet registration failed:', error);\n // A thrown failure (chunk load, wallet-standard hiccup) may be\n // transient, so drop this attempt and let a later activation retry.\n attempts.delete(attemptKey);\n return 'failed';\n }).finally(() => {\n pendingChain = null;\n pendingConfig = null;\n });\n attempts.set(attemptKey, run);\n return run;\n }\n return inFlight;\n}\n","// bounded-widget-modal.ts - the shared in-app WIDGET shell for Bounded's login\n// and signing surfaces. One Shadow-DOM overlay + panel that matches the Bounded\n// widget (Seal) look and MOTION: a backdrop fade, a panel rise on desktop, a\n// bottom-sheet on mobile, a height tween as content swaps, and a clean close.\n//\n// It hosts EITHER:\n// - NATIVE content (the login card the SDK renders itself), or\n// - an IFRAME (the Bounded-owned signer page, which must run on the single\n// signer origin because the wallet's 24h signing session lives in that\n// origin's storage, out of every app's reach).\n//\n// The modal is a warm singleton: it stays mounted (hidden) between uses so a\n// second open - or a signature right after login - is instant and, when it is\n// already open, a clean in-place view swap rather than a reopen.\nfunction hasDOM() {\n return typeof window !== \"undefined\" && typeof document !== \"undefined\";\n}\nconst OVERLAY_CSS = `\n:host{all:initial}\n*{box-sizing:border-box}\n.bw-ov{position:fixed;inset:0;z-index:2147483647;display:none;\n font-family:\"Schibsted Grotesk\",\"Helvetica Neue\",Arial,sans-serif}\n.bw-ov.mounted{display:block}\n.bw-back{position:fixed;inset:0;background:rgba(4,4,5,.62);opacity:0;\n transition:opacity .24s ease;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}\n.bw-wrap{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:20px}\n.bw-panel{position:relative;width:420px;max-width:calc(100vw - 28px);height:280px;\n border-radius:14px;overflow:hidden;background:#0e0f11;border:1px solid rgba(232,230,222,.08);\n box-shadow:0 1px 0 rgba(232,230,222,.03) inset,0 40px 90px -45px rgba(0,0,0,.85);\n opacity:0;transform:translateY(14px) scale(.98);will-change:transform,opacity,height;\n transition:opacity .28s cubic-bezier(.2,.8,.2,1),transform .28s cubic-bezier(.2,.8,.2,1),\n height .3s cubic-bezier(.2,.8,.2,1)}\n.bw-ov.show .bw-back{opacity:1}\n.bw-ov.show .bw-panel{opacity:1;transform:none}\n.bw-ov.closing .bw-back{opacity:0}\n.bw-ov.closing .bw-panel{opacity:0;transform:translateY(12px) scale(.99)}\n.bw-content{position:absolute;inset:0;overflow:hidden}\n.bw-frame{display:block;width:100%;height:100%;border:0;background:transparent;color-scheme:dark}\n/* editorial corner crop-marks, matching the reference frame */\n.bw-mk{position:absolute;width:13px;height:13px;pointer-events:none;z-index:2;\n border-color:rgba(232,230,222,.22);border-style:solid;border-width:0}\n.bw-mk.tl{top:11px;left:11px;border-top-width:1px;border-left-width:1px}\n.bw-mk.tr{top:11px;right:11px;border-top-width:1px;border-right-width:1px}\n.bw-mk.bl{bottom:11px;left:11px;border-bottom-width:1px;border-left-width:1px}\n.bw-mk.br{bottom:11px;right:11px;border-bottom-width:1px;border-right-width:1px}\n@media(max-width:560px){\n .bw-wrap{align-items:flex-end;padding:0}\n .bw-panel{width:100%;max-width:100%;border-radius:18px 18px 0 0;border-bottom:0}\n .bw-content{overflow-y:auto}\n .bw-ov.show .bw-panel{transform:none}\n .bw-ov:not(.show) .bw-panel,.bw-ov.closing .bw-panel{transform:translateY(18%)}\n}\n@media(prefers-reduced-motion:reduce){.bw-back,.bw-panel{transition:opacity .12s linear!important}}\n`;\nlet modal = null;\nexport function getModal() {\n if (modal)\n return modal;\n const root = document.createElement(\"div\");\n root.setAttribute(\"data-bounded-widget\", \"\");\n const shadow = root.attachShadow({ mode: \"open\" });\n const style = document.createElement(\"style\");\n style.textContent = OVERLAY_CSS;\n shadow.appendChild(style);\n const overlay = document.createElement(\"div\");\n overlay.className = \"bw-ov\";\n const back = document.createElement(\"div\");\n back.className = \"bw-back\";\n const wrap = document.createElement(\"div\");\n wrap.className = \"bw-wrap\";\n const panel = document.createElement(\"div\");\n panel.className = \"bw-panel\";\n const content = document.createElement(\"div\");\n content.className = \"bw-content\";\n panel.appendChild(content);\n for (const corner of [\"tl\", \"tr\", \"bl\", \"br\"]) {\n const mk = document.createElement(\"span\");\n mk.className = \"bw-mk \" + corner;\n panel.appendChild(mk);\n }\n wrap.appendChild(panel);\n overlay.appendChild(back);\n overlay.appendChild(wrap);\n shadow.appendChild(overlay);\n (document.body || document.documentElement).appendChild(root);\n const m = {\n root,\n overlay,\n panel,\n content,\n iframe: null,\n iframeOrigin: \"\",\n iframeReady: false,\n iframeContext: \"\",\n onBackdrop: null,\n onIframeMessage: null,\n chain: Promise.resolve(),\n fitObserver: null,\n generation: 0,\n onSupersede: null,\n };\n // The dismiss handler lives on `.bw-wrap`: it is the full-viewport flex layer\n // that sits ABOVE `.bw-back`, so it (not the backdrop element) receives clicks\n // outside the panel. Fire only when the click lands on the wrap itself, never\n // when it bubbles up from the panel or its content.\n wrap.addEventListener(\"click\", (event) => {\n if (event.target === wrap && m.onBackdrop)\n m.onBackdrop();\n });\n window.addEventListener(\"message\", (event) => {\n if (!m.iframe)\n return;\n if (event.origin !== m.iframeOrigin)\n return;\n if (event.source !== m.iframe.contentWindow)\n return;\n const d = event.data;\n if (!d || typeof d !== \"object\")\n return;\n // Readiness belongs to the document, even while login owns the modal and no\n // signing exchange is listening. The retained frame will not load again.\n if (d.type === \"bounded:turnkey:ready\")\n m.iframeReady = true;\n if (m.onIframeMessage)\n m.onIframeMessage(d);\n });\n modal = m;\n return m;\n}\nexport function modalIsMounted() {\n return !!modal && modal.overlay.classList.contains(\"mounted\");\n}\nexport function showModal(m) {\n m.overlay.classList.remove(\"closing\");\n m.overlay.classList.add(\"mounted\");\n // Force a reflow so the .show transition runs from the hidden state every open.\n void m.panel.offsetWidth;\n m.overlay.classList.add(\"show\");\n}\nexport function hideModal(m, after) {\n m.overlay.classList.remove(\"show\");\n m.overlay.classList.add(\"closing\");\n // Capture the generation at hide time. If a newer open re-shows the modal within\n // the close tween, this stale timer must NOT strip `.mounted`/`.closing` off the\n // freshly reopened widget - only tear down when we are still the same open.\n const gen = m.generation;\n window.setTimeout(() => {\n if (m.generation === gen)\n m.overlay.classList.remove(\"mounted\", \"closing\");\n if (after)\n after();\n }, 260);\n}\nexport function setPanelHeight(m, px) {\n const h = Math.max(140, Math.min(680, Math.round(px)));\n m.panel.style.height = h + \"px\";\n}\n// True outer height of the mounted card: the max of its padding-box scroll height\n// (catches overflowing descendants) and its border-box height plus own vertical\n// margins (catches border + margins, which scrollHeight omits). Ceiled so a\n// sub-pixel row is never clipped under `overflow:hidden`.\nfunction measureOuterHeight(target) {\n var _a;\n const cs = (_a = target.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(target);\n const marginY = cs ? parseFloat(cs.marginTop) + parseFloat(cs.marginBottom) : 0;\n const borderBox = target.offsetHeight + (Number.isFinite(marginY) ? marginY : 0);\n const rect = target.getBoundingClientRect().height;\n return Math.ceil(Math.max(target.scrollHeight, borderBox, rect));\n}\n/**\n * Measure the currently mounted native content and tween the panel to fit it.\n * Re-fits automatically when the card's intrinsic height changes - notably after\n * the Newsreader/Schibsted web fonts swap in (which grows line boxes a few px\n * after first paint) and on inline view swaps (email -> OTP code -> success).\n */\nexport function fitPanelToContent(m) {\n var _a, _b;\n const first = m.content.firstElementChild;\n const target = first || m.content;\n const apply = () => {\n // Only fit while this exact node is still the mounted card.\n if (m.content.firstElementChild !== first && first)\n return;\n const h = measureOuterHeight(target);\n if (h > 0)\n setPanelHeight(m, h);\n };\n apply();\n const view = target.ownerDocument.defaultView;\n // Re-fit after fonts load (one-shot) and once the ResizeObserver-less browsers\n // have painted, so the height never lags a late reflow.\n (_a = view === null || view === void 0 ? void 0 : view.requestAnimationFrame) === null || _a === void 0 ? void 0 : _a.call(view, apply);\n const fonts = target.ownerDocument.fonts;\n if (fonts === null || fonts === void 0 ? void 0 : fonts.ready)\n fonts.ready.then(apply).catch(() => { });\n (_b = m.fitObserver) === null || _b === void 0 ? void 0 : _b.disconnect();\n m.fitObserver = null;\n if (first && typeof (view === null || view === void 0 ? void 0 : view.ResizeObserver) === \"function\") {\n const ro = new view.ResizeObserver(() => apply());\n ro.observe(first);\n m.fitObserver = ro;\n }\n}\n/** Switch the modal into NATIVE-content mode: detach any iframe, mount `node`. */\nexport function mountContent(m, node) {\n var _a;\n detachIframe(m);\n (_a = m.fitObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n m.fitObserver = null;\n m.content.replaceChildren(node);\n m.content.style.display = \"block\";\n}\n/** Get (or lazily create) the warm iframe for signer/hosted-page mode. */\nexport function ensureIframe(m, url, origin, context = \"\") {\n var _a;\n if (m.iframe && m.iframeOrigin === origin && m.iframe.src === url && m.iframeContext === context)\n return m.iframe;\n detachIframe(m);\n (_a = m.fitObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n m.fitObserver = null;\n m.content.style.display = \"none\";\n const iframe = document.createElement(\"iframe\");\n iframe.className = \"bw-frame\";\n iframe.setAttribute(\"title\", \"Bounded\");\n iframe.setAttribute(\"allow\", \"clipboard-write\");\n iframe.src = url;\n m.iframeOrigin = origin;\n m.iframeContext = context;\n m.iframeReady = false;\n m.panel.appendChild(iframe);\n m.iframe = iframe;\n return iframe;\n}\n/**\n * Destroy the warm signer iframe if one is currently mounted for `origin`, and report\n * whether there was one. Logout needs this: a signing session can live in that document's\n * MEMORY (the signer keeps an in-memory mirror when the browser blocks its storage), and a\n * throwaway iframe opened by the sweep can only ever clear the shared store, never another\n * document's memory. Removing the iframe discards its browsing context, which takes the\n * mirror with it.\n *\n * Deliberately does NOT call getModal(): that would BUILD a modal just to tear it down, on\n * every logout of every app, most of which never mounted one.\n */\nexport function detachWarmSignerIframe(origin) {\n if (!modal || !modal.iframe || (origin && modal.iframeOrigin !== origin))\n return false;\n detachIframe(modal);\n return true;\n}\n/** A removed frame cannot still supply its in-memory signing session. */\nexport function hasWarmSignerFrame(context) {\n var _a;\n return Boolean(((_a = modal === null || modal === void 0 ? void 0 : modal.iframe) === null || _a === void 0 ? void 0 : _a.isConnected) && modal.iframeContext === context);\n}\nexport function detachIframe(m) {\n if (m.iframe) {\n try {\n m.iframe.remove();\n }\n catch (_a) {\n /* ignore */\n }\n }\n m.iframe = null;\n m.iframeReady = false;\n m.iframeOrigin = \"\";\n m.iframeContext = \"\";\n m.onIframeMessage = null;\n}\n// Load the Bounded editorial typefaces (Newsreader display + Schibsted Grotesk body +\n// JetBrains Mono) once at the document level so they apply inside the shadow root. A\n// no-op if already present or off-DOM. Fonts loaded here match the hosted auth page.\nconst FONTS_HREF = \"https://fonts.googleapis.com/css2?family=Newsreader:opsz,wght@6..72,400;6..72,500&family=Schibsted+Grotesk:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap\";\nexport function ensureFonts() {\n if (!hasDOM())\n return;\n if (document.querySelector('link[data-bounded-fonts=\"1\"]'))\n return;\n const pre1 = document.createElement(\"link\");\n pre1.rel = \"preconnect\";\n pre1.href = \"https://fonts.googleapis.com\";\n const pre2 = document.createElement(\"link\");\n pre2.rel = \"preconnect\";\n pre2.href = \"https://fonts.gstatic.com\";\n pre2.crossOrigin = \"anonymous\";\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = FONTS_HREF;\n link.setAttribute(\"data-bounded-fonts\", \"1\");\n document.head.append(pre1, pre2, link);\n}\nexport { hasDOM };\n/** Tag the already mounted login document without moving or navigating it. */\nexport function bindWarmSignerFrame(frame, context) {\n if ((modal === null || modal === void 0 ? void 0 : modal.iframe) === frame)\n modal.iframeContext = context;\n}\n","// turnkey-wallet-widget.ts - runs one Turnkey signer exchange inside the shared\n// in-app WIDGET (bounded-widget-modal.ts). The Bounded-owned signer page is loaded\n// in a warm iframe behind the modal so signing feels native: an in-app approve\n// card (with inline code entry when the 24h signing session must first be\n// established), never a jarring popup.\n//\n// WHY AN IFRAME: the wallet's signing session lives in the single Bounded signer\n// origin's storage, out of every app's reach, so signing MUST run on that origin;\n// the iframe brings it in-app.\n//\n// Restricted embedders: if the frame never loads, the SAME request reruns through\n// `popupFallback` (a real window). Callers pass a popup implementation and never\n// see the difference.\nimport { getModal, showModal, hideModal, ensureIframe, setPanelHeight, hasDOM, } from \"./bounded-widget-modal\";\n/**\n * Run one signer exchange through the in-app widget. Resolves when `onResult`\n * accepts a result; falls back to `popupFallback` if the frame cannot be mounted\n * or never loads.\n */\nexport async function runWidget(url, signerOrigin, ex, popupFallback) {\n if (!hasDOM())\n return popupFallback();\n const m = getModal();\n const requestId = String(ex.request.requestId);\n // Serialize: the approve card is modal, and one warm frame handles one request at a time.\n const run = m.chain.then(() => new Promise((resolve, reject) => {\n var _a;\n let settled = false;\n let usedFallback = false;\n (_a = ex.assertCurrent) === null || _a === void 0 ? void 0 : _a.call(ex);\n const iframe = ensureIframe(m, url, signerOrigin, ex.context);\n const send = () => {\n var _a;\n if (!iframe.contentWindow)\n return;\n try {\n (_a = ex.assertCurrent) === null || _a === void 0 ? void 0 : _a.call(ex);\n iframe.contentWindow.postMessage(ex.request, signerOrigin);\n }\n catch (_b) {\n finish(() => reject(new Error('wallet_session_changed')));\n }\n };\n let loadTimer = 0;\n let ceilingTimer = 0;\n const finish = (fn) => {\n if (settled)\n return;\n settled = true;\n m.onIframeMessage = null;\n m.onBackdrop = null;\n window.clearTimeout(loadTimer);\n window.clearTimeout(ceilingTimer);\n fn();\n };\n // The frame is WARM across exchanges, so an abandoned approval must be told to drop its\n // in-flight ceremony. Otherwise the signer keeps `approving` set for a card nobody is\n // looking at and refuses every later create/sign as `signer_request_superseded` (the\n // BSA-2026-012 guard) until the page reloads.\n const cancelInFrame = () => {\n if (!iframe.contentWindow)\n return;\n try {\n iframe.contentWindow.postMessage({ type: \"bounded:turnkey:cancel\", requestId }, signerOrigin);\n }\n catch (_a) {\n /* frame gone */\n }\n };\n const goFallback = () => {\n if (usedFallback || settled)\n return;\n usedFallback = true;\n hideModal(m);\n finish(() => popupFallback().then(resolve, reject));\n };\n m.onBackdrop = () => {\n cancelInFrame();\n hideModal(m);\n finish(() => reject(new Error(\"cancelled\")));\n };\n m.onIframeMessage = (d) => {\n if (d.type === \"bounded:turnkey:ready\") {\n send();\n return;\n }\n if (d.type === \"bounded:turnkey:resize\" && typeof d.height === \"number\") {\n setPanelHeight(m, d.height);\n return;\n }\n if (d.type === \"bounded:turnkey:result\" && d.requestId === requestId) {\n const outcome = ex.onResult(d);\n if (\"error\" in outcome) {\n hideModal(m);\n finish(() => reject(new Error(outcome.error)));\n return;\n }\n if (outcome.done) {\n hideModal(m);\n finish(() => resolve(outcome.value));\n }\n }\n };\n showModal(m);\n if (m.iframeReady)\n send();\n // If the frame never loads, degrade to the popup (best-effort - a post-load\n // popup may be blocked without a gesture, in which case the fallback rejects).\n loadTimer = window.setTimeout(() => {\n if (!m.iframeReady && !settled)\n goFallback();\n }, 8000);\n // Absolute ceiling so a stuck flow cannot hang forever.\n ceilingTimer = window.setTimeout(() => {\n if (!settled) {\n cancelInFrame();\n hideModal(m);\n finish(() => reject(new Error(\"Wallet approval timed out.\")));\n }\n }, 5 * 60 * 1000);\n }));\n m.chain = run.then(() => undefined, () => undefined);\n return run;\n}\n","// turnkey-signer-frame.ts - a HIDDEN, offscreen iframe of the Bounded signer page\n// for UI-less signer exchanges: sealing a login code (bounded:turnkey:encryptOtp),\n// establishing the 24h signing session right after login\n// (bounded:turnkey:establishSigningSession), and destroying it on logout\n// (bounded:turnkey:clearSigningSession).\n//\n// One handle = one live frame. The frame is kept across requests so multi-step\n// exchanges (seal a code, then establish the session with the keypair the SEAL\n// left in that exact page instance) talk to the same page. Origin + source +\n// requestId are all pinned; dispose() tears everything down.\nimport { getConfig } from '@bounded-sh/core';\nfunction hasDOM() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nasync function signerPage() {\n const cfg = await getConfig();\n const base = (cfg.humanAuthApiUrl || 'https://auth.bounded.sh').replace(/\\/$/, '');\n return { url: `${base}/wallet/turnkey/signer`, origin: new URL(base).origin };\n}\n/** Mount the hidden signer frame. Callers MUST dispose() when done. */\nexport async function openHiddenSignerFrame(page) {\n if (!hasDOM())\n throw new Error('The Bounded signer frame is only available in the browser.');\n const { url, origin } = page !== null && page !== void 0 ? page : await signerPage();\n const frame = document.createElement('iframe');\n frame.setAttribute('aria-hidden', 'true');\n frame.style.cssText =\n 'position:fixed;width:1px;height:1px;left:-9999px;top:-9999px;border:0;opacity:0;pointer-events:none';\n let disposed = false;\n let readyResolve = null;\n const ready = new Promise((resolve) => { readyResolve = resolve; });\n const pending = new Map();\n const onMsg = (event) => {\n if (event.origin !== origin || event.source !== frame.contentWindow)\n return;\n const d = event.data;\n if (!d || typeof d !== 'object')\n return;\n if (d.type === 'bounded:turnkey:ready') {\n readyResolve === null || readyResolve === void 0 ? void 0 : readyResolve();\n return;\n }\n if (d.type === 'bounded:turnkey:result' && typeof d.requestId === 'string') {\n const settle = pending.get(d.requestId);\n if (settle) {\n pending.delete(d.requestId);\n settle(d);\n }\n }\n };\n window.addEventListener('message', onMsg);\n frame.src = url;\n document.body.appendChild(frame);\n const dispose = () => {\n if (disposed)\n return;\n disposed = true;\n window.removeEventListener('message', onMsg);\n pending.clear();\n try {\n frame.remove();\n }\n catch ( /* already gone */_a) { /* already gone */ }\n };\n return {\n dispose,\n request(message, timeoutMs) {\n const requestId = String(message.requestId || '');\n if (!requestId)\n return Promise.reject(new Error('signer frame request needs a requestId'));\n if (disposed)\n return Promise.reject(new Error('signer frame disposed'));\n return new Promise((resolve, reject) => {\n let timer;\n pending.set(requestId, (d) => {\n if (timer)\n clearTimeout(timer);\n resolve(d);\n });\n timer = setTimeout(() => {\n pending.delete(requestId);\n reject(new Error('The Bounded signer did not respond in time.'));\n }, timeoutMs);\n ready.then(() => {\n var _a;\n if (disposed || !pending.has(requestId))\n return;\n try {\n (_a = frame.contentWindow) === null || _a === void 0 ? void 0 : _a.postMessage(message, origin);\n }\n catch ( /* frame gone; timeout rejects */_b) { /* frame gone; timeout rejects */ }\n });\n });\n },\n };\n}\n","// turnkey-signing-capability.ts - the pure AS-02 (DS2-0112) signing-capability logic,\n// kept import-free (no DOM, no session, no @bounded-sh/core) so it is unit-testable.\n//\n// The hosted Turnkey signer refuses to sign unless the request carries an issuer-signed\n// SIGNING CAPABILITY bound to the app id, the requesting origin, and the EXACT payload\n// hash. `requestTurnkeySigningCapability` mints one for the given bytes and\n// `buildTurnkeySignRequest` assembles the signer request that carries it. The bridge\n// (turnkey-signer-bridge.ts) supplies the base url + id token and routes through both,\n// so a regression here (a dropped capability, a wrong route, a swallowed error) is\n// caught without a browser.\n// POST the Bounded id token + payload hash to the issuer's capability mint route and\n// return the issuer-signed capability for exactly these bytes. Credential-free: identity\n// is proven with the id token in the body (not an ambient cookie the cross-origin fetch\n// would not carry). Throws with the same stable messages the bridge relied on inline.\nexport async function requestTurnkeySigningCapability(opts) {\n const base = opts.baseUrl.replace(/\\/$/, '');\n let res;\n try {\n res = await opts.fetchImpl(`${base}/wallet/turnkey/capability`, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({ idToken: opts.idToken, messageHex: opts.messageHex, walletProtocol: 2 }),\n });\n }\n catch (_a) {\n throw new Error('Could not reach the Bounded signer to authorize this signature.');\n }\n if (!res.ok) {\n let error = 'signing_capability_denied';\n try {\n const d = (await res.json());\n if (d && typeof d.error === 'string')\n error = d.error;\n }\n catch (_b) {\n /* keep the default marker */\n }\n throw new Error(`Turnkey signing was not authorized (${error}).`);\n }\n const d = (await res.json());\n if (!d || typeof d.capability !== 'string' || !d.capability) {\n throw new Error('Turnkey signing capability was malformed.');\n }\n return d.capability;\n}\n// Assemble the `bounded:turnkey:sign` postMessage request, carrying the issuer-signed\n// capability for the same bytes. Without the capability the hosted signer refuses\n// (capability_required), so it is a required field of every sign request.\n// `authorization` is the issuer-signed createWallet action authorization: inline\n// (authMode:\"turnkey\") sessions plant no Better Auth cookie on the issuer, so the\n// signer page's same-origin status/create fetches resolve the session from this\n// bearer proof instead. The sign approval itself stays capability-gated.\nexport function buildTurnkeySignRequest(opts) {\n return {\n type: 'bounded:turnkey:sign',\n requestId: opts.requestId,\n messageHex: opts.messageHex,\n capability: opts.capability,\n authorization: opts.authorization,\n };\n}\n// Mint the authorization required for wallet metadata reads and get-or-create. This uses the\n// same credential-free posture as signing capabilities: the Bounded id token proves the user\n// and app, while the issuer binds the authorization to the registered requesting origin and\n// exact action. A wallet address is intentionally not required for createWallet because this\n// request is what provisions the first wallet.\nexport async function requestTurnkeyActionAuthorization(opts) {\n const base = opts.baseUrl.replace(/\\/$/, '');\n let res;\n try {\n res = await opts.fetchImpl(`${base}/wallet/turnkey/action-authorization`, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({ idToken: opts.idToken, action: opts.action, walletProtocol: 2 }),\n });\n }\n catch (_a) {\n throw new Error('Could not reach the Bounded signer to authorize this wallet action.');\n }\n if (!res.ok) {\n let error = 'action_authorization_denied';\n try {\n const d = (await res.json());\n if (d && typeof d.error === 'string')\n error = d.error;\n }\n catch (_b) {\n /* keep the default marker */\n }\n throw new Error(`Turnkey wallet action was not authorized (${error}).`);\n }\n const d = (await res.json());\n if (!d || typeof d.authorization !== 'string' || !d.authorization) {\n throw new Error('Turnkey wallet action authorization was malformed.');\n }\n return d.authorization;\n}\n// Assemble the exact signer request covered by the action authorization. Keep this mapping\n// centralized so a future caller cannot mint one action and accidentally post another.\nexport function buildTurnkeyActionRequest(opts) {\n if (opts.action !== 'getAddress' && opts.action !== 'createWallet') {\n throw new Error('Unsupported Turnkey wallet action.');\n }\n return {\n type: `bounded:turnkey:${opts.action}`,\n requestId: opts.requestId,\n authorization: opts.authorization,\n };\n}\n","// turnkey-signer-bridge.ts - routes NON-CUSTODIAL Turnkey embedded-wallet signing\n// through the Bounded-owned signer page (auth.bounded.sh/wallet/turnkey/signer).\n//\n// TRANSPORT: by default the signer runs inside the in-app WIDGET (turnkey-wallet-\n// widget.ts) - an iframe behind a Shadow-DOM modal that matches the Bounded widget\n// look + motion, so signing feels native. Environments where the frame cannot\n// mount fall back to a real popup window; both transports speak the same\n// postMessage protocol.\n//\n// Turnkey wallets produce raw detached signatures. The signer runs the Turnkey\n// browser SDK on the single Bounded origin and stamps an ed25519 signRawPayload\n// with the wallet's 24-hour email-established signing session (an emailed one-time\n// code is the sole signing authority; within a live session every signature is one\n// approval click). The app retains the transaction itself.\n//\n// Signing keys remain on the trusted signer origin. New apps use independently\n// bound wallets and storage slots; legacy apps retain their shared wallet.\nimport { getActiveSessionManager, getConfig } from '@bounded-sh/core';\nimport bs58 from 'bs58';\nimport { Buffer } from 'buffer';\nimport { getPlatform } from '../platform';\nimport { walletContextFromClaims, walletSessionState, setWalletSessionState, walletOperationGuard } from './turnkey-wallet-context';\nimport { detachWarmSignerIframe, hasWarmSignerFrame } from './bounded-widget-modal';\nimport { runWidget } from './turnkey-wallet-widget';\nimport { openHiddenSignerFrame } from './turnkey-signer-frame';\nimport { requestTurnkeySigningCapability, buildTurnkeySignRequest, requestTurnkeyActionAuthorization, buildTurnkeyActionRequest, } from './turnkey-signing-capability';\nfunction hasDOM() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n// Dispatch one signer exchange through the in-app WIDGET, degrading to the POPUP\n// when we cannot embed (no DOM, or the frame never mounts/loads). Nothing in the\n// email-session flow needs a popup by preference: the code entry and the approval\n// click both run fine inside a cross-origin iframe on every engine (the old\n// Safari popup preference existed only for in-iframe WebAuthn CREATE).\nasync function deliver(url, origin, ex) {\n var _a, _b;\n const popup = () => runPopup(url, origin, ex);\n (_a = ex.assertCurrent) === null || _a === void 0 ? void 0 : _a.call(ex);\n const result = await runWidget(url, origin, { request: ex.request, onResult: ex.onResult, context: ex.context, assertCurrent: ex.assertCurrent }, popup);\n (_b = ex.assertCurrent) === null || _b === void 0 ? void 0 : _b.call(ex);\n return result;\n}\nasync function turnkeySignerPage(token) {\n const assertGeneration = walletOperationGuard();\n const idToken = token === undefined ? getActiveSessionManager().getIdToken() : token;\n const cfg = await getConfig();\n const base = (cfg.humanAuthApiUrl || 'https://auth.bounded.sh').replace(/\\/$/, '');\n const context = walletContextFromClaims(idToken ? decodeJwt(idToken) : {}, base, cfg.appId, window.location.origin);\n return Object.assign(Object.assign({}, context), { idToken: idToken || '', assertCurrent() {\n assertGeneration();\n const current = getActiveSessionManager().getIdToken();\n if (!current)\n throw new Error('wallet_session_changed');\n const next = walletContextFromClaims(decodeJwt(current), base, cfg.appId, window.location.origin);\n if (next.key !== context.key)\n throw new Error('wallet_session_changed');\n } });\n}\nexport async function getTurnkeyWalletSessionState() {\n const context = await turnkeySignerPage();\n context.assertCurrent();\n if (!hasWarmSignerFrame(context.key))\n return { status: 'verification-required' };\n return walletSessionState(context.key);\n}\nfunction toHex(bytes) {\n let h = '';\n for (const b of bytes)\n h += b.toString(16).padStart(2, '0');\n return h;\n}\nfunction fromHex(hex) {\n const clean = hex.startsWith('0x') ? hex.slice(2) : hex;\n const out = new Uint8Array(clean.length / 2);\n for (let i = 0; i < out.length; i++)\n out[i] = parseInt(clean.substr(i * 2, 2), 16);\n return out;\n}\nfunction decodeJwt(token) {\n try {\n let value = token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/');\n const padding = value.length % 4;\n if (padding === 2)\n value += '==';\n else if (padding === 3)\n value += '=';\n return JSON.parse(getPlatform().atob(value));\n }\n catch (_a) {\n return {};\n }\n}\nfunction activeTurnkeyAddress() {\n let token = null;\n try {\n token = getActiveSessionManager().getIdToken();\n }\n catch (_a) {\n token = null;\n }\n if (!token)\n return null;\n const claims = decodeJwt(token);\n const address = claims['custom:walletAddress'];\n const provider = claims['custom:walletProvider'];\n return provider === 'turnkey' && typeof address === 'string' && address\n ? address\n : null;\n}\nlet requestSeq = 0;\n// Shared popup driver: open the signer page, do the ready/postMessage handshake, and\n// resolve when `onResult` accepts a result message. Origin + source are pinned.\nasync function runPopup(url, signerOrigin, ex) {\n var _a, _b;\n const w = (_a = ex.width) !== null && _a !== void 0 ? _a : 420, h = (_b = ex.height) !== null && _b !== void 0 ? _b : 620;\n const left = window.screenX + Math.max(0, (window.outerWidth - w) / 2);\n const top = window.screenY + Math.max(0, (window.outerHeight - h) / 2);\n const popup = window.open(url, 'bounded-turnkey-signer', `width=${w},height=${h},left=${left},top=${top}`);\n if (!popup) {\n throw new Error('Popup blocked - call this from a user gesture (e.g. a click handler) so the wallet approval window can open.');\n }\n return await new Promise((resolve, reject) => {\n let settled = false;\n // DS3-0412: the signer's `bounded:turnkey:ready` is the authoritative readiness signal, NOT\n // a bare `postMessage`. On a slow navigation the popup can still be at about:blank when the\n // 1.2s fallback fires, so a post to `signerOrigin` is silently dropped (target-origin mismatch).\n // We therefore never latch \"sent\" on a post that returned. We (re)send the request on every\n // `ready`, keep the 1.2s kick only as a fallback for signer pages that omit `ready`, and stop\n // resending once the signer acknowledges THIS requestId (the terminal `result` is that ack; a\n // future signer may also emit `bounded:turnkey:ack`) or the exchange settles.\n let readySeen = false;\n let acked = false;\n let closeTimer;\n const cleanup = () => { settled = true; window.removeEventListener('message', onMsg); if (closeTimer)\n clearInterval(closeTimer); };\n const sendRequest = () => { var _a; if (settled || acked)\n return; try {\n (_a = ex.assertCurrent) === null || _a === void 0 ? void 0 : _a.call(ex);\n popup.postMessage(ex.request, signerOrigin);\n }\n catch ( /* popup gone */_b) { /* popup gone */ } };\n const onMsg = (event) => {\n if (event.origin !== signerOrigin)\n return;\n if (event.source !== popup)\n return;\n const d = event.data;\n if (!d || typeof d !== 'object')\n return;\n if (d.type === 'bounded:turnkey:ready') {\n readySeen = true;\n sendRequest();\n return;\n }\n if (d.type === 'bounded:turnkey:ack' && d.requestId === ex.request.requestId) {\n acked = true;\n return;\n }\n if (d.type === 'bounded:turnkey:result' && d.requestId === ex.request.requestId) {\n const outcome = ex.onResult(d);\n if ('error' in outcome) {\n cleanup();\n try {\n popup.close();\n }\n catch ( /* ignore */_a) { /* ignore */ }\n reject(new Error(outcome.error));\n return;\n }\n if (outcome.done) {\n cleanup();\n try {\n popup.close();\n }\n catch ( /* ignore */_b) { /* ignore */ }\n resolve(outcome.value);\n }\n }\n };\n window.addEventListener('message', onMsg);\n // Fallback only for signer pages that never emit `ready`; suppressed once `ready` (the reliable\n // path) has driven a send or the signer has acked, so a slow-nav drop can no longer strand the op.\n setTimeout(() => { if (!readySeen && !acked)\n sendRequest(); }, 1200);\n closeTimer = setInterval(() => {\n if (popup.closed) {\n clearInterval(closeTimer);\n setTimeout(() => { if (!settled) {\n cleanup();\n reject(new Error('Wallet approval window was closed before it completed.'));\n } }, 400);\n }\n }, 500);\n setTimeout(() => { if (!settled) {\n cleanup();\n try {\n popup.close();\n }\n catch ( /* ignore */_a) { /* ignore */ }\n reject(new Error('Wallet approval timed out.'));\n } }, 5 * 60 * 1000);\n });\n}\n// AS-02: the hosted signer refuses to sign unless the request carries an issuer-signed\n// SIGNING CAPABILITY bound to the app id, this origin, and the EXACT bytes (a bare postMessage\n// from any peer can no longer consent-phish a signature). Fetch one from the human-auth issuer\n// for exactly these bytes before posting the sign request. Credential-free: the caller proves\n// identity with the Bounded id token WE minted (a body secret, RS256-verified server-side), not\n// an ambient cookie - the issuer's session cookie is SameSite-scoped to its own origin and is\n// not sent on this cross-origin fetch, so the token is what carries the session's wallet.\nasync function fetchSigningCapability(messageHex, context) {\n context.assertCurrent();\n const { base, idToken } = context;\n if (!idToken) {\n throw new Error('This session has no Turnkey wallet. Sign in again to provision one.');\n }\n return requestTurnkeySigningCapability({\n baseUrl: base,\n idToken,\n messageHex,\n fetchImpl: (url, init) => fetch(url, init),\n });\n}\n// DS3-0510: wallet reads and creation disclose a stable wallet identity, so the hosted signer\n// requires an issuer-signed authorization bound to this app origin and exact action. Fetch it\n// before posting to the signer. Walletless sessions are valid for createWallet because that is\n// the operation that provisions their first wallet.\nasync function fetchActionAuthorization(action, context) {\n context.assertCurrent();\n const { base, idToken } = context;\n if (!idToken) {\n throw new Error('Sign in again to set up your Turnkey wallet.');\n }\n return requestTurnkeyActionAuthorization({\n baseUrl: base,\n idToken,\n action,\n fetchImpl: (url, init) => fetch(url, init),\n });\n}\n/**\n * Destroy the 24h signing session held on the signer origin for this device.\n * Called by logout(): logout must END the signing session, never leave it to\n * expire (TURNKEY-EMAIL-SIGNING-PLAN.md). Best-effort by design - the session\n * lives in the signer origin's storage, so the only way to reach it is a hidden\n * signer iframe, and a blocked/offline frame must never block logout itself;\n * an unswept session is account-bound and unusable without a live authorization,\n * it just costs its owner nothing and a stranger nothing.\n */\nexport async function clearTurnkeySigningSession(idToken) {\n if (!hasDOM())\n return;\n // Destroy the trusted in-memory key even if configuration or token parsing fails.\n // Do it synchronously, before a different login can mount a replacement frame.\n detachWarmSignerIframe();\n // Capture the session before asynchronous teardown clears the SDK's token.\n const contextPromise = turnkeySignerPage(idToken);\n let frame = null;\n try {\n const context = await contextPromise;\n setWalletSessionState(context.key, { status: 'verification-required', reason: 'logged_out' });\n frame = await openHiddenSignerFrame(context);\n await frame.request({ type: 'bounded:turnkey:clearSigningSession', requestId: `tkclear_${Date.now()}_${++requestSeq}` }, 4000);\n }\n catch (_a) {\n // The warm frame was destroyed; the bounded store sweep is best effort.\n }\n finally {\n frame === null || frame === void 0 ? void 0 : frame.dispose();\n }\n}\nexport function hasTurnkeyWallet() {\n return activeTurnkeyAddress() !== null;\n}\n/**\n * Get-or-create the user's non-custodial Turnkey wallet, resolving with its stable\n * Solana address. Creation never prompts: on first use the signer silently provisions\n * the email-rooted wallet (no code), and an existing wallet resolves immediately.\n * Call from a USER GESTURE (the transport may need to open a window).\n *\n * Use this to learn the fee-payer address BEFORE building a transaction to sign.\n */\nexport async function getOrCreateTurnkeyWallet() {\n if (!hasDOM())\n throw new Error('Turnkey embedded wallets are only available in the browser (trusted wallet UI).');\n const context = await turnkeySignerPage();\n const { url, origin } = context;\n const requestId = `tkcreate_${Date.now()}_${++requestSeq}`;\n const authorization = await fetchActionAuthorization('createWallet', context);\n return await deliver(url, origin, {\n context: context.key, assertCurrent: context.assertCurrent,\n request: buildTurnkeyActionRequest({ requestId, action: 'createWallet', authorization }),\n onResult: (d) => {\n if (d.ok && typeof d.address === 'string')\n return { done: true, value: { address: d.address, subOrgId: String(d.subOrgId || '') } };\n return { error: String(d.error || 'Wallet setup failed') };\n },\n });\n}\n/**\n * Open the hosted PRIVATE-KEY EXPORT page for the session's Turnkey wallet in a\n * new tab. Works for BOTH session kinds: hosted (issuer-cookie) sessions open it\n * bare, and inline (authMode:\"turnkey\") sessions - which own no issuer cookie -\n * carry a short-lived, purpose-bound exportWallet authorization in the URL\n * FRAGMENT (never sent to any server; the page strips it from the address bar\n * immediately and uses it as its bearer session). MUST be called from a USER\n * GESTURE or the browser blocks the tab. The key itself is decrypted only in\n * that tab - it never transits Bounded.\n */\nexport async function openTurnkeyKeyExport() {\n if (!hasDOM())\n throw new Error('Turnkey key export is only available in the browser.');\n if (!hasTurnkeyWallet())\n throw new Error('This session has no Turnkey wallet to export.');\n // Open the tab SYNCHRONOUSLY - before any await - so the click's transient user\n // activation is not consumed by the mint below; a window.open issued after an\n // awaited round trip is refused by strict popup blockers even from a click\n // handler. Same hard-won pattern as onramp() and loginWithPopup. Note the\n // features string must NOT contain `noopener`: per HTML, window.open returns\n // null when noopener is set, so the handle needed to navigate the tab (and to\n // tell \"blocked\" from \"opened\") would be unavailable. Severing the back-link\n // with `handle.opener = null` gives the same protection and keeps the handle.\n const handle = window.open('', '_blank');\n if (!handle) {\n throw new Error('Popup blocked - call openTurnkeyKeyExport() from a user gesture (e.g. a click handler).');\n }\n try {\n handle.opener = null;\n }\n catch ( /* older engines: the tab still cannot read us cross-origin */_a) { /* older engines: the tab still cannot read us cross-origin */ }\n try {\n const context = await turnkeySignerPage();\n const authorization = await fetchActionAuthorization('exportWallet', context);\n context.assertCurrent();\n const path = context.scope === 'app' ? `/wallet/turnkey/app/${context.appId}` : '/wallet/turnkey';\n handle.location.href = `${context.base}${path}/export#authorization=${encodeURIComponent(authorization)}`;\n }\n catch (error) {\n // Never strand a blank tab on a failed mint.\n try {\n handle.close();\n }\n catch ( /* already gone */_b) { /* already gone */ }\n throw error;\n }\n}\n/**\n * Open the Bounded Turnkey approval card and sign `message` (raw bytes) with the\n * user's Turnkey wallet, resolving with the ed25519 signature and wallet address.\n * Call from a user gesture so a deliberate browser fallback can open if needed.\n *\n * The signer shows an approve card (wallet address, requesting origin, Approve /\n * Cancel). With a live 24-hour signing session (normally established by the login\n * code itself) one click signs; without one, the card collects a Turnkey-emailed\n * one-time code inline, which establishes the session, and the same click\n * completes the signature.\n */\nexport async function signSolanaMessageViaTurnkey(message) {\n if (!hasDOM()) {\n throw new Error('Turnkey embedded-wallet signing is only available in the browser (trusted wallet UI).');\n }\n const context = await turnkeySignerPage();\n const { url, origin } = context;\n const requestId = `tksign_${Date.now()}_${++requestSeq}`;\n const messageHex = toHex(message);\n // AS-02: obtain the issuer-signed capability for THESE exact bytes first; the signer will\n // refuse (capability_required) without it. Fetched per signature (each is single-payload).\n const capability = await fetchSigningCapability(messageHex, context);\n // Inline (authMode:\"turnkey\") sessions plant no Better Auth cookie on the issuer, so the\n // signer's same-origin status/create fetches need a bearer session proof: attach the\n // createWallet action authorization (it covers the sign flow's get-or-create too). Minted\n // from the same id token as the capability, so a session that minted one can mint both.\n const authorization = await fetchActionAuthorization('createWallet', context);\n return await deliver(url, origin, {\n context: context.key, assertCurrent: context.assertCurrent,\n request: buildTurnkeySignRequest({ requestId, messageHex, capability, authorization }),\n onResult: (d) => {\n if (d.ok && typeof d.signatureHex === 'string' && typeof d.address === 'string') {\n setWalletSessionState(context.key, { status: 'ready', expiresAt: Number(d.signingSessionExpiresAt) });\n return { done: true, value: { signature: fromHex(d.signatureHex), address: d.address, subOrgId: String(d.subOrgId || '') } };\n }\n return { error: String(d.error || 'Turnkey signing failed') };\n },\n });\n}\nfunction requireMatchingAddress(result) {\n const expected = activeTurnkeyAddress();\n if (!expected)\n throw new Error('This session has no Turnkey wallet. Sign in again to provision one.');\n if (result.address !== expected)\n throw new Error('Turnkey signer returned a different wallet address than the active session.');\n return expected;\n}\n/**\n * SIMD-0385 v1: Turnkey signs the exact v1 message bytes (the same raw-payload\n * ed25519 signing the legacy/v0 path uses); the hosted signer page decodes them\n * before approving. Refuses when the active wallet is not a required signer, so\n * a signature can never be silently dropped.\n */\nexport async function signTransactionV1WithTurnkey(transaction) {\n const result = await signSolanaMessageViaTurnkey(Uint8Array.from(transaction.messageBytes));\n const address = requireMatchingAddress(result);\n if (!Object.prototype.hasOwnProperty.call(transaction.signatures, address)) {\n throw new Error('The active Turnkey wallet is not a required signer of this v1 transaction.');\n }\n return Object.assign(Object.assign({}, transaction), { signatures: Object.assign(Object.assign({}, transaction.signatures), { [address]: Uint8Array.from(result.signature) }) });\n}\nexport async function signMessageWithTurnkey(message) {\n const result = await signSolanaMessageViaTurnkey(getPlatform().textEncode(message));\n requireMatchingAddress(result);\n return bs58.encode(result.signature);\n}\nexport async function signTransactionWithTurnkey(transaction) {\n const isLegacy = 'serializeMessage' in transaction;\n const message = isLegacy\n ? transaction.serializeMessage()\n : transaction.message.serialize();\n const result = await signSolanaMessageViaTurnkey(new Uint8Array(message));\n const address = requireMatchingAddress(result);\n const { PublicKey } = await import('@solana/web3.js');\n if (isLegacy) {\n transaction.addSignature(new PublicKey(address), Buffer.from(result.signature));\n }\n else {\n transaction.addSignature(new PublicKey(address), result.signature);\n }\n return transaction;\n}\n// DS3-0414: does the transaction already carry a REAL signer signature? If so, its compiled\n// message (recentBlockhash included) must not be mutated - see signAndSubmitTransactionWithTurnkey.\n// Legacy signatures are `{ signature: Buffer | null }` entries; versioned signatures are 64-byte\n// arrays that stay all-zero placeholders until a signer fills them.\nfunction transactionHasSignature(transaction) {\n if ('serializeMessage' in transaction) {\n return transaction.signatures.some((s) => s.signature != null);\n }\n return transaction.signatures.some((sig) => sig.some((b) => b !== 0));\n}\nexport async function signAndSubmitTransactionWithTurnkey(transaction, feePayer) {\n var _a;\n const config = await getConfig();\n const rpcUrl = (_a = config.rpcUrl) === null || _a === void 0 ? void 0 : _a.trim();\n if (!rpcUrl)\n throw new Error('Turnkey transaction submission requires init({ rpcUrl }).');\n const { Connection, PublicKey } = await import('@solana/web3.js');\n const connection = new Connection(rpcUrl, 'confirmed');\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n const isLegacy = 'serializeMessage' in transaction;\n // DS3-0414: a Solana signature is computed over the compiled message, which INCLUDES\n // recentBlockhash. Rewriting the blockhash after any signer (sponsor / multisig / co-signer)\n // has signed silently invalidates their signature - signTransactionWithTurnkey only ADDS the\n // Turnkey signature, it never re-signs the others. So only refresh the blockhash while the\n // transaction is still unsigned; once a real signature is present, preserve the caller's message\n // verbatim and confirm against the blockhash it already carries.\n const hasSignature = transactionHasSignature(transaction);\n let confirmBlockhash = blockhash;\n if (!hasSignature) {\n if (isLegacy) {\n const legacy = transaction;\n legacy.recentBlockhash = blockhash;\n legacy.lastValidBlockHeight = lastValidBlockHeight;\n if (!legacy.feePayer) {\n const address = activeTurnkeyAddress();\n if (!address)\n throw new Error('This session has no Turnkey wallet. Sign in again to provision one.');\n legacy.feePayer = feePayer !== null && feePayer !== void 0 ? feePayer : new PublicKey(address);\n }\n }\n else {\n transaction.message.recentBlockhash = blockhash;\n }\n }\n else {\n confirmBlockhash = (isLegacy\n ? transaction.recentBlockhash\n : transaction.message.recentBlockhash) || blockhash;\n }\n const signed = await signTransactionWithTurnkey(transaction);\n const signature = await connection.sendRawTransaction(signed.serialize(), {\n skipPreflight: false,\n maxRetries: 3,\n });\n const confirmation = await connection.confirmTransaction({ signature, blockhash: confirmBlockhash, lastValidBlockHeight }, 'confirmed');\n if (confirmation.value.err) {\n throw new Error(`Turnkey transaction failed: ${JSON.stringify(confirmation.value.err)}`);\n }\n return signature;\n}\n/** Save this trusted URL to recover the wallet even after the app is deleted. */\nexport async function getTurnkeyWalletRecoveryUrl() {\n const context = await turnkeySignerPage();\n context.assertCurrent();\n if (!context.address || !hasTurnkeyWallet())\n throw new Error('wallet_unavailable');\n return `${context.base}/wallet/turnkey/recover/${encodeURIComponent(context.address)}`;\n}\n","import { getConfig, getActiveSessionManager } from '@bounded-sh/core';\nimport { setAuthLoading, getInitializationGeneration } from '../global';\nimport { adoptSessionProvider } from './session-provider';\nimport { getPlatform } from '../platform';\nimport { hasTurnkeyWallet, signAndSubmitTransactionWithTurnkey, signMessageWithTurnkey, signTransactionWithTurnkey, signTransactionV1WithTurnkey, } from './turnkey-signer-bridge';\n// Same message the email provider uses when a hosted (OIDC) login has no\n// embedded wallet — enable `auth.wallets` in policy to get one.\nconst OIDC_NO_WALLET = 'This session has no Turnkey wallet. Sign in again to provision the default ' +\n 'embedded wallet, or check whether the app explicitly sets auth.wallets:false.';\n// PKCE material is stored PER ATTEMPT under a state-derived key\n// (`bounded.oidc.pkce.<state>`), never one fixed key. Two overlapping logins in the\n// same tab (redirect + popup, or two popups) each own a distinct record, so a second\n// attempt cannot clobber the first's verifier/state/redirectUri.\nconst PKCE_STORE_PREFIX = 'bounded.oidc.pkce';\nconst STATE_PREFIX = 'bounded.';\nconst LOGIN_TIMEOUT_MS = 10 * 60000;\nconst CALLBACK_PARAMS = ['code', 'state', 'error', 'error_description', 'iss'];\nfunction pkceKey(state) {\n return `${PKCE_STORE_PREFIX}.${state}`;\n}\nfunction removeAttempt(state) {\n try {\n sessionStorage.removeItem(pkceKey(state));\n }\n catch ( /* Storage may have been disabled mid-login. */_a) { /* Storage may have been disabled mid-login. */ }\n}\nconst ISSUER_SESSION_KIND_KEY = 'bounded_issuer_session_kind';\n// Active session store (Web on web, RN on React Native) — selected by config,\n// not by `typeof window` (truthy on RN). OIDC redirect/popup is web-only, but the\n// session it mints is read back through this same selector everywhere.\nconst sessionManager = getActiveSessionManager;\nfunction hasDOM() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction decodeJwt(token) {\n try {\n let b64 = token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/');\n const pad = b64.length % 4;\n if (pad === 2)\n b64 += '==';\n else if (pad === 3)\n b64 += '=';\n return JSON.parse(getPlatform().atob(b64));\n }\n catch (_a) {\n return {};\n }\n}\n// A minimal AuthProvider so getSession()/logout() work for OIDC sessions, mirroring email.\n// Turnkey supplies the default Solana wallet and supports raw message and transaction\n// signatures through the Bounded signer window.\nconst oidcProviderSingleton = {\n async login() {\n const idToken = sessionManager().getIdToken();\n return idToken ? userFromIdToken(idToken) : null;\n },\n async getUser() {\n const idToken = sessionManager().getIdToken();\n return idToken ? userFromIdToken(idToken) : null;\n },\n async logout() { await sessionManager().clearSession(); },\n async signMessage(message) {\n if (!hasTurnkeyWallet())\n throw new Error(OIDC_NO_WALLET);\n return signMessageWithTurnkey(message);\n },\n async signTransaction(transaction) {\n if (!hasTurnkeyWallet())\n throw new Error(OIDC_NO_WALLET);\n return signTransactionWithTurnkey(transaction);\n },\n async signTransactionV1(transaction) {\n if (!hasTurnkeyWallet())\n throw new Error(OIDC_NO_WALLET);\n return signTransactionV1WithTurnkey(transaction);\n },\n supportedTransactionVersions() {\n return hasTurnkeyWallet() ? ['legacy', 0, 1] : ['legacy', 0];\n },\n async signAndSubmitTransaction(transaction, feePayer) {\n if (!hasTurnkeyWallet())\n throw new Error(OIDC_NO_WALLET);\n return signAndSubmitTransactionWithTurnkey(transaction, feePayer);\n },\n};\nfunction userFromIdToken(idToken) {\n const c = decodeJwt(idToken);\n const id = c['custom:userId'] || c.sub || c['custom:walletAddress'] || '';\n return {\n id,\n address: (c['custom:walletProvider'] === 'turnkey' && c['custom:walletAddress'] || null),\n evmAddress: null,\n email: (c.email || null), provider: oidcProviderSingleton,\n };\n}\nfunction tokenField(data, snake, camel) {\n var _a;\n const value = (_a = data === null || data === void 0 ? void 0 : data[snake]) !== null && _a !== void 0 ? _a : data === null || data === void 0 ? void 0 : data[camel];\n return typeof value === 'string' ? value : '';\n}\nfunction boundedRefreshTokenField(data) {\n for (const key of ['bounded_refresh_token', 'boundedRefreshToken', 'refreshToken']) {\n const value = data === null || data === void 0 ? void 0 : data[key];\n if (typeof value === 'string' && value.length > 0)\n return value;\n }\n return '';\n}\nasync function issuerBase() {\n const cfg = await getConfig();\n return (cfg.humanAuthApiUrl || 'https://auth.bounded.sh').replace(/\\/$/, '');\n}\n// Base64url-encode raw bytes via the platform abstraction (web: window.btoa;\n// RN/Node: the polyfilled/Buffer btoa supplied by getPlatform()). On web this is\n// byte-identical to the previous direct `btoa(...)` call.\nfunction b64url(buf) {\n let s = '';\n const bytes = buf instanceof Uint8Array ? buf : new Uint8Array(buf);\n for (let i = 0; i < bytes.length; i++)\n s += String.fromCharCode(bytes[i]);\n return getPlatform().btoa(s).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n// PKCE verifier + S256 challenge, fully platform-neutral: random bytes and the\n// SHA-256 digest both come from getPlatform() (web → WebCrypto, RN → polyfill/\n// expo-crypto). Web output is identical to the previous raw-crypto path.\nasync function makePkce() {\n const rnd = getPlatform().getRandomBytes(32);\n const verifier = b64url(rnd);\n const digest = await getPlatform().sha256(getPlatform().textEncode(verifier));\n return { verifier, challenge: b64url(digest) };\n}\nfunction randomState() {\n return b64url(getPlatform().getRandomBytes(16));\n}\nlet pendingCompletion;\nlet loginReturnError;\n/** The last OAuth return failure in this initialization, or null. Initialization\n * remains usable so the UI can display this error and offer a fresh sign-in. */\nexport function getLoginReturnError() {\n return (loginReturnError === null || loginReturnError === void 0 ? void 0 : loginReturnError.generation) === getInitializationGeneration() ? loginReturnError.error : null;\n}\n// A hosted page can contain both an app bundle and the platform widget's SDK.\n// They share one code exchange, while adopting the session in their own registries.\nconst COMPLETIONS = Symbol.for('bounded.oidc.completions');\nfunction cleanCallbackUrl(url) {\n const clean = new URL(url);\n for (const key of CALLBACK_PARAMS)\n clean.searchParams.delete(key);\n return clean;\n}\nasync function validateAttempt(pkce, callback) {\n const cfg = await getConfig();\n if (!pkce || typeof pkce.verifier !== 'string' || !pkce.verifier ||\n pkce.appId !== cfg.appId || pkce.issuer !== await issuerBase()) {\n throw new Error('Login belongs to a different app or auth server. Start sign-in again.');\n }\n if (!Number.isFinite(pkce.createdAt) || Date.now() - pkce.createdAt > LOGIN_TIMEOUT_MS || pkce.createdAt > Date.now()) {\n throw new Error('Login expired. Start sign-in again.');\n }\n if (callback && (cleanCallbackUrl(callback).href !== cleanCallbackUrl(new URL(pkce.redirectUri)).href ||\n (callback.searchParams.has('iss') && callback.searchParams.get('iss') !== pkce.issuer))) {\n throw new Error('Login returned to a different address or from a different auth server. Start sign-in again.');\n }\n}\n// The receiver acknowledges only after checking origin, window and state. An\n// absent/disconnected opener must never leave a popup claiming success.\nasync function handOffPopup(url, state) {\n const cfg = await getConfig();\n const issuer = await issuerBase();\n const opener = window.opener;\n if (!opener || opener === window || opener.closed) {\n throw new Error('The original sign-in window is unavailable. Close this window and sign in again in the original tab.');\n }\n return new Promise((resolve, reject) => {\n const cleanup = () => { clearTimeout(timer); window.removeEventListener('message', onMessage); };\n const onMessage = (event) => {\n var _a;\n if (event.source !== opener || event.origin !== url.origin ||\n ((_a = event.data) === null || _a === void 0 ? void 0 : _a.type) !== 'bounded-oidc-accepted' || event.data.state !== state)\n return;\n cleanup();\n try {\n window.close();\n }\n catch ( /* The opener also closes its own popup handle. */_b) { /* The opener also closes its own popup handle. */ }\n resolve();\n };\n const timer = setTimeout(() => {\n cleanup();\n reject(new Error('Could not reach the original sign-in tab. Close this window and start sign-in again.'));\n }, 10000);\n window.addEventListener('message', onMessage);\n try {\n opener.postMessage({ type: 'bounded-oidc-code', state, code: url.searchParams.get('code'),\n error: url.searchParams.get('error'), errorDescription: url.searchParams.get('error_description'),\n callbackUrl: url.href, appId: cfg.appId, issuer }, url.origin);\n }\n catch (error) {\n cleanup();\n reject(error);\n }\n });\n}\nasync function finishLoginReturn(url, state) {\n try {\n if (!/^bounded\\.(popup|redirect)\\.[A-Za-z0-9_-]{22}$/.test(state)) {\n throw new Error('Invalid login state. Start sign-in again.');\n }\n if (state.startsWith('bounded.popup.')) {\n await handOffPopup(url, state);\n return { handled: true, user: null };\n }\n const raw = sessionStorage.getItem(pkceKey(state));\n if (!raw)\n throw new Error('Missing login attempt. Start sign-in again in this tab.');\n const pkce = JSON.parse(raw);\n if (pkce.state !== state)\n throw new Error('OAuth state mismatch. Start sign-in again.');\n await validateAttempt(pkce, url);\n const error = url.searchParams.get('error');\n if (error)\n throw new Error(url.searchParams.get('error_description') || `Login failed: ${error}`);\n const user = await exchangeCode(url.searchParams.get('code'), pkce);\n return { handled: true, user, idToken: sessionManager().getIdToken() };\n }\n finally {\n removeAttempt(state);\n const clean = cleanCallbackUrl(url);\n if (window.location.href === url.href) {\n window.history.replaceState(window.history.state, document.title, clean.pathname + clean.search + clean.hash);\n }\n }\n}\n/** Internal initialization step. Unrelated OAuth callbacks are left untouched. */\nexport function completePendingLogin() {\n if (!hasDOM())\n return Promise.resolve({ handled: false, user: null });\n const url = new URL(window.location.href);\n const state = url.searchParams.get('state');\n if (!(state === null || state === void 0 ? void 0 : state.startsWith(STATE_PREFIX)) || (!url.searchParams.get('code') && !url.searchParams.get('error'))) {\n return Promise.resolve({ handled: false, user: null });\n }\n const generation = getInitializationGeneration();\n if ((pendingCompletion === null || pendingCompletion === void 0 ? void 0 : pendingCompletion.href) === url.href && pendingCompletion.generation === generation)\n return pendingCompletion.promise;\n const promise = finishSharedLoginReturn(url, state).catch((error) => {\n loginReturnError = { generation, error: error instanceof Error ? error : new Error(String(error)) };\n throw loginReturnError.error;\n }).finally(() => {\n if ((pendingCompletion === null || pendingCompletion === void 0 ? void 0 : pendingCompletion.promise) === promise)\n pendingCompletion = undefined;\n });\n pendingCompletion = { href: url.href, generation, promise };\n return promise;\n}\nasync function finishSharedLoginReturn(url, state) {\n var _a;\n var _b;\n const cfg = await getConfig();\n const issuer = await issuerBase();\n if (state.startsWith('bounded.redirect.')) {\n const raw = sessionStorage.getItem(pkceKey(state));\n // A second SDK configured for another app/issuer on this page does not own\n // this return. Leave its URL and proof available to the initiating app.\n try {\n const attempt = raw && JSON.parse(raw);\n if (attempt && (attempt.appId !== cfg.appId || attempt.issuer !== issuer))\n return { handled: false, user: null };\n }\n catch ( /* The owning completion reports malformed attempt data. */_c) { /* The owning completion reports malformed attempt data. */ }\n }\n const shared = (_a = (_b = window)[COMPLETIONS]) !== null && _a !== void 0 ? _a : (_b[COMPLETIONS] = new Map());\n const key = JSON.stringify([url.href, cfg.appId, issuer]);\n const existing = shared.get(key);\n if (!existing) {\n const completion = finishLoginReturn(url, state);\n shared.set(key, completion);\n return completion;\n }\n const generation = getInitializationGeneration();\n const result = await existing;\n if (result.user) {\n if (!result.idToken || sessionManager().getIdToken() !== result.idToken) {\n throw new Error('The completed login session has changed. Start sign-in again.');\n }\n await adoptSessionProvider({ provider: oidcProviderSingleton, method: 'email', configKey: 'direct:oidc',\n user: Object.assign(Object.assign({}, result.user), { provider: oidcProviderSingleton }), beforeCommit: () => {\n if (generation !== getInitializationGeneration())\n throw new Error('Login was superseded by SDK reinitialization. Start sign-in again.');\n } });\n }\n return result;\n}\nfunction normalizeMethod(value) {\n const normalized = String(value || '').trim().toLowerCase();\n return /^[a-z0-9_-]{1,40}$/.test(normalized) ? normalized : null;\n}\n// The identifier-first hosted methods: the user types who they are and proves it,\n// so a prompt-less authorize may still deliberately SSO a live issuer session.\n// Every OTHER explicit provider jump is a social IdP button (\"Continue with\n// Google\"), where silent SSO is the logged-out-then-same-account-again trap.\nconst IDENTIFIER_METHODS = new Set(['email', 'text', 'phone']);\nfunction appendHostedLoginHints(params, opts) {\n const methods = (opts.methods || [])\n .map((method) => normalizeMethod(method))\n .filter((method) => !!method);\n if (methods.length > 0) {\n params.set('bounded_methods', Array.from(new Set(methods)).join(','));\n }\n const provider = normalizeMethod(opts.provider);\n if (provider)\n params.set('bounded_provider', provider);\n // login_hint: an identifier (usually an email) to prefill on the hosted page.\n // Kept short and free of control chars; the hosted page validates before use.\n const hint = String(opts.loginHint || '').trim();\n if (hint && hint.length <= 320 && !/[\\s<>\"']/.test(hint))\n params.set('login_hint', hint);\n // Standard OIDC prompt (e.g. 'login' to force a fresh sign-in / account choice).\n // An explicit social-provider jump defaults to 'select_account': the issuer\n // treats it as a demand for a fresh interactive sign-in (it never silently\n // SSOs a live issuer session under that prompt), and Google's leg always\n // carries its own select_account - so the user gets the IdP's account chooser\n // EVERY time, not just in a cookie-free browser. An explicit `prompt` always\n // wins, and `prompt: ''` opts a jump back into silent SSO.\n const prompt = opts.prompt === undefined\n ? (provider && !IDENTIFIER_METHODS.has(provider) ? 'select_account' : null)\n : normalizeMethod(opts.prompt);\n if (prompt)\n params.set('prompt', prompt);\n}\n// Build the authorize URL + the PKCE state that pairs with it. PURE: no storage,\n// no navigation — so it's shared verbatim by the web redirect/popup paths and the\n// native (expo-web-browser) path. The caller decides where the PkceState lives\n// (web → sessionStorage across the full-page redirect; native → in-memory across\n// the awaited browser session).\nasync function buildAuthorize(opts, mode = 'redirect') {\n loginReturnError = undefined;\n const cfg = await getConfig();\n if (!cfg.appId)\n throw new Error('appId is not configured (init the SDK with your appId)');\n // Web: default to the current page so callers don't have to pass redirectUri. Native has no\n // window — it MUST pass an https universal link (the system auth session needs a real URL).\n const redirectUri = opts.redirectUri || (hasDOM() ? window.location.origin + window.location.pathname : undefined);\n if (!redirectUri)\n throw new Error('redirectUri is required on React Native — pass the https universal link the app owner registered.');\n if (hasDOM()) {\n const redirect = new URL(redirectUri);\n if (redirect.origin !== window.location.origin || redirect.hash || CALLBACK_PARAMS.some((key) => redirect.searchParams.has(key))) {\n throw new Error('redirectUri must be on this app origin, without a fragment or OAuth callback parameters.');\n }\n }\n const { verifier, challenge } = await makePkce();\n const state = `${STATE_PREFIX}${mode}.${randomState()}`;\n const base = await issuerBase();\n const params = new URLSearchParams({\n client_id: cfg.appId, redirect_uri: redirectUri, response_type: 'code', scope: 'openid profile email',\n code_challenge: challenge, code_challenge_method: 'S256', state,\n });\n appendHostedLoginHints(params, opts);\n return { url: `${base}/api/auth/oauth2/authorize?${params.toString()}`, pkce: {\n verifier, state, redirectUri, appId: cfg.appId, issuer: base, createdAt: Date.now(),\n } };\n}\n// Are we on React Native (no DOM)? OIDC dispatch uses this to choose the native\n// expo-web-browser driver vs. the web full-page-redirect/popup driver.\nfunction isNative() {\n return !getPlatform().hasDOM;\n}\n// ---------------------------------------------------------------------------\n// Native (React Native / Expo) redirect driver\n// ---------------------------------------------------------------------------\n// Lazily load expo-web-browser. It's an OPTIONAL peer dep — imported dynamically\n// so the web/Node bundle never requires it. Throws an actionable error if a native\n// app calls hosted login without installing it.\nasync function loadExpoWebBrowser() {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n return await import('expo-web-browser');\n }\n catch (_a) {\n throw new Error('React Native hosted login requires the optional peer dependency \"expo-web-browser\". ' +\n 'Install it with `npx expo install expo-web-browser` (and `expo-crypto`), then retry.');\n }\n}\n// Parse code/state out of the universal-link callback URL. Hand-rolled (no `new URL()`)\n// because React Native's URL implementation is non-spec-compliant for query parsing.\nfunction parseCallbackParams(callbackUrl) {\n var _a, _b;\n const qIndex = callbackUrl.indexOf('?');\n if (qIndex < 0)\n return { code: null, state: null };\n const query = callbackUrl.slice(qIndex + 1).split('#')[0];\n const out = {};\n for (const part of query.split('&')) {\n if (!part)\n continue;\n const eq = part.indexOf('=');\n const k = eq < 0 ? part : part.slice(0, eq);\n const v = eq < 0 ? '' : part.slice(eq + 1);\n try {\n out[decodeURIComponent(k)] = decodeURIComponent(v.replace(/\\+/g, ' '));\n }\n catch (_c) {\n out[k] = v;\n }\n }\n return { code: (_a = out['code']) !== null && _a !== void 0 ? _a : null, state: (_b = out['state']) !== null && _b !== void 0 ? _b : null };\n}\n// Full native login: open the hosted page in the system auth session, await the\n// universal-link callback, verify state, and run the SAME PKCE code→token exchange\n// as web. Returns the signed-in User inline; web redirects complete on the next init().\nasync function runNativeLogin(opts) {\n var _a, _b;\n const { url, pkce } = await buildAuthorize(opts);\n const WebBrowser = await loadExpoWebBrowser();\n const openAuthSession = WebBrowser.openAuthSessionAsync || ((_a = WebBrowser.default) === null || _a === void 0 ? void 0 : _a.openAuthSessionAsync);\n if (typeof openAuthSession !== 'function') {\n throw new Error('expo-web-browser.openAuthSessionAsync is unavailable — update expo-web-browser.');\n }\n setAuthLoading(true);\n try {\n // openAuthSessionAsync keeps JS alive while the system browser is shown, then\n // resolves with the callback URL once the universal link fires — so `pkce`\n // stays in scope and never needs to be persisted.\n const result = await openAuthSession(url, opts.redirectUri);\n if (!result || result.type === 'cancel' || result.type === 'dismiss') {\n throw new Error('Login cancelled');\n }\n if (result.type !== 'success' || typeof result.url !== 'string') {\n throw new Error(`Hosted login did not complete (result: ${(_b = result === null || result === void 0 ? void 0 : result.type) !== null && _b !== void 0 ? _b : 'unknown'})`);\n }\n const { code, state: returnedState } = parseCallbackParams(result.url);\n if (!code)\n throw new Error('No authorization code in the callback URL');\n if (!returnedState || returnedState !== pkce.state) {\n throw new Error('OAuth state mismatch — possible CSRF; aborting');\n }\n return await exchangeCode(code, pkce);\n }\n finally {\n setAuthLoading(false);\n }\n}\n/** Start hosted login (Google / Apple / email / hosted phone). Works on WEB and REACT NATIVE.\n *\n * WEB: navigates the whole page to the hosted Bounded login and resolves (void) as the page\n * unloads; init() completes the return to redirectUri automatically.\n *\n * REACT NATIVE: opens the hosted page via expo-web-browser, awaits the https universal-link\n * callback, runs the PKCE exchange INLINE, and resolves with the signed-in User. No\n * completeLoginFromRedirect() call is needed on native. Requires `redirectUri` to be an\n * https UNIVERSAL LINK whose origin the app owner registered in the app's allowedOrigins\n * (custom `myapp://` schemes are rejected by the issuer). Needs the optional peer deps\n * expo-web-browser + (expo-crypto or react-native-get-random-values). */\nexport async function loginWithRedirect(opts) {\n if (isNative())\n return runNativeLogin(opts);\n if (!hasDOM())\n throw new Error('loginWithRedirect requires a browser or a configured React Native platform');\n const { url, pkce } = await buildAuthorize(opts);\n // Stash the verifier + state so the redirect_uri page can finish the exchange. sessionStorage\n // is per-tab and cleared on close — appropriate for a short-lived auth handshake. Keyed by\n // this attempt's own state so a second concurrent login cannot overwrite it.\n sessionStorage.setItem(pkceKey(pkce.state), JSON.stringify(pkce));\n // This promise represents dispatch, not authentication on the next page.\n // Browsers can cancel navigation (for example at beforeunload) without firing\n // pageshow. Never leave this document's SDK loading after dispatch settles.\n setAuthLoading(true);\n try {\n window.location.href = url;\n }\n catch (error) {\n removeAttempt(pkce.state);\n throw error;\n }\n finally {\n setAuthLoading(false);\n }\n}\n/** Optional explicit completion. Normal apps only await init(), which already finishes login.\n * Concurrent calls share one exchange. Returns null when no Bounded return is present. */\nexport async function completeLoginFromRedirect() {\n const result = await completePendingLogin();\n const error = getLoginReturnError();\n if (error)\n throw error;\n return result.user;\n}\n/** Popup variant: open the hosted login in a popup; resolves with the User once the popup's\n * redirect_uri page initializes the SDK, which hands the code back automatically. */\nexport async function loginWithPopup(opts) {\n if (!hasDOM())\n throw new Error('loginWithPopup is web-only — on React Native use loginWithRedirect()');\n // Open synchronously, before PKCE/config awaits consume the click's user-\n // activation window. Opening only after buildAuthorize() intermittently\n // left Chrome with a real named window stranded at about:blank (or blocked\n // it entirely), while callers waited forever for an OAuth message.\n const w = opts.width || 480, h = opts.height || 720;\n const left = window.screenX + (window.outerWidth - w) / 2;\n const top = window.screenY + (window.outerHeight - h) / 2;\n // Per-attempt window name: a FIXED name made a second concurrent open() reuse and\n // renavigate the first popup's browsing context. A fresh random name isolates each.\n const popupName = `bounded-oidc-${randomState()}`;\n const popup = window.open('', popupName, `width=${w},height=${h},left=${left},top=${top}`);\n if (!popup)\n throw new Error('Popup blocked — use loginWithRedirect() instead');\n let authorization;\n try {\n authorization = await buildAuthorize(opts, 'popup');\n }\n catch (error) {\n try {\n popup.close();\n }\n catch ( /* ignore */_a) { /* ignore */ }\n throw error;\n }\n const { url, pkce } = authorization;\n // Validate every remaining synchronous setup step before navigating. Both\n // URL parsing and sessionStorage can throw (malformed caller input, blocked\n // storage, quota/privacy mode); because the popup is already open to retain\n // user activation, close it on either failure instead of orphaning a blank\n // window with no listener or watchdog attached.\n let expectedOrigin;\n try {\n expectedOrigin = new URL(pkce.redirectUri).origin;\n sessionStorage.setItem(pkceKey(pkce.state), JSON.stringify(pkce));\n }\n catch (error) {\n try {\n popup.close();\n }\n catch ( /* ignore */_b) { /* ignore */ }\n throw error;\n }\n try {\n popup.location.replace(url);\n }\n catch (_c) {\n try {\n popup.location.href = url;\n }\n catch (_d) {\n removeAttempt(pkce.state);\n try {\n popup.close();\n }\n catch ( /* ignore */_e) { /* ignore */ }\n throw new Error('Popup failed to navigate — use loginWithRedirect() instead');\n }\n }\n // expectedOrigin came from the RESOLVED redirect_uri (buildAuthorize defaulted it to the\n // current page on web), not opts.redirectUri which may be undefined.\n setAuthLoading(true); // reflect \"signing in…\" while the popup is open\n try {\n return await new Promise((resolve, reject) => {\n let settled = false;\n let timer;\n let navigationTimer;\n let completionTimer;\n const cleanup = () => {\n settled = true;\n clearInterval(timer);\n clearTimeout(navigationTimer);\n clearTimeout(completionTimer);\n window.removeEventListener('message', onMsg);\n removeAttempt(pkce.state);\n };\n const onMsg = async (ev) => {\n if (settled || ev.origin !== expectedOrigin || ev.source !== popup)\n return;\n const d = ev.data;\n if (!d || d.type !== 'bounded-oidc-code' ||\n (typeof d.code !== 'string' && typeof d.error !== 'string'))\n return;\n // Validate state BEFORE tearing down this listener, against the record THIS\n // attempt captured in the closure (`pkce`), not a shared sessionStorage reread.\n // A message from an OVERLAPPING attempt carries a different state: ignore it and\n // stay registered for our own code, instead of cleaning up on another's message.\n if (d.state !== pkce.state)\n return;\n if (d.appId !== pkce.appId || d.issuer !== pkce.issuer)\n return;\n cleanup();\n try {\n await validateAttempt(pkce, new URL(d.callbackUrl));\n popup.postMessage({ type: 'bounded-oidc-accepted', state: pkce.state }, expectedOrigin);\n if (d.error)\n throw new Error(typeof d.errorDescription === 'string' ? d.errorDescription : `Login failed: ${d.error}`);\n const user = await exchangeCode(d.code, pkce);\n try {\n popup.close();\n }\n catch ( /* ignore */_a) { /* ignore */ }\n resolve(user);\n }\n catch (e) {\n try {\n popup.close();\n }\n catch ( /* ignore */_b) { /* ignore */ }\n reject(e);\n }\n };\n window.addEventListener('message', onMsg);\n completionTimer = setTimeout(() => {\n cleanup();\n try {\n popup.close();\n }\n catch ( /* ignore */_a) { /* ignore */ }\n reject(new Error('Login expired or its popup disconnected. Start sign-in again.'));\n }, LOGIN_TIMEOUT_MS);\n // Some browser/extension combinations can return a real popup handle but\n // strand the window at about:blank instead of navigating to the hosted\n // authorize URL. The old code then waited forever because the popup was\n // open and no message could ever arrive. Once the popup becomes\n // cross-origin, reading location throws — that is positive evidence that\n // navigation succeeded, so only a still-readable about:blank is rejected.\n //\n // F-006: the old single 4s check killed HEALTHY logins. `about:blank` is\n // also what a PENDING navigation reads while the browser waits for the\n // authorize response - measured in prod at 2.2-3.7s server-side plus\n // network, i.e. straddling 4s - so the watchdog repeatedly closed popups\n // whose login was succeeding (\"popup opened and closed itself\"). A truly\n // stranded popup is just as detectable later; a slow-but-working one is\n // only survivable with patience. Recheck instead of kill: give up only\n // when the window is STILL readable-blank after the full grace.\n const NAVIGATION_GRACE_MS = 30000;\n const NAVIGATION_RECHECK_MS = 2000;\n const navigationStartedAt = Date.now();\n const checkNavigation = () => {\n if (settled || popup.closed)\n return;\n try {\n if (popup.location.href === 'about:blank') {\n if (Date.now() - navigationStartedAt >= NAVIGATION_GRACE_MS) {\n cleanup();\n try {\n popup.close();\n }\n catch ( /* ignore */_a) { /* ignore */ }\n reject(new Error('Popup stalled at about:blank - use loginWithRedirect() instead'));\n return;\n }\n navigationTimer = setTimeout(checkNavigation, NAVIGATION_RECHECK_MS);\n }\n }\n catch ( /* cross-origin hosted auth loaded normally */_b) { /* cross-origin hosted auth loaded normally */ }\n };\n navigationTimer = setTimeout(checkNavigation, NAVIGATION_RECHECK_MS);\n // The popup posts its code and then closes ITSELF, so a naive \"popup.closed -> reject\"\n // races the just-posted message and would report a spurious \"Login window closed\" on a\n // SUCCESSFUL login. When we see it closed, wait a beat for that pending message to settle\n // before declaring the window closed.\n timer = setInterval(() => {\n if (popup.closed) {\n clearInterval(timer);\n setTimeout(() => { if (!settled) {\n cleanup();\n reject(new Error('Login window closed'));\n } }, 500);\n }\n }, 500);\n });\n }\n finally {\n setAuthLoading(false);\n }\n}\n// Establish a Bounded session from a server-minted inline-session response (the same\n// { idToken, accessToken, refreshToken } shape as /session/refresh). Used by the\n// Turnkey-native login path (authMode:\"turnkey\"), which mints the session server-side\n// after Turnkey verifies the email OTP - there is no OIDC code to exchange. Wiring is\n// identical to exchangeCode's tail so the realtime worker cannot tell them apart.\nexport async function establishInlineSession(data, beforeCommit, beforeStore) {\n const base = await issuerBase();\n beforeCommit === null || beforeCommit === void 0 ? void 0 : beforeCommit();\n const idToken = tokenField(data, 'id_token', 'idToken');\n if (!idToken)\n throw new Error('No id_token in the inline session response');\n const accessToken = tokenField(data, 'access_token', 'accessToken') || idToken;\n const refreshToken = boundedRefreshTokenField(data);\n const user = userFromIdToken(idToken);\n const rollback = await sessionManager().storeSession(String(user.address || ''), accessToken, idToken, refreshToken, base, () => { beforeCommit === null || beforeCommit === void 0 ? void 0 : beforeCommit(); beforeStore === null || beforeStore === void 0 ? void 0 : beforeStore(); });\n // Adopt the OIDC provider on EVERY session surface - including core's signing\n // pointer (getConfig().authProvider), which this path used to skip, leaving\n // onchain writes routed through a previous (e.g. logged-out wallet) provider.\n try {\n await adoptSessionProvider({ provider: oidcProviderSingleton, method: 'email', configKey: 'direct:oidc', user, beforeCommit });\n }\n catch (error) {\n if (typeof rollback === 'function')\n await rollback();\n throw error;\n }\n // Turnkey-native OTP mints an app session directly. It does not establish a\n // Better Auth browser cookie on the issuer, so logout must not navigate\n // through the issuer's cookie-clearing /logout endpoint. Stamped AFTER the\n // adoption: setStoredAuthMethod clears the kind marker for non-email methods,\n // and the adopt call is what records 'email'.\n try {\n getPlatform().storage.setItem(ISSUER_SESSION_KIND_KEY, 'inline');\n }\n catch ( /* storage unavailable */_a) { /* storage unavailable */ }\n return user;\n}\n// Auth base + appId for the Turnkey-native inline OTP endpoints, resolved through the\n// same config the OIDC flow uses.\nexport async function inlineAuthEndpoint() {\n const cfg = await getConfig();\n return { base: await issuerBase(), appId: cfg.appId };\n}\nasync function exchangeCode(code, pkce) {\n const generation = getInitializationGeneration();\n const beforeCommit = () => {\n if (generation !== getInitializationGeneration())\n throw new Error('Login was superseded by SDK reinitialization. Start sign-in again.');\n };\n await validateAttempt(pkce);\n beforeCommit();\n const base = pkce.issuer;\n // OIDC token endpoint: application/x-www-form-urlencoded (the standard). Public client (no\n // secret) authenticated by PKCE. The code is single-use + short-TTL on the server.\n const body = new URLSearchParams({\n grant_type: 'authorization_code', code, redirect_uri: pkce.redirectUri,\n client_id: pkce.appId, code_verifier: pkce.verifier,\n });\n let res;\n try {\n res = await fetch(`${base}/api/auth/oauth2/token`, {\n method: 'POST', headers: { 'content-type': 'application/x-www-form-urlencoded' }, body: body.toString(),\n });\n }\n catch (err) {\n throw new Error(`Bounded token exchange failed: ${(err === null || err === void 0 ? void 0 : err.message) || err}`);\n }\n let data = null;\n try {\n data = await res.json();\n }\n catch ( /* non-JSON */_a) { /* non-JSON */ }\n if (!res.ok)\n throw new Error(String((data && (data.error_description || data.error || data.message)) || `token HTTP ${res.status}`));\n const idToken = (data === null || data === void 0 ? void 0 : data.id_token) || (data === null || data === void 0 ? void 0 : data.idToken);\n if (!idToken)\n throw new Error('No id_token returned from the token endpoint');\n const accessToken = tokenField(data, 'access_token', 'accessToken') || idToken;\n const refreshToken = boundedRefreshTokenField(data);\n const user = userFromIdToken(idToken);\n // Reinitialization while the request was in flight must not install this\n // app's result under a different app's session manager/configuration.\n beforeCommit();\n const rollback = await sessionManager().storeSession(String(user.address || ''), accessToken, idToken, refreshToken, base, beforeCommit);\n // Adopt on EVERY session surface (see establishInlineSession) - hosted\n // popup/redirect completions all land here, so this closes their gap too.\n try {\n await adoptSessionProvider({ provider: oidcProviderSingleton, method: 'email', configKey: 'direct:oidc', user, beforeCommit });\n }\n catch (error) {\n if (typeof rollback === 'function')\n await rollback();\n throw error;\n }\n // OIDC login does establish the issuer's Better Auth browser cookie. Record\n // that fact separately from the provider name so logout clears the cookie\n // and returns through the registered app origin. Stamped AFTER the adoption\n // (setStoredAuthMethod clears the kind marker for non-email methods).\n try {\n getPlatform().storage.setItem(ISSUER_SESSION_KIND_KEY, 'hosted');\n }\n catch ( /* storage unavailable */_b) { /* storage unavailable */ }\n return user;\n}\n","import { invalidatePendingWalletLogin } from './turnkey-wallet-context';\nimport { getConfig, WebSessionManager, ReactNativeSessionManager, getActiveSessionManager, revokeSession } from \"@bounded-sh/core\";\nimport { OffchainAuthProvider } from \"./providers/offchain-auth-provider\";\nimport { getAuthProviderInstance, getCurrentUser, setAuthProviderInstance, setAuthLoading, setCurrentUser, } from \"../global\";\nimport { getPlatform } from \"../platform\";\nimport { commitIssuerLogoutBounce } from \"./issuer-logout-bounce\";\nimport { getStoredAuthMethod, setStoredAuthMethod, getIssuerSessionKind } from \"./stored-auth-method\";\nimport { adoptRebuiltProvider, adoptSessionProvider, clearSessionProviderForLogout, registerAuthRegistrySync } from \"./session-provider\";\nimport { isSupportedSolanaRpcNetwork, normalizeSolanaRpcUrl } from \"./solana-rpc\";\nimport { ensureSolanaMobileWalletRegistered, } from \"./providers/solana-mobile-registration\";\n// An app's own wallet configuration being contradictory is a developer bug, and\n// the SDK keeps it loud rather than quietly dropping the lane. Re-exported so an\n// app that catches it can tell it apart from a wallet simply not being there.\nexport { WalletConfigError } from \"./providers/solana-mobile-registration\";\nlet currentAuthProvider = null;\nlet currentAuthMethod = null;\nlet currentAuthProviderConfigKey = null;\nlet initConfig = null;\n// Keep this module's private registry inside session-provider.ts's atomic adopt/clear\n// blocks. Registered at load so the OIDC/inline paths (oidc-auth.ts), which cannot\n// import this module without a cycle, still update it through adoptSessionProvider.\nregisterAuthRegistrySync((provider, method, configKey) => {\n currentAuthProvider = provider;\n currentAuthMethod = method;\n currentAuthProviderConfigKey = configKey;\n});\nconst objectIdentityKeys = new WeakMap();\nlet nextObjectIdentityKey = 1;\n// --- localStorage helpers: track which auth method created the active session ---\n// (implemented in ./stored-auth-method so the wallet providers share ONE writer)\nfunction getStoredIdToken() {\n try {\n return getActiveSessionManager().getIdToken();\n }\n catch (_a) {\n return null;\n }\n}\nfunction idTokenIsGuest(idToken, expectedAddress) {\n var _a;\n try {\n if (!idToken)\n return false;\n let b64 = (_a = idToken.split('.')[1]) === null || _a === void 0 ? void 0 : _a.replace(/-/g, '+').replace(/_/g, '/');\n if (!b64)\n return false;\n const pad = b64.length % 4;\n if (pad === 2)\n b64 += '==';\n else if (pad === 3)\n b64 += '=';\n const claims = JSON.parse(getPlatform().atob(b64));\n if ((claims === null || claims === void 0 ? void 0 : claims.is_anonymous) !== true)\n return false;\n if (expectedAddress && (claims === null || claims === void 0 ? void 0 : claims['custom:walletAddress']) !== expectedAddress)\n return false;\n return true;\n }\n catch (_b) {\n return false;\n }\n}\nfunction storedSessionIsGuest() {\n return idTokenIsGuest(getStoredIdToken());\n}\n/**\n * Pick the provider used for an ordinary `init({ appId })` restore.\n *\n * Hosted email remains the default and explicit config always wins. The\n * implicit alternatives are sessions this SDK previously created on this\n * origin: a guest session, or a Solana WALLET session (the widget /\n * loginWithWallet record the 'phantom' marker). Restoring the wallet session\n * as 'email' is what used to WIPE it: the EmailAuthProvider restored the\n * bearer, then clearIncompatibleSession() saw stored 'phantom' !== current\n * 'email' and deleted the session on every reload (LF-005). A stored marker\n * still never OVERRIDES app configuration: explicit `authMethod` wins, and a\n * site-policy hard-off (`walletLogin: false` / `requireEmail: true`) keeps the\n * email restore path, whose incompatible-session clear is the designed outcome.\n */\nfunction authMethodForInit(config) {\n if (config.authMethod != null)\n return config.authMethod;\n const stored = getStoredAuthMethod();\n if (stored === 'guest') {\n if (storedSessionIsGuest())\n return 'guest';\n // A marker is only a restore hint; the bearer is authoritative. Repair a\n // stale marker (for example, a crash/failed switch while a human session\n // was still active) instead of relabelling that human bearer as a guest.\n const hasSession = !!getStoredIdToken();\n setStoredAuthMethod(hasSession ? 'email' : null);\n return 'email';\n }\n if (canonicalAuthMethodOrNull(stored) === 'phantom') {\n if (isWalletLoginDisabled(config) || isEmailRequired(config))\n return 'email';\n if (getStoredIdToken())\n return 'phantom';\n // Wallet marker without a bearer: nothing to restore, repair the marker.\n setStoredAuthMethod(null);\n return 'email';\n }\n return 'email';\n}\n/**\n * Collapse the wallet-lane spellings onto ONE canonical auth method.\n *\n * 'wallet' and 'mobile-wallet-adapter' both select the same injected/registry\n * wallet path that `loginWithWallet()` and the login widget already record as\n * 'phantom' (INJECTED_AUTH_METHOD) - Solana Mobile is a wallet you pick inside\n * that lane, not a login method of its own, exactly like Solflare or Backpack.\n * Leaving the spellings distinct means the stored marker and `currentAuthMethod`\n * disagree after a widget login, and the next init()'s clearIncompatibleSession\n * would wipe a perfectly good session on every reload. One string, no drift.\n */\nfunction canonicalWalletAuthMethod(authMethod) {\n return authMethod === 'wallet' || authMethod === 'mobile-wallet-adapter'\n ? 'phantom'\n : authMethod;\n}\n/** Null-tolerant `canonicalWalletAuthMethod`, for comparing a possibly-absent\n * stored marker against a possibly-absent active method. */\nfunction canonicalAuthMethodOrNull(authMethod) {\n return authMethod === null ? null : canonicalWalletAuthMethod(authMethod);\n}\nfunction objectIdentityKey(value) {\n if (!value || (typeof value !== 'object' && typeof value !== 'function'))\n return null;\n const obj = value;\n let id = objectIdentityKeys.get(obj);\n if (!id) {\n id = nextObjectIdentityKey++;\n objectIdentityKeys.set(obj, id);\n }\n return `object:${id}`;\n}\nfunction stableConfigValue(value, seen = new WeakSet()) {\n if (value === null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean')\n return value;\n if (typeof value === 'function')\n return '[function]';\n if (Array.isArray(value))\n return value.map((item) => stableConfigValue(item, seen));\n if (typeof value === 'object') {\n if (seen.has(value))\n return '[circular]';\n seen.add(value);\n const out = {};\n for (const key of Object.keys(value).sort()) {\n out[key] = stableConfigValue(value[key], seen);\n }\n seen.delete(value);\n return out;\n }\n return String(value);\n}\nfunction authProviderConfigKey(config) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n return JSON.stringify({\n authMethod: (_a = config.authMethod) !== null && _a !== void 0 ? _a : null,\n chain: (_b = config.chain) !== null && _b !== void 0 ? _b : null,\n rpcUrl: normalizeSolanaRpcUrl(config.rpcUrl),\n name: (_c = config.name) !== null && _c !== void 0 ? _c : null,\n logoUrl: (_d = config.logoUrl) !== null && _d !== void 0 ? _d : null,\n phantomConfig: stableConfigValue((_e = config.phantomConfig) !== null && _e !== void 0 ? _e : null),\n walletLogin: stableConfigValue((_f = config.walletLogin) !== null && _f !== void 0 ? _f : null),\n injectedWalletConfig: stableConfigValue((_g = config.injectedWalletConfig) !== null && _g !== void 0 ? _g : null),\n // stableConfigValue flattens every function to \"[function]\", so a\n // re-init that swaps ONLY a callback would key identically and keep the\n // cached provider - still holding the previous page's closure, waiting\n // on UI that no longer exists. Key the wallet gesture hook by identity.\n confirmWalletAction: objectIdentityKey((_h = resolveInjectedWalletConfig(config).confirmWalletAction) !== null && _h !== void 0 ? _h : null),\n evmWalletConfig: stableConfigValue((_j = config.evmWalletConfig) !== null && _j !== void 0 ? _j : null),\n privyConfig: stableConfigValue((_k = config.privyConfig) !== null && _k !== void 0 ? _k : null),\n mobileWalletConfig: stableConfigValue((_l = config.mobileWalletConfig) !== null && _l !== void 0 ? _l : null),\n privyExpoProvider: objectIdentityKey((_m = config.privyExpoProvider) !== null && _m !== void 0 ? _m : null),\n });\n}\n/**\n * Clears the session if it was created by a different auth method.\n * Returns true if the session was cleared, false if the session is compatible.\n *\n * Dispatches to the correct session manager based on the current auth method\n * so both web (WebSessionManager) and RN (ReactNativeSessionManager) sessions\n * are properly cleared.\n */\nexport async function clearIncompatibleSession() {\n // Compare CANONICAL methods. A session minted by an older SDK can carry a\n // legacy wallet spelling ('wallet' / 'mobile-wallet-adapter') while\n // currentAuthMethod is always the canonical 'phantom' (getAuthProvider\n // canonicalizes, and every marker writer stores 'phantom'). A raw string\n // compare then reads that as another provider's session and deletes a\n // perfectly good wallet session on every init - the exact wipe class\n // canonicalWalletAuthMethod exists to close, on the stored side.\n if (canonicalAuthMethodOrNull(getStoredAuthMethod()) === canonicalAuthMethodOrNull(currentAuthMethod)) {\n return false;\n }\n // Clear both managers: on web the RN manager is a no-op (not configured),\n // and on RN the web manager is a no-op (no localStorage).\n //\n // AWAITED. Session removal is serialized through a cross-tab lock now, so a\n // fire-and-forget call would let init() reach setCurrentUser while the old\n // credential was still readable — and a request issued in that gap would\n // authenticate as the session we are in the middle of discarding.\n await WebSessionManager.clearSession();\n try {\n await ReactNativeSessionManager.clearSession();\n }\n catch ( /* not configured on web */_a) { /* not configured on web */ }\n setStoredAuthMethod(null);\n return true;\n}\nfunction requireWebPrivyConfig(config) {\n if (!config.privyConfig || typeof config.privyConfig.appId !== 'string' || config.privyConfig.appId.trim() === '') {\n throw new Error('Privy auth requires config.privyConfig.appId; no default Privy app is used.');\n }\n if (!config.privyConfig.config || typeof config.privyConfig.config !== 'object') {\n throw new Error('Privy auth requires config.privyConfig.config for the app-scoped Privy provider.');\n }\n return config.privyConfig;\n}\n/**\n * The ONE authoritative Solana network for the wallet lane.\n *\n * The wallet-lane override wins over the app-wide chain because that is what\n * actually signs: InjectedWalletProvider resolves `walletLogin.network` /\n * `injectedWalletConfig.network` ahead of the top-level chain for both RPC and\n * the Wallet-Standard chain id. Registration, wallet discovery and the provider\n * must all read this same value - the mobile wallet authorizes per cluster, so\n * two answers means authorizing on one and being asked to sign on the other.\n */\nexport function getConfiguredSolanaNetwork(config) {\n const chain = typeof config.chain === 'string' ? config.chain.trim() : '';\n const fromChain = chain === '' || chain === 'offchain' ? null : chain;\n const raw = resolveInjectedWalletConfig(config).network;\n const override = typeof raw === 'string' && raw.trim() !== '' ? raw.trim() : null;\n if (!override)\n return fromChain;\n // An override that no Solana surface can resolve must fail HERE, at\n // configuration time. Letting it through registers the mobile wallet on the\n // mainnet default while every later transaction rejects the same value.\n if (!isSupportedSolanaRpcNetwork(override)) {\n throw new Error(`Bounded: wallet login network \"${override}\" is not supported. ` +\n `Expected one of: solana_devnet, solana_mainnet.`);\n }\n // And it may NAME the app's chain, never contradict it: the wallet would\n // authorize one cluster while the server-side write lane still uses\n // config.chain for its transaction, RPC and reconciliation.\n if (fromChain && fromChain !== override) {\n throw new Error(`Bounded: wallet login network \"${override}\" contradicts chain \"${fromChain}\". ` +\n `Both drive Solana signing, so they must match - drop the wallet-login network, ` +\n `or set the chain you actually mean.`);\n }\n return override;\n}\n// Error thrown when an app tries wallet login WITHOUT opting in at init().\n// Wallet login is OFF by default — most apps never support wallets, so the\n// wallet choice is only usable when the developer explicitly asked for it.\nfunction walletLoginNotEnabledError(method) {\n return new Error(`Bounded: Solana wallet login (authMethod:\"${method}\") is OFF by default and not enabled for this app. ` +\n `Wallet login is opt-in — pass \\`walletLogin: true\\` (or a \\`walletLogin\\` / \\`injectedWalletConfig\\` object) ` +\n `to init() to enable the \"connect wallet\" choice. Most apps don't need it; use hosted login ` +\n `loginWithRedirect(...) for email/social, or signInAnonymously() for zero-friction guests.`);\n}\n/**\n * Whether the app opted into Solana WALLET LOGIN at init(). OPT-IN, default OFF:\n * enabled only when the developer explicitly passes `walletLogin: true` (or a\n * `walletLogin` / `injectedWalletConfig` object). This gate is what keeps wallet\n * login from being usable (or advertised) by the vast majority of apps that\n * never want it — existing apps that don't opt in see ZERO behavior change.\n */\nexport function isWalletLoginEnabled(config) {\n const wl = config.walletLogin;\n if (wl === true)\n return true;\n if (wl && typeof wl === 'object')\n return true;\n if (config.injectedWalletConfig && typeof config.injectedWalletConfig === 'object')\n return true;\n return false;\n}\n/**\n * Whether the app explicitly turned the \"connect wallet\" lane OFF at init()\n * (`walletLogin: false`). This is the hard opt-OUT the unified widget honors: it\n * hides the wallet option entirely even when an injected wallet is detected and\n * even if a per-call `openBoundedWidget({ wallet: true })` asked for it.\n */\nexport function isWalletLoginDisabled(config) {\n return config.walletLogin === false;\n}\n/**\n * Site policy: the app requires an email on file for every user (`requireEmail:\n * true`). Native wallet login carries no email, so the unified widget suppresses\n * the wallet lane when this is set - email/social (which yields an email) remain.\n * This lets a policy deny wallet-only accounts without touching per-call options.\n */\nexport function isEmailRequired(config) {\n return config.requireEmail === true;\n}\n/** The config passed to the last `init()`, or null before init. Read-only view\n * for runtime surfaces (e.g. the unified login widget) that need wallet/rpc\n * settings without re-plumbing them through every call. */\nexport function getInitConfig() {\n return initConfig;\n}\n/**\n * Which LOGIN mode the app runs (default \"turnkey\"). Turnkey-native email OTP keeps\n * code entry inline in the unified widget (no OIDC popup), and Bounded mints the\n * session from Turnkey's verification. Apps can explicitly select \"bounded\" for the\n * legacy Better Auth email flow. A per-call openBoundedWidget option can override it.\n */\nexport function resolveAuthMode(config) {\n return config.authMode === 'bounded' ? 'bounded' : 'turnkey';\n}\n/**\n * Resolve the injected-wallet-config the provider should use, merging the\n * `walletLogin` object form (if the app passed one) over `injectedWalletConfig`.\n * `walletLogin: true` (bare boolean) enables login with default provider\n * discovery (Phantom-first) and no RPC override.\n */\nfunction resolveInjectedWalletConfig(config) {\n const base = (config.injectedWalletConfig && typeof config.injectedWalletConfig === 'object')\n ? config.injectedWalletConfig\n : {};\n const wl = config.walletLogin;\n if (wl && typeof wl === 'object')\n return Object.assign(Object.assign({}, base), wl);\n return base;\n}\nfunction optionalProviderError(method) {\n return new Error(`Bounded authMethod \"${method}\" uses an optional wallet/provider SDK that is no longer ` +\n `pulled into the default @bounded-sh/client entry. Use hosted login ` +\n `loginWithRedirect(...) for Bounded Auth, signInAnonymously() for guests, ` +\n `or install/import an explicit wallet-provider entry once your app opts into \"${method}\".`);\n}\nexport { SOLANA_DEVNET_RPC_URL, SOLANA_MAINNET_RPC_URL, } from \"./solana-rpc\";\nexport async function getAuthProvider(config) {\n var _a;\n const nextProviderConfigKey = config ? authProviderConfigKey(config) : null;\n if (currentAuthProvider && (!config || currentAuthProviderConfigKey === nextProviderConfigKey)) {\n return currentAuthProvider;\n }\n if (!config) {\n throw new Error(\"Config is required to initialize auth provider\");\n }\n if (currentAuthProvider && currentAuthProviderConfigKey !== nextProviderConfigKey) {\n currentAuthProvider = null;\n currentAuthMethod = null;\n currentAuthProviderConfigKey = null;\n }\n initConfig = config;\n // Keep what the app actually wrote for error text; everything else runs on\n // the canonical method so exactly one string reaches storage and the issuer.\n const requestedAuthMethod = authMethodForInit(config);\n const authMethod = canonicalWalletAuthMethod(requestedAuthMethod);\n const rpcUrl = normalizeSolanaRpcUrl(config.rpcUrl);\n const configuredNetwork = getConfiguredSolanaNetwork(config);\n currentAuthMethod = authMethod;\n // Clear, actionable error when the BROWSER build (`bounded-sh`) is loaded in a\n // non-browser (Node) runtime. The wallet providers below need `window`; without\n // it they throw a cryptic \"PhantomWalletProvider can only be instantiated in a\n // browser environment\" deep in init(). The server build (`bounded-sh/server`)\n // never resolves these methods (it signs with a keypair), so this can't fire for\n // it — it only converts the cryptic browser-in-Node crash into a useful message.\n // Canonical methods only - the wallet-lane spellings already normalized above.\n const browserWalletMethods = ['phantom', 'evm-wallet', 'rainbowkit', 'coinbase-smart-wallet', 'onboard', 'privy'];\n if (typeof window === 'undefined' && browserWalletMethods.includes(authMethod)) {\n throw new Error(`bounded-sh: '${authMethod}' auth requires a browser, but no \\`window\\` was found ` +\n `(you're likely running in Node). In server/Node code, import from 'bounded-sh/server' ` +\n `instead of 'bounded-sh' — it signs with an explicit keypair passed to createWalletClient({ keypair }) ` +\n `and needs no browser.`);\n }\n switch (authMethod) {\n case \"email\":\n // Hosted Bounded Auth sessions restore through the same session\n // manager as legacy email sessions. Human login should be started\n // with loginWithRedirect(); this provider is kept as the restore and\n // logout surface for those sessions.\n currentAuthProvider = new (await import(\"./providers/email-auth-provider\")).EmailAuthProvider();\n break;\n case \"phantom\": {\n // First-class Solana WALLET LOGIN (the poof/TaroBase-style \"connect\n // wallet\" choice), and the canonical method every wallet-lane\n // spelling normalizes to. Slim path: rides the injected Solana\n // provider a browser wallet exposes (Phantom's\n // window.phantom.solana, or any Wallet-Standard window.solana). The\n // user's REAL wallet becomes @user.address; login = SIWS; full local\n // signing surface. No React and no heavy wallet-SDK peer dep.\n // Solana Mobile's wallet needs no method of its own: it is\n // registered below as a regular Wallet Standard wallet and then\n // found by the same discovery as every other wallet.\n //\n // OPT-IN, DEFAULT OFF: only selectable by CONFIGURATION when the app\n // explicitly enabled it at init() (walletLogin: true). Otherwise\n // throw a clear, actionable error — most apps never support wallets,\n // so we never construct the provider (or pay its lazy chunk) for\n // them. A RESTORE of a stored wallet session (authMethodForInit) is\n // not configuration: the widget's wallet lane can be enabled\n // per-call or by wallet detection without the init() opt-in, and the\n // session it minted must survive the next reload.\n if (config.authMethod != null && !isWalletLoginEnabled(config)) {\n throw walletLoginNotEnabledError(requestedAuthMethod);\n }\n // Surface the Solana Mobile wallet (Saga/Seeker) on capable devices\n // BEFORE the provider exists, so a session restore followed by a\n // signing call can resolve it from the registry. No-op off-Android.\n // A failure is NOT fatal to init - an app whose users have injected\n // wallets must still start - and is not cached, so the next attempt\n // (login(), a widget open) retries instead of living with a page\n // that permanently has no phone wallet.\n // Registered on a marker RESTORE too, not just an opt-in: a session\n // the widget's wallet lane minted (per-call `wallet: true`, no init\n // opt-in) can belong to the phone wallet, and leaving it\n // unregistered restores a session that then cannot sign - the\n // registry is the only place an MWA wallet is ever found\n // (injected-wallet-provider.resolveProvider). This cannot turn the\n // widget's lane on: `detected` filters Solana Mobile out by name\n // (bounded-login-widget.ts), so registration never counts as\n // evidence the user has a wallet.\n await ensureSolanaMobileWalletRegistered(config, configuredNetwork);\n const { InjectedWalletProvider } = await import(\"./providers/injected-wallet-provider\");\n currentAuthProvider = new InjectedWalletProvider(resolveInjectedWalletConfig(config), rpcUrl, configuredNetwork);\n break;\n }\n case \"evm-wallet\": {\n // First-class EVM WALLET LOGIN (BYO Ethereum wallet via SIWE). Slim\n // path: rides the EIP-1193 injected provider a browser wallet exposes\n // (MetaMask / Rabby / Coinbase Wallet / any window.ethereum), discovered\n // via EIP-6963. The user's REAL EVM wallet becomes @user.evmAddress;\n // login = SIWE (EIP-4361 personal_sign). No viem/ethers and no React.\n // Selecting authMethod:'evm-wallet' IS the opt-in — pass evmWalletConfig\n // to point at a specific wallet or set chainId/domain.\n const evmWalletConfig = ((_a = config.evmWalletConfig) !== null && _a !== void 0 ? _a : {});\n const { InjectedEvmWalletProvider } = await import(\"./providers/injected-evm-wallet-provider\");\n currentAuthProvider = new InjectedEvmWalletProvider(evmWalletConfig);\n break;\n }\n case \"rainbowkit\":\n console.warn(\"Rainbow Kit auth is not yet supported.\");\n break;\n case \"privy\": {\n throw optionalProviderError(\"privy\");\n }\n case \"privy-expo\":\n // React Native Privy: @privy-io/expo is hook-based, so the host app must\n // create a PrivyExpoProvider, bridge the Privy hooks via setPrivyMethods()\n // from inside its <PrivyProvider> tree, and pass it as config.privyExpoProvider.\n if (!config.privyExpoProvider) {\n throw new Error('authMethod \"privy-expo\" requires a PrivyExpoProvider instance passed as config.privyExpoProvider. ' +\n 'Create the provider, call setPrivyMethods() from your React Native component tree, then pass it to init().');\n }\n currentAuthProvider = config.privyExpoProvider;\n break;\n case \"onboard\":\n console.warn(\"Onboard auth is not yet supported.\");\n break;\n case \"guest\":\n // Anonymous auth: a device-local ed25519 keypair signs the challenge.\n currentAuthProvider = new (await import(\"./providers/guest-auth-provider\")).GuestAuthProvider();\n break;\n default:\n break;\n }\n if (!currentAuthProvider) {\n throw new Error(\"No auth provider was selected. Does your app have a supported auth method or chain configured?\");\n }\n // Wrap with OffchainAuthProvider for offchain/poofnet chain\n if (config.chain === \"offchain\") {\n console.log(\"[Offchain] Wrapping auth provider for Poofnet transaction tracking\");\n currentAuthProvider = new OffchainAuthProvider(currentAuthProvider);\n }\n currentAuthProviderConfigKey = nextProviderConfigKey;\n return currentAuthProvider;\n}\n/**\n * Browser/React-Native-only auth flows (guest, email) persist their session via\n * WebSessionManager, which is gated to environments that have `window` /\n * `localStorage`. In Node those stores no-op, so the session is minted on the\n * server but never saved locally — the caller looks logged in yet every request\n * 403s. Fail fast with actionable guidance instead of that silent footgun.\n */\nfunction assertBrowserAuthEnv(method) {\n if (typeof window === 'undefined') {\n throw new Error(`bounded-sh: '${method}' is a browser/React-Native auth flow — it needs \\`window\\`/\\`localStorage\\` ` +\n `to persist the session, which Node doesn't have (the session would be silently dropped, then every ` +\n `request 403s). In Node/server code import from 'bounded-sh/server' and sign with a keypair ` +\n `by using createWalletClient({ keypair }).`);\n }\n}\n/**\n * Anonymous (\"guest\") sign-in: zero-friction auth backed by a device-local\n * ed25519 keypair (no email, no wallet, no popup). The keypair is generated +\n * persisted on the device; its public key becomes `@user.address`. Durable\n * across reloads. Upgrade later by linking an email; transfer accounts via the\n * ownership-as-data pattern. `init()` must have run first. Browser/RN only.\n *\n * OFFCHAIN ONLY. A guest's `@user.address` does NOT unlock onchain writes: the\n * platform refuses any guest write to an `onchain: true` collection with 403\n * `anonymous_onchain_blocked`, identically on poofnet, devnet, and mainnet, and\n * this provider's `signTransaction` throws. Prompt a real login before the first\n * onchain write.\n */\nexport async function signInAnonymously() {\n var _a;\n assertBrowserAuthEnv('signInAnonymously');\n // Resolve configuration before taking the transaction snapshot. Although\n // getConfig is normally already resolved after init(), it is asynchronous;\n // another login that finishes during that await must be part of the prior\n // state we preserve, not accidentally split across old/new snapshots.\n const coreConfig = await getConfig();\n const previousAuthProvider = currentAuthProvider;\n const previousAuthMethod = currentAuthMethod;\n const previousProviderConfigKey = currentAuthProviderConfigKey;\n const previousStoredAuthMethod = getStoredAuthMethod();\n const previousGlobalProvider = getAuthProviderInstance();\n const previousUser = getCurrentUser();\n const previousCoreProvider = coreConfig.authProvider;\n const previousCoreAuthMethod = coreConfig.authMethod;\n const previousIdToken = getStoredIdToken();\n // Lazy-load the guest provider so its ed25519/web3 dependencies stay out of\n // the main bundle for data-only apps. Specifier is a static string literal\n // so bundle-splitting can see it.\n const provider = new (await import(\"./providers/guest-auth-provider\")).GuestAuthProvider();\n setAuthLoading(true); // reflect \"signing in…\" while the guest keypair session is minted\n // adoptSessionProvider awaits only getConfig() (already resolved here) and then\n // runs every write - provider/method/config/marker/user - in one synchronous\n // block, so listeners and concurrent imperative calls can never observe a\n // mixed identity.\n const commit = (user) => adoptSessionProvider({ provider, method: 'guest', configKey: 'direct:guest', user });\n try {\n // Mint/store first while every shared provider surface remains on the\n // previous identity. The provider also withholds setCurrentUser here.\n const user = await provider.loginForProviderSwitch();\n if (!user)\n return null;\n // A human login may have completed after the guest request persisted but\n // before its promise resumed here. Re-check the live bearer immediately\n // before commit so a late guest result cannot overwrite that newer user.\n if (!user.address || !idTokenIsGuest(getStoredIdToken(), user.address)) {\n throw new Error('Anonymous sign-in was superseded by another session.');\n }\n return await commit(user);\n }\n catch (error) {\n const currentIdToken = getStoredIdToken();\n if (currentIdToken !== previousIdToken && idTokenIsGuest(currentIdToken)) {\n // Defensive applied-yet-error reconciliation: if storage contains a\n // valid guest bearer/key despite the thrown write, commit that truth\n // instead of restoring a human UI over a guest token.\n let recovered = null;\n try {\n recovered = await provider.restoreSessionForProviderSwitch();\n }\n catch (_b) {\n try {\n await getActiveSessionManager().clearSession();\n }\n catch ( /* fail closed below */_c) { /* fail closed below */ }\n }\n if (recovered) {\n return await commit(recovered);\n }\n // restoreSessionForProviderSwitch fails closed and clears a split\n // bearer. Do not resurrect a user object that no longer has its token.\n setCurrentUser(null);\n }\n else if (currentIdToken === previousIdToken) {\n // The staged attempt never changed the bearer; every shared provider\n // surface stayed untouched, so restore the exact prior user/marker.\n currentAuthProvider = previousAuthProvider;\n currentAuthMethod = previousAuthMethod;\n currentAuthProviderConfigKey = previousProviderConfigKey;\n coreConfig.authProvider = previousCoreProvider;\n coreConfig.authMethod = previousCoreAuthMethod;\n setAuthProviderInstance(previousGlobalProvider);\n setStoredAuthMethod(previousStoredAuthMethod);\n if (getCurrentUser() !== previousUser)\n setCurrentUser(previousUser);\n }\n else {\n // A different non-guest token won while this staged guest mint was in\n // flight (another tab/popup/login). The guest attempt never mutated\n // shared provider state, so preserve that winner exactly. Align only\n // this module's private registry to the provider the winner installed;\n // never overwrite its core/global provider, marker, or user snapshot.\n const concurrentProvider = (_a = getAuthProviderInstance()) !== null && _a !== void 0 ? _a : coreConfig.authProvider;\n if (concurrentProvider)\n currentAuthProvider = concurrentProvider;\n const concurrentStoredMethod = getStoredAuthMethod();\n currentAuthMethod = concurrentStoredMethod && concurrentStoredMethod !== 'guest'\n ? concurrentStoredMethod\n : (previousAuthMethod && previousAuthMethod !== 'guest' ? previousAuthMethod : 'email');\n currentAuthProviderConfigKey = previousProviderConfigKey;\n }\n throw error;\n }\n finally {\n setAuthLoading(false);\n }\n}\n/**\n * Log in with Privy as a co-equal route — selectable at runtime alongside\n * `login()` (email/wallet) and `signInAnonymously()`, without re-`init()`.\n *\n * On REACT NATIVE the host must have created a PrivyExpoProvider and bridged the\n * Privy hooks via setPrivyMethods() (pass it as `config.privyExpoProvider` to\n * init()) — RN can't construct it here because the Privy hooks live in the app's\n * component tree. Web Privy is no longer loaded through the default client entry;\n * opt into a dedicated provider entry when your app needs it.\n *\n * Either way the Privy Solana wallet signs the SIWS challenge, so the session is\n * minted via the same wallet path as Phantom and shares the unified session store\n * (web localStorage / RN storage) and identity model. `init()` must have run first.\n */\nexport async function loginWithPrivy(options) {\n assertBrowserAuthEnv('loginWithPrivy');\n const coreConfig = await getConfig();\n let provider;\n if (getPlatform().hasDOM) {\n throw optionalProviderError(\"privy\");\n }\n if (!coreConfig.privyExpoProvider) {\n throw new Error('loginWithPrivy() on React Native requires a PrivyExpoProvider bridged from your app: ' +\n 'create it, call setPrivyMethods() inside <PrivyProvider>, and pass it as config.privyExpoProvider to init().');\n }\n provider = coreConfig.privyExpoProvider;\n const authMethod = 'privy-expo';\n if (coreConfig.chain === 'offchain') {\n provider = new OffchainAuthProvider(provider);\n }\n // Snapshot every provider-registry surface BEFORE touching any of them, then\n // commit only on a real user - mirroring signInAnonymously(). A cancelled or\n // failed Privy login (provider.login() returns null or throws) must never\n // leave signing/logout/restore routed to Privy while the live bearer session\n // still belongs to the previous provider. Staging nothing up front means the\n // restore is a defensive no-op today and stays correct if login() ever\n // mutates shared state.\n const previousAuthProvider = currentAuthProvider;\n const previousAuthMethod = currentAuthMethod;\n const previousProviderConfigKey = currentAuthProviderConfigKey;\n const previousStoredAuthMethod = getStoredAuthMethod();\n const previousGlobalProvider = getAuthProviderInstance();\n const previousCoreProvider = coreConfig.authProvider;\n const previousCoreAuthMethod = coreConfig.authMethod;\n const restorePreviousProvider = () => {\n currentAuthProvider = previousAuthProvider;\n currentAuthMethod = previousAuthMethod;\n currentAuthProviderConfigKey = previousProviderConfigKey;\n coreConfig.authProvider = previousCoreProvider;\n coreConfig.authMethod = previousCoreAuthMethod;\n setAuthProviderInstance(previousGlobalProvider);\n setStoredAuthMethod(previousStoredAuthMethod);\n };\n if (typeof provider.setLoginOverrides === 'function') {\n provider.setLoginOverrides(options !== null && options !== void 0 ? options : null);\n }\n let result;\n try {\n result = await provider.login();\n }\n catch (error) {\n restorePreviousProvider();\n throw error;\n }\n if (!result) {\n restorePreviousProvider();\n return null;\n }\n // Commit the Privy provider only now that login() returned a real user, so\n // no observer can see a mixed provider/method/config/global/marker state.\n await adoptSessionProvider({\n provider,\n method: authMethod,\n configKey: authProviderConfigKey(Object.assign(Object.assign({}, coreConfig), { authMethod: authMethod })),\n });\n return Object.assign(Object.assign({}, result), { provider });\n}\n// The SHARED half of readiness: resolved config and the wallet-provider chunk.\n// Cached on success and forever - a loaded chunk does not unload - and dropped\n// on failure so it can be retried. Deliberately NOT keyed by config: neither\n// piece depends on which Solana network the app chose.\nlet sharedWalletReady = null;\n/**\n * Prepare the work EVERY wallet login needs, whichever wallet is used: resolved\n * configuration and the code-split wallet provider. Enough on its own when the\n * caller already knows which wallet it wants.\n *\n * Rejects if that work fails, which means there is no wallet login at all.\n */\nexport function ensureSharedWalletLoginReady() {\n if (!sharedWalletReady) {\n sharedWalletReady = (async () => {\n await getConfig();\n await import(\"./providers/injected-wallet-provider\");\n })().catch((error) => {\n sharedWalletReady = null;\n throw error;\n });\n }\n return sharedWalletReady;\n}\n/**\n * Prepare everything a wallet login needs, and resolve only when it is ready.\n *\n * `loginWithWallet` resolves config, code-splits the provider and registers the\n * mobile wallet. On a cold page that work would otherwise land between the\n * user's tap and the wallet handoff - the pre-connect delay that costs Chrome's\n * transient activation and makes the mobile wallet's intent navigation fail. So\n * call this when your wallet control becomes visible and AWAIT it before\n * enabling that control.\n *\n * Must be called after `init()`: the mobile wallet is registered for the app's\n * configured Solana network, and that registration cannot be withdrawn.\n *\n * REJECTS only when the SHARED work fails - there is then no wallet login at\n * all. A mobile-wallet failure instead resolves with `mobileWallet: 'failed'`,\n * because every injected wallet still works and a caller that offers those\n * should carry on without the phone wallet. The mobile half keeps its own\n * per-configuration memo, so a failure there stays retryable and a re-init for\n * another network is never served the previous registration.\n */\nexport async function ensureWalletLoginReady() {\n const cfg = initConfig;\n if (!cfg) {\n throw new Error('Bounded: the wallet lane must be prepared after init() - the mobile wallet is ' +\n 'registered for the app\\'s configured Solana network, and that registration ' +\n 'cannot be changed afterwards.');\n }\n await ensureSharedWalletLoginReady();\n const mobileWallet = await ensureSolanaMobileWalletRegistered(cfg, getConfiguredSolanaNetwork(cfg));\n return { mobileWallet };\n}\n/** @deprecated Use {@link ensureWalletLoginReady}, which reports what is ready. */\nexport function preloadWalletLogin() {\n return ensureWalletLoginReady();\n}\n/**\n * Log in with an injected Solana WALLET (Phantom / Solflare / Backpack / any\n * Wallet-Standard `window.solana`) as a co-equal RUNTIME route - selectable\n * alongside `login()` / hosted `loginWithPopup()` / `signInAnonymously()` WITHOUT\n * re-`init()`. This is the \"Continue with wallet\" choice the unified Bounded\n * login widget offers: it NEVER touches Better Auth - the user's real wallet\n * becomes `@user.address` and login is a SIWS signature.\n *\n * `getProvider` pins a specific discovered wallet (e.g. when the widget lists\n * several); omit it to use Phantom-first discovery. Must be called from a user\n * gesture so the wallet's connect prompt is allowed. `init()` must have run first.\n */\nexport async function loginWithWallet(options) {\n var _a, _b;\n assertBrowserAuthEnv('loginWithWallet');\n const coreConfig = await getConfig();\n const cfg = initConfig !== null && initConfig !== void 0 ? initConfig : {};\n const base = resolveInjectedWalletConfig(cfg);\n const confirmSignIn = options === null || options === void 0 ? void 0 : options.confirmSignIn;\n const injectedConfig = Object.assign(Object.assign(Object.assign({}, base), ((options === null || options === void 0 ? void 0 : options.getProvider) ? { getProvider: options.getProvider } : {})), (confirmSignIn\n ? {\n confirmWalletAction: (action) => {\n var _a, _b;\n return (action === 'login'\n ? confirmSignIn()\n : (_b = (_a = base.confirmWalletAction) === null || _a === void 0 ? void 0 : _a.call(base, action)) !== null && _b !== void 0 ? _b : Promise.resolve());\n },\n }\n : {}));\n const rpcUrl = normalizeSolanaRpcUrl(cfg.rpcUrl);\n const network = getConfiguredSolanaNetwork(cfg);\n // Resolve the configured getter ONCE and log in with exactly what it\n // returned. It is app code with no idempotence contract, so asking it twice\n // - once to decide what to prepare, once to actually connect - lets the two\n // answers disagree: a getter that yields a wallet and then nothing prepares\n // for a pinned wallet and then logs in with whatever discovery finds, and\n // one that yields nothing and then a wallet prepares the mobile registry\n // after the tap for a wallet it never uses.\n const pinnedProvider = (_b = (_a = injectedConfig.getProvider) === null || _a === void 0 ? void 0 : _a.call(injectedConfig)) !== null && _b !== void 0 ? _b : null;\n const attemptConfig = Object.assign(Object.assign({}, injectedConfig), { \n // Still a fallthrough when it resolved nothing, exactly as before - the\n // difference is that the answer is now fixed for this attempt.\n getProvider: () => pinnedProvider });\n // Idempotent: a caller that prepared the lane (the widget, or an app that\n // awaited ensureWalletLoginReady before enabling its button) has already\n // paid for this, so nothing activation-sensitive happens after the tap. A\n // caller that did not gets it here - late, but correct. A SHARED failure is\n // fatal and propagates; there is no wallet login without it.\n //\n // \"Pinned\" is about the EFFECTIVE resolution, not whether a getter was\n // passed: a configured walletLogin.getProvider pins just as much as a\n // per-call one, and a getter that returns nothing falls through to discovery\n // (and so to the mobile wallet). With a real wallet in hand only the shared\n // half is needed - re-attempting a failed mobile registration would be\n // exactly the work-after-the-tap this exists to avoid, for a wallet this\n // login is not even using.\n if (pinnedProvider)\n await ensureSharedWalletLoginReady();\n else\n await ensureWalletLoginReady();\n const { InjectedWalletProvider } = await import(\"./providers/injected-wallet-provider\");\n // Keep the RAW wallet provider: the offchain wrapper forwards only a fixed\n // set of methods, so cleanup below must speak to the provider that actually\n // holds the config rather than to whatever is wrapping it.\n const walletProvider = new InjectedWalletProvider(attemptConfig, rpcUrl, network);\n let provider = walletProvider;\n if (coreConfig.chain === 'offchain')\n provider = new OffchainAuthProvider(provider);\n // The provider stores the session + user + auth-method marker itself on success.\n let user;\n try {\n user = await provider.login();\n }\n finally {\n // The per-call gesture is a ONE-SHOT closure over this caller's UI (the\n // widget's view, a button). This provider outlives the attempt once it\n // is committed as the active one, so leaving the hook installed would\n // make a LATER login wait on a dismissed modal or a detached button that\n // can never resolve. Drop it on every exit and fall back to whatever\n // init() configured.\n if (confirmSignIn) {\n walletProvider.setWalletConfig(Object.assign(Object.assign({}, attemptConfig), { confirmWalletAction: base.confirmWalletAction }));\n }\n }\n if (!user)\n return null;\n await adoptSessionProvider({\n provider,\n method: 'phantom',\n configKey: authProviderConfigKey(Object.assign(Object.assign({}, cfg), { authMethod: 'phantom' })),\n });\n return Object.assign(Object.assign({}, user), { provider });\n}\nexport async function login(options) {\n // Re-initialize provider if it was cleared by logout\n if (!currentAuthProvider && initConfig) {\n currentAuthProvider = await getAuthProvider(initConfig);\n await adoptRebuiltProvider(currentAuthProvider, currentAuthMethod);\n }\n if (!currentAuthProvider) {\n throw new Error(\"Auth provider not initialized. Please call init() first.\");\n }\n // login() runs inside the app's click handler, so only ALREADY-PREPARED work\n // is safe here: retrying the mobile registration would spend the activation\n // the wallet handoff needs. The shared half is a no-op once prepared, and\n // the honest failure for an unprepared page is the provider's own \"no wallet\n // found\", which names ensureWalletLoginReady().\n if (currentAuthMethod === 'phantom')\n await ensureSharedWalletLoginReady();\n // Forward per-call overrides to providers that support them (duck-typed to stay\n // lazy-load safe — no direct import of PhantomWalletProvider here).\n // Always call (even with null) so previous overrides are cleared when this\n // login() is invoked without options — early-return paths inside the provider\n // bypass the .finally() cleanup, so we reset here too.\n if (typeof currentAuthProvider.setLoginOverrides === 'function') {\n currentAuthProvider.setLoginOverrides(options !== null && options !== void 0 ? options : null);\n }\n const loginResult = await currentAuthProvider.login();\n if (loginResult) {\n // Store which auth method was used so we restore the right provider on reload\n setStoredAuthMethod(currentAuthMethod);\n // If this top-level tab was opened solely to perform the wallet connect for\n // an embedded preview (?poofConnect — see openTopLevelForConnect in the\n // phantom provider), close it now that the session is established. The\n // session reflects back into the preview's iframe via same-origin storage.\n try {\n if (typeof window !== 'undefined'\n && window.top === window.self\n && new URLSearchParams(window.location.search).get('poofConnect') === '1') {\n setTimeout(() => { try {\n window.close();\n }\n catch ( /* noop */_a) { /* noop */ } }, 400);\n }\n }\n catch ( /* noop */_a) { /* noop */ }\n return Object.assign(Object.assign({}, loginResult), { provider: currentAuthProvider });\n }\n return null;\n}\nexport function getCurrentAuthMethod() {\n return currentAuthMethod;\n}\n// The hosted issuer keeps its OWN browser session (the Better Auth cookie on\n// auth.bounded.sh) — clearing the app-local session alone leaves it alive, so\n// the next loginWithRedirect() silently re-signs the user in as the SAME\n// account: \"sign out\" that never lets you re-choose. The issuer ships\n// GET /logout for exactly this — it expires the session cookies and bounces\n// back. #228 replaced the issuer's old hostname allowlist with a live-session\n// identity match + originAllowedForApp (which a mapped custom domain satisfies),\n// so the client no longer mirrors a host list: end the issuer session with a\n// top-level bounce on ANY https (or loopback) context and let the issuer decide\n// the return. A hostile origin still gets the user signed out and its return\n// refused there. Only genuinely un-bounceable contexts (no window, framed, or a\n// non-loopback http origin the issuer would reject anyway) stay local-only.\nfunction issuerLogoutBounceUrl(issuerBase, idTokenHint) {\n if (typeof window === 'undefined' || typeof document === 'undefined')\n return null; // RN/Node: no shared cookie jar to clear this way\n try {\n if (window.top !== window.self)\n return null; // framed: SameSite=Lax cookies don't ride iframe navigations\n }\n catch (_a) {\n return null;\n }\n try {\n const here = new URL(window.location.href);\n const host = here.hostname;\n const isLocalhost = host === 'localhost' || host === '127.0.0.1' || host.endsWith('.localhost');\n // HIGH-003: no hostname allowlist - it was a stale mirror of a server rule #228\n // deleted (the suffix match was itself a vuln). Bounce on any top-level https (or\n // loopback) origin, including mapped custom domains; the issuer's originAllowedForApp\n // binding decides the return authoritatively on the next hop. Off-https non-loopback\n // origins the issuer rejects anyway, so they stay local-only.\n const trusted = here.protocol === 'https:' || isLocalhost;\n if (!trusted)\n return null;\n const base = issuerBase.replace(/\\/$/, '');\n // #228: send the id_token_hint so the issuer can bind the post-logout redirect to this\n // session + app + registered origin. Without it the issuer safely falls back to its own\n // origin (it no longer trusts a bare suffix match), so the return-to-app bounce is a no-op.\n const hint = idTokenHint ? `&id_token_hint=${encodeURIComponent(idTokenHint)}` : '';\n return `${base}/logout?redirect_uri=${encodeURIComponent(here.href)}${hint}`;\n }\n catch (_b) {\n return null;\n }\n}\n// #228 helper, deliberately OUTSIDE logout(): the logout body is source-guarded\n// against any `catch` so a revokeSession failure can never be swallowed, and a\n// missing id token is the one benign absence worth tolerating here.\nfunction idTokenHintOrNull(sm) {\n try {\n return sm.getIdToken();\n }\n catch (_a) {\n return null; /* no id token to hint with */\n }\n}\nasync function exchangeLogoutHint(issuerBase, idToken) {\n if (!idToken)\n return null;\n try {\n const res = await fetch(`${issuerBase.replace(/\\/+$/, '')}/session/logout-hint`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ idToken }),\n });\n if (!res.ok)\n return null;\n const body = await res.json().catch(() => null);\n return typeof (body === null || body === void 0 ? void 0 : body.logoutHint) === 'string' && body.logoutHint ? body.logoutHint : null;\n }\n catch (_a) {\n return null;\n }\n}\n// Also OUTSIDE logout() for the same source-guard reason: destroying the device's 24h\n// wallet signing session is best-effort BY CONTRACT (it needs a hidden signer iframe,\n// which can be blocked or offline), so its failures are the one thing logout may\n// tolerate - never revokeSession's. Lazy import per this module's rule (the signer\n// bridge is browser-only machinery). Never rejects.\nasync function sweepTurnkeySigningSession(idToken) {\n try {\n await (await import(\"./turnkey-signer-bridge\")).clearTurnkeySigningSession(idToken);\n }\n catch ( /* best-effort: never block or fail logout on the sweep */_a) { /* best-effort: never block or fail logout on the sweep */ }\n}\nexport async function logout(options) {\n invalidatePendingWalletLogin();\n // Re-initialize the provider if it was cleared by a prior logout — the exact mirror\n // of login()'s self-heal above. Every session-establishment path now adopts through\n // session-provider.ts, so this is a REPAIR (the registry was cleared by a previous\n // logout), not a missed establishment: without it, logging out a session established\n // after that logout would throw \"not initialized\" at the user. Rebuilding from\n // initConfig is idempotent and cheap (same config key), and deliberately does not\n // touch the stored marker - see adoptRebuiltProvider.\n if (!currentAuthProvider && initConfig) {\n currentAuthProvider = await getAuthProvider(initConfig);\n await adoptRebuiltProvider(currentAuthProvider, currentAuthMethod);\n }\n if (!currentAuthProvider) {\n throw new Error(\"Auth provider not initialized. Please call init() first.\");\n }\n // Revoke the refresh-token family server-side BEFORE the provider clears the\n // local session (so we still have the token + issuer to revoke). If revoke\n // fails, surface the error and leave local state intact so callers do not\n // mistake a local-only logout for server revocation.\n const sm = getActiveSessionManager();\n const refreshToken = sm.getRefreshToken();\n const sessionIssuer = sm.getIssuer();\n // #228: capture the id token NOW, before currentAuthProvider.logout() clears the session, so we\n // can hand it to the issuer /logout as an id_token_hint (which binds the post-logout redirect).\n const idTokenHint = idTokenHintOrNull(sm);\n if (refreshToken)\n await revokeSession(refreshToken, sessionIssuer !== null && sessionIssuer !== void 0 ? sessionIssuer : undefined);\n // Logout must DESTROY the device's 24h wallet signing session, not leave it to\n // expire (TURNKEY-EMAIL-SIGNING-PLAN.md). It lives on the signer origin, so the\n // sweep is a hidden signer-iframe exchange; start it now (after revocation is\n // committed - a failed logout leaves the still-logged-in user their session) and\n // let it overlap the provider teardown. sweepTurnkeySigningSession never rejects.\n const signingSessionSweep = sweepTurnkeySigningSession(idTokenHint);\n // Only OIDC-hosted sessions own an issuer browser cookie. Turnkey-native\n // email OTP is also an email auth method, but it mints the app session\n // inline and has no issuer cookie to clear. Use the explicit session-kind\n // marker when present. The auth-method fallback preserves correct logout\n // behavior for hosted sessions created by older SDK versions.\n const issuerSessionKind = getIssuerSessionKind();\n const wasHosted = issuerSessionKind === 'hosted'\n || (issuerSessionKind === null\n && (currentAuthMethod === 'email' || getStoredAuthMethod() === 'email'));\n await currentAuthProvider.logout();\n // Clear EVERY session-ownership pointer, including core's signing pointer\n // (getConfig().authProvider). Leaving the core pointer on the dead provider is\n // what wedged wallet -> email switches: the next inline email login only set the\n // singleton, so onchain writes still signed through the logged-out wallet\n // provider and its DS2-0369 account guard threw on every set().\n await clearSessionProviderForLogout();\n // Hold logout open until the signing-session sweep settles (it is bounded by its\n // own short timeout), so a hosted bounce navigation cannot cancel it mid-flight.\n await signingSessionSweep;\n if (wasHosted && !(options === null || options === void 0 ? void 0 : options.keepIssuerSession)) {\n // wasHosted is read from GLOBAL storage markers, but the bounce destination is\n // THIS session's OWN issuer. A mixed login history (hosted email login, then a\n // wallet login) leaves the markers saying \"hosted\" while the live session was\n // minted by the WALLET issuer - which ships no /logout route, so the reader\n // lands on a 404 instead of back in the app. Bounce only when the session's\n // issuer IS the hosted one. A skipped bounce costs nothing: the refresh-token\n // family is already revoked above, and a wallet session owns no issuer cookie.\n const hostedIssuer = (await getConfig()).humanAuthApiUrl || 'https://auth.bounded.sh';\n const trimSlash = (url) => url.replace(/\\/+$/, '');\n if (sessionIssuer && trimSlash(sessionIssuer) !== trimSlash(hostedIssuer))\n return;\n const logoutHint = await exchangeLogoutHint(hostedIssuer, idTokenHint);\n const bounce = issuerLogoutBounceUrl(hostedIssuer, logoutHint);\n // Local state is already cleared, so even if the navigation is stopped\n // (tab close, extension) the app-side logout has fully happened. Hold\n // resolution until the bounce COMMITS: resolving right after queueing it\n // let callers who navigate next (`await logout(); location.reload()`)\n // cancel the pending bounce, leaving the issuer session alive to be\n // silently SSO-ed back in on the next login.\n if (bounce)\n await commitIssuerLogoutBounce(bounce);\n }\n}\n// OIDC Authorization Code + PKCE login (the secure multi-tenant redirect flow).\nexport { loginWithRedirect, completeLoginFromRedirect, getLoginReturnError, loginWithPopup, completePendingLogin } from './oidc-auth';\n","import { reconnectWithNewAuth, getConfig, deriveUserIdentityFromIdToken, getActiveSessionManager, onSessionCleared } from '@bounded-sh/core';\nimport { getAuthProvider, login as authLogin, logout as authLogout, clearIncompatibleSession, getCurrentAuthMethod, completePendingLogin } from './auth';\nimport { init as configInit } from '@bounded-sh/core';\n/**\n * Subscribed once per process, not per init(): re-registering on every init would\n * stack duplicate handlers on repeated initialization.\n */\nlet sessionClearedBridgeRegistered = false;\nfunction registerSessionClearedBridge() {\n if (sessionClearedBridgeRegistered)\n return;\n sessionClearedBridgeRegistered = true;\n onSessionCleared(() => {\n // Core fires this only when storage was ACTUALLY cleared, never on a\n // transient refresh failure that preserved the session — so this cannot\n // sign anyone out over a network blip.\n setCurrentUser(null);\n });\n}\n/**\n * Read the active session's idToken synchronously from whichever store is live\n * for this runtime (WebSessionManager on web, ReactNativeSessionManager on RN —\n * selected by getActiveSessionManager, the same selector the core request path\n * uses). Returns null when there's no session — the caller leaves the user as-is.\n */\nfunction getCurrentIdToken() {\n try {\n return getActiveSessionManager().getIdToken();\n }\n catch ( /* no session / store unavailable */_a) { /* no session / store unavailable */ }\n return null;\n}\n/**\n * Enrich a freshly-produced User with the universal identity fields\n * ({ id, email }) derived from the active session's idToken. ADDITIVE +\n * backwards-compatible: `address` is left exactly as the provider set it, and\n * id/email are only populated when not already present. For wallet logins\n * id === address; for email-only (Bounded) logins address may be null and id\n * is the account identity. Mirrors the realtime-worker auth.ts resolution so\n * the client `user` matches what the backend authenticates as (@user.id / .email).\n */\nfunction withUserIdentity(user) {\n var _a, _b, _c, _d;\n if (!user)\n return user;\n const { id, email } = deriveUserIdentityFromIdToken(getCurrentIdToken());\n return Object.assign(Object.assign({}, user), { \n // Prefer an id the provider already set; otherwise fall back to the\n // token-derived identity, then to the wallet address (wallet === id).\n id: (_c = (_b = (_a = user.id) !== null && _a !== void 0 ? _a : id) !== null && _b !== void 0 ? _b : user.address) !== null && _c !== void 0 ? _c : undefined, \n // Email comes only from email-login tokens; keep any provider-set value.\n email: user.email !== undefined ? user.email : email, \n // Guest/anonymous flag (Firebase `isAnonymous` parity): authoritative\n // source is the active auth method, so it's correct on fresh login AND\n // after a session restore (the stored method is rehydrated before the\n // user is set). A provider may also set it explicitly; honor that first.\n isAnonymous: (_d = user.isAnonymous) !== null && _d !== void 0 ? _d : (getCurrentAuthMethod() === 'guest') });\n}\nlet authProviderInstance = null;\nlet currentUser = null;\nlet authStateListeners = [];\nlet authLoadingListeners = [];\nlet initCompleted = false;\nlet isAuthLoading = false;\nlet authReadyPromise = null;\nlet initializingConfig = null;\nlet initializationGeneration = 0;\n/** Internal guard for a login result arriving after the app reconfigured the SDK. */\nexport function getInitializationGeneration() { return initializationGeneration; }\n// This file acts as a middleware for the global state of the SDK\n// This mostly involves setting up the AuthProvider and managing the current user\nasync function initialize(newConfig) {\n // Mark auth as loading for the ENTIRE init/restore window so consumers render\n // a neutral/loading state instead of the signed-out UI while we rehydrate the\n // session — otherwise getCurrentUser() is null + loading is false during the\n // async restore, which paints \"logged out\" and then flips to \"logged in\" (an\n // auth flash). The React useAuth hook seeds loading=true itself, but the\n // imperative API (onAuthLoadingChanged/getAuthLoading) relies on this flag, so\n // setting it here makes \"no flash\" the SDK's default behavior for every consumer.\n setAuthLoading(true);\n try {\n // Bridge core's \"the stored session is gone\" signal into SDK auth state.\n //\n // Core cannot import this package, and a session can die deep inside a\n // session manager (dead refresh token, rejected refresh, app-id mismatch).\n // Before this, setCurrentUser(null) was only ever called by logout() and\n // init(), so storage could be wiped while `currentUser` stayed populated —\n // onAuthStateChanged never fired, and every consumer UI went on showing a\n // connected wallet for a session the server no longer knew about.\n registerSessionClearedBridge();\n // Get auth provider first\n authProviderInstance = await getAuthProvider(newConfig);\n // Initialize config with auth provider\n await configInit(Object.assign(Object.assign({}, newConfig), { authProvider: authProviderInstance }));\n // A return establishes its own provider/session, or hands off a popup.\n // Restoring the old provider afterwards would overwrite the new login.\n try {\n if ((await completePendingLogin()).handled) {\n initCompleted = true;\n return;\n }\n }\n catch (_a) {\n // A cancelled/failed return is a login failure, not a broken SDK.\n // The completion layer keeps it in getLoginReturnError(); restore\n // any existing session and leave sign-in/readiness usable for retry.\n }\n // Now that core is initialized, update the auth method on the config\n const authMethod = getCurrentAuthMethod();\n if (authMethod) {\n const coreConfig = await getConfig();\n coreConfig.authMethod = authMethod;\n }\n // Wait for restoreSession to complete\n // The appId check is done in SessionManager.getSession which is called by restoreSession\n // If there's an appId mismatch, the session will be cleared and restoreSession will return null\n let user = await authProviderInstance.restoreSession();\n // If a session exists but was created before auth method tracking (legacy session),\n // clear it to avoid mismatches when the app switches auth methods (e.g. email → phantom)\n //\n // AWAITED: the clear is serialized through a cross-tab lock now, and an\n // unawaited call would return a Promise (always truthy) — nulling the user\n // unconditionally AND letting setCurrentUser run while the old credential\n // was still in storage.\n if (user && await clearIncompatibleSession()) {\n user = null;\n }\n setCurrentUser(user);\n // Mark init as completed\n initCompleted = true;\n }\n finally {\n // Resolve loading once the user is known (or restore failed) — listeners\n // registered mid-init still get the correct final state via the immediate\n // callback in onAuthLoadingChanged.\n setAuthLoading(false);\n }\n}\n// Compare data options by value, but preserve identity for callbacks and class\n// instances such as providers. Comparing only app/endpoints would silently drop\n// a concurrent change to wallet policy or provider configuration.\nfunction sameConfigValue(a, b, seen = new WeakMap()) {\n var _a;\n if (Object.is(a, b))\n return true;\n if (!a || !b || typeof a !== 'object' || typeof b !== 'object')\n return false;\n if (Array.isArray(a) !== Array.isArray(b))\n return false;\n if (Array.isArray(a) && a.length !== b.length)\n return false;\n if (!Array.isArray(a)) {\n for (const value of [a, b]) {\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== null && ((_a = prototype.constructor) === null || _a === void 0 ? void 0 : _a.name) !== 'Object')\n return false;\n }\n }\n if (seen.has(a))\n return seen.get(a) === b;\n seen.set(a, b);\n const left = Object.keys(a), right = Object.keys(b);\n return left.length === right.length && left.every((key) => Object.prototype.hasOwnProperty.call(b, key)\n && sameConfigValue(a[key], b[key], seen));\n}\nexport function init(newConfig) {\n if (initializingConfig) {\n if (sameConfigValue(initializingConfig, newConfig)) {\n return authReadyPromise;\n }\n return Promise.reject(new Error('SDK initialization is in progress. Await init() before changing its configuration.'));\n }\n initializingConfig = Object.assign({}, newConfig);\n initializationGeneration++;\n let resolveReady;\n let rejectReady;\n const ready = new Promise((resolve, reject) => {\n resolveReady = resolve;\n rejectReady = reject;\n });\n // Publish readiness before initialization starts. This makes it safe for an\n // auth-loading listener to call waitForAuthReady() synchronously when init()\n // announces that session restoration has begun.\n authReadyPromise = ready;\n void initialize(initializingConfig).then(() => { initializingConfig = null; resolveReady(); }, (error) => { initializingConfig = null; rejectReady(error); });\n return ready;\n}\n/**\n * Wait for the current init() call, including stored-session restoration.\n *\n * The promise rejects with the original initialization error. Once it resolves,\n * the returned user is the authoritative restored user, or null when signed out.\n */\nexport async function waitForAuthReady() {\n const ready = authReadyPromise;\n if (!ready) {\n throw new Error('SDK not initialized. Please call init() first.');\n }\n await ready;\n return currentUser;\n}\nexport function onAuthStateChanged(callback) {\n authStateListeners.push(callback);\n if (initCompleted || hasRunFirstTime) {\n // Call the callback immediately with the current user.\n // We check hasRunFirstTime in addition to initCompleted to handle the race\n // where the Phantom auto-login effect calls setCurrentUser() before init()\n // finishes. Without this, listeners registered between auto-login's\n // setCurrentUser and init()'s initCompleted would never fire (init's\n // setCurrentUser is a no-op for same-address and initCompleted is still false).\n callback(currentUser);\n }\n return () => {\n authStateListeners = authStateListeners.filter((listener) => listener !== callback);\n };\n}\nexport function onAuthLoadingChanged(callback) {\n authLoadingListeners.push(callback);\n // Call immediately with current loading state\n callback(isAuthLoading);\n return () => {\n authLoadingListeners = authLoadingListeners.filter((listener) => listener !== callback);\n };\n}\nexport function setAuthLoading(loading) {\n if (isAuthLoading !== loading) {\n isAuthLoading = loading;\n authLoadingListeners.forEach((callback) => callback(loading));\n }\n}\nexport function getAuthLoading() {\n return isAuthLoading;\n}\nexport async function login(options) {\n if (!authProviderInstance) {\n throw new Error('SDK not initialized. Please call init() first.');\n }\n const loggedInUser = await authLogin(options);\n setCurrentUser(loggedInUser);\n return currentUser;\n}\nexport async function logout(options) {\n if (!authProviderInstance) {\n throw new Error('SDK not initialized. Please call init() first.');\n }\n await authLogout(options);\n setCurrentUser(null);\n}\nvar hasRunFirstTime = false;\nfunction userPrincipalKey(user) {\n var _a, _b, _c;\n if (!user)\n return null;\n return (_c = (_b = (_a = user.id) !== null && _a !== void 0 ? _a : user.address) !== null && _b !== void 0 ? _b : user.email) !== null && _c !== void 0 ? _c : null;\n}\n// Update the currentUser and notify listeners\nexport function setCurrentUser(user) {\n // Enrich with the universal identity fields (id/email) derived from the\n // active session's idToken — central chokepoint so every provider's user\n // object gains { id, address, email } without each construction site\n // having to set them.\n user = withUserIdentity(user);\n const lastUser = currentUser;\n const wasInitializedBefore = hasRunFirstTime;\n const lastPrincipal = userPrincipalKey(currentUser);\n const nextPrincipal = userPrincipalKey(user);\n const shouldRunListeners = !hasRunFirstTime || lastPrincipal !== nextPrincipal;\n hasRunFirstTime = true;\n currentUser = user;\n if (shouldRunListeners) {\n // Isolate each listener: a consumer callback that throws (during logout in\n // particular) must not abort the notification loop OR skip the socket reopen\n // below. Before this, a single throwing listener propagated out of\n // setCurrentUser, so the realtime socket kept streaming as the signed-out\n // user and the other listeners were never told the principal changed.\n authStateListeners.forEach((callback) => {\n try {\n callback(user);\n }\n catch (error) {\n console.error('Error in onAuthStateChanged listener:', error);\n }\n });\n // Reconnect WebSocket connections with new auth when user changes.\n // Skip on the first setCurrentUser call during init() — there are no\n // existing connections to reconnect at that point.\n if (wasInitializedBefore && userPrincipalKey(lastUser) !== nextPrincipal) {\n reconnectWithNewAuth().catch((error) => {\n console.error('Error reconnecting WebSocket after auth change:', error);\n });\n }\n }\n // Return this commit's normalized snapshot. A listener can start another\n // login, so the mutable currentUser may already belong to a newer session.\n return user;\n}\nexport function getCurrentUser() {\n return currentUser;\n}\n/** @internal Snapshot/restore surface for transactional auth-provider switches. */\nexport function getAuthProviderInstance() {\n return authProviderInstance;\n}\nexport function setAuthProviderInstance(provider) {\n authProviderInstance = provider;\n}\n","/** The text OpenApps templates carried where an app id belongs. Never a real id. */\nexport const APP_ID_PLACEHOLDER = 'REPLACE_WITH_MAIN_APP_ID';\nconst NETWORKS = new Set(['bounded', 'bounded-staging', 'bounded-production']);\n// Bounded hosting states which app a page is: `<meta name=\"bounded-app-id\">`\n// and `<meta name=\"bounded-network\">`, first in <head> of every page it serves,\n// so the first tag of each name is the host's (docs/app-identity.md). Outside a\n// browser there is no page to read.\nfunction pageMeta(name) {\n var _a, _b;\n if (typeof document === 'undefined' || typeof document.querySelector !== 'function')\n return undefined;\n const value = (_b = (_a = document.querySelector(`meta[name=\"${name}\"]`)) === null || _a === void 0 ? void 0 : _a.getAttribute('content')) === null || _b === void 0 ? void 0 : _b.trim();\n return value || undefined;\n}\n/**\n * The configuration init() runs with. An explicit appId keeps the call exactly\n * as written. Without one (or with the template placeholder), a page served by\n * Bounded supplies its app id, and its network unless the call names one, so\n * code in any framework can call init() without carrying an id in its source.\n */\nexport function withHostedIdentity(config) {\n if (config.appId && config.appId !== APP_ID_PLACEHOLDER)\n return config;\n const appId = pageMeta('bounded-app-id');\n if (!appId || appId === APP_ID_PLACEHOLDER) {\n throw new Error('No app ID provided. Pass init({ appId }), or serve this page from Bounded hosting, '\n + 'which states it in <meta name=\"bounded-app-id\">.');\n }\n const network = config.network === undefined ? pageMeta('bounded-network') : undefined;\n return Object.assign(Object.assign(Object.assign({}, config), { appId }), (network && NETWORKS.has(network) ? { network: network } : {}));\n}\n","// bounded-widget-ownership.ts - per-open ownership generation for the singleton\n// login/signing modal (bounded-widget-modal.ts).\n//\n// That modal is a MODULE-LEVEL singleton: one mutable `content` node and one\n// mutable `onBackdrop` callback, reused between opens so a second open is instant.\n// The hazard is concurrency: two overlapping openBoundedWidget() calls in the same\n// tab (rapid clicks, or two components) would otherwise share - and corrupt - one\n// surface. The second open overwrites the first's backdrop handler and remounts the\n// card while the first promise is never settled, so it hangs forever; and a late\n// success from the FIRST open's in-flight popup/OTP would hide or de-wire the\n// SECOND card.\n//\n// The fix is a per-open ownership generation. Each open claims a monotonically\n// increasing token stored on the modal. All of an open's callbacks (backdrop\n// dismiss, success, cancel, and every async .then/.catch that mutates the shared\n// modal) run only while they still hold the CURRENT generation; a superseded open\n// no-ops instead of stomping the newer one. Claiming also proactively rejects the\n// prior owner's promise so an earlier caller is never stranded.\n/**\n * Claim the singleton modal for a fresh open. Any earlier open that never settled\n * is superseded: the generation is bumped first (so the prior open's `owns()`\n * turns false and its late callbacks can no longer touch the modal we now own),\n * then its supersede hook is invoked so its promise rejects.\n *\n * @param onSuperseded rejects THIS open's promise when a later open supersedes it.\n */\nexport function claimModalOpen(m, onSuperseded) {\n const prevSupersede = m.onSupersede;\n const token = ++m.generation;\n let settled = false;\n const owns = () => token === m.generation;\n const settleOwned = (action) => {\n if (settled || !owns())\n return false;\n settled = true;\n m.onBackdrop = null;\n m.onSupersede = null;\n action();\n return true;\n };\n // Superseded by a newer open: reject this promise WITHOUT touching the modal\n // (the newer open now owns its DOM). Never settle twice.\n m.onSupersede = () => {\n if (settled)\n return;\n settled = true;\n onSuperseded();\n };\n // Now that we hold the newer generation, reject the prior owner (if any).\n prevSupersede === null || prevSupersede === void 0 ? void 0 : prevSupersede();\n return { owns, settleOwned };\n}\n","/** Name of the feature. */\nexport const SolanaSignAndSendTransaction = 'solana:signAndSendTransaction';\n//# sourceMappingURL=signAndSendTransaction.js.map","/** Name of the feature. */\nexport const SolanaSignIn = 'solana:signIn';\n//# sourceMappingURL=signIn.js.map","/** Name of the feature. */\nexport const SolanaSignMessage = 'solana:signMessage';\n//# sourceMappingURL=signMessage.js.map","/** Name of the feature. */\nexport const SolanaSignTransaction = 'solana:signTransaction';\n//# sourceMappingURL=signTransaction.js.map","/** Name of the feature. */\nexport const StandardConnect = 'standard:connect';\n/**\n * @deprecated Use {@link StandardConnect} instead.\n *\n * @group Deprecated\n */\nexport const Connect = StandardConnect;\n//# sourceMappingURL=connect.js.map","/** Name of the feature. */\nexport const StandardDisconnect = 'standard:disconnect';\n/**\n * @deprecated Use {@link StandardDisconnect} instead.\n *\n * @group Deprecated\n */\nexport const Disconnect = StandardDisconnect;\n//# sourceMappingURL=disconnect.js.map","// wallet-standard-discovery.ts - PROPER native-wallet enumeration for the unified\n// login widget. We do NOT hand-maintain a list of wallet names (Phantom / Solflare\n// / Backpack / ...); instead we read the Solana Wallet Standard registry\n// (`@wallet-standard/app` getWallets(), fed by each wallet's\n// `wallet-standard:register-wallet` event) and surface every wallet that advertises\n// the Solana features we need. New wallets appear automatically, with their real\n// name + icon, and nothing is hardcoded.\n//\n// Each discovered wallet is adapted to the SDK's tiny `InjectedSolanaProvider`\n// shape so the existing wallet-login path (loginWithWallet -> InjectedWalletProvider,\n// SIWS) and the full app signing surface work unchanged. web3.js is only imported\n// lazily inside the transaction methods, so listing wallets and message-signing\n// login stay off the heavy chunk.\nimport { getWallets } from \"@wallet-standard/app\";\nimport { SolanaSignAndSendTransaction, SolanaSignIn, SolanaSignMessage, SolanaSignTransaction, } from \"@solana/wallet-standard-features\";\nimport { StandardConnect, StandardDisconnect } from \"@wallet-standard/features\";\nimport bs58 from \"bs58\";\nimport { resolveSolanaWalletStandardChain } from \"../solana-rpc\";\nimport { isSolanaMobileWallet, solanaMobileWalletLeavesPage, } from \"./solana-mobile-registration\";\nfunction hasFeature(wallet, name) {\n return Object.prototype.hasOwnProperty.call(wallet.features, name);\n}\nfunction supportsSolana(wallet) {\n return wallet.chains.some((c) => c.startsWith(\"solana:\"));\n}\n/** A wallet is LISTED for Bounded login when it can connect + sign a message on a\n * Solana chain. Login itself needs the `solana:signIn` feature (SEC-01); that is\n * checked at login time in InjectedWalletProvider, where a wallet without it is\n * refused with the reason spelled out rather than silently missing from the list.\n * Transaction features are optional and checked lazily at call time. */\nfunction isLoginCapable(wallet) {\n return (supportsSolana(wallet) &&\n hasFeature(wallet, StandardConnect) &&\n hasFeature(wallet, SolanaSignMessage));\n}\n/** The Wallet-Standard chain id for a configured network, or null when it is\n * absent/unsupported. Ordering must never throw - failing closed on an\n * unsupported network is the signing path's job. */\nfunction solanaChainOrNull(network) {\n switch (network) {\n case \"solana_mainnet\": return \"solana:mainnet\";\n case \"solana_devnet\": return \"solana:devnet\";\n default: return null;\n }\n}\nfunction feature(wallet, name) {\n return wallet.features[name];\n}\n/**\n * Adapt a Wallet Standard wallet to the slim `InjectedSolanaProvider` the SDK's\n * wallet-login + signing path consumes. Connect resolves (and caches) the active\n * account; sign* delegate to the wallet's own Solana features. Nothing is\n * wallet-name specific.\n *\n * DS2-0383: signAndSendTransaction MUST execute on the network the APP configured\n * (`config.chain`), not whatever chain the wallet happens to advertise first.\n * Deriving the chain from the wallet's advertised list (with a mainnet fallback)\n * could hand a devnet/testnet transaction to the wallet labelled mainnet - or the\n * reverse. `configuredNetwork` is resolved to the exact Wallet-Standard chain id;\n * an unconfigured network fails closed at sign time rather than defaulting.\n */\nexport function standardWalletToInjectedProvider(wallet, configuredNetwork) {\n // The adapter holds NO account of its own: `wallet.accounts` is the Wallet\n // Standard's live authorized-account view, kept in sync by the wallet itself\n // (it emits standard:events 'change' when it moves). Reading it on every\n // access means two things at once:\n // - an account switch inside the wallet is OBSERVED here, so\n // InjectedWalletProvider's DS2-0369 check still fires instead of being\n // hidden behind a copy this adapter took at connect time;\n // - a connection survives across adapter instances, which is what the\n // mobile wallet needs: MWA keeps its accounts for the life of its\n // authorization, so a later signing call reuses it rather than paying\n // another round trip out to the wallet app.\n // Prefer an account that can work on the network the app configured: a wallet\n // can hold several, and one authorized for another cluster would sign\n // something this app can never land. Fall back to any Solana account only\n // when the app named no network.\n const wanted = configuredNetwork ? solanaChainOrNull(configuredNetwork) : null;\n // Wallet Standard declares chains AND features PER ACCOUNT, so a wallet-level\n // capability is not proof that the account we picked has it. An account with\n // an explicit feature list that omits solana:signMessage cannot complete a\n // SIWS login; one that lists nothing is unconstrained by convention.\n // STRICT. `WalletAccount.features` is the feature names that account supports,\n // and a wallet that means \"the defaults\" says so by omitting the field - the\n // mobile adapter fills DEFAULT_FEATURES in exactly that case. So an empty list\n // means none, and reading it as \"everything\" picks an account that cannot sign\n // and fails at the wallet instead of here.\n const accountSupports = (account, feature) => account.features.includes(feature);\n const pickSolanaAccount = (accounts) => {\n // With a network configured, an account that does not support it is not a\n // usable account: `WalletAccount.chains` is what that account can sign for,\n // so handing it a transaction for another chain just fails at the wallet -\n // or worse, is honoured on the wrong cluster. And a Solana account that\n // cannot sign a message cannot log in at all, so prefer one that can.\n // No usable account means NOT CONNECTED: a multi-chain wallet can advertise\n // Solana at wallet level while its authorized account is another chain\n // entirely, and taking that one would expose e.g. an EVM address as the\n // Solana public key.\n const solana = accounts.filter((a) => (a.chains.some((c) => c.startsWith(\"solana:\")) && (!wanted || a.chains.includes(wanted))));\n // No account that can sign a message is no usable account: SIWS login is the\n // first thing every wallet path does, so falling back to one that cannot\n // sign only moves the failure somewhere less legible.\n return solana.find((a) => accountSupports(a, SolanaSignMessage));\n };\n const currentAccount = () => { var _a; return (_a = pickSolanaAccount(wallet.accounts)) !== null && _a !== void 0 ? _a : null; };\n /** A `solana:signTransaction` input, carrying the app's chain when it has one. */\n const signInputFor = (account, transaction) => (wanted ? { account, transaction, chain: wanted } : { account, transaction });\n const requireAccount = () => {\n const acc = currentAccount();\n if (!acc)\n throw new Error(\"Wallet not connected\");\n return acc;\n };\n return Object.assign(Object.assign({ \n // This wallet reaches its signer by leaving the page (an Android intent),\n // so every operation needs a fresh user gesture. Flagging it here means the\n // SDK applies the caller's confirm hook to exactly the wallets that need it\n // - callers never have to work out which wallet they ended up with.\n leavesPage: solanaMobileWalletLeavesPage(wallet.name), \n // The transaction codec is code-split (it pulls web3.js, which must stay off\n // the login path). Loading it INSIDE a sign call would put a network fetch\n // between the user's tap and the wallet invocation, which is exactly the\n // transient activation a mobile wallet's intent navigation needs. Callers\n // warm it here, before taking that tap - and ONLY for the actions that use\n // it, so a SIWS login still never touches that chunk.\n async prepare(action) {\n if (action === \"signTransaction\" || action === \"signAndSubmitTransaction\") {\n await import(\"./wallet-standard-tx\");\n }\n },\n get isConnected() {\n return currentAccount() !== null;\n },\n get publicKey() {\n // Wallet Standard account.address is already the base58 Solana address.\n const acc = currentAccount();\n return acc ? { toString: () => acc.address } : null;\n },\n async connect(options) {\n var _a;\n const connect = feature(wallet, StandardConnect);\n if (!connect)\n throw new Error(\"Wallet does not support standard:connect\");\n // Map the injected-provider `onlyIfTrusted` hint onto the Wallet Standard\n // `silent` connect: an already-trusted wallet (or MWA with a cached\n // authorization) reconnects without prompting; an untrusted one returns\n // no accounts and the caller falls back to an interactive connect.\n const res = await connect.connect((options === null || options === void 0 ? void 0 : options.onlyIfTrusted) ? { silent: true } : undefined);\n // Prefer what connect returned, but fall back to the live view for a\n // wallet that only publishes newly authorized accounts there.\n const acc = (_a = pickSolanaAccount(res.accounts)) !== null && _a !== void 0 ? _a : currentAccount();\n if (!acc)\n throw new Error(\"Wallet returned no account on connect\");\n return { publicKey: { toString: () => acc.address } };\n },\n async disconnect() {\n const disconnect = feature(wallet, StandardDisconnect);\n if (disconnect)\n await disconnect.disconnect();\n } }, (hasFeature(wallet, SolanaSignIn)\n ? {\n async signIn(input) {\n const acc = requireAccount();\n if (!accountSupports(acc, SolanaSignIn))\n throw new Error(\"Wallet account does not support solana:signIn\");\n const sign = feature(wallet, SolanaSignIn);\n if (!sign)\n throw new Error(\"Wallet does not support solana:signIn\");\n const [out] = await sign.signIn(input);\n return { account: { address: out.account.address }, signedMessage: out.signedMessage, signature: out.signature };\n },\n }\n : {})), { async signMessage(message) {\n const acc = requireAccount();\n const sign = feature(wallet, SolanaSignMessage);\n if (!sign)\n throw new Error(\"Wallet does not support solana:signMessage\");\n const [out] = await sign.signMessage({ account: acc, message });\n return { signature: out.signature, publicKey: { toString: () => acc.address } };\n },\n // DS2-0383, on the plain-sign side: tell the wallet which cluster this\n // transaction is for, the same way signAndSendTransaction does. `chain` is\n // OPTIONAL on SolanaSignTransactionInput (unlike the send input, where it is\n // required), so an app that named no network simply omits it rather than\n // failing closed - a plain sign puts nothing on a chain, so there is no\n // wrong cluster to protect against, only a hint to withhold. When a network\n // IS configured, pickSolanaAccount has already rejected any account that\n // does not carry that chain, so the hint can never contradict the account.\n async signTransaction(tx) {\n const acc = requireAccount();\n const sign = feature(wallet, SolanaSignTransaction);\n if (!sign)\n throw new Error(\"Wallet does not support solana:signTransaction\");\n const { serializeUnsignedTx, deserializeSignedTx } = await import(\"./wallet-standard-tx\");\n const [out] = await sign.signTransaction(signInputFor(acc, serializeUnsignedTx(tx)));\n return deserializeSignedTx(out.signedTransaction);\n },\n /** v1 goes to the wallet as raw SIMD-0385 bytes; the wallet must advertise version 1 to get one. */\n supportedTransactionVersions() {\n const sign = feature(wallet, SolanaSignTransaction);\n const advertised = sign === null || sign === void 0 ? void 0 : sign.supportedTransactionVersions;\n const list = advertised instanceof Set ? [...advertised] : Array.isArray(advertised) ? [...advertised] : [];\n const versions = list.filter((v) => v === 'legacy' || v === 0 || v === 1);\n // A wallet that advertises nothing is treated as legacy + v0, today's baseline.\n return versions.length > 0 ? versions : ['legacy', 0];\n },\n async signTransactionV1(tx) {\n const acc = requireAccount();\n const sign = feature(wallet, SolanaSignTransaction);\n if (!sign)\n throw new Error(\"Wallet does not support solana:signTransaction\");\n const kit = await import('@solana/kit');\n const wire = Uint8Array.from(kit.getTransactionEncoder().encode(tx));\n const [out] = await sign.signTransaction(signInputFor(acc, wire));\n // Name the cause before parsing: kit's decoder would otherwise report a\n // misleading signature-count error on non-v1 bytes.\n if (!(out.signedTransaction instanceof Uint8Array) || out.signedTransaction[0] !== 0x81) {\n throw new Error('The wallet returned a non-v1 transaction for a SIMD-0385 v1 signing request.');\n }\n return kit.getTransactionDecoder().decode(out.signedTransaction);\n },\n async signAllTransactions(txs) {\n const acc = requireAccount();\n const sign = feature(wallet, SolanaSignTransaction);\n if (!sign)\n throw new Error(\"Wallet does not support solana:signTransaction\");\n const { serializeUnsignedTx, deserializeSignedTx } = await import(\"./wallet-standard-tx\");\n const outs = await sign.signTransaction(...txs.map((tx) => signInputFor(acc, serializeUnsignedTx(tx))));\n return outs.map((o) => deserializeSignedTx(o.signedTransaction));\n }, \n // Asked LIVE, never snapshotted: MWA advertises both transaction features\n // up front and rewrites them during connect() once it learns what the wallet\n // actually supports. A capability read at construction time would send a\n // sign-only wallet down the native-send path and fail instead of using the\n // caller's sign-then-submit fallback.\n // Both of these answer \"can this wallet do it, right now\" and nothing more.\n // WHICH path to prefer is the caller's policy, and it lives with the caller:\n // InjectedWalletProvider signs and verifies before submitting whenever\n // signing is possible, because a native send is on the network before anyone\n // can check who signed it.\n canSignAndSend: () => {\n if (!hasFeature(wallet, SolanaSignAndSendTransaction))\n return false;\n // The wallet offering it is not enough: the ACCOUNT must too, or the\n // native call fails where the caller's sign-then-submit path would work.\n const acc = currentAccount();\n return !!acc && accountSupports(acc, SolanaSignAndSendTransaction);\n }, canSignTransaction: () => {\n if (!hasFeature(wallet, SolanaSignTransaction))\n return false;\n const acc = currentAccount();\n return !!acc && accountSupports(acc, SolanaSignTransaction);\n }, async signAndSendTransaction(tx) {\n const acc = requireAccount();\n const sas = feature(wallet, SolanaSignAndSendTransaction);\n if (!sas)\n throw new Error(\"Wallet does not support solana:signAndSendTransaction\");\n const { serializeUnsignedTx } = await import(\"./wallet-standard-tx\");\n const chain = resolveSolanaWalletStandardChain(configuredNetwork, \"Wallet-Standard signAndSendTransaction\");\n const [out] = await sas.signAndSendTransaction({\n account: acc,\n transaction: serializeUnsignedTx(tx),\n chain,\n });\n return { signature: bs58.encode(out.signature) };\n } });\n}\n/**\n * Enumerate every Solana-capable wallet currently registered with the Wallet\n * Standard, newest registrations included. Returns login-ready choices (name +\n * icon + provider factory). Empty array off-browser or when no wallet is present;\n * the widget then falls back to the legacy injected `window.solana` probe.\n */\nexport function discoverStandardWallets(configuredNetwork) {\n if (typeof window === \"undefined\")\n return [];\n const out = [];\n // Same name, different wallets is a real case (two SDKs on one page can each\n // register a \"Mobile Wallet Adapter\"). One entry per name still makes the\n // right list, but prefer a wallet that can actually work on the app's network\n // - otherwise an incompatible lookalike that registered first wins and every\n // transaction fails at the wallet.\n const chain = configuredNetwork ? solanaChainOrNull(configuredNetwork) : null;\n // Two wallets can share a display name (another SDK can register its own\n // \"Mobile Wallet Adapter\"). Keep ONE entry per name, but choose WHICH by\n // merit, not by who registered first: a wallet that supports the app's chain\n // beats one that does not, and among equals the mobile wallet WE registered\n // beats a stranger wearing its label - picking the stranger would drop the\n // gesture its transport needs and can hide the legacy probe. Names keep their\n // first-seen order, so the list the user sees is otherwise unchanged.\n const rank = (w) => (chain && !w.chains.includes(chain) ? 2 : 0) + (isSolanaMobileWallet(w) ? 0 : 1);\n const bestByName = new Map();\n const nameOrder = [];\n for (const wallet of getWallets().get()) {\n if (!isLoginCapable(wallet))\n continue;\n // A wallet that does not carry the app's chain at all cannot serve it. That\n // is knowable here, so drop it rather than listing it and failing at connect\n // - or worse, letting the no-injection fallback default to it.\n if (chain && !wallet.chains.includes(chain))\n continue;\n const incumbent = bestByName.get(wallet.name);\n if (!incumbent) {\n bestByName.set(wallet.name, wallet);\n nameOrder.push(wallet.name);\n }\n else if (rank(wallet) < rank(incumbent)) {\n bestByName.set(wallet.name, wallet);\n }\n }\n for (const name of nameOrder) {\n const wallet = bestByName.get(name);\n out.push({\n name: wallet.name,\n icon: wallet.icon,\n wallet,\n // DS2-0383: the adapted provider signs+sends on the app's configured\n // network, never on the wallet's first advertised chain. The adapter is\n // stateless (it reads the wallet's live accounts), so handing out a fresh\n // one per call costs nothing and keeps no state to go stale.\n getProvider: () => standardWalletToInjectedProvider(wallet, configuredNetwork),\n });\n }\n return out;\n}\n/**\n * First login-capable Wallet Standard wallet adapted to the injected-provider\n * shape, or null. The last-resort fallback for wallet login when nothing is\n * injected - e.g. a Saga/Seeker phone, where the Solana Mobile wallet lives in\n * the registry (via registerMwa) and never as `window.solana`.\n */\nexport function firstStandardWalletProvider(configuredNetwork) {\n const [first] = discoverStandardWallets(configuredNetwork);\n return first ? first.getProvider() : null;\n}\n","// wallet-lane.ts - the pure decision behind the login widget's \"Continue with\n// wallet\" lane. Extracted from bounded-login-widget.ts (which pulls in the DOM\n// and the auth barrel, so it cannot be unit tested) following the same\n// extract-a-pure-helper pattern as bounded-widget-ownership.ts.\n//\n// The subtlety this file exists for: an INJECTED wallet in the registry is\n// evidence the user actually has a wallet, which is why detection alone turns\n// the lane on. Solana Mobile's MWA wallet is NOT that: registerMwa() registers\n// on ANY capable Android browser whether or not a wallet app is installed. If\n// registration ran unconditionally, every Bounded app would grow a wallet\n// button on every Android phone - breaking the opt-in default that\n// walletLogin/isWalletLoginEnabled exist to protect. So MWA is only ever\n// registered once the lane is already the app's choice, and can never be the\n// thing that turns it on.\n/**\n * Whether the widget shows the wallet lane at all. Hard-off wins over\n * everything; otherwise an explicit per-call value wins; otherwise auto: on\n * when the app opted in, or when a wallet was actually detected.\n */\nexport function isWalletLaneEnabled(input) {\n if (input.hardOff)\n return false;\n if (input.requested !== undefined)\n return input.requested;\n return input.detected > 0 || input.optedIn;\n}\n/**\n * Whether to register (and therefore offer) Solana Mobile's wallet: exactly\n * \"would the lane be on with NOTHING detected\". Stating it this way is the\n * guarantee - MWA can never count toward detection, so it can never be what\n * turns the lane on, only something the app already chose.\n */\nexport function shouldOfferSolanaMobileWallet(input) {\n return isWalletLaneEnabled(Object.assign(Object.assign({}, input), { detected: 0 }));\n}\n","import { getActiveSessionManager } from '@bounded-sh/core';\nimport { establishInlineSession, inlineAuthEndpoint } from './oidc-auth';\nimport { requestTurnkeyActionAuthorization } from './turnkey-signing-capability';\nfunction hasDOM() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nlet requestSeq = 0;\n/**\n * Begin authMode:\"turnkey\" login: ask Turnkey to email a one-time code to `email`, and open a\n * server-bound login ceremony. Resolves with a handle whose `run(iframe)` finishes the login inside\n * the Bounded OTP frame. Web-only (the sealing runs in the frame); on React Native use\n * loginWithRedirect() instead.\n */\nexport async function startTurnkeyEmailLogin(email) {\n if (!hasDOM()) {\n throw new Error('Turnkey-native email login is web-only - on React Native use loginWithRedirect()');\n }\n const trimmed = email.trim();\n if (!trimmed)\n throw new Error('Enter your email to continue.');\n const { base, appId } = await inlineAuthEndpoint();\n if (!appId)\n throw new Error('appId is not configured (init the SDK with your appId)');\n const res = await fetch(`${base}/wallet/turnkey/auth/init`, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({ email: trimmed, appId, walletProtocol: 2 }),\n });\n const data = await res.json().catch(() => null);\n if (!res.ok || !data || typeof data.otpId !== 'string' || typeof data.otpEncryptionTargetBundle !== 'string') {\n throw new Error(String((data && data.error) || 'Could not send a code. Please try again.'));\n }\n const otpId = data.otpId;\n const otpEncryptionTargetBundle = data.otpEncryptionTargetBundle;\n // A tenant-origin login always gets a ceremony id; without one the OTP frame refuses to run\n // (there is nothing to bind the frame key to), which is the correct fail-closed posture.\n const ceremonyId = typeof data.ceremonyId === 'string' ? data.ceremonyId : '';\n const signerOrigin = new URL(base).origin;\n if (data.walletScope !== 'app' && data.walletScope !== 'legacy')\n throw new Error('wallet_scope_config_unavailable');\n if (data.walletProtocol !== (data.walletScope === 'app' ? 2 : 1))\n throw new Error('wallet_protocol_invalid');\n const frameUrl = data.walletScope === 'app'\n ? `${base.replace(/\\/$/, '')}/wallet/turnkey/app/${appId}/signer?origin=${encodeURIComponent(window.location.origin)}`\n : undefined;\n return {\n email: trimmed, frameUrl, signerOrigin,\n run(iframe, _signal) {\n if (!ceremonyId) {\n return Promise.reject(new Error('This app is not configured for in-frame wallet login. Please try again.'));\n }\n const run = { iframe, base, signerOrigin, appId, email: trimmed, otpId, otpEncryptionTargetBundle, ceremonyId };\n // BSA-2026-004: the login code is typed only in /wallet/turnkey/otp-frame.\n // The scoped signer URL is for post-login signing, not OTP entry.\n return runOtpFrame(run);\n },\n };\n}\n// Point the iframe at the Bounded OTP frame and run the postMessage handshake:\n// frame 'ready' -> we post {otpId, targetBundle}; frame registers its key + shows the input;\n// frame 'result' {session} -> we establish the inline session and resolve the User.\n// When the frame asks for the signing-session authorization ('need-authorization') we mint a\n// createWallet action authorization on THIS (registered) origin and post it in - never a key.\nfunction runOtpFrame(run) {\n const tenantOrigin = window.location.origin;\n const url = `${run.base.replace(/\\/$/, '')}/wallet/turnkey/otp-frame`\n + `?appId=${encodeURIComponent(run.appId)}`\n + `&origin=${encodeURIComponent(tenantOrigin)}`\n + `&email=${encodeURIComponent(run.email)}`\n + `&ceremonyId=${encodeURIComponent(run.ceremonyId)}`;\n return new Promise((resolve, reject) => {\n let settled = false;\n let started = false;\n const cleanup = () => { settled = true; window.removeEventListener('message', onMsg); window.clearTimeout(timer); };\n const onMsg = async (event) => {\n if (settled)\n return;\n // Trust ONLY the signer origin and the frame's own window.\n if (event.origin !== run.signerOrigin || event.source !== run.iframe.contentWindow)\n return;\n const d = event.data;\n if (!d || typeof d !== 'object')\n return;\n if (d.type === 'bounded:otp:resize') {\n if (typeof d.height === 'number' && Number.isFinite(d.height) && d.height > 0) {\n run.iframe.style.height = `${Math.max(140, Math.min(680, Math.ceil(d.height)))}px`;\n }\n return;\n }\n if (d.type === 'bounded:otp:ready') {\n if (started)\n return;\n started = true;\n post({ type: 'bounded:otp:start', otpId: run.otpId, otpEncryptionTargetBundle: run.otpEncryptionTargetBundle });\n return;\n }\n if (d.type === 'bounded:otp:need-authorization') {\n // Best-effort: mint the createWallet authorization on our own registered origin and hand it\n // to the frame so it can complete the 24h signing session with the key it holds. Never throws.\n try {\n let idToken = null;\n try {\n idToken = getActiveSessionManager().getIdToken();\n }\n catch (_a) {\n idToken = null;\n }\n if (!idToken) {\n post({ type: 'bounded:otp:authorization', authorization: '' });\n return;\n }\n const authorization = await requestTurnkeyActionAuthorization({\n baseUrl: run.base, idToken, action: 'createWallet', fetchImpl: (u, i) => fetch(u, i),\n });\n post({ type: 'bounded:otp:authorization', authorization });\n }\n catch (_b) {\n post({ type: 'bounded:otp:authorization', authorization: '' });\n }\n return;\n }\n if (d.type === 'bounded:otp:result') {\n if (d.ok && d.session && typeof d.session === 'object') {\n try {\n const user = await establishInlineSession(d.session);\n cleanup();\n resolve(user);\n }\n catch (error) {\n cleanup();\n reject(error instanceof Error ? error : new Error(String(error)));\n }\n return;\n }\n cleanup();\n reject(new Error(String((d && d.error) || 'Invalid or expired code.')));\n return;\n }\n // 'bounded:otp:registered' is advisory; login does not depend on it.\n };\n const post = (msg) => {\n var _a;\n try {\n (_a = run.iframe.contentWindow) === null || _a === void 0 ? void 0 : _a.postMessage(msg, run.signerOrigin);\n }\n catch ( /* frame gone */_b) { /* frame gone */ }\n };\n window.addEventListener('message', onMsg);\n // 3 minutes: the human must read the email and type the code. A frame that never reports is a\n // failed login the user can retry.\n const timer = window.setTimeout(() => {\n if (settled)\n return;\n cleanup();\n reject(new Error('The sign-in code entry timed out. Please try again.'));\n }, 3 * 60 * 1000);\n run.iframe.src = url;\n });\n}\n","// bounded-login-widget.ts - the UNIFIED Bounded login surface: one in-app card\n// (Shadow-DOM modal from bounded-widget-modal.ts, Bounded look + motion) that folds\n// together every login lane the SDK supports:\n// - Email / social (Google, ...) -> the hosted Better Auth OIDC flow, run in a\n// brief FIRST-PARTY popup (loginWithPopup). A cross-origin auth IFRAME cannot\n// hold the Better Auth session cookie (third-party-cookie blocking in Safari /\n// Chrome), so the session handshake pops; the card itself stays in-app.\n// - \"Continue with wallet\" -> native injected wallets (Phantom / Solflare /\n// Backpack) via loginWithWallet(), run ENTIRELY on the app page (injected\n// providers only exist there, never inside a cross-origin frame).\n//\n// Mobile uses a full-page redirect; desktop keeps a popup with redirect fallback.\n// The same modal is reused for Turnkey wallet signing, so login -> first\n// signature is one continuous surface.\nimport { getModal, showModal, hideModal, mountContent, detachIframe, fitPanelToContent, ensureFonts, hasDOM, } from \"./bounded-widget-modal\";\nimport { claimModalOpen } from \"./bounded-widget-ownership\";\nimport { discoverStandardWallets } from \"./providers/wallet-standard-discovery\";\nimport { looksLikeSolanaMobileWallet, WalletConfigError } from \"./providers/solana-mobile-registration\";\nimport { isWalletLaneEnabled, shouldOfferSolanaMobileWallet } from \"./wallet-lane\";\nimport { detectMobile } from \"../platform\";\nimport { startTurnkeyEmailLogin } from \"./turnkey-auth\";\n// Palette + type ladder mirror the hosted auth page (login-page.ts): dark editorial\n// panel, Newsreader display serif for the title, Schibsted Grotesk body, a light\n// (paper) primary button and inset inputs. This is the same look/feel as\n// auth.bounded, brought inline into the in-app widget.\nconst CARD_CSS = `\n:host,*{box-sizing:border-box}\n.c{--bg-inset:#060607;--bg-raise:#131416;\n --line:rgba(232,230,222,.08);--line-strong:rgba(232,230,222,.16);\n --text:#e8e6de;--dim:#9b9991;--faint:#85837c;\n --green:#58c98f;--green-bg:rgba(88,201,143,.09);--green-line:rgba(88,201,143,.28);--red:#ec8488;\n --disp:\"Newsreader\",\"Iowan Old Style\",Georgia,serif;\n --body:\"Schibsted Grotesk\",\"Helvetica Neue\",Arial,sans-serif;\n position:relative;padding:34px 32px 20px;color:var(--text);font-family:var(--body);\n -webkit-font-smoothing:antialiased}\n.x{position:absolute;top:20px;right:24px;border:0;background:transparent;color:var(--faint);\n font-family:var(--body);font-size:13px;line-height:1;cursor:pointer;padding:4px}\n.x:hover{color:var(--text)}\nh1{font-family:var(--disp);font-weight:400;font-size:27px;line-height:1.12;letter-spacing:-.01em;margin:0 0 6px;max-width:88%}\n.sub{margin:0 0 24px;color:var(--dim);font-size:13.5px}\nlabel{display:block;font-size:12px;color:var(--dim);margin:0 0 7px}\ninput{width:100%;padding:11px 13px;border-radius:6px;border:1px solid var(--line-strong);\n background:var(--bg-inset);color:var(--text);font-size:15px;font-family:var(--body);outline:none;\n transition:border-color .15s,box-shadow .15s}\ninput::placeholder{color:var(--faint)}\ninput:focus{border-color:var(--green-line);box-shadow:0 0 0 3px var(--green-bg)}\ninput.otp{font-family:var(--mono,ui-monospace,monospace);letter-spacing:8px;text-align:center;font-size:21px;padding-left:8px}\n.btn{width:100%;padding:12px 14px;border-radius:6px;font-size:14px;font-weight:600;\n cursor:pointer;font-family:var(--body);display:flex;align-items:center;justify-content:center;gap:9px;\n transition:opacity .15s ease,background .15s ease,border-color .15s ease,transform .04s}\n.btn:disabled{opacity:.45;cursor:default}\n.primary{border:0;background:var(--text);color:#0a0a0b;margin-top:16px}\n.primary:hover:not(:disabled){opacity:.9}\n.primary:active:not(:disabled){transform:translateY(.5px)}\n.ghost{border:1px solid var(--line-strong);background:var(--bg-raise);color:var(--text);margin-top:9px}\n.ghost:hover:not(:disabled){background:#17181b}\n.ghost svg{width:16px;height:16px;flex:none}\n.wicon{width:18px;height:18px;border-radius:4px;flex:none}\n.or{display:flex;align-items:center;gap:12px;margin:20px 0 14px;color:var(--faint);\n font-size:11px;letter-spacing:.08em;text-transform:uppercase}\n.or::before,.or::after{content:\"\";flex:1;height:1px;background:var(--line)}\n.status{margin-top:16px;min-height:16px;font-size:12.5px;color:var(--dim)}\n.status.err{color:var(--red)}\n.foot{margin-top:24px;padding-top:15px;border-top:1px solid var(--line);\n color:var(--faint);font-size:11px;text-align:center;letter-spacing:.02em}\n.foot a{color:var(--dim);text-decoration:none}\n.foot a:hover{color:var(--text)}\n.back{background:transparent;border:0;color:var(--dim);font-size:12.5px;cursor:pointer;padding:0;margin-bottom:16px}\n.back:hover{color:var(--text)}\n.spin{width:15px;height:15px;border-radius:50%;border:2px solid rgba(10,10,11,.3);\n border-top-color:#0a0a0b;animation:bwspin .7s linear infinite}\n.ghost .spin,.primary.wallet-busy .spin{border:2px solid var(--line-strong);border-top-color:var(--text)}\n@keyframes bwspin{to{transform:rotate(360deg)}}\n`;\n// Brand glyphs, built as SVG DOM (never innerHTML) so the buttons match the hosted page.\nfunction googleGlyph() {\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.setAttribute(\"viewBox\", \"0 0 48 48\");\n svg.setAttribute(\"aria-hidden\", \"true\");\n const paths = [\n [\"#EA4335\", \"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z\"],\n [\"#4285F4\", \"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z\"],\n [\"#FBBC05\", \"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z\"],\n [\"#34A853\", \"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z\"],\n ];\n for (const [fill, d] of paths) {\n const path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n path.setAttribute(\"fill\", fill);\n path.setAttribute(\"d\", d);\n svg.appendChild(path);\n }\n return svg;\n}\nfunction walletGlyph() {\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.setAttribute(\"viewBox\", \"0 0 24 24\");\n svg.setAttribute(\"fill\", \"none\");\n svg.setAttribute(\"aria-hidden\", \"true\");\n const rect = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"x\", \"3\");\n rect.setAttribute(\"y\", \"6\");\n rect.setAttribute(\"width\", \"18\");\n rect.setAttribute(\"height\", \"13\");\n rect.setAttribute(\"rx\", \"2.5\");\n rect.setAttribute(\"stroke\", \"currentColor\");\n rect.setAttribute(\"stroke-width\", \"1.6\");\n const dot = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n dot.setAttribute(\"cx\", \"16.5\");\n dot.setAttribute(\"cy\", \"12.5\");\n dot.setAttribute(\"r\", \"1.4\");\n dot.setAttribute(\"fill\", \"currentColor\");\n svg.append(rect, dot);\n return svg;\n}\nfunction isInjectedProvider(v) {\n return (typeof v === \"object\" &&\n v !== null &&\n typeof v.signMessage === \"function\");\n}\n// Enumerate native wallets via the Solana Wallet Standard registry (NOT a\n// hardcoded name list) - every wallet that registered itself shows up with its\n// real name + icon - and ALSO an older wallet that never registers and only\n// exposes `window.solana`.\n//\n// The legacy `window.solana` probe fills in for a wallet too old to register\n// itself. The rule it has always encoded is \"no BROWSER wallet registered\", and\n// the registry answered that faithfully until Solana Mobile joined it: MWA\n// registers on every capable Android phone, installed browser wallet or not, so\n// a bare \"is the registry empty\" test would hide exactly the wallet the user\n// has. Judge emptiness by the registered wallets that are actually in-page\n// ones. (Identity de-duplication is not available here: a registry adapter is\n// never the injected object, so comparing them can only ever be false.)\nfunction discoverWallets(configuredNetwork) {\n if (typeof window === \"undefined\")\n return [];\n // DS2-0383: pass the app's configured Solana network so the discovered\n // provider signs+sends on that network, not the wallet's first advertised chain.\n const standard = discoverStandardWallets(configuredNetwork);\n const choices = standard.map((w) => ({ name: w.name, icon: w.icon, wallet: w.wallet, get: () => w.getProvider() }));\n // \"Did an in-page wallet register?\" is a question about TRANSPORT: a mobile\n // adapter another SDK registered is still not the injected wallet, so counting\n // it would hide a legacy window.solana wallet the user actually has.\n const registeredInPageWallet = standard.some((w) => !looksLikeSolanaMobileWallet(w.name));\n const generic = window.solana;\n if (!registeredInPageWallet && isInjectedProvider(generic)) {\n choices.push({ name: \"Wallet\", get: () => generic });\n }\n return choices;\n}\n// Shown when a lane is refused because another login can still commit. Saying so\n// beats a click that does nothing, which is what \"one at a time\" looks like from\n// the outside.\nconst BUSY_MSG = \"A sign-in is already in progress - finish or cancel it first.\";\nconst METHOD_LABEL = {\n google: \"Continue with Google\",\n apple: \"Continue with Apple\",\n github: \"Continue with GitHub\",\n};\nfunction el(tag, cls, text) {\n const n = document.createElement(tag);\n if (cls)\n n.className = cls;\n if (text != null)\n n.textContent = text;\n return n;\n}\n// The session-mint lock, deliberately OUTSIDE any one open. What it protects -\n// the SDK's single stored session and committed auth provider - is global, and a\n// login cannot be cancelled once it is running: dismissing a card or superseding\n// it with a second openBoundedWidget() leaves the login underneath still able to\n// commit. A per-open flag would hand the next card a fresh unlocked boolean and\n// let exactly the overlap it exists to prevent happen across opens.\nlet loginInFlight = false;\n// The open that currently owns the card. A login cannot be cancelled once it is\n// running, so one started on a card that is then superseded or dismissed can\n// still commit a session - and the widget must not answer that by leaving a live\n// login card in front of a signed-in app.\nlet liveOpen = null;\nconst pendingOpens = new Set();\n/** Register an open before its first await, superseding older pending ones. */\nfunction beginPendingOpen() {\n for (const older of pendingOpens)\n cancelPendingOpen(older);\n const pending = { committed: null, cancelled: false, wake: null };\n pendingOpens.add(pending);\n return pending;\n}\nfunction cancelPendingOpen(pending) {\n pending.cancelled = true;\n const wake = pending.wake;\n pending.wake = null;\n wake === null || wake === void 0 ? void 0 : wake();\n}\n/** The user closed the widget: every open still preparing is closed with it. */\nfunction cancelPendingOpens() {\n for (const pending of pendingOpens)\n cancelPendingOpen(pending);\n}\n/** A login committed: hand it to opens that have no card to receive it. */\nfunction deliverToPendingOpens(user) {\n for (const pending of pendingOpens) {\n pending.committed = user;\n const wake = pending.wake;\n pending.wake = null;\n wake === null || wake === void 0 ? void 0 : wake();\n }\n}\n/**\n * Await preparation, but stop the moment this open's answer is already known -\n * dismissed, superseded, or overtaken by a login that committed. Without this a\n * stalled chunk fetch holds the caller on a card that can never be shown, or on\n * a question the widget has already answered.\n */\nfunction untilCancelled(work, pending) {\n if (pending.cancelled || pending.committed)\n return Promise.reject(new Error(\"cancelled\"));\n return Promise.race([\n work.finally(() => { pending.wake = null; }),\n new Promise((_, reject) => {\n pending.wake = () => reject(new Error(\"cancelled\"));\n }),\n ]);\n}\n/**\n * Open the unified Bounded login widget and resolve with the signed-in `User`.\n * Rejects with `Error(\"cancelled\")` if the user dismisses it. `init()` must have\n * run first; call from a user gesture so social/wallet popups are allowed.\n */\nexport async function openBoundedWidget(opts = {}) {\n if (!hasDOM()) {\n throw new Error(\"openBoundedWidget is web-only - on React Native use loginWithRedirect()\");\n }\n // Registered before the first await - see PendingOpen.\n const pending = beginPendingOpen();\n try {\n return await prepareAndOpen(opts, pending);\n }\n catch (err) {\n // Interrupted rather than failed: while this open was preparing, a login\n // committed, the widget was dismissed, or a newer open was requested. The\n // committed login is the most useful answer of the three - the app IS signed\n // in - so it wins whatever else also happened.\n if (pending.committed)\n return pending.committed;\n if (pending.cancelled)\n throw new Error(\"cancelled\");\n throw err;\n }\n finally {\n pendingOpens.delete(pending);\n }\n}\n/**\n * Prepare the card and run it. Split out so the caller can hold ONE record for\n * this open across every await below, and settle it the moment the widget is\n * dismissed rather than when preparation happens to finish.\n */\nasync function prepareAndOpen(opts, pending) {\n var _a, _b, _c, _d, _e, _f;\n // Imported lazily to avoid a static cycle with the auth index barrel.\n const authApi = await untilCancelled(import(\"./index\"), pending);\n const hostedLogin = (options) => {\n if (detectMobile())\n return authApi.loginWithRedirect(options);\n // Invoke immediately inside the click handler to retain popup activation.\n return authApi.loginWithPopup(options).catch((error) => {\n if (shouldFallbackToRedirect(error))\n return authApi.loginWithRedirect(options);\n throw error;\n });\n };\n // BEFORE any side effect. Registering the mobile wallet from an empty config\n // would take the chainless mainnet default, and that registration cannot be\n // withdrawn - so opening the widget before init() would pin the page to the\n // wrong cluster and make the app's real init() fail demanding a reload.\n const initCfg = authApi.getInitConfig();\n if (!initCfg) {\n throw new Error(\"openBoundedWidget() must be called after init() - the login lane is built from the \" +\n \"app's configuration, and the mobile wallet is registered for its Solana network.\");\n }\n const methods = ((_a = opts.methods) !== null && _a !== void 0 ? _a : [\"email\", \"google\"]).map(String);\n const hasEmail = methods.includes(\"email\") || methods.includes(\"text\");\n const social = methods.filter((m) => m !== \"email\" && m !== \"text\");\n // Policy first: an app whose site requires an email on file, or that explicitly\n // set `walletLogin: false`, hides the wallet lane entirely - this OVERRIDES a\n // per-call `opts.wallet` and any detected injected wallet.\n const lane = {\n requested: opts.wallet,\n hardOff: authApi.isWalletLoginDisabled(initCfg) || authApi.isEmailRequired(initCfg),\n optedIn: authApi.isWalletLoginEnabled(initCfg),\n };\n // Register Solana Mobile's MWA wallet (Saga/Seeker) with the Wallet Standard\n // registry BEFORE enumerating it, so the device wallet is listed alongside\n // injected wallets. Gated on the app's own opt-in (see wallet-lane.ts: MWA\n // registers on any capable Android browser, installed wallet or not, so it\n // must never be what turns the lane on). No-op off-Android.\n const network = authApi.getConfiguredSolanaNetwork(initCfg);\n // 1. Detect what is already there. This reads the registry and window.solana\n // and loads nothing, so it is safe to do before anything is prepared - and\n // it is what decides whether the lane appears at all.\n const offerMobile = shouldOfferSolanaMobileWallet(lane);\n const detected = discoverWallets(network)\n .filter((w) => !looksLikeSolanaMobileWallet(w.name)).length;\n let walletEnabled = isWalletLaneEnabled(Object.assign(Object.assign({}, lane), { detected }));\n // 2. Prepare BEFORE the lane is rendered, never after the tap: loading the\n // provider chunk (or registering the mobile wallet) from a click spends the\n // activation the wallet handoff needs. Preparing costs nothing for an app\n // whose lane is off, because we only get here when it is on.\n if (walletEnabled) {\n try {\n // A mobile-wallet failure needs no special handling here: it simply is not\n // in the registry, so step 3 does not list it.\n if (offerMobile)\n await untilCancelled(authApi.ensureWalletLoginReady(), pending);\n // The lane is on through detection or opt-in but the phone wallet is not\n // being offered, so only the shared half is needed.\n else\n await untilCancelled(authApi.ensureSharedWalletLoginReady(), pending);\n }\n catch (err) {\n // Except when the app's own configuration is the problem. That is a\n // developer bug the SDK deliberately raises loudly, and swallowing it here\n // would answer \"my wallet lane vanished, and so did my injected wallet\"\n // with silence. Availability is what may degrade; a contradiction is not.\n if (err instanceof WalletConfigError)\n throw err;\n // Nor is being closed while preparing: this open is over, and continuing\n // to build its card would only render it after the user said no.\n if (pending.cancelled)\n throw err;\n // A SHARED failure means there is no wallet login at all: better no lane\n // than a button that fails after the user has spent a tap on it.\n walletEnabled = false;\n }\n }\n // 3. Enumerate AFTER preparing, so the list reflects what is actually ready -\n // the mobile wallet exists in the registry only once registered.\n const wallets = walletEnabled ? discoverWallets(network) : [];\n // Nothing to offer: the phone wallet could not be prepared (or this device has\n // none) and the user has no injected wallet either. Hiding the lane beats a\n // button with no wallet behind it.\n if (wallets.length === 0)\n walletEnabled = false;\n const authMode = (_b = opts.authMode) !== null && _b !== void 0 ? _b : authApi.resolveAuthMode(initCfg);\n // Widget text: per-call options win, then init() loginWidget config, then the\n // defaults (\"Sign in\" / the Bounded subline; \"\" suppresses the subline).\n const title = (_c = opts.title) !== null && _c !== void 0 ? _c : (_d = initCfg.loginWidget) === null || _d === void 0 ? void 0 : _d.title;\n const subtitle = (_e = opts.subtitle) !== null && _e !== void 0 ? _e : (_f = initCfg.loginWidget) === null || _f === void 0 ? void 0 : _f.subtitle;\n ensureFonts();\n const m = getModal();\n // Whatever happened while this open was preparing, decided now, before it can\n // put anything on screen. A committed login wins over a cancellation: the app\n // IS signed in, and that is the more useful answer to the caller's question.\n if (pending.committed)\n return pending.committed;\n if (pending.cancelled)\n throw new Error(\"cancelled\");\n // From here this open OWNS a card, and the modal's ownership generation\n // governs it - being pending is over. Nothing today reads a record left\n // behind (a running open awaits nothing that could be woken, and has already\n // passed the checks above), so this maintains the invariant the set's name\n // asserts rather than fixing a bug - which is exactly why it is worth keeping.\n pendingOpens.delete(pending);\n return new Promise((resolve, reject) => {\n var _a;\n // Per-open ownership generation (DS3-0402): a later open bumps the modal's\n // generation, so this open's token stops matching and all of its callbacks\n // (backdrop, success, cancel, and the async view swap) no-op instead of\n // mutating a singleton a newer open now owns. Claiming also rejects any prior\n // pending open so its caller is never stranded.\n // True once a gesture view has replaced the view that started this login, so\n // its catch handler knows its own buttons are detached and must re-render\n // instead of writing an error nobody can see.\n let gestureViewShown = false;\n // Failure after the second tap: the caller's controls are gone with their\n // view, so put the user back on a live screen carrying the error.\n const failAfterGesture = (message) => {\n swap(renderWallets(message));\n };\n // ONE login at a time, across every lane - and that is TWO different things,\n // which is the distinction this got wrong twice.\n //\n // OWNERSHIP of the card (`activeAttempt`) says whose views and error text may\n // appear. A wallet attempt that is still preparing shares this open's single\n // view and gesture state, so Back, another lane, or a second wallet click\n // must be able to take the card away from it - after which it settles\n // quietly instead of mounting its gesture view over whatever replaced it (or\n // waiting forever on a view ownership will no longer mount). Cancellation is\n // DURABLE because it lives in this token rather than a flag: an attempt\n // cancelled long before it asks for a gesture is simply no longer current, so\n // its gesture rejects the moment it arrives. (A separate \"cancelled\" boolean\n // could not express that, and the one that existed was set while CLAIMING an\n // attempt, so the first mobile login cancelled its own gesture.)\n //\n // The LOCK (`loginInFlight`) is the other half, and it is not the same thing:\n // taking the card away does not stop the login underneath it. That login can\n // still mint a session and commit itself as the SDK's provider, so starting a\n // second one while the first can still commit is how the app ends up signed\n // in as a wallet the widget never returned. The lock is therefore held until\n // the underlying promise SETTLES, whoever owns the card by then.\n let attemptSeq = 0;\n let activeAttempt = 0;\n let abortScopedLogin = null;\n let abortGesture = null;\n /** Reject a gesture promise already waiting on a view that is going away. */\n const abortPendingGesture = () => {\n const abort = abortGesture;\n abortGesture = null;\n abort === null || abort === void 0 ? void 0 : abort();\n };\n /** Claim the card, or refuse (null) while a login can still commit. */\n const beginAttempt = () => {\n if (loginInFlight)\n return null;\n loginInFlight = true;\n abortPendingGesture();\n activeAttempt = ++attemptSeq;\n return activeAttempt;\n };\n const attemptIsCurrent = (id) => id === activeAttempt;\n /**\n * Release the lock, and report whether this attempt still owns the card -\n * one call, so a lane cannot release one and forget the other.\n */\n const settleAttempt = (id) => {\n loginInFlight = false;\n if (!attemptIsCurrent(id))\n return false;\n activeAttempt = 0;\n return true;\n };\n /** Take the card back (Back, a lane switch, settling the modal). Deliberately\n * NOT a release: the login underneath keeps running - see above. */\n const invalidateAttempts = () => {\n abortScopedLogin === null || abortScopedLogin === void 0 ? void 0 : abortScopedLogin();\n abortScopedLogin = null;\n activeAttempt = 0;\n abortPendingGesture();\n };\n // Superseded by a newer open: the newer one owns the DOM, so this open can\n // no longer show a gesture view. Cancel any login of ours that is waiting\n // for (or about to ask for) one, then reject our caller.\n const owner = claimModalOpen(m, () => {\n invalidateAttempts();\n reject(new Error(\"cancelled\"));\n });\n // Settle THIS open with a user. Returns false when it no longer owns the card\n // (superseded, dismissed, or already settled).\n // Nothing clears this registration when the open settles, and nothing needs\n // to: settleOwned runs at most once per open, so a stale `liveOpen` is inert\n // - a late success finds a settled owner and quietly does nothing.\n const deliver = (u) => owner.settleOwned(() => {\n invalidateAttempts();\n hideModal(m);\n resolve(u);\n });\n liveOpen = deliver;\n const succeed = (u) => {\n // Recorded FIRST, and unconditionally: an open still preparing has no card\n // to receive this, and reads it when it arrives instead.\n deliverToPendingOpens(u);\n if (deliver(u))\n return;\n // This open is gone, but the login it started COMMITTED: a session is\n // stored and the SDK has an auth provider. Hand it to whatever card is up\n // now instead of leaving the app signed in behind a live login card that\n // will never settle. With no card up there is nothing to settle and the\n // app is simply signed in.\n liveOpen === null || liveOpen === void 0 ? void 0 : liveOpen(u);\n };\n const cancel = () => {\n // Propagated only when the dismissal actually lands: a stale open whose\n // settleOwned no-ops has dismissed nothing, and must not close opens that\n // are preparing for the card a newer open still owns.\n if (!owner.settleOwned(() => {\n // Unwind a login parked on the sign-in gesture before tearing the UI\n // down, so the provider is never left waiting on a tap that can no\n // longer happen.\n invalidateAttempts();\n hideModal(m);\n reject(new Error(\"cancelled\"));\n }))\n return;\n cancelPendingOpens();\n };\n m.onBackdrop = cancel;\n const style = el(\"style\");\n style.textContent = CARD_CSS;\n let emailDraft = \"\";\n const renderChoose = (initialError) => {\n const card = el(\"div\", \"c\");\n card.appendChild(style.cloneNode(true));\n const x = el(\"button\", \"x\", \"Close\");\n x.type = \"button\";\n x.setAttribute(\"aria-label\", \"Close\");\n x.addEventListener(\"click\", cancel);\n card.appendChild(x);\n card.appendChild(el(\"h1\", undefined, title !== null && title !== void 0 ? title : \"Sign in\"));\n if (subtitle !== \"\") {\n card.appendChild(el(\"p\", \"sub\", subtitle !== null && subtitle !== void 0 ? subtitle : \"Sign in to continue to this app.\"));\n }\n const status = el(\"div\", \"status\");\n const setErr = (msg) => {\n status.textContent = msg;\n status.classList.add(\"err\");\n };\n if (initialError)\n setErr(initialError);\n const setBusy = (btn, label) => {\n status.classList.remove(\"err\");\n status.textContent = \"\";\n btn.disabled = true;\n btn.replaceChildren(el(\"span\", \"spin\"), document.createTextNode(label));\n };\n if (hasEmail) {\n const form = el(\"form\");\n const label = el(\"label\");\n label.htmlFor = \"bw-email\";\n label.textContent = \"Email\";\n const input = el(\"input\");\n input.id = \"bw-email\";\n input.type = \"email\";\n input.autocomplete = \"email\";\n input.placeholder = \"you@example.com\";\n input.required = true;\n input.value = emailDraft;\n input.addEventListener(\"input\", () => { emailDraft = input.value; });\n const submit = el(\"button\", \"btn primary\");\n submit.type = \"submit\";\n submit.textContent = \"Continue\";\n form.append(label, input, submit);\n form.addEventListener(\"submit\", (e) => {\n e.preventDefault();\n if (!input.value)\n return;\n emailDraft = input.value;\n // Starting another lane takes the card from a wallet attempt still\n // preparing, and this lane holds the lock until its own request\n // settles - otherwise a failed email login would keep every other lane\n // refused for the life of the modal.\n const attempt = beginAttempt();\n if (attempt === null) {\n setErr(BUSY_MSG);\n return;\n }\n if (authMode === \"turnkey\") {\n // Turnkey-native: ask Turnkey to email a code, then collect it INLINE.\n // Sending the code mints nothing, so the lock is released when it\n // arrives; the code entry claims its own when the user verifies.\n setBusy(submit, \"Sending code\\u2026\");\n startTurnkeyEmailLogin(input.value)\n .then(async (handle) => {\n if (!attemptIsCurrent(attempt)) {\n settleAttempt(attempt);\n return;\n }\n // BSA-2026-004: collect the code in the Bounded OTP frame, never in\n // this tenant DOM and never in the unframeable signer document.\n if (settleAttempt(attempt))\n swap(renderOtpFrame(handle));\n })\n .catch((err) => {\n if (!settleAttempt(attempt))\n return;\n if (abortScopedLogin) {\n abortScopedLogin = null;\n detachIframe(m);\n swap(renderChoose(errText(err)));\n return;\n }\n submit.disabled = false;\n submit.textContent = \"Continue\";\n setErr(errText(err));\n });\n return;\n }\n setBusy(submit, \"Opening secure sign-in\\u2026\");\n const emailOpts = {\n provider: \"email\",\n prompt: \"login\",\n loginHint: input.value,\n redirectUri: opts.redirectUri,\n };\n hostedLogin(emailOpts)\n // A hosted login that RESOLVES minted a real session, so it settles\n // the card even if another lane has since taken it - dropping it\n // would leave the app signed in behind a widget that says it is not.\n // Only the failure path belongs to one attempt's UI.\n .then((u) => {\n if (u) {\n settleAttempt(attempt);\n succeed(u);\n }\n else if (settleAttempt(attempt)) {\n submit.disabled = false;\n submit.textContent = \"Continue\";\n }\n })\n .catch((err) => {\n if (!settleAttempt(attempt))\n return;\n submit.disabled = false;\n submit.textContent = \"Continue\";\n setErr(errText(err));\n });\n });\n card.appendChild(form);\n }\n if (social.length || walletEnabled) {\n card.appendChild(el(\"div\", \"or\", \"OR\"));\n }\n const labelFor = (method) => { var _a; return (_a = METHOD_LABEL[method]) !== null && _a !== void 0 ? _a : `Continue with ${cap(method)}`; };\n const glyphFor = (method) => method === \"google\" ? googleGlyph() : null;\n const setLabel = (b, method) => {\n const glyph = glyphFor(method);\n const text = document.createTextNode(labelFor(method));\n if (glyph)\n b.replaceChildren(glyph, text);\n else\n b.replaceChildren(text);\n };\n for (const method of social) {\n const b = el(\"button\", \"btn ghost\");\n b.type = \"button\";\n setLabel(b, method);\n b.addEventListener(\"click\", () => {\n const attempt = beginAttempt();\n if (attempt === null) {\n setErr(BUSY_MSG);\n return;\n }\n setBusy(b, \"Opening secure sign-in\\u2026\");\n const socialOpts = { provider: method, redirectUri: opts.redirectUri };\n hostedLogin(socialOpts)\n .then((u) => {\n if (u) {\n settleAttempt(attempt);\n succeed(u);\n }\n else if (settleAttempt(attempt)) {\n b.disabled = false;\n setLabel(b, method);\n }\n })\n .catch((err) => {\n if (!settleAttempt(attempt))\n return;\n b.disabled = false;\n setLabel(b, method);\n setErr(errText(err));\n });\n });\n card.appendChild(b);\n }\n if (walletEnabled) {\n const b = el(\"button\", \"btn ghost\");\n b.type = \"button\";\n const walletLabel = () => b.replaceChildren(walletGlyph(), document.createTextNode(\"Continue with wallet\"));\n walletLabel();\n b.addEventListener(\"click\", () => {\n if (wallets.length <= 1) {\n connectWallet(wallets[0]);\n }\n else {\n swap(renderWallets());\n }\n });\n card.appendChild(b);\n const connectWallet = (choice) => {\n const attempt = beginAttempt();\n if (attempt === null) {\n setErr(BUSY_MSG);\n return;\n }\n setBusy(b, \"Approve in your wallet…\");\n authApi\n .loginWithWallet(Object.assign(Object.assign({}, (choice ? { getProvider: choice.get } : {})), { confirmSignIn: signInGesture(choice, attempt) }))\n .then((u) => {\n // A wallet login that RESOLVED has already minted a session and\n // committed itself as the SDK's provider - the app IS signed in.\n // So it settles the card even if the user walked away from this\n // attempt; leaving the card up would be a lie, and the ownership\n // generation still stops it from stomping a NEWER open.\n const owned = settleAttempt(attempt);\n if (u) {\n succeed(u);\n return;\n }\n if (!owned)\n return;\n b.disabled = false;\n walletLabel();\n setErr(\"Wallet login was cancelled.\");\n })\n .catch((err) => {\n if (!settleAttempt(attempt))\n return;\n if (gestureViewShown) {\n gestureViewShown = false;\n failAfterGesture(errText(err));\n return;\n }\n b.disabled = false;\n walletLabel();\n setErr(errText(err));\n });\n };\n }\n card.appendChild(status);\n const foot = el(\"div\", \"foot\");\n const poweredBy = el(\"a\", undefined, \"Powered by Bounded\");\n poweredBy.href = \"https://bounded.sh\";\n poweredBy.target = \"_blank\";\n poweredBy.rel = \"noopener\";\n foot.appendChild(poweredBy);\n card.appendChild(foot);\n return card;\n };\n // Solana Mobile leaves the page to sign: connecting spends the tap that\n // started login, so requesting the signature straight afterwards runs with\n // no transient activation left, Chrome blocks the `solana-wallet:` intent\n // navigation, and the protocol reports the wallet as missing. Collect a\n // second tap on its OWN view - never by adding a listener to a button that\n // already starts a login, which would run both handlers on that tap and\n // kick off a duplicate login beside the one waiting for the gesture.\n // Injected wallets sign in-page and get no extra step.\n // Offered for EVERY wallet: the SDK invokes it only for a wallet that leaves\n // the page (InjectedSolanaProvider.leavesPage), so an in-page wallet still\n // gets no extra tap - and a login that resolves the mobile wallet through\n // the registry fallback is covered too, which a caller-side name check\n // could not do.\n const signInGesture = (choice, attempt) => {\n return () => new Promise((resolveGesture, rejectGesture) => {\n if (!attemptIsCurrent(attempt)) {\n rejectGesture(new Error(\"cancelled\"));\n return;\n }\n abortGesture = () => {\n abortGesture = null;\n rejectGesture(new Error(\"cancelled\"));\n };\n gestureViewShown = true;\n swap(renderSignInGesture(choice, () => {\n abortGesture = null;\n resolveGesture();\n }));\n });\n };\n // The gesture view: one button, one job. Its tap is the fresh activation the\n // wallet's intent navigation needs, so the signature must be requested from\n // this click and nothing else may run on it.\n const renderSignInGesture = (choice, done) => {\n var _a;\n const card = el(\"div\", \"c\");\n card.appendChild(style.cloneNode(true));\n const x = el(\"button\", \"x\", \"Close\");\n x.type = \"button\";\n x.setAttribute(\"aria-label\", \"Close\");\n x.addEventListener(\"click\", cancel);\n card.appendChild(x);\n card.appendChild(el(\"h1\", undefined, \"One more tap\"));\n card.appendChild(el(\"p\", \"sub\", `${(_a = choice === null || choice === void 0 ? void 0 : choice.name) !== null && _a !== void 0 ? _a : \"Your wallet\"} is connected. Tap below to sign in - your wallet opens once more to sign.`));\n const b = el(\"button\", \"btn primary\");\n b.type = \"button\";\n b.textContent = \"Sign in\";\n b.addEventListener(\"click\", () => {\n b.disabled = true;\n b.replaceChildren(el(\"span\", \"spin\"), document.createTextNode(\"Approve in your wallet…\"));\n done();\n }, { once: true });\n card.appendChild(b);\n return card;\n };\n const renderWallets = (initialError) => {\n const card = el(\"div\", \"c\");\n card.appendChild(style.cloneNode(true));\n const back = el(\"button\", \"back\", \"\\u2190 Back\");\n back.type = \"button\";\n // Leaving the wallet list supersedes any attempt still preparing, so it\n // cannot come back later and replace whatever is on screen by then.\n back.addEventListener(\"click\", () => { invalidateAttempts(); swap(renderChoose()); });\n card.appendChild(back);\n card.appendChild(el(\"h1\", undefined, \"Connect a wallet\"));\n card.appendChild(el(\"p\", \"sub\", \"Choose your Solana wallet.\"));\n const status = el(\"div\", \"status\");\n if (initialError) {\n status.textContent = initialError;\n status.classList.add(\"err\");\n }\n // Icon (the wallet's own, from the Wallet Standard registry) + name.\n const setWalletLabel = (b, choice) => {\n const text = document.createTextNode(choice.name);\n if (choice.icon) {\n const img = el(\"img\", \"wicon\");\n img.src = choice.icon;\n img.alt = \"\";\n b.replaceChildren(img, text);\n }\n else {\n b.replaceChildren(text);\n }\n };\n for (const choice of wallets) {\n const b = el(\"button\", \"btn ghost\");\n b.type = \"button\";\n setWalletLabel(b, choice);\n b.addEventListener(\"click\", () => {\n const attempt = beginAttempt();\n if (attempt === null) {\n status.textContent = BUSY_MSG;\n status.classList.add(\"err\");\n return;\n }\n status.classList.remove(\"err\");\n b.disabled = true;\n b.replaceChildren(el(\"span\", \"spin\"), document.createTextNode(\"Approve in your wallet\\u2026\"));\n authApi\n .loginWithWallet({ getProvider: choice.get, confirmSignIn: signInGesture(choice, attempt) })\n .then((u) => {\n // Settles the card whoever owns it by then - see connectWallet().\n const owned = settleAttempt(attempt);\n if (u) {\n succeed(u);\n return;\n }\n if (!owned)\n return;\n b.disabled = false;\n setWalletLabel(b, choice);\n })\n .catch((err) => {\n if (!settleAttempt(attempt))\n return;\n if (gestureViewShown) {\n gestureViewShown = false;\n failAfterGesture(errText(err));\n return;\n }\n b.disabled = false;\n setWalletLabel(b, choice);\n status.textContent = errText(err);\n status.classList.add(\"err\");\n });\n });\n card.appendChild(b);\n }\n card.appendChild(status);\n return card;\n };\n // BSA-2026-004: authMode:\"turnkey\" code entry runs ENTIRELY inside a Bounded-origin OTP frame,\n // never in this tenant DOM. The widget only embeds that frame and reacts to its result - it\n // never sees the plaintext code or the sealing key. The editorial card wraps the frame so the\n // experience still feels native; the code input, sealing, and verify all live behind the frame.\n const renderOtpFrame = (handle) => {\n const card = el(\"div\", \"c\");\n card.appendChild(style.cloneNode(true));\n const back = el(\"button\", \"back\", \"\\u2190 Back\");\n back.type = \"button\";\n card.appendChild(back);\n const status = el(\"div\", \"status\");\n const setErr = (msg) => { status.textContent = msg; status.classList.add(\"err\"); };\n // The Bounded-origin OTP frame. Its route restricts frame-ancestors to this exact origin, so\n // only this app may embed it; the code + the P-256 key never leave it into this realm.\n // Its trusted resize messages fit the heading, input, and any error copy.\n const frame = document.createElement(\"iframe\");\n frame.setAttribute(\"title\", \"Enter your code\");\n frame.style.cssText = \"width:100%;height:210px;border:0;background:transparent;color-scheme:dark\";\n card.appendChild(frame);\n card.appendChild(status);\n const foot = el(\"div\", \"foot\");\n const poweredBy = el(\"a\", undefined, \"Powered by Bounded\");\n poweredBy.href = \"https://bounded.sh\";\n poweredBy.target = \"_blank\";\n poweredBy.rel = \"noopener\";\n foot.appendChild(poweredBy);\n card.appendChild(foot);\n // Running the frame MINTS a session, so it takes the lock like every other lane. Abandoning\n // via Back settles it so the next lane the user picks is not refused by a claim nobody owns.\n const attempt = beginAttempt();\n if (attempt === null) {\n setErr(BUSY_MSG);\n return card;\n }\n back.addEventListener(\"click\", () => { settleAttempt(attempt); invalidateAttempts(); swap(renderChoose()); });\n handle\n .run(frame)\n .then((u) => { settleAttempt(attempt); succeed(u); })\n .catch((err) => {\n if (!settleAttempt(attempt))\n return;\n setErr(errText(err));\n });\n return card;\n };\n const swap = (node) => {\n // A superseded open must not remount or re-fit the shared singleton modal -\n // an async .then (e.g. the turnkey email lane calling swap(renderOtp)) can\n // land after a newer open has taken over the DOM.\n if (!owner.owns())\n return;\n mountContent(m, node);\n requestAnimationFrame(() => {\n if (owner.owns())\n fitPanelToContent(m);\n });\n };\n swap(renderChoose((_a = authApi.getLoginReturnError()) === null || _a === void 0 ? void 0 : _a.message));\n showModal(m);\n });\n}\nfunction cap(s) {\n return s ? s[0].toUpperCase() + s.slice(1) : s;\n}\nfunction errText(err) {\n const msg = err instanceof Error ? err.message : String(err);\n if (/blocked/i.test(msg))\n return \"Popup blocked - allow popups and try again.\";\n return msg || \"Something went wrong. Try again.\";\n}\nfunction shouldFallbackToRedirect(err) {\n const msg = err instanceof Error ? err.message : String(err);\n return /blocked/i.test(msg) || /use loginWithRedirect\\(\\) instead/i.test(msg);\n}\n","import { getCurrentUser, waitForAuthReady } from '../global';\nimport { openBoundedWidget } from './bounded-login-widget';\nlet pendingSignIn = null;\n/**\n * Return the restored user or open the Bounded sign-in widget when signed out.\n *\n * Calls made while init() is restoring a stored session wait for that work first.\n * Concurrent calls share one attempt, so repeated clicks cannot open competing\n * auth flows. If initialization fails, its original error is preserved.\n */\nexport function ensureSignedIn(options) {\n if (pendingSignIn)\n return pendingSignIn;\n const attempt = (async () => {\n await waitForAuthReady();\n // Read again after readiness in case an auth-state callback completed a\n // sign-in between the readiness promise settling and this continuation.\n const currentUser = getCurrentUser();\n if (currentUser)\n return currentUser;\n return openBoundedWidget(options);\n })();\n pendingSignIn = attempt;\n const clearPending = () => {\n if (pendingSignIn === attempt)\n pendingSignIn = null;\n };\n void attempt.then(clearPending, clearPending);\n return attempt;\n}\n","var _a;\nimport * as React from 'react';\nimport { login as sdkLogin, logout as sdkLogout } from '../../global';\nimport { onAuthStateChanged, onAuthLoadingChanged } from '../../global';\n// Whether we're in a server-side rendering context (no hooks allowed).\n// React Native has no `window` but DOES support hooks.\n// We detect Node SSR specifically via process.versions.node to avoid\n// false positives from Node 21+ which defines `navigator` globally.\nconst isSSR = typeof window === 'undefined'\n && typeof process !== 'undefined'\n && !!((_a = process.versions) === null || _a === void 0 ? void 0 : _a.node);\nexport function useAuth() {\n // Provide a fallback so server render doesn't break\n if (isSSR) {\n return {\n login: async (_options) => undefined,\n logout: async () => undefined,\n loading: true,\n user: null,\n };\n }\n const [user, setUser] = React.useState(null);\n const [loading, setLoading] = React.useState(true);\n const [sdkLoading, setSdkLoading] = React.useState(false);\n React.useEffect(() => {\n const stopAuth = onAuthStateChanged((user) => {\n setUser(user);\n setLoading(false);\n });\n const stopLoading = onAuthLoadingChanged((loading) => {\n setSdkLoading(loading);\n });\n return () => {\n stopAuth();\n stopLoading();\n };\n }, []);\n const login = async (options) => {\n try {\n setLoading(true);\n const user = await sdkLogin(options);\n setUser(user);\n }\n catch (error) {\n // Only log errors that aren't user-initiated cancellations\n if (error !== 'exited_auth_flow' && (error === null || error === void 0 ? void 0 : error.message) !== 'exited_auth_flow') {\n console.error('Error logging in:', error);\n }\n setUser(null);\n }\n finally {\n setLoading(false);\n }\n };\n const logout = async () => {\n try {\n setLoading(true);\n await sdkLogout();\n setUser(null);\n }\n catch (error) {\n console.error('Error logging out:', error);\n }\n finally {\n setLoading(false);\n }\n };\n return {\n login,\n logout,\n loading: loading || sdkLoading,\n user,\n };\n}\n","var _a;\nimport * as React from 'react';\nimport { subscribe } from '@bounded-sh/core';\n// SSR guard (mirrors useAuth): no hooks/subscriptions during Node server render.\n// React Native has no `window` but DOES support hooks, so detect Node SSR\n// specifically via process.versions.node.\nconst isSSR = typeof window === 'undefined'\n && typeof process !== 'undefined'\n && !!((_a = process.versions) === null || _a === void 0 ? void 0 : _a.node);\nexport function useQuery(path, options) {\n if (isSSR) {\n return { data: undefined, loading: true, error: null };\n }\n const [data, setData] = React.useState(undefined);\n const [loading, setLoading] = React.useState(true);\n const [error, setError] = React.useState(null);\n // Re-subscribe only when the query actually changes (not on every render).\n const optionsKey = options ? JSON.stringify(options) : '';\n React.useEffect(() => {\n if (!path) {\n setData(undefined);\n setLoading(false);\n setError(null);\n return;\n }\n let active = true;\n let unsubscribe;\n setLoading(true);\n setError(null);\n subscribe(path, Object.assign(Object.assign({}, options), { onData: (d) => {\n if (!active)\n return;\n // A reconnect can legitimately surface a transport error before the\n // socket re-authenticates and sends a new authorized snapshot. That\n // fresh snapshot is the recovery boundary: keep the error visible\n // until data arrives, then clear it so React does not remain stuck on\n // a failure page after realtime has recovered.\n setError(null);\n setData(d);\n setLoading(false);\n }, onError: (e) => {\n if (!active)\n return;\n setError(e instanceof Error ? e : new Error(String(e)));\n setLoading(false);\n } }))\n .then((unsub) => {\n if (active)\n unsubscribe = unsub;\n else\n void unsub(); // unmounted before subscribe resolved\n })\n .catch((e) => {\n if (!active)\n return;\n setError(e instanceof Error ? e : new Error(String(e)));\n setLoading(false);\n });\n return () => {\n active = false;\n void (unsubscribe === null || unsubscribe === void 0 ? void 0 : unsubscribe());\n };\n // optionsKey captures the option object's contents; path is the other input.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [path, optionsKey]);\n return { data, loading, error };\n}\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { getConfig, getFreshAuthToken, getSessionGeneration } from '@bounded-sh/core';\nimport { getPlatform, isVolatileStorage } from '../platform';\n/** Source is a safe tar.gz tree; attachments remain model input, never executable files. */\nexport async function uploadInput(appId, options) {\n const data = options.data instanceof Uint8Array ? new Uint8Array(options.data).buffer : await options.data.arrayBuffer();\n const sha256 = Array.from(new Uint8Array(await getPlatform().sha256(new Uint8Array(data))), (byte) => byte.toString(16).padStart(2, '0')).join('');\n const path = `/app/${encodeURIComponent(appId)}/build-inputs`;\n const ticket = await requestDevApi(path, {\n method: 'POST', body: { kind: options.kind, name: options.name, contentType: options.contentType, bytes: data.byteLength, sha256 },\n });\n const destination = new URL(ticket.uploadUrl);\n if (destination.protocol !== 'https:' && !(destination.protocol === 'http:' && ['localhost', '127.0.0.1', '[::1]'].includes(destination.hostname)))\n throw new Error('Build input upload requires a secure endpoint.');\n const response = await fetch(destination.href, {\n method: 'PUT', redirect: 'error', headers: { Authorization: `Bearer ${ticket.uploadToken}`, 'Content-Type': options.contentType }, body: data,\n });\n if (!response.ok)\n throw apiError(response, await responseBody(response));\n return requestDevApi(`${path}/${encodeURIComponent(ticket.artifactId)}/finalize`, { method: 'POST' });\n}\n/** A structured non-2xx response from the developer API. */\nexport class BuildsApiError extends Error {\n constructor(init) {\n super(init.message);\n this.name = 'BuildsApiError';\n this.code = init.code;\n this.retryable = init.retryable;\n this.status = init.status;\n this.details = init.details;\n this.retryAfterMs = init.retryAfterMs;\n }\n}\nconst IDEMPOTENCY_STORAGE_PREFIX = 'bounded:build:idempotency:';\nfunction retryAfterMs(response) {\n var _a, _b;\n const value = (_b = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get) === null || _b === void 0 ? void 0 : _b.call(_a, 'Retry-After');\n if (!value)\n return undefined;\n const seconds = Number(value);\n if (Number.isFinite(seconds) && seconds >= 0)\n return Math.ceil(seconds * 1000);\n const at = Date.parse(value);\n if (!Number.isFinite(at))\n return undefined;\n return Math.max(0, at - Date.now());\n}\nasync function responseBody(response) {\n const text = await response.text();\n if (!text)\n return {};\n try {\n return JSON.parse(text);\n }\n catch (_a) {\n return { raw: text };\n }\n}\nfunction apiError(response, body) {\n const envelope = body;\n const nested = (envelope === null || envelope === void 0 ? void 0 : envelope.error) && typeof envelope.error === 'object'\n ? envelope.error\n : undefined;\n const hasNestedDetails = !!nested && Object.prototype.hasOwnProperty.call(nested, 'details');\n const hasTopLevelDetails = !!body\n && typeof body === 'object'\n && Object.prototype.hasOwnProperty.call(body, 'details');\n const legacyCode = typeof (body === null || body === void 0 ? void 0 : body.error) === 'string' ? body.error : undefined;\n const code = typeof (nested === null || nested === void 0 ? void 0 : nested.code) === 'string'\n ? nested.code\n : legacyCode !== null && legacyCode !== void 0 ? legacyCode : `http_${response.status}`;\n const message = typeof (nested === null || nested === void 0 ? void 0 : nested.message) === 'string'\n ? nested.message\n : typeof (body === null || body === void 0 ? void 0 : body.message) === 'string'\n ? body.message\n : `Developer API request failed with HTTP ${response.status}`;\n const retryable = typeof (nested === null || nested === void 0 ? void 0 : nested.retryable) === 'boolean'\n ? nested.retryable\n : response.status === 429 || response.status >= 500;\n return new BuildsApiError(Object.assign(Object.assign({ code,\n message,\n retryable, status: response.status }, (hasNestedDetails\n ? { details: nested === null || nested === void 0 ? void 0 : nested.details }\n : hasTopLevelDetails\n ? { details: body.details }\n : {})), (response.status === 429 ? { retryAfterMs: retryAfterMs(response) } : {})));\n}\n/**\n * Force one token refresh for a 401 recovery, bound to the session that\n * authenticated the original attempt.\n *\n * Returns the refreshed bearer only when the retry may proceed under the SAME login;\n * otherwise `null`, so the caller surfaces the original 401 rather than replaying the\n * request under a principal that replaced the original mid-flight. Mirrors the core\n * HTTP client's `refreshAuthSessionOnce`.\n */\nasync function refreshDevApiTokenOnce(capturedGeneration) {\n try {\n // force: the server already rejected the stored token, so a locally-fresh-looking\n // one is not evidence of anything — require a genuinely new credential.\n const token = await getFreshAuthToken(false, { force: true });\n if (!token)\n return null;\n // A refresh preserves the generation; a re-login mints a new one. An unchanged\n // generation covers both \"still the same token\" and \"refreshed descendant\", while\n // rejecting a retry that a concurrent login would otherwise run as someone else.\n const currentGeneration = await getSessionGeneration(false);\n if (currentGeneration !== capturedGeneration)\n return null;\n return token;\n }\n catch (_a) {\n // auth_changed or a definitively rejected refresh: the retry must not proceed.\n return null;\n }\n}\n/** @internal Shared authenticated developer-api transport for builds and apps. */\nexport async function requestDevApi(path, request = {}) {\n var _a;\n const config = await getConfig();\n const base = (_a = config.devApiUrl) === null || _a === void 0 ? void 0 : _a.replace(/\\/$/, '');\n if (!base) {\n throw new Error('Bounded developer API is not configured. Pass devApiUrl or a Bounded network to init().');\n }\n // Acquire the bearer through the same refresh-aware path the core HTTP client uses,\n // NOT the raw stored-token accessor. Bounded ID tokens expire after ~1h while the\n // refresh credential lives longer, so a build-only surface left open past the expiry\n // would otherwise send a stale token, take a 401 (non-retryable here), and stop\n // polling despite holding a valid refresh token. getFreshAuthToken refreshes when\n // needed and binds the result to the session generation.\n const token = await getFreshAuthToken(false);\n if (!token) {\n throw new BuildsApiError({\n code: 'auth_required',\n message: 'Sign in before calling the Bounded developer API.',\n retryable: false,\n status: 401,\n });\n }\n // Bind any 401 recovery to the session that authenticated this first attempt.\n const capturedGeneration = await getSessionGeneration(false);\n const send = (bearer) => {\n var _a;\n const hasBody = request.body !== undefined;\n return fetch(`${base}${path}`, Object.assign({ method: (_a = request.method) !== null && _a !== void 0 ? _a : 'GET', headers: Object.assign({ Authorization: `Bearer ${bearer}` }, (hasBody ? { 'Content-Type': 'application/json' } : {})) }, (hasBody ? { body: JSON.stringify(request.body) } : {})));\n };\n let response = await send(token);\n // A token that expires between the freshness read and the server reaching it is\n // rejected with 401. Force exactly one refresh bound to the captured generation and\n // retry once; a build watcher would otherwise treat the 401 as permanent.\n if (response.status === 401) {\n const refreshed = await refreshDevApiTokenOnce(capturedGeneration);\n if (refreshed)\n response = await send(refreshed);\n }\n const body = await responseBody(response);\n if (!response.ok)\n throw apiError(response, body);\n return body;\n}\nfunction intentStorageKey(intentKey) {\n return `${IDEMPOTENCY_STORAGE_PREFIX}${intentKey}`;\n}\nfunction isValidIdempotencyKey(value) {\n return typeof value === 'string' && value.length > 0 && value.length <= 256;\n}\n// DS3-0416: persist through the SDK platform adapter (getPlatform().sessionStorage),\n// which React Native wires to a durable backend, instead of reaching for the\n// browser `globalThis.sessionStorage` global directly and silently falling back\n// to a module-local Map that is lost on reload / RN restart. The volatile\n// in-memory fallback is no longer accepted as durable storage for a minted key.\nfunction idempotencySessionStorage() {\n return getPlatform().sessionStorage;\n}\nfunction readPersistedIdempotencyKey(intentKey) {\n const storageKey = intentStorageKey(intentKey);\n try {\n const stored = idempotencySessionStorage().getItem(storageKey);\n if (isValidIdempotencyKey(stored))\n return stored;\n }\n catch (_a) {\n // Storage can be disabled by browser privacy policy; treat as no key.\n }\n return undefined;\n}\nfunction persistIdempotencyKey(intentKey, idempotencyKey) {\n const storageKey = intentStorageKey(intentKey);\n try {\n idempotencySessionStorage().setItem(storageKey, idempotencyKey);\n }\n catch (_a) {\n // Best-effort; durability is confirmed separately before an auto-mint is used.\n }\n}\n/**\n * DS3-0416: confirm a just-minted key is durably retrievable before we rely on\n * it. The store must NOT be the volatile in-memory fallback, and a read-back\n * must return the exact key. Anything else means a reload / restart would mint a\n * fresh wire key and be admitted as a duplicate cost-bearing action.\n */\nfunction idempotencyKeyIsDurable(intentKey, idempotencyKey) {\n const store = idempotencySessionStorage();\n if (isVolatileStorage(store))\n return false;\n try {\n return store.getItem(intentStorageKey(intentKey)) === idempotencyKey;\n }\n catch (_a) {\n return false;\n }\n}\nfunction randomHex(bytes) {\n const cryptoObject = globalThis.crypto;\n if (cryptoObject === null || cryptoObject === void 0 ? void 0 : cryptoObject.getRandomValues) {\n const values = new Uint8Array(bytes);\n cryptoObject.getRandomValues(values);\n return Array.from(values, (value) => value.toString(16).padStart(2, '0')).join('');\n }\n let value = '';\n for (let index = 0; index < bytes; index += 1) {\n value += Math.floor(Math.random() * 256).toString(16).padStart(2, '0');\n }\n return value;\n}\nfunction mintIdempotencyKey() {\n const cryptoObject = globalThis.crypto;\n if (typeof (cryptoObject === null || cryptoObject === void 0 ? void 0 : cryptoObject.randomUUID) === 'function') {\n return `build_${cryptoObject.randomUUID()}`;\n }\n return `build_${Date.now().toString(36)}_${randomHex(16)}`;\n}\nfunction actionIdempotencyKey(options, action) {\n const supplied = options.idempotencyKey;\n if (supplied !== undefined) {\n if (!isValidIdempotencyKey(supplied)) {\n throw new TypeError('idempotencyKey must be between 1 and 256 characters.');\n }\n if (options.intentKey)\n persistIdempotencyKey(options.intentKey, supplied);\n return supplied;\n }\n if (!options.intentKey) {\n throw new TypeError(`intentKey is required when ${action} auto-mints an idempotency key.`);\n }\n const existing = readPersistedIdempotencyKey(options.intentKey);\n if (existing)\n return existing;\n const minted = mintIdempotencyKey();\n // This is deliberately synchronous and happens before requestDevApi can fetch.\n persistIdempotencyKey(options.intentKey, minted);\n // DS3-0416: fail closed when the key cannot be durably persisted (RN without a\n // storage adapter, or blocked browser storage). Silently returning a volatile\n // key defeats the idempotency contract: a lost-response retry after a reload /\n // restart would mint a DIFFERENT wire key and be admitted as a duplicate\n // cost-bearing build. Require the caller to supply an explicit durable key.\n if (!idempotencyKeyIsDurable(options.intentKey, minted)) {\n throw new TypeError(`${action} could not durably persist an auto-minted idempotency key: no durable session `\n + `storage is available (React Native without a platform storage adapter, or blocked browser `\n + `storage). Pass an explicit idempotencyKey stored durably by your app instead of intentKey.`);\n }\n return minted;\n}\nfunction appPath(appId) {\n return `/app/${encodeURIComponent(appId)}/builds`;\n}\nexport async function submit(appId, options) {\n const idempotencyKey = actionIdempotencyKey(options, 'submit()');\n const { intentKey: _intentKey, idempotencyKey: _suppliedKey } = options, submission = __rest(options, [\"intentKey\", \"idempotencyKey\"]);\n return requestDevApi(appPath(appId), {\n method: 'POST',\n body: Object.assign(Object.assign({}, submission), { idempotencyKey }),\n });\n}\nexport async function get(appId, runId) {\n return requestDevApi(`${appPath(appId)}/${encodeURIComponent(runId)}`);\n}\nexport async function events(appId, runId, after = 0) {\n const cursor = Number.isFinite(after) ? Math.max(0, Math.floor(after)) : 0;\n return requestDevApi(`${appPath(appId)}/${encodeURIComponent(runId)}/events?after=${cursor}`);\n}\nexport async function cancel(appId, runId) {\n return requestDevApi(`${appPath(appId)}/${encodeURIComponent(runId)}/cancel`, { method: 'POST' });\n}\nexport async function decideGate(appId, runId, gateId, options) {\n const idempotencyKey = actionIdempotencyKey(options, 'decideGate()');\n const { intentKey: _intentKey, idempotencyKey: _suppliedKey } = options, decision = __rest(options, [\"intentKey\", \"idempotencyKey\"]);\n return requestDevApi(`${appPath(appId)}/${encodeURIComponent(runId)}/gates/${encodeURIComponent(gateId)}/decision`, { method: 'POST', body: Object.assign(Object.assign({}, decision), { idempotencyKey }) });\n}\nexport async function refreshReviewCapability(appId, runId, gateId, options) {\n const idempotencyKey = actionIdempotencyKey(options, 'refreshReviewCapability()');\n return requestDevApi(`${appPath(appId)}/${encodeURIComponent(runId)}/gates/${encodeURIComponent(gateId)}/review-capability/refresh`, {\n method: 'POST',\n body: {\n expectedGeneration: options.expectedGeneration,\n expectedExpiresAtMs: options.expectedExpiresAtMs,\n expectedRecoveryUntilMs: options.expectedRecoveryUntilMs,\n expectedAudience: options.expectedAudience,\n expectedReviewerBindingHash: options.expectedReviewerBindingHash,\n idempotencyKey,\n },\n });\n}\n/**\n * Read one exact delegated-review capability and its narrow lifecycle result.\n * This does not refresh or extend the window and exposes no generic run-view\n * authority.\n */\nexport async function getReviewCapability(appId, runId, gateId, options) {\n return requestDevApi(`${appPath(appId)}/${encodeURIComponent(runId)}/gates/${encodeURIComponent(gateId)}/review-capability`, {\n method: 'POST',\n body: { expectedPreviewUrl: options.expectedPreviewUrl },\n });\n}\n/**\n * Add funds to a run parked for funding. Accounts billed through payer shards refuse it with\n * `topup_unavailable_payer_shard` (in `details.upstreamCode`): a parked run there holds no money, so the payer adds\n * credits and submits the build again.\n */\nexport async function topup(appId, runId, options) {\n return requestDevApi(`${appPath(appId)}/${encodeURIComponent(runId)}/topup`, { method: 'POST', body: options });\n}\n/** An image build's verified images and its asset's current release. */\nexport async function media(appId, runId) {\n return requestDevApi(`${appPath(appId)}/${encodeURIComponent(runId)}/media`);\n}\n/** A short-lived signed URL for one image of an image build (usable directly as an image source). */\nexport async function mediaDownloadUrl(appId, runId, artifactId) {\n return requestDevApi(`${appPath(appId)}/${encodeURIComponent(runId)}/media-download-url`, { method: 'POST', body: { artifactId } });\n}\n/** Roll back the release an image build published: its asset returns to the release it replaced. */\nexport async function rollbackMedia(appId, runId, options = {}) {\n return requestDevApi(`${appPath(appId)}/${encodeURIComponent(runId)}/media-rollback`, { method: 'POST', body: options.note ? { note: options.note } : {} });\n}\nexport async function list(appId, limit = 20) {\n const requestedLimit = Number.isFinite(limit) ? Math.max(1, Math.floor(limit)) : 20;\n return requestDevApi(`${appPath(appId)}?limit=${requestedLimit}`);\n}\n","// Source of truth for these strings:\n// packages/cdk/cloudflare/bounded-build/src/types.ts. Keep them string-pinned;\n// wire:1 remains additive and callers must tolerate unknown response strings.\nexport const NON_TERMINAL_STATES = [\n 'queued',\n 'admitted',\n 'executing',\n 'preview_ready',\n 'parked',\n 'resuming',\n 'promoting',\n 'quarantined',\n];\nexport const TERMINAL_STATES = [\n 'promoted',\n 'failed',\n 'canceled',\n 'rejected',\n 'expired',\n 'rebase_required',\n 'reported',\n];\nexport const RUN_STATES = [\n ...NON_TERMINAL_STATES,\n ...TERMINAL_STATES,\n];\nexport const PARK_REASONS = ['gate', 'funding', 'preview', 'design'];\nexport const FAILURE_REASONS = [\n 'admission_rejected',\n 'dispatch_timeout',\n 'auth_revoked',\n 'owner_changed',\n 'policy_changed',\n 'target_retired',\n 'promotion_rejected',\n 'quarantine_forced',\n 'bind_failed',\n 'internal_error',\n];\nexport const BUILD_REVIEW_CAPABILITY_SCHEMA = 'bounded.build-review-capability.v1';\nexport const BUILD_REVIEW_CAPABILITY_REFRESH_SCHEMA = 'bounded.build-review-capability-refresh.v1';\nexport const BUILD_DELEGATED_REVIEW_CAPABILITY_SCHEMA = 'bounded.build-delegated-review-capability.v1';\n","import { BuildsApiError, events as getEvents, get as getRun, } from './client';\nimport { TERMINAL_STATES } from './types';\nconst FAST_POLL_MS = 1000;\nconst NORMAL_POLL_MS = 2000;\nconst PARKED_POLL_MS = 5000;\nconst LONG_RUNNING_POLL_MS = 10000;\nconst THIRTY_SECONDS_MS = 30000;\nconst TWO_MINUTES_MS = 2 * 60000;\nconst TEN_MINUTES_MS = 10 * 60000;\nconst terminalStates = new Set(TERMINAL_STATES);\nfunction pollCadence(state, elapsedMs) {\n if (elapsedMs >= TEN_MINUTES_MS)\n return LONG_RUNNING_POLL_MS;\n if ((state === null || state === void 0 ? void 0 : state.startsWith('parked')) || elapsedMs >= TWO_MINUTES_MS)\n return PARKED_POLL_MS;\n // The first 30s is where the user is staring at \"waiting for a build slot\" /\n // \"building\" and every transition matters most; poll fast, then relax.\n if (elapsedMs < THIRTY_SECONDS_MS)\n return FAST_POLL_MS;\n return NORMAL_POLL_MS;\n}\nfunction retryCadence(error, state, elapsedMs) {\n const cadence = pollCadence(state, elapsedMs);\n if (error instanceof BuildsApiError && error.status === 429 && error.retryAfterMs !== undefined) {\n return Math.max(cadence, error.retryAfterMs);\n }\n return cadence;\n}\nfunction hasRetryAfter(error) {\n return error instanceof BuildsApiError\n && error.status === 429\n && error.retryAfterMs !== undefined;\n}\n// A permanent API refusal (expired session, revoked access, unknown run) will\n// never heal by re-polling; the loop must stop and surface it instead of\n// retrying forever. 429 stays retryable regardless of the server envelope.\nfunction isPermanentError(error) {\n return error instanceof BuildsApiError\n && error.status !== 429\n && error.retryable === false;\n}\nfunction newEvents(rows, lastSeq, seen) {\n const cursorBeforePoll = lastSeq;\n const fresh = [];\n let nextCursor = lastSeq;\n for (const event of rows) {\n if (!Number.isFinite(event === null || event === void 0 ? void 0 : event.seq))\n continue;\n nextCursor = Math.max(nextCursor, event.seq);\n if (event.seq <= cursorBeforePoll || seen.has(event.seq))\n continue;\n seen.add(event.seq);\n fresh.push(event);\n }\n return { events: fresh, lastSeq: nextCursor };\n}\n/**\n * Poll a build view and its event cursor until stopped or the run reaches a\n * known terminal state. Unknown state strings remain untouched and nonterminal.\n */\nexport function watch(appId, runId, onUpdate, options = {}) {\n const startedAt = Date.now();\n const seenSeqs = new Set();\n let lastSeq = Number.isFinite(options.after)\n ? Math.max(0, Math.floor(options.after))\n : 0;\n let timer;\n let active = true;\n let lastState;\n const stop = () => {\n active = false;\n if (timer !== undefined) {\n clearTimeout(timer);\n timer = undefined;\n }\n };\n const schedule = (delayMs) => {\n if (!active)\n return;\n timer = setTimeout(() => {\n timer = undefined;\n void poll();\n }, delayMs);\n };\n const reportError = (error) => {\n var _a;\n try {\n (_a = options.onError) === null || _a === void 0 ? void 0 : _a.call(options, error);\n }\n catch (_b) {\n // A consumer error callback must not break the transport loop.\n }\n };\n const publish = (run, events) => {\n try {\n onUpdate({ run, events });\n }\n catch (_a) {\n // Polling is transport state; consumer render errors must not strand it.\n }\n };\n const poll = async () => {\n if (!active)\n return;\n // Fire the view and the events page concurrently: the events cursor (lastSeq)\n // does not depend on the run view, so there is no reason to pay two serial\n // round-trips per tick. Error semantics below are unchanged — the run result\n // still gates, and a failed events page still publishes the run with no rows.\n const runPromise = getRun(appId, runId);\n const eventsPromise = getEvents(appId, runId, lastSeq);\n // Keep the in-flight events page from becoming an unhandled rejection if the\n // run result makes us bail before awaiting it; the real await below still sees it.\n eventsPromise.catch(() => { });\n let run;\n try {\n const view = await runPromise;\n if (!active)\n return;\n run = view.run;\n lastState = run.state;\n }\n catch (error) {\n if (!active)\n return;\n reportError(error);\n if (isPermanentError(error)) {\n stop();\n return;\n }\n schedule(retryCadence(error, lastState, Date.now() - startedAt));\n return;\n }\n try {\n const response = await eventsPromise;\n if (!active)\n return;\n const deduped = newEvents(Array.isArray(response.events) ? response.events : [], lastSeq, seenSeqs);\n lastSeq = deduped.lastSeq;\n publish(run, deduped.events);\n }\n catch (error) {\n if (!active)\n return;\n // The view still advances UI state even when event replay is rate-limited.\n publish(run, []);\n reportError(error);\n if (terminalStates.has(run.state)) {\n // The run itself is done, but a rate-limited final event replay still\n // owes the caller its unseen seq rows. Honor Retry-After, retry the\n // piggyback once the limiter permits it, then stop after a successful\n // replay. Other terminal replay failures stop normally.\n if (hasRetryAfter(error)) {\n schedule(retryCadence(error, run.state, Date.now() - startedAt));\n return;\n }\n stop();\n return;\n }\n if (isPermanentError(error)) {\n stop();\n return;\n }\n schedule(retryCadence(error, run.state, Date.now() - startedAt));\n return;\n }\n if (!active)\n return;\n if (terminalStates.has(run.state)) {\n // Drain the remaining event pages before stopping: a resumed terminal\n // watch may owe the caller more rows than one page returns. Each page\n // advances the cursor, so the loop terminates; the cap is a backstop.\n for (let page = 0; page < 50 && active; page += 1) {\n let drained;\n try {\n const response = await getEvents(appId, runId, lastSeq);\n if (!active)\n return;\n drained = newEvents(Array.isArray(response.events) ? response.events : [], lastSeq, seenSeqs);\n }\n catch (error) {\n reportError(error);\n break;\n }\n if (drained.events.length === 0)\n break;\n lastSeq = drained.lastSeq;\n publish(run, drained.events);\n }\n stop();\n return;\n }\n schedule(pollCadence(run.state, Date.now() - startedAt));\n };\n void poll();\n return { stop };\n}\n","var _a;\nimport * as React from 'react';\nimport { watch } from '../builds/watch';\n// SSR guard (mirrors useAuth): no hooks/subscriptions during Node server render.\n// React Native has no `window` but DOES support hooks, so detect Node SSR\n// specifically via process.versions.node.\nconst isSSR = typeof window === 'undefined'\n && typeof process !== 'undefined'\n && !!((_a = process.versions) === null || _a === void 0 ? void 0 : _a.node);\nexport function useBuildRun(appId, runId, options) {\n if (isSSR) {\n return { run: null, events: [], loading: true, error: null };\n }\n const [run, setRun] = React.useState(null);\n const [events, setEvents] = React.useState([]);\n const [loading, setLoading] = React.useState(true);\n const [error, setError] = React.useState(null);\n const optionsKey = options ? JSON.stringify(options) : '';\n React.useEffect(() => {\n setRun(null);\n setEvents([]);\n setError(null);\n if (!appId || !runId) {\n setLoading(false);\n return;\n }\n let active = true;\n setLoading(true);\n const handle = watch(appId, runId, ({ run: nextRun, events: nextEvents }) => {\n if (!active)\n return;\n setRun(nextRun);\n if (nextEvents.length > 0) {\n setEvents((current) => {\n const seen = new Set(current.map((event) => event.seq));\n return [...current, ...nextEvents.filter((event) => !seen.has(event.seq))];\n });\n }\n setError(null);\n setLoading(false);\n }, Object.assign(Object.assign({}, options), { onError: (value) => {\n if (!active)\n return;\n setError(value instanceof Error ? value : new Error(String(value)));\n setLoading(false);\n } }));\n return () => {\n active = false;\n handle.stop();\n };\n // optionsKey captures the option object's contents; ids are the other inputs.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [appId, runId, optionsKey]);\n return { run, events, loading, error };\n}\n","import { decideGate as decideGateRequest, get as getRequest, media as mediaRequest, mediaDownloadUrl as mediaDownloadUrlRequest, submit as submitRequest, } from './client';\nconst TERMINAL = new Set(['promoted', 'failed', 'canceled', 'rejected', 'expired', 'rebase_required', 'reported']);\nconst KEY = { type: 'string', minLength: 1, maxLength: 256, description: 'A key unique to this intent; retrying with the same key never repeats the action.' };\nconst RUN_ID = { type: 'string', minLength: 1, maxLength: 128, description: 'The build run id media_create or media_edit returned.' };\nconst REGION = {\n type: 'object',\n additionalProperties: false,\n required: ['x', 'y', 'width', 'height'],\n properties: {\n x: { type: 'integer', minimum: 0 },\n y: { type: 'integer', minimum: 0 },\n width: { type: 'integer', minimum: 1 },\n height: { type: 'integer', minimum: 1 },\n },\n description: 'A rectangle in whole pixels of the image; nothing outside it changes.',\n};\nconst SPEC = { type: 'object', description: 'The deliverable spec (image: size, quality, format, background, candidates, model, references, region; video: durationSeconds, resolution, aspectRatio, audio, images, scenes, replaceScenes, captions). See the builds docs.' };\nconst isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);\nconst text = (value, max) => typeof value === 'string' && value.trim().length > 0 && value.length <= max ? value : undefined;\nconst refuse = (code, message, next = ['media_inspect'], retryable = false) => ({ ok: false, code, message, retryable, next });\nfunction region(value) {\n if (!isRecord(value))\n return undefined;\n const { x, y, width, height } = value;\n return [x, y, width, height].every(Number.isSafeInteger) && x >= 0 && y >= 0\n && width >= 1 && height >= 1\n ? { x: x, y: y, width: width, height: height }\n : undefined;\n}\n/** A thrown API error, as the tool result the model reads. The developer API answers with a coarse public code and\n * relays Build's own reason (base_moved, candidate_unknown, media_storage_quota, ...) as details.upstreamCode. */\nfunction failure(error) {\n var _a;\n const apiError = error;\n const upstream = (_a = apiError === null || apiError === void 0 ? void 0 : apiError.details) === null || _a === void 0 ? void 0 : _a.upstreamCode;\n return refuse(typeof upstream === 'string' && /^[a-z][a-z0-9_]{0,79}$/.test(upstream) && upstream !== 'unknown_upstream_error'\n ? upstream\n : typeof (apiError === null || apiError === void 0 ? void 0 : apiError.code) === 'string' ? apiError.code : 'request_failed', typeof (apiError === null || apiError === void 0 ? void 0 : apiError.message) === 'string' ? apiError.message : 'The request failed.', ['media_inspect'], (apiError === null || apiError === void 0 ? void 0 : apiError.retryable) === true);\n}\n/** What a run lets an agent do next. */\nfunction nextFor(run) {\n var _a;\n if ((_a = run.design) === null || _a === void 0 ? void 0 : _a.gate)\n return ['media_select', 'media_revise', 'media_export'];\n if (run.state === 'promoted')\n return ['media_export', 'media_edit', 'media_create'];\n if (run.state === 'parked' && run.parkReason === 'gate')\n return ['media_propose', 'media_export'];\n if (TERMINAL.has(run.state))\n return ['media_create'];\n return ['media_inspect'];\n}\nfunction candidateView(candidate) {\n return Object.assign(Object.assign(Object.assign(Object.assign({ id: candidate.id }, (candidate.url ? { url: candidate.url } : {})), { mimeType: candidate.mimeType, width: candidate.width, height: candidate.height }), (candidate.durationMs !== undefined ? { durationMs: candidate.durationMs } : {})), (candidate.scenes ? { scenes: candidate.scenes } : {}));\n}\nexport function mediaAgentTools(appId, client = {\n submit: submitRequest,\n get: getRequest,\n decideGate: decideGateRequest,\n media: mediaRequest,\n mediaDownloadUrl: mediaDownloadUrlRequest,\n}) {\n const run = async (runId) => (await client.get(appId, runId)).run;\n const submit = async (options) => {\n try {\n const submitted = await client.submit(appId, options);\n return { ok: true, data: { runId: submitted.runId, status: submitted.status }, next: ['media_inspect'] };\n }\n catch (error) {\n return failure(error);\n }\n };\n /** The open design review of a run, or the refusal that explains why there is none. */\n const openReview = async (input) => {\n var _a;\n const runId = text(input.runId, 128);\n if (!runId)\n return refuse('input_invalid', 'runId is required.');\n let current;\n try {\n current = await run(runId);\n }\n catch (error) {\n return failure(error);\n }\n const gate = (_a = current.design) === null || _a === void 0 ? void 0 : _a.gate;\n if (!gate) {\n return refuse('no_open_review', `Run ${runId} is ${current.state}${current.parkReason ? ` (${current.parkReason})` : ''}; no design round is waiting for a decision.`, nextFor(current));\n }\n return { run: current, gateId: gate.gateId };\n };\n const candidateOf = (current, id) => { var _a, _b, _c, _d; return (_d = (_c = (_b = (_a = current.design) === null || _a === void 0 ? void 0 : _a.rounds) === null || _b === void 0 ? void 0 : _b.find((round) => { var _a; return round.round === ((_a = current.design) === null || _a === void 0 ? void 0 : _a.round); })) === null || _c === void 0 ? void 0 : _c.candidates) === null || _d === void 0 ? void 0 : _d.find((candidate) => candidate.id === id); };\n return [\n {\n name: 'media_create',\n description: 'Start an image or video build for this app. Pass forkOf to start a new asset from a retained release. Returns the run id; the first round of candidates follows (read it with media_inspect).',\n inputSchema: {\n type: 'object',\n additionalProperties: false,\n required: ['kind', 'prompt', 'idempotencyKey'],\n properties: {\n kind: { type: 'string', enum: ['image', 'video'] },\n prompt: { type: 'string', minLength: 1, maxLength: 4000, description: 'What to make.' },\n spec: SPEC,\n forkOf: {\n type: 'object',\n additionalProperties: false,\n required: ['assetId', 'releaseId'],\n properties: { assetId: { type: 'string' }, releaseId: { type: 'string' } },\n description: 'A retained release of this app to start from.',\n },\n idempotencyKey: KEY,\n },\n },\n async execute(raw) {\n const input = isRecord(raw) ? raw : {};\n const prompt = text(input.prompt, 4000);\n const key = text(input.idempotencyKey, 256);\n if ((input.kind !== 'image' && input.kind !== 'video') || !prompt || !key) {\n return refuse('input_invalid', 'kind (image or video), prompt and idempotencyKey are required.', []);\n }\n return submit({\n operation: 'create',\n prompt,\n deliverable: Object.assign(Object.assign({ kind: input.kind }, (isRecord(input.spec) ? { spec: input.spec } : {})), (isRecord(input.forkOf) ? { forkOf: input.forkOf } : {})),\n idempotencyKey: key,\n });\n },\n },\n {\n name: 'media_edit',\n description: 'Edit a released image or video. Name the asset and the release you edit (a newer release refuses the edit as base_moved). An image spec may carry region to change only a rectangle; a video spec may carry replaceScenes or captions, and a captions-only edit makes no generation call.',\n inputSchema: {\n type: 'object',\n additionalProperties: false,\n required: ['kind', 'assetId', 'expectedReleaseId', 'prompt', 'idempotencyKey'],\n properties: {\n kind: { type: 'string', enum: ['image', 'video'] },\n assetId: { type: 'string' },\n expectedReleaseId: { type: 'string' },\n prompt: { type: 'string', minLength: 1, maxLength: 4000, description: 'The change to make.' },\n spec: SPEC,\n idempotencyKey: KEY,\n },\n },\n async execute(raw) {\n const input = isRecord(raw) ? raw : {};\n const prompt = text(input.prompt, 4000);\n const key = text(input.idempotencyKey, 256);\n const assetId = text(input.assetId, 128);\n const expectedReleaseId = text(input.expectedReleaseId, 128);\n if ((input.kind !== 'image' && input.kind !== 'video') || !prompt || !key || !assetId || !expectedReleaseId) {\n return refuse('input_invalid', 'kind, assetId, expectedReleaseId, prompt and idempotencyKey are required.', []);\n }\n return submit({\n operation: 'edit',\n prompt,\n deliverable: Object.assign({ kind: input.kind, assetId,\n expectedReleaseId }, (isRecord(input.spec) ? { spec: input.spec } : {})),\n idempotencyKey: key,\n });\n },\n },\n {\n name: 'media_inspect',\n description: 'Read a media build: its state, the candidates of the round under review (with their scenes), the decision it waits on, and its release once published.',\n inputSchema: { type: 'object', additionalProperties: false, required: ['runId'], properties: { runId: RUN_ID } },\n async execute(raw) {\n var _a, _b, _c, _d, _e;\n const runId = text(isRecord(raw) ? raw.runId : undefined, 128);\n if (!runId)\n return refuse('input_invalid', 'runId is required.', []);\n try {\n const current = await run(runId);\n const round = (_b = (_a = current.design) === null || _a === void 0 ? void 0 : _a.rounds) === null || _b === void 0 ? void 0 : _b.find((entry) => { var _a; return entry.round === ((_a = current.design) === null || _a === void 0 ? void 0 : _a.round); });\n const media = current.state === 'promoted' || current.media ? await client.media(appId, runId) : undefined;\n return {\n ok: true,\n data: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ runId, state: current.state }, (current.parkReason ? { parkReason: current.parkReason } : {})), (current.failureReason ? { failureReason: current.failureReason } : {})), (current.failureDetail ? { failureDetail: current.failureDetail } : {})), (round\n ? Object.assign({ round: round.round, maxRounds: (_c = current.design) === null || _c === void 0 ? void 0 : _c.maxRounds, candidates: ((_d = round.candidates) !== null && _d !== void 0 ? _d : []).map(candidateView) }, (round.revisionFailed ? { revisionFailed: true } : {})) : {})), (((_e = current.design) === null || _e === void 0 ? void 0 : _e.gate) ? { review: { gateId: current.design.gate.gateId, allowedDecisions: current.design.gate.allowedDecisions } } : {})), (current.state === 'parked' && current.parkReason === 'funding'\n ? { waitingFor: 'funding: the payer adds funds and, where top-up is unavailable (topup_unavailable_payer_shard), submits the build again; an agent cannot' }\n : {})), (media ? { media: media.media, asset: media.asset } : {})),\n next: nextFor(current),\n };\n }\n catch (error) {\n return failure(error);\n }\n },\n },\n {\n name: 'media_revise',\n description: 'Ask for another round of the design under review. Name the candidate to revise; for an image, region limits the change to a rectangle of that candidate (PNG only); for a multi-scene video, sceneIds regenerates only those scenes and keeps every other scene byte for byte.',\n inputSchema: {\n type: 'object',\n additionalProperties: false,\n required: ['runId', 'feedback', 'idempotencyKey'],\n properties: {\n runId: RUN_ID,\n feedback: { type: 'string', minLength: 1, maxLength: 4000, description: 'What to change.' },\n candidateId: { type: 'string', description: 'The candidate to revise; without it the whole round is redone from the feedback.' },\n sceneIds: { type: 'array', items: { type: 'string' }, minItems: 1, maxItems: 6 },\n region: REGION,\n idempotencyKey: KEY,\n },\n },\n async execute(raw) {\n var _a, _b;\n const input = isRecord(raw) ? raw : {};\n const feedback = text(input.feedback, 4000);\n const key = text(input.idempotencyKey, 256);\n if (!feedback || !key)\n return refuse('input_invalid', 'runId, feedback and idempotencyKey are required.', []);\n const review = await openReview(input);\n if ('ok' in review)\n return review;\n if (!((_b = (_a = review.run.design) === null || _a === void 0 ? void 0 : _a.gate) === null || _b === void 0 ? void 0 : _b.allowedDecisions.includes('request_changes'))) {\n return refuse('decision_not_allowed', 'This round takes no revision (it may be the last one): select a candidate instead.', ['media_select']);\n }\n const candidate = input.candidateId === undefined ? undefined : candidateOf(review.run, input.candidateId);\n if (input.candidateId !== undefined && !candidate) {\n return refuse('candidate_unknown', `No candidate ${String(input.candidateId)} in the round under review.`, ['media_inspect']);\n }\n const sceneIds = Array.isArray(input.sceneIds) ? input.sceneIds.filter((id) => typeof id === 'string') : undefined;\n if (sceneIds && (!(candidate === null || candidate === void 0 ? void 0 : candidate.scenes) || !sceneIds.every((id) => candidate.scenes.some((scene) => scene.id === id)))) {\n return refuse('scenes_unknown', 'sceneIds must name scenes of the multi-scene candidate being revised (candidateId).', ['media_inspect']);\n }\n const area = input.region === undefined ? undefined : region(input.region);\n if (input.region !== undefined\n && (!area || (candidate === null || candidate === void 0 ? void 0 : candidate.mimeType) !== 'image/png' || area.x + area.width > candidate.width || area.y + area.height > candidate.height)) {\n return refuse('region_invalid', 'region must lie inside the PNG candidate being revised (candidateId).', ['media_inspect']);\n }\n try {\n const decided = await client.decideGate(appId, review.run.runId, review.gateId, Object.assign(Object.assign(Object.assign(Object.assign({ decision: 'request_changes', feedback: { text: feedback } }, (candidate ? { selectedArtifactId: candidate.id } : {})), (sceneIds ? { sceneIds } : {})), (area ? { region: area } : {})), { idempotencyKey: key }));\n return { ok: true, data: { runId: review.run.runId, state: decided.state }, next: ['media_inspect'] };\n }\n catch (error) {\n return failure(error);\n }\n },\n },\n {\n name: 'media_select',\n description: 'Choose a candidate of the round under review. The chosen candidate is what the build releases, through the app\\'s landing policy.',\n inputSchema: {\n type: 'object',\n additionalProperties: false,\n required: ['runId', 'candidateId', 'idempotencyKey'],\n properties: { runId: RUN_ID, candidateId: { type: 'string' }, idempotencyKey: KEY },\n },\n async execute(raw) {\n const input = isRecord(raw) ? raw : {};\n const key = text(input.idempotencyKey, 256);\n if (!key)\n return refuse('input_invalid', 'runId, candidateId and idempotencyKey are required.', []);\n const review = await openReview(input);\n if ('ok' in review)\n return review;\n const candidate = candidateOf(review.run, input.candidateId);\n if (!candidate)\n return refuse('candidate_unknown', `No candidate ${String(input.candidateId)} in the round under review.`, ['media_inspect']);\n try {\n const decided = await client.decideGate(appId, review.run.runId, review.gateId, {\n decision: 'approve',\n selectedArtifactId: candidate.id,\n idempotencyKey: key,\n });\n return { ok: true, data: { runId: review.run.runId, state: decided.state, selectedArtifactId: candidate.id }, next: ['media_propose', 'media_inspect'] };\n }\n catch (error) {\n return failure(error);\n }\n },\n },\n {\n name: 'media_export',\n description: 'A short-lived signed URL for one verified image or video of a build (a published release, or a candidate the build deposited), with its digest.',\n inputSchema: {\n type: 'object',\n additionalProperties: false,\n required: ['runId', 'artifactId'],\n properties: { runId: RUN_ID, artifactId: { type: 'string' } },\n },\n async execute(raw) {\n var _a, _b;\n const input = isRecord(raw) ? raw : {};\n const runId = text(input.runId, 128);\n const artifactId = text(input.artifactId, 64);\n if (!runId || !artifactId)\n return refuse('input_invalid', 'runId and artifactId are required.', []);\n try {\n const view = await client.media(appId, runId);\n const artifact = (_b = (_a = view.media) === null || _a === void 0 ? void 0 : _a.artifacts) === null || _b === void 0 ? void 0 : _b.find((entry) => entry.id === artifactId);\n if (!artifact) {\n return refuse('artifact_unavailable', `Run ${runId} has no verified artifact ${artifactId} yet; a candidate under review is exported from its round's url (media_inspect).`, ['media_inspect']);\n }\n const signed = await client.mediaDownloadUrl(appId, runId, artifactId);\n return {\n ok: true,\n data: { runId, artifactId, url: signed.url, expiresAtMs: signed.expiresAtMs, sha256: artifact.sha256, mimeType: artifact.mimeType, bytes: artifact.bytes },\n next: ['media_inspect'],\n };\n }\n catch (error) {\n return failure(error);\n }\n },\n },\n {\n name: 'media_propose',\n description: 'Put a build\\'s chosen candidate forward for publication and report where it stands. Publishing is decided by the app\\'s landing policy (the owner approves the release, or the policy lands it); this tool never approves it.',\n inputSchema: { type: 'object', additionalProperties: false, required: ['runId'], properties: { runId: RUN_ID } },\n async execute(raw) {\n var _a;\n const runId = text(isRecord(raw) ? raw.runId : undefined, 128);\n if (!runId)\n return refuse('input_invalid', 'runId is required.', []);\n try {\n const current = await run(runId);\n if (current.state === 'promoted') {\n const view = await client.media(appId, runId);\n return { ok: true, data: { runId, state: 'published', release: view.asset.currentRelease }, next: nextFor(current) };\n }\n if (current.state === 'parked' && current.parkReason === 'gate') {\n const gate = current.gates.find((entry) => !entry.decided);\n return { ok: true, data: Object.assign(Object.assign({ runId, state: 'awaiting_publication' }, (gate ? { gateId: gate.gateId } : {})), { decidedBy: 'the app owner, under the landing policy' }), next: ['media_inspect'] };\n }\n if ((_a = current.design) === null || _a === void 0 ? void 0 : _a.gate) {\n return refuse('not_selected', 'Choose a candidate first (media_select); only a chosen candidate can be published.', ['media_select', 'media_revise']);\n }\n return refuse('not_proposable', `Run ${runId} is ${current.state}${current.parkReason ? ` (${current.parkReason})` : ''}; it has no candidate waiting for publication.`, nextFor(current));\n }\n catch (error) {\n return failure(error);\n }\n },\n },\n ];\n}\n","import { cancel, decideGate, events, get, getReviewCapability, list, media, mediaDownloadUrl, refreshReviewCapability, rollbackMedia, submit, topup, uploadInput, } from './client';\nimport { watch } from './watch';\n/**\n * Registered first-party product surfaces only, with\n * one exact Drafted exception for delegated review/decision routes. Other\n * generated-app origins remain blocked; server-side callers are unaffected.\n */\nexport const builds = {\n submit,\n get,\n getReviewCapability,\n events,\n cancel,\n decideGate,\n refreshReviewCapability,\n topup,\n uploadInput,\n list,\n watch,\n media,\n mediaDownloadUrl,\n rollbackMedia,\n};\nexport { BuildsApiError } from './client';\nexport { mediaAgentTools } from './media-tools';\nexport * from './types';\n","import { requestDevApi } from './client';\nexport async function create(options = {}) {\n const body = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (options.name !== undefined ? { name: options.name } : {})), (options.prompt !== undefined ? { prompt: options.prompt } : {})), (options.idempotencyKey !== undefined ? { idempotencyKey: options.idempotencyKey } : {})), (options.intent !== undefined ? { intent: options.intent } : {})), (options.oapp === true ? { oapp: true } : {}));\n const app = await requestDevApi('/apps/new', {\n method: 'POST',\n body,\n });\n return Object.assign(Object.assign(Object.assign(Object.assign({ appId: app.appId }, (typeof app.slug === 'string' && app.slug ? { slug: app.slug } : {})), { url: app.url }), (typeof app.prompt === 'string' && app.prompt ? { prompt: app.prompt } : {})), (typeof app.handoff === 'string' && app.handoff ? { handoff: app.handoff } : {}));\n}\n/**\n * F-1200: build the create-flow redirect the owner is sent to after `create()`, with the\n * prompt and handoff carried in the URL FRAGMENT (never the query - fragments never reach\n * servers, logs, or Referer). Encoding is byte-exact so the widget's `URLSearchParams`\n * parse + `.trim()` reproduces the SAME prompt string dev-api hashed into the handoff;\n * getting this wrong would make the widget reject a genuine token and degrade to prefill.\n * First-party product callers should use this instead of hand-building the URL.\n *\n * Returns `${url}#bounded_prompt=<prompt>` with no `&bounded_handoff=` when the server\n * minted no handoff (HANDOFF_SECRET unset) - the widget then prefills without auto-running.\n */\nexport function buildCreateRedirectUrl(app) {\n const base = app.url;\n const prompt = typeof app.prompt === 'string' ? app.prompt.trim() : '';\n if (!prompt)\n return base;\n const params = `bounded_prompt=${encodeURIComponent(prompt)}`\n + (app.handoff ? `&bounded_handoff=${encodeURIComponent(app.handoff)}` : '');\n return `${base}#${params}`;\n}\nexport async function list() {\n // Keep this legacy-compatible action shape for existing first-party callers.\n const response = await requestDevApi('/', {\n method: 'POST',\n body: { action: 'listApps' },\n });\n const rows = Array.isArray(response.apps) ? response.apps : [];\n return rows\n .map((value) => {\n var _a, _b, _c, _d;\n const row = value && typeof value === 'object'\n ? value\n : {};\n const appId = String((_c = (_b = (_a = row._id) !== null && _a !== void 0 ? _a : row.id) !== null && _b !== void 0 ? _b : row.appId) !== null && _c !== void 0 ? _c : '');\n if (!/^[a-f0-9]{24}$/i.test(appId))\n return null;\n const name = String((_d = row.name) !== null && _d !== void 0 ? _d : '').trim() || '(unnamed app)';\n const slug = typeof row.slug === 'string' && row.slug ? row.slug : undefined;\n const url = typeof row.url === 'string' && row.url.trim() ? row.url.trim() : undefined;\n const buildStatus = row.buildStatus === 'building' || row.buildStatus === 'build_failed'\n ? row.buildStatus\n : undefined;\n return Object.assign(Object.assign(Object.assign({ appId,\n name }, (slug ? { slug } : {})), (url ? { url } : {})), (buildStatus ? { buildStatus } : {}));\n })\n .filter((app) => app !== null);\n}\n/**\n * Registered first-party product surfaces only -\n * dev-api CORS blocks calls from generated-app origins. Server-side callers unaffected.\n */\nexport const apps = { create, list, buildCreateRedirectUrl };\n","import { getIdToken as getIdTokenCore } from '@bounded-sh/core';\n// Wrapper for getIdToken - passes isServer=false for client-side usage\nexport async function getIdToken() {\n return getIdTokenCore(false);\n}\n","// bounded.onramp() - fund the signed-in user's wallet with Coinbase Onramp.\n//\n// Web-only. Opens Coinbase's hosted checkout (pay.coinbase.com) in a popup\n// (new-tab fallback) using a single-use session token minted by the Bounded\n// platform at POST <origin>/__bounded/onramp/session on the app's own origin.\n// The platform holds the Coinbase credential; the app never sees it. The\n// session is bound server-side to the caller's verified Bounded JWT, and the\n// destination defaults to that user's embedded wallet.\n//\n// Amount semantics:\n// amountUsd - exact fiat in; the fee/output breakdown comes back as `quote`.\n// minAmountOut - a FLOOR on crypto received. The platform quotes Coinbase's\n// worst-fee payment method (card) and pads by `slippagePad` (default 1%),\n// so cheaper methods overshoot the floor rather than undershooting it. The\n// floor holds unless the market moves more than the pad while the user sits\n// on the checkout screen - which is why completion is VERIFIED: after the\n// popup closes we poll the platform's status leg and resolve with the\n// actual filled amount when Coinbase reports it.\n//\n// Works on Bounded-served origins (<app>.bounded.page / custom domains). On a\n// local dev origin the session endpoint does not exist; we fail with a clear\n// error rather than guessing a host.\nimport { getFreshAuthToken, getSessionGeneration } from '@bounded-sh/core';\nimport { getCurrentUser } from './global';\nfunction hasDOM() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * DS3-0415: force one token refresh for a 401 recovery, bound to the session that\n * authenticated the original attempt. Returns the refreshed bearer only when the retry\n * may proceed under the SAME login; otherwise `null`, so the caller surfaces the original\n * 401 rather than replaying the request under a principal that replaced the original\n * mid-flight. Mirrors builds/client.ts:refreshDevApiTokenOnce.\n */\nasync function refreshOnrampTokenOnce(capturedGeneration) {\n try {\n // force: the server already rejected the stored token, so a locally-fresh-looking\n // one is not evidence of anything - require a genuinely new credential.\n const token = await getFreshAuthToken(false, { force: true });\n if (!token)\n return null;\n // A refresh preserves the generation; a re-login mints a new one. An unchanged\n // generation covers both \"still the same token\" and \"refreshed descendant\", while\n // rejecting a retry that a concurrent login would otherwise run as someone else.\n const currentGeneration = await getSessionGeneration(false);\n if (currentGeneration !== capturedGeneration)\n return null;\n return token;\n }\n catch (_a) {\n // auth_changed or a definitively rejected refresh: the retry must not proceed.\n return null;\n }\n}\nasync function authedFetch(path, init) {\n var _a, _b;\n // DS3-0415: acquire the bearer through the same refresh-aware core path the HTTP\n // client uses (getFreshAuthToken), NOT the raw non-refreshing accessor. Bounded ID\n // tokens expire after ~1h while the refresh credential lives longer, so an onramp\n // surface left open past the expiry would otherwise send a stale token and take a 401\n // with no recovery. getFreshAuthToken refreshes when needed and binds to the session.\n const idToken = await getFreshAuthToken(false);\n if (!idToken)\n throw new Error('onramp: no active session - call login() first');\n // Bind any 401 recovery to the session that authenticated this first attempt.\n const capturedGeneration = await getSessionGeneration(false);\n const send = (bearer) => fetch(`${window.location.origin}${path}`, Object.assign(Object.assign({}, init), { headers: Object.assign(Object.assign({}, init === null || init === void 0 ? void 0 : init.headers), { Authorization: `Bearer ${bearer}` }) }));\n let response = await send(idToken);\n // A token that expires between the freshness read and the server reaching it is\n // rejected with 401. Force exactly one refresh bound to the captured generation and\n // retry once.\n if (response.status === 401) {\n const refreshed = await refreshOnrampTokenOnce(capturedGeneration);\n if (refreshed) {\n // Release the discarded 401 body before replaying to avoid an unconsumed-stream\n // warning / pooled-connection retention under undici / React Native.\n try {\n await ((_b = (_a = response.body) === null || _a === void 0 ? void 0 : _a.cancel) === null || _b === void 0 ? void 0 : _b.call(_a));\n }\n catch ( /* ignore */_c) { /* ignore */ }\n response = await send(refreshed);\n }\n }\n return response;\n}\nasync function readError(res) {\n var _a;\n try {\n return (_a = (await res.json()).error) !== null && _a !== void 0 ? _a : '';\n }\n catch (_b) {\n return '';\n }\n}\nfunction sessionBody(options, extra) {\n return JSON.stringify(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (options.asset ? { asset: options.asset } : {})), (options.amountUsd !== undefined ? { amountUsd: options.amountUsd } : {})), (options.minAmountOut !== undefined ? { minAmountOut: options.minAmountOut } : {})), (options.slippagePad !== undefined ? { slippagePad: options.slippagePad } : {})), extra));\n}\nfunction resolveAddress() {\n var _a;\n const user = getCurrentUser();\n const address = (_a = user === null || user === void 0 ? void 0 : user.address) !== null && _a !== void 0 ? _a : undefined;\n if (!address) {\n throw new Error(user\n ? 'onramp: the signed-in account has no wallet address (create one via the embedded wallet flow)'\n : 'onramp: no signed-in user - call login() first');\n }\n return address;\n}\n/**\n * Preview a quote (fees + exact/floor output) WITHOUT opening any window or\n * consuming a session. Show this to the user, then call onramp() to check out.\n */\nexport async function onrampQuote(options = {}) {\n if (!hasDOM())\n throw new Error('onrampQuote is web-only');\n resolveAddress();\n const res = await authedFetch('/__bounded/onramp/session', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: sessionBody(options, { quoteOnly: true }),\n });\n if (!res.ok)\n throw new Error(`onrampQuote: failed (${res.status}${await readError(res).then((e) => (e ? `: ${e}` : ''))})`);\n return (await res.json());\n}\n/** The signed-in user's recent onramp transactions (newest first). */\nexport async function onrampStatus(sinceMs) {\n if (!hasDOM())\n throw new Error('onrampStatus is web-only');\n const res = await authedFetch(`/__bounded/onramp/status${sinceMs ? `?since=${Math.floor(sinceMs)}` : ''}`);\n if (!res.ok)\n throw new Error(`onrampStatus: failed (${res.status})`);\n return (await res.json()).transactions;\n}\nfunction isSuccess(t) {\n return /SUCCESS|COMPLETED/i.test(t.status);\n}\nfunction isPending(t) {\n return /PROGRESS|PENDING|CREATED/i.test(t.status);\n}\nasync function verifyCompletion(openedAt, asset, timeoutMs) {\n const deadline = Date.now() + timeoutMs;\n // 60s of clock-skew slack on `since`: Coinbase stamps server-side.\n const since = openedAt - 60000;\n for (;;) {\n let sawPending = false;\n try {\n const txs = await onrampStatus(since);\n const done = txs.find((t) => isSuccess(t) && (t.asset === null || t.asset === asset));\n if (done)\n return done;\n sawPending = txs.some(isPending);\n }\n catch ( /* transient - keep polling until the deadline */_a) { /* transient - keep polling until the deadline */ }\n // No completed fill and nothing in flight: one grace poll cycle still\n // runs (Coinbase's record can lag the redirect), but don't burn the\n // full window when the user plainly abandoned checkout.\n if (Date.now() >= deadline)\n return null;\n if (!sawPending && Date.now() >= openedAt + 12000 && Date.now() - openedAt > timeoutMs / 2)\n return null;\n await new Promise((r) => setTimeout(r, 3000));\n }\n}\n/**\n * Open Coinbase Onramp for the signed-in user. Resolves after the window\n * closes, with completion VERIFIED against Coinbase when possible.\n * Call from a click handler - popup blockers require user activation.\n */\nexport async function onramp(options = {}) {\n var _a;\n if (!hasDOM())\n throw new Error('onramp() is web-only');\n resolveAddress();\n // Open the window synchronously - BEFORE any await - so the click's transient\n // user-activation is not consumed by the session fetch below. A window.open\n // issued after the fetch is rejected by strict popup blockers even from a\n // click handler, because activation can expire across the awaited round trip.\n // This holds for BOTH the popup and the documented new-tab mode (same\n // hard-won pattern as loginWithPopup). We navigate this placeholder to the\n // checkout URL once the session is minted; if no handle can be opened\n // synchronously we require a fresh user action rather than a delayed open.\n let handle;\n if (options.newTab) {\n handle = window.open('', '_blank');\n }\n else {\n const w = options.width || 460;\n const h = options.height || 720;\n const left = window.screenX + (window.outerWidth - w) / 2;\n const top = window.screenY + (window.outerHeight - h) / 2;\n handle = window.open('', 'bounded-onramp', `width=${w},height=${h},left=${left},top=${top}`);\n }\n if (!handle)\n throw new Error('onramp: window.open was blocked - call onramp() from a click handler');\n let session;\n try {\n const res = await authedFetch('/__bounded/onramp/session', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: sessionBody(options),\n });\n if (!res.ok) {\n const detail = await readError(res);\n if (res.status === 404) {\n throw new Error('onramp: session endpoint not found - onramp works on Bounded-served origins (your deployed app URL), not local dev servers');\n }\n throw new Error(`onramp: session mint failed (${res.status}${detail ? `: ${detail}` : ''})`);\n }\n session = (await res.json());\n }\n catch (error) {\n try {\n handle.close();\n }\n catch ( /* ignore */_b) { /* ignore */ }\n throw error;\n }\n const openedAt = Date.now();\n const base = Object.assign({ address: session.address, asset: session.asset }, (session.quote ? { quote: session.quote } : {}));\n // Navigate the pre-opened placeholder to the checkout URL.\n try {\n handle.location.replace(session.url);\n }\n catch (_c) {\n try {\n handle.location.href = session.url;\n }\n catch (_d) {\n try {\n handle.close();\n }\n catch ( /* ignore */_e) { /* ignore */ }\n throw new Error('onramp: window failed to navigate - retry from a fresh user action (click)');\n }\n }\n if (options.newTab) {\n // Cross-origin tab close is not observable, so resolve immediately;\n // verify completion later via onrampStatus().\n return Object.assign(Object.assign({}, base), { status: 'opened' });\n }\n // Popup mode: wait for the window to close, then VERIFY completion.\n await new Promise((resolve) => {\n const timer = setInterval(() => {\n if (handle.closed) {\n clearInterval(timer);\n resolve();\n }\n }, 500);\n });\n const fill = await verifyCompletion(openedAt, session.asset, (_a = options.completionTimeoutMs) !== null && _a !== void 0 ? _a : 24000);\n if (fill) {\n return Object.assign(Object.assign(Object.assign(Object.assign({}, base), { status: 'completed' }), (fill.amountOut !== null ? { actualOut: fill.amountOut } : {})), (fill.txHash ? { txHash: fill.txHash } : {}));\n }\n return Object.assign(Object.assign({}, base), { status: 'closed' });\n}\n","/**\n * DS3-0414: does the transaction already carry a REAL signer signature? A Solana\n * signature is computed over the compiled message, which INCLUDES recentBlockhash, so\n * the blockhash must not be rewritten once any signer (sponsor / multisig / co-signer)\n * has signed - a rewrite silently invalidates their signature. Legacy signatures are\n * `{ signature: Buffer | null }` entries; versioned signatures are 64-byte arrays that\n * stay all-zero placeholders until a signer fills them. Mirrors turnkey-signer-bridge.ts.\n */\nexport function transactionHasSignature(transaction) {\n if ('serializeMessage' in transaction) {\n return transaction.signatures.some((s) => s.signature != null);\n }\n return transaction.signatures.some((sig) => sig.some((b) => b !== 0));\n}\n/**\n * Extracts a human-readable error message from Solana transaction logs.\n */\nexport function extractTransactionError(err, logMessages) {\n if (logMessages) {\n return JSON.stringify(logMessages);\n }\n if (err) {\n try {\n return JSON.stringify(err);\n }\n catch (_a) {\n return String(err);\n }\n }\n return 'Unknown transaction error';\n}\n/** The highest Solana transaction version this SDK reads back (SIMD-0385 v1). */\nexport const SOLANA_MAX_SUPPORTED_TRANSACTION_VERSION = 1;\n/**\n * getParsedTransaction that survives a SIMD-0385 v1 transaction. @solana/web3.js\n * 1.98.x validates the response `version` against `0 | 'legacy'` and throws on 1\n * even when the request raised the ceiling, so when web3.js refuses to parse and\n * the connection exposes its endpoint, the same jsonParsed result is read as raw\n * JSON-RPC. Legacy and v0 responses keep coming back as web3.js parsed objects.\n */\nexport async function getParsedTransactionCompat(connection, signature) {\n var _a;\n try {\n return await connection.getParsedTransaction(signature, {\n maxSupportedTransactionVersion: SOLANA_MAX_SUPPORTED_TRANSACTION_VERSION,\n commitment: 'confirmed',\n });\n }\n catch (error) {\n const endpoint = typeof (connection === null || connection === void 0 ? void 0 : connection.rpcEndpoint) === 'string' ? connection.rpcEndpoint.trim() : '';\n if (!endpoint)\n throw error;\n const response = await fetch(endpoint, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: 'getTransaction',\n params: [signature, {\n encoding: 'jsonParsed',\n commitment: 'confirmed',\n maxSupportedTransactionVersion: SOLANA_MAX_SUPPORTED_TRANSACTION_VERSION,\n }],\n }),\n });\n if (!response.ok)\n throw error;\n const body = await response.json();\n if (body === null || body === void 0 ? void 0 : body.error)\n throw error;\n return (_a = body === null || body === void 0 ? void 0 : body.result) !== null && _a !== void 0 ? _a : null;\n }\n}\n/**\n * Polls getSignatureStatuses until the transaction is confirmed, then checks for errors.\n * Throws if the transaction failed on-chain. Returns parsed transaction info on success.\n */\nexport async function confirmAndCheckTransaction(connection, signature) {\n var _a;\n const maxAttempts = 15;\n for (let i = 0; i < maxAttempts; i++) {\n const { value } = await connection.getSignatureStatuses([signature]);\n const status = value[0];\n if (status) {\n if (status.err) {\n let logMessages;\n try {\n const txInfo = await getParsedTransactionCompat(connection, signature);\n logMessages = (_a = txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta) === null || _a === void 0 ? void 0 : _a.logMessages;\n }\n catch (_b) {\n // Log retrieval is diagnostic only; the on-chain error is the verdict.\n }\n const errorMessage = extractTransactionError(status.err, logMessages);\n throw new Error(`Transaction failed: ${errorMessage}`);\n }\n if (status.confirmationStatus === 'confirmed' || status.confirmationStatus === 'finalized') {\n return await getParsedTransactionCompat(connection, signature);\n }\n }\n await new Promise(resolve => setTimeout(resolve, 1000));\n }\n throw new Error('Transaction confirmation timeout');\n}\n","/**\n * Privy Expo Auth Provider — React Native implementation of AuthProvider.\n *\n * Uses @privy-io/expo instead of @privy-io/react-auth.\n * Persists the session through getActiveSessionManager() (the RN store on React\n * Native), and mints it via the SIWS wallet-signature path — identical to\n * Phantom/MWA — so no Privy-specific backend verification is required.\n *\n * IMPORTANT — Expo/RN consumers must:\n * 1. Install polyfills: fast-text-encoding, react-native-get-random-values\n * 2. Install @privy-io/expo, @privy-io/expo-native-extensions\n * 3. Call ReactNativeSessionManager.configure({ storage, atob }) at startup\n * 4. Call setPlatform({ ... }) from @bounded-sh/client at startup\n * 5. Wrap their app tree with PrivyProvider from @privy-io/expo\n * 6. Create this provider and pass the Privy hooks/methods via setPrivyMethods()\n *\n * Unlike the web PrivyWalletProvider which renders a hidden React DOM tree\n * to host Privy's React context, this provider expects the RN app itself\n * to render <PrivyProvider> and then bridge the hooks via setPrivyMethods().\n */\nimport { getActiveSessionManager as SessionManager, createSessionWithSignature, genAuthNonce, genSolanaMessage, } from '@bounded-sh/core';\nimport { Buffer } from 'buffer';\nimport { setCurrentUser } from '../../global';\nimport { getPlatform } from '../../platform';\nimport { normalizeSolanaRpcUrl, resolveSolanaRpcUrl } from '../solana-rpc';\nimport { confirmAndCheckTransaction, transactionHasSignature } from './transaction-utils';\nimport bs58 from 'bs58';\n// -----------------------------------------------------------------------\n// Provider implementation\n// -----------------------------------------------------------------------\nexport class PrivyExpoProvider {\n constructor(appId, networkUrl = null) {\n this.privyMethods = null;\n // DS3-0411: the embedded Privy wallet address this session was minted for. The\n // Privy account can change under us (a different embedded wallet becomes\n // selected) without a fresh Bounded login; if the currently selected wallet is\n // not the one we authenticated, we must REFUSE to sign rather than sign as a\n // principal the Bounded session never proved. Set on login/restore, cleared on\n // logout; a fresh login rebinds it. Mirrors the injected wallet providers.\n this.authenticatedAddress = null;\n this.appId = appId;\n this.networkUrl = normalizeSolanaRpcUrl(networkUrl);\n }\n /**\n * Bridge Privy hooks from the app's React tree into this provider.\n *\n * Call this from a component rendered inside <PrivyProvider>:\n * ```tsx\n * const privy = usePrivy();\n * const wallet = useEmbeddedSolanaWallet();\n * const { getAccessToken } = usePrivy();\n * const { getIdentityToken } = useIdentityToken();\n *\n * useEffect(() => {\n * provider.setPrivyMethods({\n * isReady: privy.isReady,\n * isAuthenticated: !!privy.user,\n * user: privy.user,\n * login: privy.login,\n * logout: privy.logout,\n * getAccessToken,\n * getIdentityToken,\n * getWalletProvider: async () => {\n * if (!wallet.wallets[0]) return null;\n * const provider = await wallet.wallets[0].getProvider();\n * return {\n * address: wallet.wallets[0].address,\n * signMessage: provider.signMessage,\n * signTransaction: provider.signTransaction,\n * signAndSendTransaction: provider.signAndSendTransaction,\n * };\n * },\n * });\n * }, [privy.isReady, privy.user, wallet.wallets]);\n * ```\n */\n setPrivyMethods(methods) {\n this.privyMethods = methods;\n }\n // -------------------------------------------------------------------\n // AuthProvider interface\n // -------------------------------------------------------------------\n async login() {\n var _a;\n await this.ensureReady();\n // Check for existing session — verify the stored address matches the\n // currently authenticated Privy wallet (guards against account switches\n // without an explicit logout).\n const session = await SessionManager().getSession();\n if (session && ((_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.isAuthenticated)) {\n const wallet = await this.privyMethods.getWalletProvider();\n if (wallet && wallet.address === session.address) {\n this.authenticatedAddress = session.address;\n return { provider: this, address: session.address };\n }\n // Stale session — clear and continue to fresh login flow\n await SessionManager().clearSession();\n }\n // Trigger Privy login\n const privyUser = await this.privyMethods.login();\n if (!privyUser)\n return null;\n // Get the wallet\n const wallet = await this.privyMethods.getWalletProvider();\n if (!wallet) {\n throw new Error('No embedded Solana wallet found after login. Ensure embeddedWallets.solana.createOnLogin is configured.');\n }\n // Mint a Bounded session by having the Privy Solana wallet sign the\n // standard SIWS challenge — identical to Phantom/MWA, so the backend mints\n // the session via the proven wallet-signature path (no Privy-specific\n // token verification needed).\n await this.createSession(wallet.address, wallet);\n this.authenticatedAddress = wallet.address;\n const user = { provider: this, address: wallet.address };\n setCurrentUser(user);\n return user;\n }\n async signMessage(message) {\n await this.ensureReady();\n const wallet = await this.getWalletOrThrow('signing');\n const messageBytes = getPlatform().textEncode(message);\n const result = await wallet.signMessage(messageBytes);\n return bs58.encode(result.signature);\n }\n async signTransaction(transaction) {\n await this.ensureReady();\n const { Connection, PublicKey, Transaction, VersionedTransaction } = await import(\"@solana/web3.js\");\n const wallet = await this.getWalletOrThrow('signing this transaction');\n // Ensure blockhash is set\n const isLegacyTx = 'recentBlockhash' in transaction &&\n !('message' in transaction && 'staticAccountKeys' in transaction.message);\n if (isLegacyTx) {\n const legacyTx = transaction;\n if (!legacyTx.recentBlockhash) {\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n legacyTx.recentBlockhash = blockhash;\n legacyTx.lastValidBlockHeight = lastValidBlockHeight;\n }\n if (!legacyTx.feePayer) {\n legacyTx.feePayer = new PublicKey(wallet.address);\n }\n }\n else {\n const versionedTx = transaction;\n if (!versionedTx.message.recentBlockhash) {\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n const { blockhash } = await connection.getLatestBlockhash('confirmed');\n versionedTx.message.recentBlockhash = blockhash;\n }\n }\n const result = await wallet.signTransaction(transaction);\n // Deserialize the signed transaction\n const signedBytes = result.signedTransaction;\n try {\n return VersionedTransaction.deserialize(signedBytes);\n }\n catch (_a) {\n return Transaction.from(signedBytes);\n }\n }\n async signAndSubmitTransaction(transaction, feePayer) {\n await this.ensureReady();\n const { Connection, PublicKey } = await import(\"@solana/web3.js\");\n const wallet = await this.getWalletOrThrow('submitting this transaction');\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n // Ensure blockhash.\n // DS3-0414: a Solana signature covers the compiled message (recentBlockhash\n // included), so refreshing the blockhash after any signer (sponsor / co-signer)\n // has signed silently invalidates their signature. Only refresh while the\n // transaction is still unsigned; once a real signature is present, submit the\n // caller's transaction verbatim.\n if (!transactionHasSignature(transaction)) {\n const isLegacyTx = 'recentBlockhash' in transaction &&\n !('message' in transaction && 'staticAccountKeys' in transaction.message);\n if (isLegacyTx) {\n const legacyTx = transaction;\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n legacyTx.recentBlockhash = blockhash;\n legacyTx.lastValidBlockHeight = lastValidBlockHeight;\n legacyTx.feePayer = feePayer || new PublicKey(wallet.address);\n }\n else {\n const versionedTx = transaction;\n const { blockhash } = await connection.getLatestBlockhash('confirmed');\n versionedTx.message.recentBlockhash = blockhash;\n }\n }\n const { signature } = await this.signAndSubmitInternal(transaction, wallet, connection);\n return signature;\n }\n async restoreSession() {\n const session = await SessionManager().getSession();\n if (session) {\n this.authenticatedAddress = session.address;\n return { provider: this, address: session.address };\n }\n return null;\n }\n async logout() {\n var _a;\n this.authenticatedAddress = null;\n if ((_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.isAuthenticated) {\n await this.privyMethods.logout();\n }\n await SessionManager().clearSession();\n }\n async getNativeMethods() {\n return this.privyMethods;\n }\n // -------------------------------------------------------------------\n // Private helpers\n // -------------------------------------------------------------------\n /**\n * Mint a Bounded session from a Privy Solana wallet by signing the canonical\n * SIWS challenge (nonce -> genSolanaMessage -> wallet.signMessage). This reuses\n * createSessionWithSignature — the exact path Phantom, the mobile wallet\n * adapter, and the guest device-key use — so the bounded /session issuer mints\n * the session with no Privy-specific verification (it arrives as a Solana\n * wallet signature, defaulting to authMethod 'phantom' server-side).\n */\n async createSession(address, wallet) {\n const nonce = await genAuthNonce();\n const message = await genSolanaMessage(address, nonce);\n const messageBytes = getPlatform().textEncode(message);\n const signResult = await wallet.signMessage(messageBytes);\n // createSessionWithSignature expects a base64-encoded detached signature\n // (matches the Phantom + guest providers).\n const signature = Buffer.from(signResult.signature).toString('base64');\n const result = await createSessionWithSignature(address, message, signature);\n if (result) {\n await SessionManager().storeSession(address, result.accessToken, result.idToken, result.refreshToken);\n }\n }\n async getWalletOrThrow(action) {\n var _a;\n const wallet = await ((_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.getWalletProvider());\n if (!wallet) {\n throw new Error('No Privy wallet available. Ensure the user is logged in and an embedded Solana wallet exists.');\n }\n this.assertAuthenticatedAccount(wallet.address, action);\n return wallet;\n }\n /**\n * DS3-0411: refuse to sign when the currently selected Privy embedded wallet\n * differs from the account this Bounded session was authenticated with. Signing\n * under a switched account would produce a message/transaction from an identity\n * the session never proved (requests still carry account A's bearer while the\n * signature/fee-payer come from account B). Require a fresh login to rebind.\n */\n assertAuthenticatedAccount(currentAddress, action) {\n var _a;\n if (!this.authenticatedAddress || currentAddress !== this.authenticatedAddress) {\n throw new Error(`The Privy wallet account changed after login (session is for ` +\n `${(_a = this.authenticatedAddress) !== null && _a !== void 0 ? _a : 'no account'}, wallet is on ${currentAddress}). ` +\n `Sign in again before ${action}.`);\n }\n }\n async signAndSubmitInternal(transaction, wallet, connection) {\n // Use Privy's combined sign+send\n const result = await wallet.signAndSendTransaction(transaction, connection);\n const signature = result.signature;\n const txInfo = await confirmAndCheckTransaction(connection, signature);\n return { signature, txInfo };\n }\n getRpcUrl(network) {\n return resolveSolanaRpcUrl(this.networkUrl, network, \"Privy Expo Solana transaction\");\n }\n async ensureReady(timeoutMs = 15000) {\n if (!this.privyMethods) {\n throw new Error('PrivyExpoProvider.setPrivyMethods() must be called before using auth. ' +\n 'Bridge the Privy hooks from your React Native component tree.');\n }\n if (this.privyMethods.isReady)\n return;\n return new Promise((resolve, reject) => {\n const startTime = Date.now();\n const check = () => {\n var _a;\n if ((_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.isReady) {\n resolve();\n }\n else if (Date.now() - startTime > timeoutMs) {\n reject(new Error('Privy Expo SDK failed to initialize within timeout.'));\n }\n else {\n setTimeout(check, 100);\n }\n };\n check();\n });\n }\n}\n","/**\n * Default provider discovery: Phantom-first, then any Wallet-Standard\n * `window.solana`. Kept tiny + synchronous (no heavy imports) so it works inside\n * a user gesture and can be eagerly exported from the SDK entry.\n */\nexport function defaultInjectedProvider() {\n var _a;\n if (typeof window === 'undefined')\n return null;\n const w = window;\n const phantom = (_a = w === null || w === void 0 ? void 0 : w.phantom) === null || _a === void 0 ? void 0 : _a.solana;\n if (phantom && typeof phantom.signMessage === 'function')\n return phantom;\n const generic = w === null || w === void 0 ? void 0 : w.solana;\n if (generic && typeof generic.signMessage === 'function')\n return generic;\n return null;\n}\n","// injected-evm-wallet-types.ts — tiny, dependency-free surface for the EVM\n// WALLET LOGIN path (BYO wallet via SIWE). The EVM twin of\n// injected-wallet-types.ts: kept separate from injected-evm-wallet-provider.ts\n// so the SDK entry can eagerly export the type surface + the provider-discovery\n// helper WITHOUT dragging the provider class into the default bundle. The\n// provider is lazy-loaded by getAuthProvider() when an app opts into\n// authMethod:'evm-wallet'.\n//\n// It rides the standard EIP-1193 injected provider a browser wallet exposes\n// (MetaMask / Rabby / Coinbase Wallet / any window.ethereum), discovered via\n// EIP-6963 (multi-wallet, collision-free) with a window.ethereum fallback. It\n// needs NO viem/ethers and NO React — EIP-1193 request() + hex strings suffice.\n// EIP-6963 is announcement-based: wallets add an `eip6963:requestProvider`\n// listener and synchronously dispatch `eip6963:announceProvider` in response. We\n// keep a persistent collector so announcements (including late ones) are\n// captured, and re-request on demand.\nconst announcedProviders = [];\nlet announceListenerAttached = false;\nfunction attachAnnounceListener() {\n if (announceListenerAttached || typeof window === 'undefined')\n return;\n announceListenerAttached = true;\n window.addEventListener('eip6963:announceProvider', (event) => {\n const detail = event === null || event === void 0 ? void 0 : event.detail;\n if (detail &&\n detail.provider &&\n typeof detail.provider.request === 'function' &&\n !announcedProviders.some((d) => { var _a, _b; return ((_a = d.info) === null || _a === void 0 ? void 0 : _a.uuid) === ((_b = detail.info) === null || _b === void 0 ? void 0 : _b.uuid); })) {\n announcedProviders.push(detail);\n }\n });\n}\n/**\n * Request + collect EIP-6963 providers. Dispatches `eip6963:requestProvider`\n * (synchronous — already-loaded wallets announce in the same tick) and returns\n * every wallet announced so far. Kept synchronous so it works inside a user\n * gesture and can be eagerly exported from the SDK entry.\n */\nexport function requestEip6963Providers() {\n if (typeof window === 'undefined')\n return [];\n attachAnnounceListener();\n try {\n window.dispatchEvent(new Event('eip6963:requestProvider'));\n }\n catch (_a) {\n /* older browsers without Event constructor — fall through to window.ethereum */\n }\n return announcedProviders.slice();\n}\n/**\n * Default EVM provider discovery: EIP-6963 first (multi-wallet, collision-free),\n * then legacy `window.ethereum`. Returns null when no injected wallet is present.\n */\nexport function defaultInjectedEvmProvider() {\n if (typeof window === 'undefined')\n return null;\n const details = requestEip6963Providers();\n if (details.length > 0)\n return details[0].provider;\n const eth = window.ethereum;\n if (eth && typeof eth.request === 'function')\n return eth;\n return null;\n}\n","/** Admission comes from an app-authenticated function invoking the Cloudflare\n * broadcast connector. No application membership is managed by this helper. */\nexport async function connectBroadcast(ticket, options) {\n var _a, _b, _c, _d;\n const url = new URL(ticket.url);\n if (url.username || url.password || url.search || url.hash || (url.protocol !== \"https:\" && !(url.protocol === \"http:\" && [\"localhost\", \"127.0.0.1\", \"[::1]\"].includes(url.hostname))))\n throw new Error(\"Invalid broadcast URL\");\n if (!/^[a-f0-9]{64}$/.test(ticket.token) || ticket.transport !== \"webrtc-broadcast\" || !Number.isFinite(ticket.expiresAt) || ticket.expiresAt <= Date.now()\n || !Number.isInteger(ticket.maxSeconds) || ticket.maxSeconds < 15 || ticket.maxSeconds > 300\n || ![\"publisher\", \"listener\"].includes(ticket.role) || ((_a = options.signal) === null || _a === void 0 ? void 0 : _a.aborted))\n throw new Error(\"Invalid or expired broadcast ticket\");\n const publisher = ticket.role === \"publisher\";\n const tracks = publisher ? [(_b = options.microphone) === null || _b === void 0 ? void 0 : _b.getAudioTracks()[0], (_c = options.assistant) === null || _c === void 0 ? void 0 : _c.getAudioTracks()[0]] : [];\n if (publisher && tracks.some(track => !track || track.readyState !== \"live\"))\n throw new Error(\"Microphone and assistant audio tracks are required\");\n if (!publisher && !options.audio)\n throw new Error(\"Two playback elements are required\");\n const peer = new RTCPeerConnection({ iceServers: [{ urls: \"stun:stun.cloudflare.com:3478\" }] });\n let stopped = false, stopPromise;\n let resolveClosed;\n const closed = new Promise(resolve => { resolveClosed = resolve; });\n let disconnectTimer;\n const request = async (method, body) => {\n const response = await fetch(ticket.url, Object.assign(Object.assign({ method, headers: { Authorization: `Bearer ${ticket.token}`, \"Content-Type\": \"application/json\" } }, (body === undefined ? {} : { body: JSON.stringify(body) })), { signal: AbortSignal.timeout(15000), redirect: \"error\", cache: \"no-store\" }));\n if (!response.ok)\n throw new Error(`Broadcast request failed (${response.status})`);\n return response.json();\n };\n const connection = {\n closed,\n status: () => request(\"GET\"),\n close() {\n var _a, _b;\n if (stopPromise)\n return stopPromise;\n stopped = true;\n clearTimeout(deadline);\n clearTimeout(disconnectTimer);\n peer.close();\n (_a = options.signal) === null || _a === void 0 ? void 0 : _a.removeEventListener(\"abort\", abort);\n tracks.forEach(t => t === null || t === void 0 ? void 0 : t.removeEventListener(\"ended\", abort));\n (_b = options.audio) === null || _b === void 0 ? void 0 : _b.forEach(audio => { audio.pause(); audio.srcObject = null; });\n resolveClosed();\n // These tracks also belong to the primary voice connection. Closing the\n // broadcast must not stop the microphone or assistant's direct playback.\n stopPromise = (async () => {\n for (let attempt = 0; attempt < 3; attempt++) {\n try {\n await request(\"DELETE\");\n return;\n }\n catch (error) {\n if (attempt === 2)\n throw error;\n await new Promise(resolve => setTimeout(resolve, 250 * (attempt + 1)));\n }\n }\n })();\n return stopPromise;\n },\n };\n const abort = () => { void connection.close().catch(() => { }); };\n const deadline = setTimeout(abort, ticket.maxSeconds * 1000);\n (_d = options.signal) === null || _d === void 0 ? void 0 : _d.addEventListener(\"abort\", abort, { once: true });\n tracks.forEach(track => track === null || track === void 0 ? void 0 : track.addEventListener(\"ended\", abort, { once: true }));\n let audioMids = [];\n peer.addEventListener(\"track\", event => {\n var _a;\n const audio = (_a = options.audio) === null || _a === void 0 ? void 0 : _a[audioMids.indexOf(event.transceiver.mid || \"\")];\n if (!audio) {\n abort();\n return;\n }\n audio.srcObject = new MediaStream([event.track]);\n void audio.play().catch(abort);\n });\n peer.addEventListener(\"connectionstatechange\", () => {\n clearTimeout(disconnectTimer);\n if (peer.connectionState === \"failed\")\n abort();\n else if (peer.connectionState === \"disconnected\")\n disconnectTimer = setTimeout(abort, 5000);\n });\n try {\n let result;\n if (publisher) {\n for (const track of tracks)\n peer.addTransceiver(track, { direction: \"sendonly\", sendEncodings: [{ maxBitrate: 32000 }] });\n await peer.setLocalDescription(await peer.createOffer());\n result = await request(\"POST\", { sdp: peer.localDescription.sdp });\n if (stopped)\n throw new Error(\"Broadcast cancelled\");\n await peer.setRemoteDescription(result.sessionDescription);\n }\n else {\n result = await request(\"POST\", {});\n if (stopped)\n throw new Error(\"Broadcast cancelled\");\n audioMids = [\"microphone\", \"assistant\"].map(name => { var _a, _b; return ((_b = (_a = result.tracks) === null || _a === void 0 ? void 0 : _a.find(track => track.trackName === name)) === null || _b === void 0 ? void 0 : _b.mid) || \"\"; });\n if (audioMids.some(mid => !mid) || new Set(audioMids).size !== 2)\n throw new Error(\"Invalid broadcast audio tracks\");\n await peer.setRemoteDescription(result.sessionDescription);\n await peer.setLocalDescription(await peer.createAnswer());\n await request(\"PUT\", { sdp: peer.localDescription.sdp });\n }\n await new Promise((resolve, reject) => {\n var _a;\n const timer = setTimeout(() => done(new Error(\"Broadcast connection timed out\")), 15000);\n const check = () => {\n if (stopped || [\"failed\", \"closed\"].includes(peer.connectionState))\n done(new Error(\"Broadcast connection ended\"));\n else if (peer.connectionState === \"connected\")\n done();\n };\n const done = (error) => { var _a; clearTimeout(timer); peer.removeEventListener(\"connectionstatechange\", check); (_a = options.signal) === null || _a === void 0 ? void 0 : _a.removeEventListener(\"abort\", check); error ? reject(error) : resolve(); };\n peer.addEventListener(\"connectionstatechange\", check);\n (_a = options.signal) === null || _a === void 0 ? void 0 : _a.addEventListener(\"abort\", check, { once: true });\n check();\n });\n if (stopped)\n throw new Error(\"Broadcast cancelled\");\n return connection;\n }\n catch (error) {\n await connection.close().catch(() => { });\n throw error;\n }\n}\n","/** Attach browser media directly to the connector's provider. Bounded observes\n * usage independently; data-channel messages never count as billing receipts. */\nexport async function connectServiceSession(ticket, options) {\n var _a, _b, _c;\n const url = new URL(ticket.url);\n if (url.username || url.password || url.search || url.hash || (url.protocol !== \"https:\" && !(url.protocol === \"http:\" && [\"localhost\", \"127.0.0.1\", \"[::1]\"].includes(url.hostname))))\n throw new Error(\"Invalid service session URL\");\n if (!/^[a-f0-9]{64}$/.test(ticket.token) || ticket.transport !== \"webrtc-session\" || !Number.isFinite(ticket.expiresAt) || ticket.expiresAt <= Date.now())\n throw new Error(\"Invalid or expired service session ticket\");\n if ((_a = options.signal) === null || _a === void 0 ? void 0 : _a.aborted)\n throw new Error(\"Service session aborted\");\n const peer = new RTCPeerConnection();\n const audioStream = new MediaStream();\n const channel = peer.createDataChannel(\"oai-events\");\n let ready = false, finished = false, closing = false;\n let resolveClosed, rejectClosed;\n let resolveReady, rejectReady;\n let pollTimer;\n const closed = new Promise((resolve, reject) => { resolveClosed = resolve; rejectClosed = reject; });\n void closed.catch(() => { });\n const connected = new Promise((resolve, reject) => { resolveReady = resolve; rejectReady = reject; });\n void connected.catch(() => { });\n const request = async (method, body) => {\n const response = await fetch(ticket.url, Object.assign(Object.assign({ method, headers: Object.assign({ Authorization: `Bearer ${ticket.token}` }, (body === undefined ? {} : { \"Content-Type\": \"application/json\" })) }, (body === undefined ? {} : { body: JSON.stringify(body) })), { signal: AbortSignal.timeout(15000), cache: \"no-store\", redirect: \"error\" }));\n if (!response.ok)\n throw new Error(`Service session request failed (${response.status})`);\n return response.json();\n };\n const cleanup = () => {\n var _a;\n clearTimeout(startTimer);\n clearTimeout(pollTimer);\n (_a = options.signal) === null || _a === void 0 ? void 0 : _a.removeEventListener(\"abort\", abort);\n options.stream.getTracks().forEach(track => track.stop());\n options.audio.pause();\n options.audio.srcObject = null;\n channel.close();\n peer.close();\n };\n const fail = (error) => {\n if (finished)\n return;\n finished = true;\n rejectReady(error);\n rejectClosed(error);\n cleanup();\n };\n const poll = async (until) => {\n if (finished)\n return;\n try {\n const state = await request(\"GET\");\n if (state.state === \"closed\" && state.finalUsage === true && Number.isFinite(state.seconds) && state.seconds >= 0 && Number.isSafeInteger(state.chargedMicroUsd) && state.chargedMicroUsd >= 0) {\n finished = true;\n resolveClosed({ seconds: state.seconds, chargedMicroUsd: state.chargedMicroUsd, finalUsage: true });\n if (!ready)\n rejectReady(new Error(\"Service session ended before startup\"));\n cleanup();\n return;\n }\n if ([\"waiting\", \"creating\", \"active\"].includes(state.state))\n await request(\"DELETE\");\n if (state.state === \"attention\") {\n fail(new Error(\"Service session requires reconciliation\"));\n return;\n }\n }\n catch ( /* bounded retries; never invent a receipt after a network failure */_a) { /* bounded retries; never invent a receipt after a network failure */ }\n if (Date.now() >= until) {\n fail(new Error(\"Service session finalization unconfirmed; check session status\"));\n return;\n }\n pollTimer = setTimeout(() => { void poll(until); }, 500);\n };\n const session = {\n audioStream,\n closed,\n send(event) {\n if (!ready || closing || finished || channel.readyState !== \"open\")\n throw new Error(\"Service session is not accepting messages\");\n const json = JSON.stringify(event);\n if (new TextEncoder().encode(json).byteLength > 65536 || channel.bufferedAmount > 256000)\n throw new Error(\"Service session backpressure limit\");\n channel.send(json);\n },\n close() {\n if (!closing && !finished) {\n closing = true;\n options.stream.getTracks().forEach(track => track.stop());\n options.audio.pause();\n options.audio.srcObject = null;\n // Keep WebRTC alive while the server collects final usage. HTTP close\n // also works when the provider data channel is already gone.\n void request(\"DELETE\").catch(() => { }).then(() => poll(Date.now() + 45000));\n }\n return closed;\n },\n };\n const abort = () => { void session.close(); };\n const startTimer = setTimeout(() => { void request(\"DELETE\").catch(() => { }); fail(new Error(\"Service session startup timed out\")); }, 30000);\n (_b = options.signal) === null || _b === void 0 ? void 0 : _b.addEventListener(\"abort\", abort, { once: true });\n peer.addEventListener(\"track\", ({ track }) => { if (closing || finished)\n return; audioStream.addTrack(track); options.audio.srcObject = audioStream; void options.audio.play().catch(() => { void session.close(); fail(new Error(\"Audio playback was blocked\")); }); });\n channel.addEventListener(\"message\", ({ data }) => {\n var _a;\n if (finished || closing)\n return;\n let event;\n try {\n event = JSON.parse(String(data));\n }\n catch (_b) {\n return;\n }\n if ((event === null || event === void 0 ? void 0 : event.type) === \"session.started\" && !ready) {\n ready = true;\n clearTimeout(startTimer);\n resolveReady();\n }\n if ((event === null || event === void 0 ? void 0 : event.type) === \"session.closed\")\n void session.close();\n try {\n (_a = options.onEvent) === null || _a === void 0 ? void 0 : _a.call(options, event);\n }\n catch ( /* UI callback failure cannot own cleanup */_c) { /* UI callback failure cannot own cleanup */ }\n });\n peer.addEventListener(\"connectionstatechange\", () => { if ([\"failed\", \"closed\"].includes(peer.connectionState) && !finished)\n void session.close(); });\n channel.addEventListener(\"close\", () => { if (!finished)\n void session.close(); });\n try {\n for (const track of options.stream.getAudioTracks())\n peer.addTrack(track, options.stream);\n if (!options.stream.getAudioTracks().length)\n throw new Error(\"An audio track is required\");\n await peer.setLocalDescription(await peer.createOffer());\n if (peer.iceGatheringState !== \"complete\")\n await new Promise((resolve, reject) => {\n var _a;\n const timer = setTimeout(() => done(new Error(\"Service session ICE gathering timed out\")), 10000);\n const done = (error) => {\n var _a;\n clearTimeout(timer);\n peer.removeEventListener(\"icegatheringstatechange\", check);\n peer.removeEventListener(\"connectionstatechange\", check);\n (_a = options.signal) === null || _a === void 0 ? void 0 : _a.removeEventListener(\"abort\", check);\n error ? reject(error) : resolve();\n };\n const check = () => {\n var _a;\n if (closing || finished || ((_a = options.signal) === null || _a === void 0 ? void 0 : _a.aborted) || peer.connectionState === \"closed\")\n done(new Error(\"Service session aborted during ICE gathering\"));\n else if (peer.iceGatheringState === \"complete\")\n done();\n };\n peer.addEventListener(\"icegatheringstatechange\", check);\n peer.addEventListener(\"connectionstatechange\", check);\n (_a = options.signal) === null || _a === void 0 ? void 0 : _a.addEventListener(\"abort\", check, { once: true });\n check();\n });\n if (closing || finished)\n throw new Error(\"Service session aborted before admission\");\n if (!((_c = peer.localDescription) === null || _c === void 0 ? void 0 : _c.sdp.includes(\"\\r\\na=candidate:\")))\n throw new Error(\"Service session has no usable ICE candidates\");\n const answer = await request(\"POST\", { sdp: peer.localDescription.sdp });\n if (closing || finished)\n throw new Error(\"Service session aborted during admission\");\n await peer.setRemoteDescription({ type: \"answer\", sdp: answer.sdp });\n await connected;\n return session;\n }\n catch (error) {\n void request(\"DELETE\").catch(() => { });\n fail(error instanceof Error ? error : new Error(\"Service session startup failed\"));\n throw error;\n }\n}\n","import { init as initClient } from \"./global\";\nimport { withHostedIdentity } from \"./hosted-identity\";\n/**\n * Initialize the SDK. A page served by Bounded already states which app it is,\n * so `init()` there needs no `appId`; pass one to run anywhere else (another\n * host, local development). An explicit `appId` is used exactly as given.\n */\nexport function init(config = {}) {\n let resolved;\n try {\n resolved = withHostedIdentity(config);\n }\n catch (error) {\n return Promise.reject(error);\n }\n return initClient(resolved);\n}\nexport { getCurrentUser, onAuthStateChanged, onAuthLoadingChanged, getAuthLoading, waitForAuthReady, login, logout, } from \"./global\";\nexport { getConfig } from \"@bounded-sh/core\";\nexport { getAuthProvider, signInAnonymously, loginWithPrivy, loginWithWallet } from \"./auth\";\n// Prepare the wallet lane before showing your own \"connect wallet\" control, and\n// AWAIT it: a wallet that leaves the page (Solana Mobile) needs the tap and the\n// wallet handoff to be adjacent, and work done in between loses the activation.\n// It rejects only when there is no wallet login at all; a phone wallet that\n// could not be prepared comes back as `mobileWallet: \"failed\"` so an app with\n// injected wallets can carry on.\nexport { ensureWalletLoginReady, ensureSharedWalletLoginReady, preloadWalletLogin } from \"./auth\";\nexport { WalletConfigError } from \"./auth\";\nexport { loginWithRedirect, completeLoginFromRedirect, getLoginReturnError, loginWithPopup } from \"./auth\";\nexport { openBoundedWidget } from \"./auth/bounded-login-widget\";\nexport { ensureSignedIn } from \"./auth/ensure-signed-in\";\nexport { get, getMany, docId, set, setMany, setFile, getFiles, search, queryAggregate, runQuery, runQueryMany, runExpression, runExpressionMany, signMessage, signTransaction, signAndSubmitTransaction, count, aggregate, } from \"@bounded-sh/core\";\n// Typed write receipts (W4). `set`/`setMany` resolve to a discriminated\n// `SetResult`; a `submitted` receipt is reconciled with these — never by calling\n// `set` again, which would build a FRESH transaction beside the first.\nexport { reconcileSetResult, waitForSetResult } from \"@bounded-sh/core\";\nexport { subscribe } from \"@bounded-sh/core\";\n// Multi-app: a scoped client for a SECOND Bounded app (public reads + live\n// subscriptions, or that app's own authenticated reads via `getAuthHeaders`),\n// isolated from the global init() client. Imperative only - there is no scoped\n// React hook yet; use client.get/subscribe directly.\nexport { createClient, ScopedClientReadOnlyError } from \"@bounded-sh/core\";\n// Second-app tokens: exchange the signed-in app's session for a child-app token\n// (cached, single-flight, bounded retry) and build the scoped client's provider.\nexport { exchangeAppToken, clearAppTokenCache, createAppTokenAuthHeaders, AppTokenExchangeError } from \"@bounded-sh/core\";\n// Structured \"declined write\" surface (thrown on a policy/invariant denial; a\n// `bounded:decline` window event fires alongside for the hosted widget).\nexport { BoundedDeclineError, deriveDecline, dispatchDeclineEvent, DECLINE_EVENT_NAME } from \"@bounded-sh/core\";\nexport { dispatchRateLimitEvent, RATE_LIMIT_EVENT_NAME } from \"@bounded-sh/core\";\nexport * from \"@bounded-sh/core\";\nexport { useAuth } from \"./auth/hooks/useAuth\";\nexport { useQuery } from \"./hooks/useQuery\";\nexport { useBuildRun } from \"./hooks/useBuildRun\";\nexport * from \"./builds\";\nexport { apps } from \"./builds/apps\";\nexport { signSolanaMessageViaTurnkey, getOrCreateTurnkeyWallet, openTurnkeyKeyExport, getTurnkeyWalletSessionState, getTurnkeyWalletRecoveryUrl } from \"./auth/turnkey-signer-bridge\";\nexport { startTurnkeyEmailLogin } from \"./auth/turnkey-auth\";\nexport { getIdToken } from \"./utils\";\n// Coinbase Onramp: fund the signed-in user's wallet (popup to pay.coinbase.com,\n// session minted by the platform on the app's own origin - see onramp.ts).\nexport { onramp, onrampQuote, onrampStatus } from \"./onramp\";\nexport { setPlatform, getPlatform } from \"./platform\";\nexport { OffchainAuthProvider, } from \"./auth/providers/offchain-auth-provider\";\nexport { PrivyExpoProvider } from \"./auth/providers/privy-expo-provider\";\n// Solana WALLET LOGIN (authMethod:'phantom') — the slim \"connect wallet\" path.\n// The InjectedWalletProvider is loaded LAZILY by getAuthProvider() (dynamic\n// import → its own chunk), so the heavy provider class stays out of the default\n// entry bundle. Only the tiny `defaultInjectedProvider` discovery helper + the\n// config types are exported eagerly here (an app that just uses\n// authMethod:'phantom' needs neither). To bridge a custom/mock wallet, pass\n// config.injectedWalletConfig.getProvider to init().\nexport { defaultInjectedProvider } from \"./auth/providers/injected-wallet-types\";\n// EVM WALLET LOGIN (authMethod:'evm-wallet') — the EVM twin of the Solana\n// \"connect wallet\" path. Slim + dependency-free (EIP-1193 + hex, no viem/ethers).\n// The tiny EIP-6963 discovery helper + config types are exported eagerly; the\n// InjectedEvmWalletProvider class is loaded when the app selects the method.\nexport { defaultInjectedEvmProvider, requestEip6963Providers, } from \"./auth/providers/injected-evm-wallet-types\";\nexport { connectBroadcast } from \"./services/broadcast\";\nexport { connectServiceSession } from \"./services/session\";\n"],"names":["_a","ISSUER_SESSION_KIND_KEY","getConfig","this","get","require$$0","require$$1","exports","hasDOM","getActiveSessionManager","decodeJwt","Buffer","transactionHasSignature","WebSessionManager","ReactNativeSessionManager","login","logout","revokeSession","onSessionCleared","deriveUserIdentityFromIdToken","configInit","init","authLogin","authLogout","reconnectWithNewAuth","isSSR","React","sdkLogin","sdkLogout","subscribe","getFreshAuthToken","getSessionGeneration","list","getRun","getEvents","submitRequest","getRequest","decideGateRequest","mediaRequest","mediaDownloadUrlRequest","getIdTokenCore","SessionManager","genAuthNonce","genSolanaMessage","createSessionWithSignature","initClient"],"mappings":"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CA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,CAAC;AACL,IAAI;AACJ;;AC5WA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAwB,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE;AAChE,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AACpC,QAAQ,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC;AAClC,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM;AACrC,IAAI,CAAC,CAAC;AACN;;AC/BA;AACA;AACA;AACA;AACA;AACA;AAEO,MAAM,sBAAsB,GAAG,0BAA0B;AACzD,MAAMC,yBAAuB,GAAG,6BAA6B;AAC7D,SAAS,mBAAmB,GAAG;AACtC,IAAI,IAAI;AACR,QAAQ,OAAO,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC;AACpE,IAAI;AACJ,IAAI,OAAO,EAAE,EAAE;AACf,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACO,SAAS,mBAAmB,CAAC,MAAM,EAAE;AAC5C,IAAI,IAAI;AACR,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,W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","x_google_ignoreList":[7,8,9,10,11,12,13,25,26,27,28,29,30]}