@bounded-sh/client 0.0.118 → 0.0.120-expo.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/auth/oidc-auth.d.ts +2 -1
  2. package/dist/auth/providers/email-auth-provider.d.ts +2 -1
  3. package/dist/auth/providers/offchain-auth-provider.d.ts +2 -1
  4. package/dist/auth/turnkey-signer-bridge.d.ts +16 -0
  5. package/dist/auth/turnkey-wallet-widget.d.ts +4 -0
  6. package/dist/{email-auth-provider-C-qQ46kD.js → email-auth-provider-Bb_0mHJ_.js} +7 -2
  7. package/dist/email-auth-provider-Bb_0mHJ_.js.map +1 -0
  8. package/dist/{email-auth-provider-BYiK3ZCv.js → email-auth-provider-IsiArtx0.js} +7 -2
  9. package/dist/email-auth-provider-IsiArtx0.js.map +1 -0
  10. package/dist/{email-auth-provider-B9cZ-puM.mjs → email-auth-provider-TA2AbU5Y.mjs} +7 -2
  11. package/dist/email-auth-provider-TA2AbU5Y.mjs.map +1 -0
  12. package/dist/{email-auth-provider-DFHalX9c.mjs → email-auth-provider-ao5ce_SN.mjs} +7 -2
  13. package/dist/email-auth-provider-ao5ce_SN.mjs.map +1 -0
  14. package/dist/{guest-auth-provider-g5-T58yA.js → guest-auth-provider-CJUbifdu.js} +2 -2
  15. package/dist/{guest-auth-provider-g5-T58yA.js.map → guest-auth-provider-CJUbifdu.js.map} +1 -1
  16. package/dist/{guest-auth-provider-D1q3C5uC.js → guest-auth-provider-DTEwf7qP.js} +2 -2
  17. package/dist/{guest-auth-provider-D1q3C5uC.js.map → guest-auth-provider-DTEwf7qP.js.map} +1 -1
  18. package/dist/{guest-auth-provider-i8-RL0js.mjs → guest-auth-provider-Dw-bF10B.mjs} +2 -2
  19. package/dist/{guest-auth-provider-BRq3JB0_.mjs.map → guest-auth-provider-Dw-bF10B.mjs.map} +1 -1
  20. package/dist/{guest-auth-provider-BRq3JB0_.mjs → guest-auth-provider-DxQG3JvU.mjs} +2 -2
  21. package/dist/{guest-auth-provider-i8-RL0js.mjs.map → guest-auth-provider-DxQG3JvU.mjs.map} +1 -1
  22. package/dist/{index-xNGb1ROp.mjs → index-BdzGX8fS.mjs} +113 -23
  23. package/dist/index-BdzGX8fS.mjs.map +1 -0
  24. package/dist/{index-eMCWYiRe.js → index-KUBcQdTX.js} +113 -22
  25. package/dist/index-KUBcQdTX.js.map +1 -0
  26. package/dist/index.d.ts +2 -1
  27. package/dist/index.js +5 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/index.mjs +2 -2
  30. package/dist/{index.native-ByI3rRu4.js → index.native-CZSRvIAb.js} +130 -23
  31. package/dist/index.native-CZSRvIAb.js.map +1 -0
  32. package/dist/{index.native-YmmnwqEw.mjs → index.native-N5zxPEYK.mjs} +130 -24
  33. package/dist/index.native-N5zxPEYK.mjs.map +1 -0
  34. package/dist/index.native.js +1 -1
  35. package/dist/index.native.mjs +1 -1
  36. package/dist/{injected-evm-wallet-provider-BIYAL_NZ.js → injected-evm-wallet-provider--XJFh-7d.js} +2 -2
  37. package/dist/{injected-evm-wallet-provider-BIYAL_NZ.js.map → injected-evm-wallet-provider--XJFh-7d.js.map} +1 -1
  38. package/dist/{injected-evm-wallet-provider-BMjQaUiB.js → injected-evm-wallet-provider-4T_-2UQI.js} +2 -2
  39. package/dist/{injected-evm-wallet-provider-BMjQaUiB.js.map → injected-evm-wallet-provider-4T_-2UQI.js.map} +1 -1
  40. package/dist/{injected-evm-wallet-provider--x3yWNps.mjs → injected-evm-wallet-provider-BlSFIzEA.mjs} +2 -2
  41. package/dist/{injected-evm-wallet-provider--x3yWNps.mjs.map → injected-evm-wallet-provider-BlSFIzEA.mjs.map} +1 -1
  42. package/dist/{injected-evm-wallet-provider-BoLGCVqD.mjs → injected-evm-wallet-provider-CtPPhtMh.mjs} +2 -2
  43. package/dist/{injected-evm-wallet-provider-BoLGCVqD.mjs.map → injected-evm-wallet-provider-CtPPhtMh.mjs.map} +1 -1
  44. package/dist/{injected-wallet-provider-DuWTw-fM.mjs → injected-wallet-provider-Bnsfazum.mjs} +2 -2
  45. package/dist/{injected-wallet-provider-DuWTw-fM.mjs.map → injected-wallet-provider-Bnsfazum.mjs.map} +1 -1
  46. package/dist/{injected-wallet-provider-D3fVFadN.js → injected-wallet-provider-CJ0v5Sgn.js} +2 -2
  47. package/dist/{injected-wallet-provider-D3fVFadN.js.map → injected-wallet-provider-CJ0v5Sgn.js.map} +1 -1
  48. package/dist/{injected-wallet-provider-zXw__lyf.js → injected-wallet-provider-Ckljhcbu.js} +2 -2
  49. package/dist/{injected-wallet-provider-zXw__lyf.js.map → injected-wallet-provider-Ckljhcbu.js.map} +1 -1
  50. package/dist/{injected-wallet-provider-DSOjJP3u.mjs → injected-wallet-provider-yyJfuVgv.mjs} +2 -2
  51. package/dist/{injected-wallet-provider-DSOjJP3u.mjs.map → injected-wallet-provider-yyJfuVgv.mjs.map} +1 -1
  52. package/package.json +2 -2
  53. package/dist/email-auth-provider-B9cZ-puM.mjs.map +0 -1
  54. package/dist/email-auth-provider-BYiK3ZCv.js.map +0 -1
  55. package/dist/email-auth-provider-C-qQ46kD.js.map +0 -1
  56. package/dist/email-auth-provider-DFHalX9c.mjs.map +0 -1
  57. package/dist/index-eMCWYiRe.js.map +0 -1
  58. package/dist/index-xNGb1ROp.mjs.map +0 -1
  59. package/dist/index.native-ByI3rRu4.js.map +0 -1
  60. package/dist/index.native-YmmnwqEw.mjs.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bounded-sh/client",
3
- "version": "0.0.118",
3
+ "version": "0.0.120-expo.0",
4
4
  "description": "Web and React Native client SDK for Bounded, the full-stack app builder and runtime for AI-built apps: hosted auth, policy-enforced data, files and search, functions, realtime subscriptions, and atomic writes.",
5
5
  "homepage": "https://bounded.sh/docs/sdk",
6
6
  "main": "./dist/index.js",
@@ -115,7 +115,7 @@
115
115
  "vite": "7.3.5"
116
116
  },
117
117
  "dependencies": {
118
- "@bounded-sh/core": "0.0.118",
118
+ "@bounded-sh/core": "0.0.120-expo.0",
119
119
  "@coral-xyz/anchor": "0.31.1",
120
120
  "@noble/curves": "^1.9.7",
121
121
  "@solana/kit": "8.2.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-auth-provider-B9cZ-puM.mjs","sources":["../.rollup-tmp/auth/providers/email-auth-provider.js"],"sourcesContent":["import { getActiveSessionManager } from '@bounded-sh/core';\nimport { setCurrentUser } from '../../global';\nimport { getPlatform } from '../../platform';\nimport { hasTurnkeyWallet, signAndSubmitTransactionWithTurnkey, signMessageWithTurnkey, signTransactionWithTurnkey, signTransactionV1WithTurnkey, } from '../turnkey-signer-bridge';\n// Web uses localStorage (WebSessionManager); React Native uses the configured\n// ReactNativeSessionManager. getActiveSessionManager() picks the right one by\n// whether the RN manager was configured (NOT `typeof window`, which is truthy on\n// RN too and would wrongly route to localStorage). Same selector the core\n// request path uses, so hosted Bounded Auth sessions persist + authenticate on BOTH.\nconst sessionManager = getActiveSessionManager;\nconst 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// ---------------------------------------------------------------------------\n// token / session helpers\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 // getPlatform().atob is RN-safe (global atob is undefined on Hermes/JSC).\n return JSON.parse(getPlatform().atob(b64));\n }\n catch (_a) {\n return {};\n }\n}\nfunction userFromIdToken(idToken, fallbackEmail) {\n const c = decodeJwt(idToken);\n const id = c['custom:userId'] || c.sub || c['custom:walletAddress'] || '';\n const email = (c.email || fallbackEmail || null);\n return {\n id,\n address: (c['custom:walletProvider'] === 'turnkey' && c['custom:walletAddress'] || null),\n evmAddress: null,\n email,\n provider: emailProviderSingleton,\n };\n}\n// ---------------------------------------------------------------------------\n// provider\n// ---------------------------------------------------------------------------\nexport class EmailAuthProvider {\n async login() {\n throw new Error('login() no longer opens inline email OTP. Use loginWithRedirect({ redirectUri }) ' +\n 'or loginWithPopup({ redirectUri }) for hosted Bounded Auth.');\n }\n async restoreSession(beforeCommit) {\n const sm = sessionManager();\n const session = await sm.getSession();\n beforeCommit === null || beforeCommit === void 0 ? void 0 : beforeCommit();\n if (!session)\n return null;\n const idToken = sm.getIdToken();\n if (!idToken)\n return null;\n const user = userFromIdToken(idToken);\n setCurrentUser(user);\n return user;\n }\n async logout() {\n await sessionManager().clearSession();\n setCurrentUser(null);\n }\n async signMessage(message) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signMessageWithTurnkey(message);\n }\n async signTransaction(transaction) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signTransactionWithTurnkey(transaction);\n }\n async signTransactionV1(transaction) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signTransactionV1WithTurnkey(transaction);\n }\n /** The hosted Turnkey signer decodes SIMD-0385 v1 messages, so v1 is advertised alongside legacy and v0. */\n supportedTransactionVersions() {\n return hasTurnkeyWallet() ? ['legacy', 0, 1] : ['legacy', 0];\n }\n async signAndSubmitTransaction(transaction, feePayer) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signAndSubmitTransactionWithTurnkey(transaction, feePayer);\n }\n async getNativeMethods() { return {}; }\n}\nconst emailProviderSingleton = new EmailAuthProvider();\nexport { emailProviderSingleton };\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-auth-provider-BYiK3ZCv.js","sources":["../.rollup-tmp/auth/providers/email-auth-provider.js"],"sourcesContent":["import { getActiveSessionManager } from '@bounded-sh/core';\nimport { setCurrentUser } from '../../global';\nimport { getPlatform } from '../../platform';\nimport { hasTurnkeyWallet, signAndSubmitTransactionWithTurnkey, signMessageWithTurnkey, signTransactionWithTurnkey, signTransactionV1WithTurnkey, } from '../turnkey-signer-bridge';\n// Web uses localStorage (WebSessionManager); React Native uses the configured\n// ReactNativeSessionManager. getActiveSessionManager() picks the right one by\n// whether the RN manager was configured (NOT `typeof window`, which is truthy on\n// RN too and would wrongly route to localStorage). Same selector the core\n// request path uses, so hosted Bounded Auth sessions persist + authenticate on BOTH.\nconst sessionManager = getActiveSessionManager;\nconst 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// ---------------------------------------------------------------------------\n// token / session helpers\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 // getPlatform().atob is RN-safe (global atob is undefined on Hermes/JSC).\n return JSON.parse(getPlatform().atob(b64));\n }\n catch (_a) {\n return {};\n }\n}\nfunction userFromIdToken(idToken, fallbackEmail) {\n const c = decodeJwt(idToken);\n const id = c['custom:userId'] || c.sub || c['custom:walletAddress'] || '';\n const email = (c.email || fallbackEmail || null);\n return {\n id,\n address: (c['custom:walletProvider'] === 'turnkey' && c['custom:walletAddress'] || null),\n evmAddress: null,\n email,\n provider: emailProviderSingleton,\n };\n}\n// ---------------------------------------------------------------------------\n// provider\n// ---------------------------------------------------------------------------\nexport class EmailAuthProvider {\n async login() {\n throw new Error('login() no longer opens inline email OTP. Use loginWithRedirect({ redirectUri }) ' +\n 'or loginWithPopup({ redirectUri }) for hosted Bounded Auth.');\n }\n async restoreSession(beforeCommit) {\n const sm = sessionManager();\n const session = await sm.getSession();\n beforeCommit === null || beforeCommit === void 0 ? void 0 : beforeCommit();\n if (!session)\n return null;\n const idToken = sm.getIdToken();\n if (!idToken)\n return null;\n const user = userFromIdToken(idToken);\n setCurrentUser(user);\n return user;\n }\n async logout() {\n await sessionManager().clearSession();\n setCurrentUser(null);\n }\n async signMessage(message) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signMessageWithTurnkey(message);\n }\n async signTransaction(transaction) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signTransactionWithTurnkey(transaction);\n }\n async signTransactionV1(transaction) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signTransactionV1WithTurnkey(transaction);\n }\n /** The hosted Turnkey signer decodes SIMD-0385 v1 messages, so v1 is advertised alongside legacy and v0. */\n supportedTransactionVersions() {\n return hasTurnkeyWallet() ? ['legacy', 0, 1] : ['legacy', 0];\n }\n async signAndSubmitTransaction(transaction, feePayer) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signAndSubmitTransactionWithTurnkey(transaction, feePayer);\n }\n async getNativeMethods() { return {}; }\n}\nconst emailProviderSingleton = new EmailAuthProvider();\nexport { emailProviderSingleton };\n"],"names":["getActiveSessionManager","getPlatform","setCurrentUser","hasTurnkeyWallet","signMessageWithTurnkey","signTransactionWithTurnkey","signTransactionV1WithTurnkey","signAndSubmitTransactionWithTurnkey"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-auth-provider-C-qQ46kD.js","sources":["../.rollup-tmp/auth/providers/email-auth-provider.js"],"sourcesContent":["import { getActiveSessionManager } from '@bounded-sh/core';\nimport { setCurrentUser } from '../../global';\nimport { getPlatform } from '../../platform';\nimport { hasTurnkeyWallet, signAndSubmitTransactionWithTurnkey, signMessageWithTurnkey, signTransactionWithTurnkey, signTransactionV1WithTurnkey, } from '../turnkey-signer-bridge';\n// Web uses localStorage (WebSessionManager); React Native uses the configured\n// ReactNativeSessionManager. getActiveSessionManager() picks the right one by\n// whether the RN manager was configured (NOT `typeof window`, which is truthy on\n// RN too and would wrongly route to localStorage). Same selector the core\n// request path uses, so hosted Bounded Auth sessions persist + authenticate on BOTH.\nconst sessionManager = getActiveSessionManager;\nconst 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// ---------------------------------------------------------------------------\n// token / session helpers\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 // getPlatform().atob is RN-safe (global atob is undefined on Hermes/JSC).\n return JSON.parse(getPlatform().atob(b64));\n }\n catch (_a) {\n return {};\n }\n}\nfunction userFromIdToken(idToken, fallbackEmail) {\n const c = decodeJwt(idToken);\n const id = c['custom:userId'] || c.sub || c['custom:walletAddress'] || '';\n const email = (c.email || fallbackEmail || null);\n return {\n id,\n address: (c['custom:walletProvider'] === 'turnkey' && c['custom:walletAddress'] || null),\n evmAddress: null,\n email,\n provider: emailProviderSingleton,\n };\n}\n// ---------------------------------------------------------------------------\n// provider\n// ---------------------------------------------------------------------------\nexport class EmailAuthProvider {\n async login() {\n throw new Error('login() no longer opens inline email OTP. Use loginWithRedirect({ redirectUri }) ' +\n 'or loginWithPopup({ redirectUri }) for hosted Bounded Auth.');\n }\n async restoreSession(beforeCommit) {\n const sm = sessionManager();\n const session = await sm.getSession();\n beforeCommit === null || beforeCommit === void 0 ? void 0 : beforeCommit();\n if (!session)\n return null;\n const idToken = sm.getIdToken();\n if (!idToken)\n return null;\n const user = userFromIdToken(idToken);\n setCurrentUser(user);\n return user;\n }\n async logout() {\n await sessionManager().clearSession();\n setCurrentUser(null);\n }\n async signMessage(message) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signMessageWithTurnkey(message);\n }\n async signTransaction(transaction) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signTransactionWithTurnkey(transaction);\n }\n async signTransactionV1(transaction) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signTransactionV1WithTurnkey(transaction);\n }\n /** The hosted Turnkey signer decodes SIMD-0385 v1 messages, so v1 is advertised alongside legacy and v0. */\n supportedTransactionVersions() {\n return hasTurnkeyWallet() ? ['legacy', 0, 1] : ['legacy', 0];\n }\n async signAndSubmitTransaction(transaction, feePayer) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signAndSubmitTransactionWithTurnkey(transaction, feePayer);\n }\n async getNativeMethods() { return {}; }\n}\nconst emailProviderSingleton = new EmailAuthProvider();\nexport { emailProviderSingleton };\n"],"names":["getActiveSessionManager","getPlatform","setCurrentUser","hasTurnkeyWallet","signMessageWithTurnkey","signTransactionWithTurnkey","signTransactionV1WithTurnkey","signAndSubmitTransactionWithTurnkey"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-auth-provider-DFHalX9c.mjs","sources":["../.rollup-tmp/auth/providers/email-auth-provider.js"],"sourcesContent":["import { getActiveSessionManager } from '@bounded-sh/core';\nimport { setCurrentUser } from '../../global';\nimport { getPlatform } from '../../platform';\nimport { hasTurnkeyWallet, signAndSubmitTransactionWithTurnkey, signMessageWithTurnkey, signTransactionWithTurnkey, signTransactionV1WithTurnkey, } from '../turnkey-signer-bridge';\n// Web uses localStorage (WebSessionManager); React Native uses the configured\n// ReactNativeSessionManager. getActiveSessionManager() picks the right one by\n// whether the RN manager was configured (NOT `typeof window`, which is truthy on\n// RN too and would wrongly route to localStorage). Same selector the core\n// request path uses, so hosted Bounded Auth sessions persist + authenticate on BOTH.\nconst sessionManager = getActiveSessionManager;\nconst 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// ---------------------------------------------------------------------------\n// token / session helpers\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 // getPlatform().atob is RN-safe (global atob is undefined on Hermes/JSC).\n return JSON.parse(getPlatform().atob(b64));\n }\n catch (_a) {\n return {};\n }\n}\nfunction userFromIdToken(idToken, fallbackEmail) {\n const c = decodeJwt(idToken);\n const id = c['custom:userId'] || c.sub || c['custom:walletAddress'] || '';\n const email = (c.email || fallbackEmail || null);\n return {\n id,\n address: (c['custom:walletProvider'] === 'turnkey' && c['custom:walletAddress'] || null),\n evmAddress: null,\n email,\n provider: emailProviderSingleton,\n };\n}\n// ---------------------------------------------------------------------------\n// provider\n// ---------------------------------------------------------------------------\nexport class EmailAuthProvider {\n async login() {\n throw new Error('login() no longer opens inline email OTP. Use loginWithRedirect({ redirectUri }) ' +\n 'or loginWithPopup({ redirectUri }) for hosted Bounded Auth.');\n }\n async restoreSession(beforeCommit) {\n const sm = sessionManager();\n const session = await sm.getSession();\n beforeCommit === null || beforeCommit === void 0 ? void 0 : beforeCommit();\n if (!session)\n return null;\n const idToken = sm.getIdToken();\n if (!idToken)\n return null;\n const user = userFromIdToken(idToken);\n setCurrentUser(user);\n return user;\n }\n async logout() {\n await sessionManager().clearSession();\n setCurrentUser(null);\n }\n async signMessage(message) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signMessageWithTurnkey(message);\n }\n async signTransaction(transaction) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signTransactionWithTurnkey(transaction);\n }\n async signTransactionV1(transaction) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signTransactionV1WithTurnkey(transaction);\n }\n /** The hosted Turnkey signer decodes SIMD-0385 v1 messages, so v1 is advertised alongside legacy and v0. */\n supportedTransactionVersions() {\n return hasTurnkeyWallet() ? ['legacy', 0, 1] : ['legacy', 0];\n }\n async signAndSubmitTransaction(transaction, feePayer) {\n if (!hasTurnkeyWallet())\n throw new Error(NO_WALLET);\n return signAndSubmitTransactionWithTurnkey(transaction, feePayer);\n }\n async getNativeMethods() { return {}; }\n}\nconst emailProviderSingleton = new EmailAuthProvider();\nexport { emailProviderSingleton };\n"],"names":[],"mappings":"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"}