@multiplatform.one/web3 7.24.0 → 7.25.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 (260) hide show
  1. package/README.md +33 -0
  2. package/dist/cjs/bridge/AuthBridge.cjs +124 -0
  3. package/dist/cjs/bridge/AuthBridge.native.js +186 -0
  4. package/dist/cjs/bridge/AuthBridge.native.js.map +1 -0
  5. package/dist/cjs/bridge/BridgeClient.cjs +12 -9
  6. package/dist/cjs/bridge/BridgeClient.native.js +17 -12
  7. package/dist/cjs/bridge/BridgeClient.native.js.map +1 -1
  8. package/dist/cjs/bridge/BridgeHost.cjs +11 -3
  9. package/dist/cjs/bridge/BridgeHost.native.js +11 -3
  10. package/dist/cjs/bridge/BridgeHost.native.js.map +1 -1
  11. package/dist/cjs/bridge/GpgBridge.cjs +61 -0
  12. package/dist/cjs/bridge/GpgBridge.native.js +111 -0
  13. package/dist/cjs/bridge/GpgBridge.native.js.map +1 -0
  14. package/dist/cjs/bridge/SuiBridge.cjs +51 -0
  15. package/dist/cjs/bridge/SuiBridge.native.js +99 -0
  16. package/dist/cjs/bridge/SuiBridge.native.js.map +1 -0
  17. package/dist/cjs/bridge/authTypes.cjs +28 -0
  18. package/dist/cjs/bridge/authTypes.native.js +31 -0
  19. package/dist/cjs/bridge/authTypes.native.js.map +1 -0
  20. package/dist/cjs/bridge/core.cjs +65 -0
  21. package/dist/cjs/bridge/core.native.js +68 -0
  22. package/dist/cjs/bridge/core.native.js.map +1 -0
  23. package/dist/cjs/bridge/hosting.cjs +91 -0
  24. package/dist/cjs/bridge/hosting.native.js +117 -0
  25. package/dist/cjs/bridge/hosting.native.js.map +1 -0
  26. package/dist/cjs/bridge/index.cjs +3 -17
  27. package/dist/cjs/bridge/index.native.js +2 -16
  28. package/dist/cjs/bridge/index.native.js.map +1 -1
  29. package/dist/cjs/bridge/nativeHost.cjs +91 -0
  30. package/dist/cjs/bridge/nativeHost.native.js +118 -0
  31. package/dist/cjs/bridge/nativeHost.native.js.map +1 -0
  32. package/dist/cjs/bridge/protocol.cjs +30 -1
  33. package/dist/cjs/bridge/protocol.native.js +147 -1
  34. package/dist/cjs/bridge/protocol.native.js.map +1 -1
  35. package/dist/cjs/index.cjs +1 -0
  36. package/dist/cjs/index.native.js +1 -0
  37. package/dist/cjs/index.native.js.map +1 -1
  38. package/dist/cjs/providers/WalletProvider.cjs +2 -0
  39. package/dist/cjs/providers/WalletProvider.native.js +123 -90
  40. package/dist/cjs/providers/WalletProvider.native.js.map +1 -1
  41. package/dist/cjs/providers/index.cjs +1 -0
  42. package/dist/cjs/providers/index.native.js +1 -0
  43. package/dist/cjs/providers/index.native.js.map +1 -1
  44. package/dist/cjs/providers/native/deepLink.cjs +40 -23
  45. package/dist/cjs/providers/native/deepLink.native.js +43 -25
  46. package/dist/cjs/providers/native/deepLink.native.js.map +1 -1
  47. package/dist/cjs/providers/native/inject.cjs +2 -4
  48. package/dist/cjs/providers/native/inject.native.js +2 -4
  49. package/dist/cjs/providers/native/inject.native.js.map +1 -1
  50. package/dist/cjs/providers/walletBridge.cjs +35 -0
  51. package/dist/cjs/providers/walletBridge.native.js +38 -0
  52. package/dist/cjs/providers/walletBridge.native.js.map +1 -0
  53. package/dist/cjs/providers/walletConfig.native.js.map +1 -1
  54. package/dist/esm/bridge/AuthBridge.mjs +99 -0
  55. package/dist/esm/bridge/AuthBridge.mjs.map +1 -0
  56. package/dist/esm/bridge/AuthBridge.native.js +158 -0
  57. package/dist/esm/bridge/AuthBridge.native.js.map +1 -0
  58. package/dist/esm/bridge/BridgeClient.mjs +13 -10
  59. package/dist/esm/bridge/BridgeClient.mjs.map +1 -1
  60. package/dist/esm/bridge/BridgeClient.native.js +18 -13
  61. package/dist/esm/bridge/BridgeClient.native.js.map +1 -1
  62. package/dist/esm/bridge/BridgeHost.mjs +12 -4
  63. package/dist/esm/bridge/BridgeHost.mjs.map +1 -1
  64. package/dist/esm/bridge/BridgeHost.native.js +12 -4
  65. package/dist/esm/bridge/BridgeHost.native.js.map +1 -1
  66. package/dist/esm/bridge/GpgBridge.mjs +36 -0
  67. package/dist/esm/bridge/GpgBridge.mjs.map +1 -0
  68. package/dist/esm/bridge/GpgBridge.native.js +83 -0
  69. package/dist/esm/bridge/GpgBridge.native.js.map +1 -0
  70. package/dist/esm/bridge/SuiBridge.mjs +26 -0
  71. package/dist/esm/bridge/SuiBridge.mjs.map +1 -0
  72. package/dist/esm/bridge/SuiBridge.native.js +71 -0
  73. package/dist/esm/bridge/SuiBridge.native.js.map +1 -0
  74. package/dist/esm/bridge/authTypes.mjs +3 -0
  75. package/dist/esm/bridge/authTypes.mjs.map +1 -0
  76. package/dist/esm/bridge/authTypes.native.js +3 -0
  77. package/dist/esm/bridge/authTypes.native.js.map +1 -0
  78. package/dist/esm/bridge/core.mjs +17 -0
  79. package/dist/esm/bridge/core.mjs.map +1 -0
  80. package/dist/esm/bridge/core.native.js +17 -0
  81. package/dist/esm/bridge/core.native.js.map +1 -0
  82. package/dist/esm/bridge/hosting.mjs +62 -0
  83. package/dist/esm/bridge/hosting.mjs.map +1 -0
  84. package/dist/esm/bridge/hosting.native.js +85 -0
  85. package/dist/esm/bridge/hosting.native.js.map +1 -0
  86. package/dist/esm/bridge/index.mjs +2 -9
  87. package/dist/esm/bridge/index.mjs.map +1 -1
  88. package/dist/esm/bridge/index.native.js +2 -9
  89. package/dist/esm/bridge/index.native.js.map +1 -1
  90. package/dist/esm/bridge/nativeHost.mjs +65 -0
  91. package/dist/esm/bridge/nativeHost.mjs.map +1 -0
  92. package/dist/esm/bridge/nativeHost.native.js +89 -0
  93. package/dist/esm/bridge/nativeHost.native.js.map +1 -0
  94. package/dist/esm/bridge/protocol.mjs +28 -2
  95. package/dist/esm/bridge/protocol.mjs.map +1 -1
  96. package/dist/esm/bridge/protocol.native.js +145 -2
  97. package/dist/esm/bridge/protocol.native.js.map +1 -1
  98. package/dist/esm/index.mjs +2 -2
  99. package/dist/esm/index.mjs.map +1 -1
  100. package/dist/esm/index.native.js +2 -2
  101. package/dist/esm/index.native.js.map +1 -1
  102. package/dist/esm/providers/WalletProvider.mjs +2 -1
  103. package/dist/esm/providers/WalletProvider.mjs.map +1 -1
  104. package/dist/esm/providers/WalletProvider.native.js +125 -93
  105. package/dist/esm/providers/WalletProvider.native.js.map +1 -1
  106. package/dist/esm/providers/index.mjs +2 -2
  107. package/dist/esm/providers/index.mjs.map +1 -1
  108. package/dist/esm/providers/index.native.js +2 -2
  109. package/dist/esm/providers/index.native.js.map +1 -1
  110. package/dist/esm/providers/native/deepLink.mjs +36 -24
  111. package/dist/esm/providers/native/deepLink.mjs.map +1 -1
  112. package/dist/esm/providers/native/deepLink.native.js +39 -26
  113. package/dist/esm/providers/native/deepLink.native.js.map +1 -1
  114. package/dist/esm/providers/native/inject.mjs +1 -3
  115. package/dist/esm/providers/native/inject.mjs.map +1 -1
  116. package/dist/esm/providers/native/inject.native.js +1 -3
  117. package/dist/esm/providers/native/inject.native.js.map +1 -1
  118. package/dist/esm/providers/walletBridge.mjs +9 -0
  119. package/dist/esm/providers/walletBridge.mjs.map +1 -0
  120. package/dist/esm/providers/walletBridge.native.js +9 -0
  121. package/dist/esm/providers/walletBridge.native.js.map +1 -0
  122. package/dist/esm/providers/walletConfig.mjs.map +1 -1
  123. package/dist/esm/providers/walletConfig.native.js.map +1 -1
  124. package/dist/jsx/bridge/AuthBridge.mjs +99 -0
  125. package/dist/jsx/bridge/AuthBridge.mjs.map +1 -0
  126. package/dist/jsx/bridge/AuthBridge.native.js +186 -0
  127. package/dist/jsx/bridge/AuthBridge.native.js.map +1 -0
  128. package/dist/jsx/bridge/BridgeClient.mjs +13 -10
  129. package/dist/jsx/bridge/BridgeClient.mjs.map +1 -1
  130. package/dist/jsx/bridge/BridgeClient.native.js +17 -12
  131. package/dist/jsx/bridge/BridgeClient.native.js.map +1 -1
  132. package/dist/jsx/bridge/BridgeHost.mjs +12 -4
  133. package/dist/jsx/bridge/BridgeHost.mjs.map +1 -1
  134. package/dist/jsx/bridge/BridgeHost.native.js +11 -3
  135. package/dist/jsx/bridge/BridgeHost.native.js.map +1 -1
  136. package/dist/jsx/bridge/GpgBridge.mjs +36 -0
  137. package/dist/jsx/bridge/GpgBridge.mjs.map +1 -0
  138. package/dist/jsx/bridge/GpgBridge.native.js +111 -0
  139. package/dist/jsx/bridge/GpgBridge.native.js.map +1 -0
  140. package/dist/jsx/bridge/SuiBridge.mjs +26 -0
  141. package/dist/jsx/bridge/SuiBridge.mjs.map +1 -0
  142. package/dist/jsx/bridge/SuiBridge.native.js +99 -0
  143. package/dist/jsx/bridge/SuiBridge.native.js.map +1 -0
  144. package/dist/jsx/bridge/authTypes.mjs +3 -0
  145. package/dist/jsx/bridge/authTypes.mjs.map +1 -0
  146. package/dist/jsx/bridge/authTypes.native.js +31 -0
  147. package/dist/jsx/bridge/authTypes.native.js.map +1 -0
  148. package/dist/jsx/bridge/core.mjs +17 -0
  149. package/dist/jsx/bridge/core.mjs.map +1 -0
  150. package/dist/jsx/bridge/core.native.js +68 -0
  151. package/dist/jsx/bridge/core.native.js.map +1 -0
  152. package/dist/jsx/bridge/hosting.mjs +62 -0
  153. package/dist/jsx/bridge/hosting.mjs.map +1 -0
  154. package/dist/jsx/bridge/hosting.native.js +117 -0
  155. package/dist/jsx/bridge/hosting.native.js.map +1 -0
  156. package/dist/jsx/bridge/index.mjs +2 -9
  157. package/dist/jsx/bridge/index.mjs.map +1 -1
  158. package/dist/jsx/bridge/index.native.js +2 -16
  159. package/dist/jsx/bridge/index.native.js.map +1 -1
  160. package/dist/jsx/bridge/nativeHost.mjs +65 -0
  161. package/dist/jsx/bridge/nativeHost.mjs.map +1 -0
  162. package/dist/jsx/bridge/nativeHost.native.js +118 -0
  163. package/dist/jsx/bridge/nativeHost.native.js.map +1 -0
  164. package/dist/jsx/bridge/protocol.mjs +28 -2
  165. package/dist/jsx/bridge/protocol.mjs.map +1 -1
  166. package/dist/jsx/bridge/protocol.native.js +147 -1
  167. package/dist/jsx/bridge/protocol.native.js.map +1 -1
  168. package/dist/jsx/index.js +2 -2
  169. package/dist/jsx/index.js.map +1 -1
  170. package/dist/jsx/index.mjs +2 -2
  171. package/dist/jsx/index.mjs.map +1 -1
  172. package/dist/jsx/index.native.js +1 -0
  173. package/dist/jsx/index.native.js.map +1 -1
  174. package/dist/jsx/providers/WalletProvider.mjs +2 -1
  175. package/dist/jsx/providers/WalletProvider.mjs.map +1 -1
  176. package/dist/jsx/providers/WalletProvider.native.js +123 -90
  177. package/dist/jsx/providers/WalletProvider.native.js.map +1 -1
  178. package/dist/jsx/providers/index.mjs +2 -2
  179. package/dist/jsx/providers/index.mjs.map +1 -1
  180. package/dist/jsx/providers/index.native.js +1 -0
  181. package/dist/jsx/providers/index.native.js.map +1 -1
  182. package/dist/jsx/providers/native/deepLink.mjs +36 -24
  183. package/dist/jsx/providers/native/deepLink.mjs.map +1 -1
  184. package/dist/jsx/providers/native/deepLink.native.js +43 -25
  185. package/dist/jsx/providers/native/deepLink.native.js.map +1 -1
  186. package/dist/jsx/providers/native/inject.mjs +1 -3
  187. package/dist/jsx/providers/native/inject.mjs.map +1 -1
  188. package/dist/jsx/providers/native/inject.native.js +2 -4
  189. package/dist/jsx/providers/native/inject.native.js.map +1 -1
  190. package/dist/jsx/providers/walletBridge.mjs +9 -0
  191. package/dist/jsx/providers/walletBridge.mjs.map +1 -0
  192. package/dist/jsx/providers/walletBridge.native.js +38 -0
  193. package/dist/jsx/providers/walletBridge.native.js.map +1 -0
  194. package/dist/jsx/providers/walletConfig.mjs.map +1 -1
  195. package/dist/jsx/providers/walletConfig.native.js.map +1 -1
  196. package/docs/bridge-protocol.md +485 -0
  197. package/package.json +14 -6
  198. package/src/bridge/AuthBridge.ts +146 -0
  199. package/src/bridge/BridgeClient.spec.ts +12 -0
  200. package/src/bridge/BridgeClient.ts +15 -10
  201. package/src/bridge/BridgeHost.spec.ts +20 -4
  202. package/src/bridge/BridgeHost.ts +16 -5
  203. package/src/bridge/GpgBridge.ts +49 -0
  204. package/src/bridge/SuiBridge.ts +34 -0
  205. package/src/bridge/authTypes.ts +76 -0
  206. package/src/bridge/core.ts +42 -0
  207. package/src/bridge/hosting.spec.ts +98 -0
  208. package/src/bridge/hosting.ts +99 -0
  209. package/src/bridge/index.ts +1 -8
  210. package/src/bridge/nativeHost.spec.ts +165 -0
  211. package/src/bridge/nativeHost.ts +120 -0
  212. package/src/bridge/protocol.spec.ts +24 -1
  213. package/src/bridge/protocol.ts +44 -1
  214. package/src/index.ts +2 -0
  215. package/src/providers/WalletProvider.native.tsx +139 -85
  216. package/src/providers/WalletProvider.tsx +1 -1
  217. package/src/providers/index.ts +2 -0
  218. package/src/providers/native/deepLink.spec.ts +73 -1
  219. package/src/providers/native/deepLink.ts +76 -28
  220. package/src/providers/native/inject.ts +1 -9
  221. package/src/providers/walletBridge.ts +24 -0
  222. package/src/providers/walletConfig.ts +15 -1
  223. package/types/bridge/AuthBridge.d.ts +58 -0
  224. package/types/bridge/AuthBridge.d.ts.map +1 -0
  225. package/types/bridge/BridgeClient.d.ts +3 -1
  226. package/types/bridge/BridgeClient.d.ts.map +1 -1
  227. package/types/bridge/BridgeHost.d.ts +1 -1
  228. package/types/bridge/BridgeHost.d.ts.map +1 -1
  229. package/types/bridge/GpgBridge.d.ts +23 -0
  230. package/types/bridge/GpgBridge.d.ts.map +1 -0
  231. package/types/bridge/SuiBridge.d.ts +18 -0
  232. package/types/bridge/SuiBridge.d.ts.map +1 -0
  233. package/types/bridge/authTypes.d.ts +71 -0
  234. package/types/bridge/authTypes.d.ts.map +1 -0
  235. package/types/bridge/core.d.ts +16 -0
  236. package/types/bridge/core.d.ts.map +1 -0
  237. package/types/bridge/hosting.d.ts +34 -0
  238. package/types/bridge/hosting.d.ts.map +1 -0
  239. package/types/bridge/index.d.ts +1 -8
  240. package/types/bridge/index.d.ts.map +1 -1
  241. package/types/bridge/nativeHost.d.ts +55 -0
  242. package/types/bridge/nativeHost.d.ts.map +1 -0
  243. package/types/bridge/protocol.d.ts +34 -1
  244. package/types/bridge/protocol.d.ts.map +1 -1
  245. package/types/index.d.ts +1 -1
  246. package/types/index.d.ts.map +1 -1
  247. package/types/providers/WalletProvider.d.ts +1 -0
  248. package/types/providers/WalletProvider.d.ts.map +1 -1
  249. package/types/providers/WalletProvider.native.d.ts +2 -1
  250. package/types/providers/WalletProvider.native.d.ts.map +1 -1
  251. package/types/providers/index.d.ts +1 -1
  252. package/types/providers/index.d.ts.map +1 -1
  253. package/types/providers/native/deepLink.d.ts +29 -4
  254. package/types/providers/native/deepLink.d.ts.map +1 -1
  255. package/types/providers/native/inject.d.ts +1 -7
  256. package/types/providers/native/inject.d.ts.map +1 -1
  257. package/types/providers/walletBridge.d.ts +17 -0
  258. package/types/providers/walletBridge.d.ts.map +1 -0
  259. package/types/providers/walletConfig.d.ts +18 -1
  260. package/types/providers/walletConfig.d.ts.map +1 -1
@@ -0,0 +1,58 @@
1
+ import type { AuthBrowserLogin, AuthKeycloakConfig, AuthOnboardingConfig, AuthSignInParams, AuthSignInResult, AuthTokens, AuthTokensChanged } from "./authTypes";
2
+ import type { BridgeClient, RequestOptions } from "./BridgeClient";
3
+ export interface AuthBridgeOptions {
4
+ /** Opens a URL in the system browser: `Linking.openURL` in React Native. */
5
+ openUrl(url: string): unknown;
6
+ /** Used when a call leaves `keycloak` or `onboarding` out. */
7
+ defaults?: {
8
+ keycloak?: AuthKeycloakConfig;
9
+ onboarding?: AuthOnboardingConfig;
10
+ };
11
+ /** Sign-in waits on the user in a wallet app. Default 10 minutes. */
12
+ signInTimeoutMs?: number;
13
+ }
14
+ export type AuthSignInOutcome = AuthSignInResult & {
15
+ /** Set on `profile-incomplete`: whether this call opened the onboarding page. */
16
+ onboardingOpened?: boolean;
17
+ };
18
+ export interface AuthSignInOptions extends RequestOptions {
19
+ /** Open Keycloak's onboarding in the system browser on `profile-incomplete`. Default true. */
20
+ openOnboarding?: boolean;
21
+ }
22
+ /**
23
+ * Native side of the `auth` namespace. Sign-in runs in the hosted WebView
24
+ * page, so the Keycloak nonce cookie and the message domain belong to that
25
+ * page's host; native gets the tokens back.
26
+ *
27
+ * A direct grant cannot run Keycloak's required actions (a new user's profile
28
+ * form). The page then answers `profile-incomplete` with Keycloak's browser
29
+ * login, and `signIn` opens it in the system browser, once per call and never
30
+ * in a loop. After the user finishes there, the next `signIn` succeeds.
31
+ */
32
+ export declare class AuthBridge {
33
+ private readonly bridge;
34
+ private readonly options;
35
+ private pending;
36
+ constructor(bridge: BridgeClient, options: AuthBridgeOptions);
37
+ signIn(params?: Partial<AuthSignInParams>, options?: AuthSignInOptions): Promise<AuthSignInOutcome>;
38
+ refresh(params?: {
39
+ keycloak?: AuthKeycloakConfig;
40
+ refreshToken?: string;
41
+ }): Promise<AuthTokens>;
42
+ logout(params?: {
43
+ keycloak?: AuthKeycloakConfig;
44
+ refreshToken?: string;
45
+ }): Promise<void>;
46
+ /** The browser login the last `profile-incomplete` answer carried, until a sign-in succeeds. */
47
+ get pendingOnboarding(): AuthBrowserLogin | null;
48
+ /**
49
+ * True when `url` is Keycloak sending the browser back from that onboarding
50
+ * (its `state` matches) with no `error`. A matching return, cancelled or
51
+ * not, ends the pending onboarding, so the same return never counts twice.
52
+ */
53
+ isOnboardingReturn(url: string): boolean;
54
+ /** `tokensChanged` fires whenever the page's tokens for a realm and client change. */
55
+ onTokensChanged(handler: (change: AuthTokensChanged) => void): () => void;
56
+ private keycloak;
57
+ }
58
+ //# sourceMappingURL=AuthBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthBridge.d.ts","sourceRoot":"","sources":["../../src/bridge/AuthBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAInE,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,kBAAkB,CAAC;QAAC,UAAU,CAAC,EAAE,oBAAoB,CAAA;KAAE,CAAC;IAChF,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG;IACjD,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,8FAA8F;IAC9F,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,qBAAa,UAAU;IAInB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ1B,OAAO,CAAC,OAAO,CAAiC;gBAG7B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,iBAAiB;IAGvC,MAAM,CACV,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM,EACtC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,iBAAiB,CAAC;IAgCvB,OAAO,CACX,MAAM,GAAE;QAAE,QAAQ,CAAC,EAAE,kBAAkB,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAO,GACpE,OAAO,CAAC,UAAU,CAAC;IAQhB,MAAM,CACV,MAAM,GAAE;QAAE,QAAQ,CAAC,EAAE,kBAAkB,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAO,GACpE,OAAO,CAAC,IAAI,CAAC;IAOhB,gGAAgG;IAChG,IAAI,iBAAiB,IAAI,gBAAgB,GAAG,IAAI,CAE/C;IAED;;;;OAIG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQxC,sFAAsF;IACtF,eAAe,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI;IAMzE,OAAO,CAAC,QAAQ;CAUjB"}
@@ -20,7 +20,9 @@ export declare class BridgeClient {
20
20
  request(ns: Namespace, method: string, params?: unknown, options?: RequestOptions): Promise<unknown>;
21
21
  /** Subscribe to webview->native push events. Returns an unsubscribe fn. */
22
22
  on(handler: EventHandler): () => void;
23
- /** Reject all in-flight requests — call on WebView reload/crash. */
23
+ /** Fail every request in flight and keep the client usable: the page they went to is gone. */
24
+ rejectPending(reason: Error): void;
25
+ /** Reject all in-flight requests and stop listening. */
24
26
  dispose(): void;
25
27
  private settle;
26
28
  private readonly onMessage;
@@ -1 +1 @@
1
- {"version":3,"file":"BridgeClient.d.ts","sourceRoot":"","sources":["../../src/bridge/BridgeClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC7B,oGAAoG;IACpG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AAUpF,qBAAa,YAAY;IAOrB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;IACrD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAS;gBAGN,SAAS,EAAE,SAAS,EACpB,IAAI,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;IAKpD,OAAO,CACL,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,OAAO,EAChB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,OAAO,CAAC;IA6BnB,2EAA2E;IAC3E,EAAE,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,IAAI;IAOrC,oEAAoE;IACpE,OAAO,IAAI,IAAI;IAWf,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,QAAQ,CAAC,SAAS,CAiBxB;CACH"}
1
+ {"version":3,"file":"BridgeClient.d.ts","sourceRoot":"","sources":["../../src/bridge/BridgeClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC7B,oGAAoG;IACpG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AAUpF,qBAAa,YAAY;IAOrB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;IACrD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAS;gBAGN,SAAS,EAAE,SAAS,EACpB,IAAI,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;IAKpD,OAAO,CACL,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,OAAO,EAChB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,OAAO,CAAC;IA6BnB,2EAA2E;IAC3E,EAAE,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,IAAI;IAOrC,8FAA8F;IAC9F,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI;IASlC,wDAAwD;IACxD,OAAO,IAAI,IAAI;IAOf,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,QAAQ,CAAC,SAAS,CAiBxB;CACH"}
@@ -20,7 +20,7 @@ export declare class BridgeHost {
20
20
  register(ns: Namespace, handler: RequestHandler): void;
21
21
  /** Push a webview->native event (no response expected). */
22
22
  emit(ns: Namespace, method: string, params?: unknown): void;
23
- /** Tell native the host is initialized. */
23
+ /** Tell native the host is initialized, which protocol it speaks and what it serves. */
24
24
  ready(): void;
25
25
  dispose(): void;
26
26
  private readonly onMessage;
@@ -1 +1 @@
1
- {"version":3,"file":"BridgeHost.d.ts","sourceRoot":"","sources":["../../src/bridge/BridgeHost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyD,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AACnG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAE7F;;;;GAIG;AACH,qBAAa,UAAU;IAIT,OAAO,CAAC,QAAQ,CAAC,SAAS;IAHtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;IACjE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;gBAEZ,SAAS,EAAE,SAAS;IAIjD,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAItD,2DAA2D;IAC3D,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3D,2CAA2C;IAC3C,KAAK,IAAI,IAAI;IAIb,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,QAAQ,CAAC,SAAS,CAaxB;IAEF,OAAO,CAAC,KAAK;CAGd"}
1
+ {"version":3,"file":"BridgeHost.d.ts","sourceRoot":"","sources":["../../src/bridge/BridgeHost.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAE7F;;;;GAIG;AACH,qBAAa,UAAU;IAIT,OAAO,CAAC,QAAQ,CAAC,SAAS;IAHtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;IACjE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;gBAEZ,SAAS,EAAE,SAAS;IAIjD,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAItD,2DAA2D;IAC3D,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3D,wFAAwF;IACxF,KAAK,IAAI,IAAI;IAMb,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,QAAQ,CAAC,SAAS,CAaxB;IAEF,OAAO,CAAC,KAAK;CAGd"}
@@ -0,0 +1,23 @@
1
+ import type { BridgeClient, RequestOptions } from "./BridgeClient";
2
+ /** A signature the WebView is waiting for: the message and the terminal command that signs it. */
3
+ export interface GpgPendingRequest {
4
+ message: string;
5
+ command: string;
6
+ }
7
+ /**
8
+ * Native-side proxy for the WebView's copy/paste GPG signer. `signMessage`
9
+ * parks a request in the page, which shows the command and a paste box; a
10
+ * native host that draws its own paste box calls `submit` instead.
11
+ */
12
+ export declare class GpgBridge {
13
+ private readonly bridge;
14
+ constructor(bridge: BridgeClient);
15
+ /** Resolves with the armored signature followed by the armored public key. */
16
+ signMessage(message: string, options?: RequestOptions): Promise<string>;
17
+ /** Hand pasted terminal output to the pending request. Rejects when it does not cover its message. */
18
+ submit(signature: string): Promise<void>;
19
+ cancel(): Promise<void>;
20
+ /** Called with the pending request whenever one is parked, and with null when it settles. */
21
+ onPendingChanged(handler: (request: GpgPendingRequest | null) => void): () => void;
22
+ }
23
+ //# sourceMappingURL=GpgBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GpgBridge.d.ts","sourceRoot":"","sources":["../../src/bridge/GpgBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEnE,kGAAkG;AAClG,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;;;GAIG;AACH,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAEjD,8EAA8E;IACxE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAUjF,sGAAsG;IAChG,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,6FAA6F;IAC7F,gBAAgB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,GAAG,MAAM,IAAI;CAOnF"}
@@ -0,0 +1,18 @@
1
+ import type { BridgeClient, RequestOptions } from "./BridgeClient";
2
+ /**
3
+ * Native-side proxy for the WebView's Sui wallet. Messages are UTF-8 text; the
4
+ * signature is Sui's serialized signature (flag || signature || public key),
5
+ * base64, which is what the Keycloak Sui verifier takes as the login username.
6
+ */
7
+ export declare class SuiBridge {
8
+ private readonly bridge;
9
+ constructor(bridge: BridgeClient);
10
+ connect(options?: RequestOptions): Promise<{
11
+ address: string;
12
+ }>;
13
+ disconnect(): Promise<void>;
14
+ signMessage(message: string, options?: RequestOptions): Promise<string>;
15
+ /** Subscribe to sui events (`accountChanged`). */
16
+ on(handler: (event: string, params: unknown) => void): () => void;
17
+ }
18
+ //# sourceMappingURL=SuiBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SuiBridge.d.ts","sourceRoot":"","sources":["../../src/bridge/SuiBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEnE;;;;GAIG;AACH,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAE3C,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAM/D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAO7E,kDAAkD;IAClD,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;CAKlE"}
@@ -0,0 +1,71 @@
1
+ /** Who signs an `auth.signIn`: the message families the Keycloak wallet SPIs verify. */
2
+ export type AuthFamily = "eth" | "sol" | "sui" | "gpg";
3
+ export declare const AUTH_FAMILIES: readonly AuthFamily[];
4
+ export interface AuthKeycloakConfig {
5
+ /** e.g. `https://account.example.com`, or `http://localhost:8080/auth` in dev. */
6
+ baseUrl: string;
7
+ realm: string;
8
+ /** The wallet SPI's REST resource: `siww` on the SHC Keycloak (default), `wallet` on mpo's. */
9
+ resource?: "siww" | "wallet";
10
+ /** A public client with direct access grants enabled. */
11
+ clientId: string;
12
+ /** Default `openid`. */
13
+ scope?: string | string[];
14
+ }
15
+ /**
16
+ * The client Keycloak's own browser login runs under when the account still
17
+ * has required actions: standard flow on, `redirectUri` registered exactly.
18
+ */
19
+ export interface AuthOnboardingConfig {
20
+ clientId: string;
21
+ /** Where Keycloak sends the system browser back, usually the app's deep link. */
22
+ redirectUri: string;
23
+ scope?: string | string[];
24
+ }
25
+ export interface AuthTokens {
26
+ accessToken: string;
27
+ refreshToken?: string;
28
+ idToken?: string;
29
+ tokenType: string;
30
+ scope?: string;
31
+ /** Epoch ms. */
32
+ expiresAt: number;
33
+ /** Epoch ms; absent for offline or non-expiring refresh tokens. */
34
+ refreshExpiresAt?: number;
35
+ }
36
+ export interface AuthSignInParams {
37
+ /** Default `eth`. */
38
+ family?: AuthFamily;
39
+ keycloak: AuthKeycloakConfig;
40
+ onboarding?: AuthOnboardingConfig;
41
+ }
42
+ /** Keycloak's authorization-code login with a fresh `state` and PKCE S256 verifier. */
43
+ export interface AuthBrowserLogin {
44
+ url: string;
45
+ state: string;
46
+ codeVerifier: string;
47
+ }
48
+ export type AuthSignInResult = {
49
+ status: "signed-in";
50
+ family: AuthFamily;
51
+ address: string | null;
52
+ tokens: AuthTokens;
53
+ } | {
54
+ status: "profile-incomplete";
55
+ family: AuthFamily;
56
+ address: string | null;
57
+ browserLogin: AuthBrowserLogin;
58
+ };
59
+ export interface AuthSessionParams {
60
+ keycloak: AuthKeycloakConfig;
61
+ /** Defaults to the refresh token of the page's last sign-in for this realm and client. */
62
+ refreshToken?: string;
63
+ }
64
+ /** `auth.tokensChanged` event params. */
65
+ export interface AuthTokensChanged {
66
+ baseUrl: string;
67
+ realm: string;
68
+ clientId: string;
69
+ tokens: AuthTokens | null;
70
+ }
71
+ //# sourceMappingURL=authTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authTypes.d.ts","sourceRoot":"","sources":["../../src/bridge/authTypes.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAEvD,eAAO,MAAM,aAAa,EAAE,SAAS,UAAU,EAAiC,CAAC;AAEjF,MAAM,WAAW,kBAAkB;IACjC,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC7B,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,qBAAqB;IACrB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,UAAU,CAAC,EAAE,oBAAoB,CAAC;CACnC;AAED,uFAAuF;AACvF,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GACvF;IACE,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,gBAAgB,CAAC;CAChC,CAAC;AAEN,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,0FAA0F;IAC1F,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,yCAAyC;AACzC,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;CAC3B"}
@@ -0,0 +1,16 @@
1
+ export * from "./protocol";
2
+ export * from "./transport";
3
+ export * from "./authTypes";
4
+ export { createPostMessageTransport, type PostMessageTransport } from "./postMessageTransport";
5
+ export { BridgeClient, type EventHandler, type RequestOptions } from "./BridgeClient";
6
+ export { BridgeHost, type RequestHandler } from "./BridgeHost";
7
+ export { createBridgeProvider, type BridgeProvider, type Eip1193RequestArgs } from "./eip1193";
8
+ export { bytesToBase64, base64ToBytes } from "./base64";
9
+ export { SolanaBridge } from "./SolanaBridge";
10
+ export { SuiBridge } from "./SuiBridge";
11
+ export { GpgBridge, type GpgPendingRequest } from "./GpgBridge";
12
+ export { AuthBridge, type AuthBridgeOptions, type AuthSignInOptions, type AuthSignInOutcome, } from "./AuthBridge";
13
+ export { DEV_HOSTNAMES, hostedPageOrigin, isHostedPageUrl, parseOrigin, queryParams, type ParsedOrigin, } from "./hosting";
14
+ export { buildInjectScript, createNativeBridge, type NativeBridge, type NativeBridgeOptions, } from "./nativeHost";
15
+ export { decideNavigation, decideNewWindow, parseWalletReturn, shouldOpenExternally, WALLET_SCHEMES, WALLET_UNIVERSAL_HOSTS, type NavigationDecision, } from "../providers/native/deepLink";
16
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/bridge/core.ts"],"names":[],"mappings":"AAEA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,0BAA0B,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EACL,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,WAAW,EACX,KAAK,YAAY,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,KAAK,kBAAkB,GACxB,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,34 @@
1
+ export interface ParsedOrigin {
2
+ /** Lowercased, without the colon. */
3
+ scheme: string;
4
+ /** Lowercased hostname with a non-default port, e.g. `example.com:8443`; empty for `about:`. */
5
+ host: string;
6
+ /** Lowercased hostname, IPv6 in brackets. */
7
+ hostname: string;
8
+ /** `scheme://host`, or `scheme:` for a URL without an authority. */
9
+ origin: string;
10
+ }
11
+ export declare function parseOrigin(url: string): ParsedOrigin | null;
12
+ /** The query parameters of `url`, decoded; a repeated name keeps its first value. */
13
+ export declare function queryParams(url: string): Record<string, string>;
14
+ /**
15
+ * Plain http is allowed only where the device itself is the server: loopback,
16
+ * reached from an emulator through `adb reverse`, and 10.0.2.2, the Android
17
+ * emulator's alias for the host machine. Development builds only: on a phone
18
+ * any app can bind a loopback port, and 10.0.2.2 is a LAN address there.
19
+ */
20
+ export declare const DEV_HOSTNAMES: readonly string[];
21
+ export interface HostedPageOptions {
22
+ /** Accept plain http on `DEV_HOSTNAMES`. Default false; a React Native host passes `__DEV__`. */
23
+ allowDevHosts?: boolean;
24
+ }
25
+ /**
26
+ * True when a page at `url` can run the wallet bridge: https, or http on a
27
+ * development host. The sign-in message's domain is the page's host and the
28
+ * Keycloak nonce cookie is set for it, so a `file:`, `data:` or inline page,
29
+ * whose host is empty, can never sign in.
30
+ */
31
+ export declare function isHostedPageUrl(url: string, options?: HostedPageOptions): boolean;
32
+ /** The origin of a hosted wallet page, or a thrown error naming what is wrong with `url`. */
33
+ export declare function hostedPageOrigin(url: string, options?: HostedPageOptions): string;
34
+ //# sourceMappingURL=hosting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosting.d.ts","sourceRoot":"","sources":["../../src/bridge/hosting.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,gGAAgG;IAChG,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;CAChB;AAQD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAY5D;AAED,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU/D;AAUD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAAoD,CAAC;AAEhG,MAAM,WAAW,iBAAiB;IAChC,iGAAiG;IACjG,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CASrF;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAYrF"}
@@ -1,10 +1,3 @@
1
- export * from "./protocol";
2
- export * from "./transport";
3
- export { createPostMessageTransport, type PostMessageTransport } from "./postMessageTransport";
4
- export { BridgeClient, type EventHandler, type RequestOptions } from "./BridgeClient";
5
- export { BridgeHost, type RequestHandler } from "./BridgeHost";
6
- export { createBridgeProvider, type BridgeProvider, type Eip1193RequestArgs } from "./eip1193";
1
+ export * from "./core";
7
2
  export { createBridgeConnector } from "./bridgeConnector";
8
- export { bytesToBase64, base64ToBytes } from "./base64";
9
- export { SolanaBridge } from "./SolanaBridge";
10
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,0BAA0B,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { BridgeClient } from "./BridgeClient";
2
+ import { type BridgeReady } from "./protocol";
3
+ export interface NativeBridgeOptions {
4
+ /** The hosted wallet page. Must pass `isHostedPageUrl`. */
5
+ pageUrl: string;
6
+ /** Accept plain http on the development hosts. Pass `__DEV__`; never true in a release build. */
7
+ allowDevHosts?: boolean;
8
+ /** Runs a script in the page: react-native-webview's `injectJavaScript`. */
9
+ inject(script: string): void;
10
+ /** Default request timeout, see BridgeClient. */
11
+ timeoutMs?: number;
12
+ /** Called once the page reports `sys.ready`. */
13
+ onReady?(ready: BridgeReady): void;
14
+ }
15
+ export interface NativeBridge {
16
+ readonly client: BridgeClient;
17
+ /** Origin of the hosted page; messages from any other origin are dropped. */
18
+ readonly pageOrigin: string;
19
+ /** What the page announced in `sys.ready`, or null before it has. */
20
+ readonly peer: BridgeReady | null;
21
+ /**
22
+ * Feed a WebView message in: `receive(e.nativeEvent.data, e.nativeEvent.url)`.
23
+ * A message whose `fromUrl` is missing or on another origin is dropped.
24
+ */
25
+ receive(data: string, fromUrl: string): void;
26
+ /**
27
+ * The top frame started loading `url` (react-native-webview's `onLoadStart`).
28
+ * A document on another origin is not the page: what is in flight fails,
29
+ * nothing more is delivered until the page announces itself again, and the
30
+ * answer is true so the host loads `pageUrl` back. Twice at most between two
31
+ * `sys.ready`s: a page that never comes back stays down instead of looping.
32
+ */
33
+ navigated(url: string): boolean;
34
+ /**
35
+ * The page died (WebView content process gone) or is being reloaded: fail
36
+ * the requests in flight and queue new ones until the next `sys.ready`.
37
+ */
38
+ pageGone(): void;
39
+ dispose(): void;
40
+ }
41
+ /**
42
+ * The script that delivers one message into the page. The raw string is
43
+ * embedded with JSON.stringify so quotes, newlines and backslashes survive;
44
+ * the trailing `true;` is react-native-webview's injectJavaScript contract.
45
+ * With `pageOrigin` the script delivers only while the top frame is on that
46
+ * origin, so a document that replaced the page never sees a message.
47
+ */
48
+ export declare function buildInjectScript(raw: string, pageOrigin?: string): string;
49
+ /**
50
+ * The native end of the bridge for any React Native WebView host. Requests
51
+ * wait in a queue until the page says `sys.ready`, because the first request
52
+ * usually fires before the page has loaded.
53
+ */
54
+ export declare function createNativeBridge(options: NativeBridgeOptions): NativeBridge;
55
+ //# sourceMappingURL=nativeHost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nativeHost.d.ts","sourceRoot":"","sources":["../../src/bridge/nativeHost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAA2B,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,iGAAiG;IACjG,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4EAA4E;IAC5E,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,OAAO,CAAC,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C;;;;;;OAMG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC;;;OAGG;IACH,QAAQ,IAAI,IAAI,CAAC;IACjB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAK1E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAuD7E"}
@@ -1,10 +1,32 @@
1
- export declare const NAMESPACES: readonly ["evm", "solana", "sys"];
1
+ /**
2
+ * Version of the wire protocol in docs/bridge-protocol.md. The WebView sends it
3
+ * in `sys.ready`; bump it only for a change an existing host cannot ignore.
4
+ */
5
+ export declare const BRIDGE_PROTOCOL_VERSION = 1;
6
+ export declare const NAMESPACES: readonly ["evm", "solana", "sui", "gpg", "auth", "sys"];
2
7
  export type Namespace = (typeof NAMESPACES)[number];
3
8
  export declare const KINDS: readonly ["req", "res", "event"];
4
9
  export type Kind = (typeof KINDS)[number];
10
+ /** Error codes a response can carry. EIP-1193 and JSON-RPC codes keep their meaning. */
11
+ export declare const BridgeErrorCode: {
12
+ readonly userRejected: 4001;
13
+ readonly unsupportedMethod: 4200;
14
+ readonly methodNotFound: -32601;
15
+ readonly invalidParams: -32602;
16
+ readonly internal: -32000;
17
+ /** The page is not served over https (or loopback http), so it cannot sign in. */
18
+ readonly pageNotHosted: -32001;
19
+ /** Keycloak refused the request; `data` carries `status`, `error`, `errorDescription`. */
20
+ readonly keycloakRefused: -32002;
21
+ /** No wallet or signer for the requested family is available in the page. */
22
+ readonly walletUnavailable: -32003;
23
+ /** The account has required actions left and no onboarding client was given. */
24
+ readonly profileIncomplete: -32004;
25
+ };
5
26
  export interface BridgeError {
6
27
  code: number;
7
28
  message: string;
29
+ data?: unknown;
8
30
  }
9
31
  export interface BridgeMessage {
10
32
  /** present on req/res, absent on event */
@@ -16,6 +38,17 @@ export interface BridgeMessage {
16
38
  result?: unknown;
17
39
  error?: BridgeError;
18
40
  }
41
+ /** What the WebView announces in `sys.ready`. */
42
+ export interface BridgeReady {
43
+ protocol: number;
44
+ namespaces: Namespace[];
45
+ }
46
+ /** An error that crosses the bridge with its code and data intact, in either direction. */
47
+ export declare class BridgeRequestError extends Error {
48
+ readonly code: number;
49
+ readonly data?: unknown;
50
+ constructor(code: number, message: string, data?: unknown);
51
+ }
19
52
  export declare function isBridgeMessage(value: unknown): value is BridgeMessage;
20
53
  export declare function newRequestId(): string;
21
54
  //# sourceMappingURL=protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/bridge/protocol.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,mCAAoC,CAAC;AAC5D,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpD,eAAO,MAAM,KAAK,kCAAmC,CAAC;AACtD,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,SAAS,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAQtE;AAGD,wBAAgB,YAAY,IAAI,MAAM,CAIrC"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/bridge/protocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,eAAO,MAAM,UAAU,yDAA0D,CAAC;AAClF,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpD,eAAO,MAAM,KAAK,kCAAmC,CAAC;AACtD,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1C,wFAAwF;AACxF,eAAO,MAAM,eAAe;;;;;;IAM1B,kFAAkF;;IAElF,0FAA0F;;IAE1F,6EAA6E;;IAE7E,gFAAgF;;CAExE,CAAC;AAEX,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,SAAS,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,2FAA2F;AAC3F,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;gBAEZ,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAM1D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAQtE;AAGD,wBAAgB,YAAY,IAAI,MAAM,CAIrC"}
package/types/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { WalletProvider, useWeb3Config, defaultChains, type WalletProviderProps, type Web3Config, } from "./providers";
1
+ export { WalletProvider, useWeb3Config, defaultChains, useWalletBridge, type WalletBridgeContextValue, type WalletProviderProps, type Web3Config, } from "./providers";
2
2
  export { useWallet, type UseWalletResult, type WalletActions, type WalletState, useContractRead, useContractWrite, type ContractReadConfig, type ContractReadResult, type ContractWriteConfig, type ContractWriteResult, type TransactionStatus, useAccount, useBalance, useChainId, useChains, useConnect, useDisconnect, useEnsAvatar, useEnsName, useSignMessage, useSwitchChain, useBlockNumber, useReadContract, useWriteContract, useSimulateContract, useWaitForTransactionReceipt, } from "./hooks";
3
3
  export { WalletButton, WalletAvatar, WalletStatus, NetworkSwitcher, TransactionStatus as TransactionStatusComponent, ConnectKitButton, type WalletButtonProps, type WalletAvatarProps, type WalletStatusProps, type NetworkSwitcherProps, type TransactionStatusProps, } from "./components";
4
4
  export { LockContract, lockAbi, type LockContractProps } from "./examples";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,SAAS,EACT,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,WAAW,EAEhB,eAAe,EACf,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EAEtB,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,aAAa,EACb,YAAY,EACZ,UAAU,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,iBAAiB,IAAI,0BAA0B,EAC/C,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG3E,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGnF,cAAc,UAAU,CAAC;AAGzB,cAAc,WAAW,CAAC;AAI1B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,SAAS,EACT,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,WAAW,EAEhB,eAAe,EACf,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EAEtB,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,aAAa,EACb,YAAY,EACZ,UAAU,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,iBAAiB,IAAI,0BAA0B,EAC/C,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG3E,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGnF,cAAc,UAAU,CAAC;AAGzB,cAAc,WAAW,CAAC;AAI1B,cAAc,WAAW,CAAC"}
@@ -13,6 +13,7 @@ export interface WalletProviderProps extends PropsWithChildren {
13
13
  siwe?: SIWEConfig;
14
14
  }
15
15
  export declare function WalletProvider({ children, config: web3Config, queryClient, siwe, }: WalletProviderProps): import("react/jsx-runtime").JSX.Element;
16
+ export { useWalletBridge, type WalletBridgeContextValue } from "./walletBridge";
16
17
  export { defaultChains } from "./walletConfig";
17
18
  export { useWeb3Config, type Web3Config } from "./walletConfig";
18
19
  //# sourceMappingURL=WalletProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WalletProvider.d.ts","sourceRoot":"","sources":["../../src/providers/WalletProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAuB,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAoC,KAAK,UAAU,EAAoB,MAAM,eAAe,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAK/C,OAAO,EAAE,KAAK,UAAU,EAAoC,MAAM,gBAAgB,CAAC;AAEnF,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAWD,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,MAAM,EAAE,UAAU,EAClB,WAAgC,EAChC,IAAI,GACL,EAAE,mBAAmB,2CAyErB;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"WalletProvider.d.ts","sourceRoot":"","sources":["../../src/providers/WalletProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAuB,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAoC,KAAK,UAAU,EAAoB,MAAM,eAAe,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAI/C,OAAO,EAAE,KAAK,UAAU,EAAoC,MAAM,gBAAgB,CAAC;AAEnF,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAWD,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,MAAM,EAAE,UAAU,EAClB,WAAgC,EAChC,IAAI,GACL,EAAE,mBAAmB,2CAyErB;AAED,OAAO,EAAE,eAAe,EAAE,KAAK,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
@@ -7,7 +7,7 @@ type WebViewSource = NonNullable<WebViewProps["source"]>;
7
7
  export interface WalletProviderProps extends PropsWithChildren {
8
8
  config: Web3Config;
9
9
  queryClient?: QueryClient;
10
- /** Override the WebView content (defaults to `config.webViewUrl`). */
10
+ /** Override the WebView content (defaults to `config.webViewUrl`); must be a hosted `{ uri }`. */
11
11
  webViewSource?: WebViewSource;
12
12
  }
13
13
  /** Native Solana surface, mirroring the operations web's wallet-adapter exposes. */
@@ -18,6 +18,7 @@ export interface SolanaWalletContextValue {
18
18
  }
19
19
  export declare function useSolanaWallet(): SolanaWalletContextValue;
20
20
  export declare function WalletProvider({ children, config: web3Config, queryClient, webViewSource, }: WalletProviderProps): import("react/jsx-runtime").JSX.Element;
21
+ export { useWalletBridge, type WalletBridgeContextValue } from "./walletBridge";
21
22
  export { defaultChains } from "./walletConfig";
22
23
  export { useWeb3Config, type Web3Config } from "./walletConfig";
23
24
  //# sourceMappingURL=WalletProvider.native.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WalletProvider.native.d.ts","sourceRoot":"","sources":["../../src/providers/WalletProvider.native.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAuB,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAG/C,OAAO,EAAqC,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAG5F,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAMtD,OAAO,EAAE,KAAK,UAAU,EAAoC,MAAM,gBAAgB,CAAC;AAEnF,KAAK,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;AAMzD,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,sEAAsE;IACtE,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,oFAAoF;AACpF,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB;AAID,wBAAgB,eAAe,IAAI,wBAAwB,CAI1D;AAID,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,MAAM,EAAE,UAAU,EAClB,WAAgC,EAChC,aAAa,GACd,EAAE,mBAAmB,2CA+IrB;AAUD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"WalletProvider.native.d.ts","sourceRoot":"","sources":["../../src/providers/WalletProvider.native.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAuB,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAG/C,OAAO,EAAqC,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAK5F,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAetD,OAAO,EAAE,KAAK,UAAU,EAAoC,MAAM,gBAAgB,CAAC;AAEnF,KAAK,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;AAMzD,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,kGAAkG;IAClG,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,oFAAoF;AACpF,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB;AAID,wBAAgB,eAAe,IAAI,wBAAwB,CAI1D;AAeD,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,MAAM,EAAE,UAAU,EAClB,WAAgC,EAChC,aAAa,GACd,EAAE,mBAAmB,2CA8KrB;AAUD,OAAO,EAAE,eAAe,EAAE,KAAK,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,2 +1,2 @@
1
- export { WalletProvider, useWeb3Config, defaultChains, type WalletProviderProps, type Web3Config, } from "./WalletProvider";
1
+ export { WalletProvider, useWeb3Config, defaultChains, useWalletBridge, type WalletBridgeContextValue, type WalletProviderProps, type Web3Config, } from "./WalletProvider";
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,UAAU,GAChB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,UAAU,GAChB,MAAM,kBAAkB,CAAC"}
@@ -1,11 +1,36 @@
1
1
  /**
2
- * Wallet hand-off URL classification for the native WebView. The WebView loads
3
- * trusted local content (file://); when its ConnectKit flow tries to
4
- * open a wallet app it navigates to a wallet custom-scheme or universal link —
5
- * those must be handed to the OS via Linking.openURL, not loaded in the WebView.
2
+ * Wallet hand-off for the native WebView. The WebView shows the hosted wallet
3
+ * page; when its flow opens a wallet app it navigates to a wallet custom
4
+ * scheme or universal link, or opens one in a new window. Those go to the OS
5
+ * through Linking.openURL and are never loaded in the WebView.
6
6
  */
7
+ /** Custom schemes that open a wallet app. docs/bridge-protocol.md lists the same. */
8
+ export declare const WALLET_SCHEMES: readonly string[];
9
+ /** Hosts (and subdomains) of wallet universal links. docs/bridge-protocol.md lists the same. */
10
+ export declare const WALLET_UNIVERSAL_HOSTS: readonly string[];
7
11
  /** True when a WebView navigation should be opened in an external wallet app. */
8
12
  export declare function shouldOpenExternally(url: string): boolean;
13
+ /** `load` in the WebView, hand to the OS (`external`), or drop (`block`). */
14
+ export type NavigationDecision = "load" | "external" | "block";
15
+ /**
16
+ * Decide a navigation in the wallet WebView (`onShouldStartLoadWithRequest`).
17
+ * The top frame never leaves the hosted page's origin: the bridge would
18
+ * otherwise hand its messages, tokens included, to whatever page loaded next.
19
+ * Other http(s) pages open in the system browser; frames are the page's own
20
+ * business.
21
+ */
22
+ export declare function decideNavigation(url: string, pageOrigin: string, isTopFrame?: boolean): NavigationDecision;
23
+ /**
24
+ * Decide a `window.open` / `target=_blank` navigation (`onOpenWindow`). A new
25
+ * window never opens inside the app: wallet links and web pages go to the OS.
26
+ */
27
+ export declare function decideNewWindow(url: string): NavigationDecision;
9
28
  /** Parse the query params of an inbound app-link return (e.g. from a wallet redirect). */
10
29
  export declare function parseWalletReturn(url: string): Record<string, string> | null;
30
+ /**
31
+ * True when `url` is `base` or below it: `myapp://wallet-return?x=1` and
32
+ * `myapp://wallet-return/done` are under `myapp://wallet-return`,
33
+ * `myapp://wallet-returned` is not.
34
+ */
35
+ export declare function isUnderUrl(url: string, base: string): boolean;
11
36
  //# sourceMappingURL=deepLink.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deepLink.d.ts","sourceRoot":"","sources":["../../../src/providers/native/deepLink.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2BH,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAazD;AAED,0FAA0F;AAC1F,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAW5E"}
1
+ {"version":3,"file":"deepLink.d.ts","sourceRoot":"","sources":["../../../src/providers/native/deepLink.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,qFAAqF;AACrF,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAgB3C,CAAC;AAEF,gGAAgG;AAChG,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EASnD,CAAC;AAIF,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQzD;AAED,6EAA6E;AAC7E,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;AAE/D;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,UAAU,UAAO,GAChB,kBAAkB,CAWpB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAQ/D;AAED,0FAA0F;AAC1F,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAI7D"}
@@ -1,11 +1,5 @@
1
1
  import type { Web3Config } from "../walletConfig";
2
- /**
3
- * Build the JS the native side runs inside the WebView (via `injectJavaScript`)
4
- * to deliver one inbound bridge message. The raw string is embedded with
5
- * JSON.stringify so quotes/newlines/backslashes survive intact. The trailing
6
- * `true;` is required by react-native-webview's injectJavaScript contract.
7
- */
8
- export declare function buildInjectScript(raw: string): string;
2
+ export { buildInjectScript } from "../../bridge/nativeHost";
9
3
  /**
10
4
  * Build the JS injected *before* the WebView content loads
11
5
  * (`injectedJavaScriptBeforeContentLoaded`) to publish the host config as
@@ -1 +1 @@
1
- {"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../../src/providers/native/inject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAE1F"}
1
+ {"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../../src/providers/native/inject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAE1F"}
@@ -0,0 +1,17 @@
1
+ import type { AuthBridge } from "../bridge/AuthBridge";
2
+ import type { BridgeClient } from "../bridge/BridgeClient";
3
+ import type { GpgBridge } from "../bridge/GpgBridge";
4
+ import type { SolanaBridge } from "../bridge/SolanaBridge";
5
+ import type { SuiBridge } from "../bridge/SuiBridge";
6
+ /** Every bridge namespace of the native WalletProvider's hosted wallet page. */
7
+ export interface WalletBridgeContextValue {
8
+ client: BridgeClient;
9
+ solana: SolanaBridge;
10
+ sui: SuiBridge;
11
+ gpg: GpgBridge;
12
+ auth: AuthBridge;
13
+ }
14
+ export declare const WalletBridgeContext: import("react").Context<WalletBridgeContextValue | null>;
15
+ /** Native only: on web the wallet runs in the page itself and there is no bridge. */
16
+ export declare function useWalletBridge(): WalletBridgeContextValue;
17
+ //# sourceMappingURL=walletBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walletBridge.d.ts","sourceRoot":"","sources":["../../src/providers/walletBridge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,gFAAgF;AAChF,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,EAAE,SAAS,CAAC;IACf,GAAG,EAAE,SAAS,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,eAAO,MAAM,mBAAmB,0DAAuD,CAAC;AAExF,qFAAqF;AACrF,wBAAgB,eAAe,IAAI,wBAAwB,CAI1D"}