@multiplatform.one/web3 7.24.0 → 7.26.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 (363) 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/core/family.cjs +88 -0
  36. package/dist/cjs/core/family.native.js +115 -0
  37. package/dist/cjs/core/family.native.js.map +1 -0
  38. package/dist/cjs/core/index.cjs +41 -0
  39. package/dist/cjs/core/index.native.js +44 -0
  40. package/dist/cjs/core/index.native.js.map +1 -0
  41. package/dist/cjs/core/message.cjs +89 -0
  42. package/dist/cjs/core/message.native.js +104 -0
  43. package/dist/cjs/core/message.native.js.map +1 -0
  44. package/dist/cjs/core/names.cjs +51 -0
  45. package/dist/cjs/core/names.native.js +95 -0
  46. package/dist/cjs/core/names.native.js.map +1 -0
  47. package/dist/cjs/core/react.cjs +48 -0
  48. package/dist/cjs/core/react.native.js +52 -0
  49. package/dist/cjs/core/react.native.js.map +1 -0
  50. package/dist/cjs/core/store.cjs +450 -0
  51. package/dist/cjs/core/store.native.js +637 -0
  52. package/dist/cjs/core/store.native.js.map +1 -0
  53. package/dist/cjs/core/types.cjs +18 -0
  54. package/dist/cjs/core/types.native.js +21 -0
  55. package/dist/cjs/core/types.native.js.map +1 -0
  56. package/dist/cjs/index.cjs +3 -1
  57. package/dist/cjs/index.native.js +2 -0
  58. package/dist/cjs/index.native.js.map +1 -1
  59. package/dist/cjs/providers/WalletProvider.cjs +2 -0
  60. package/dist/cjs/providers/WalletProvider.native.js +123 -90
  61. package/dist/cjs/providers/WalletProvider.native.js.map +1 -1
  62. package/dist/cjs/providers/index.cjs +1 -0
  63. package/dist/cjs/providers/index.native.js +1 -0
  64. package/dist/cjs/providers/index.native.js.map +1 -1
  65. package/dist/cjs/providers/native/deepLink.cjs +40 -23
  66. package/dist/cjs/providers/native/deepLink.native.js +43 -25
  67. package/dist/cjs/providers/native/deepLink.native.js.map +1 -1
  68. package/dist/cjs/providers/native/inject.cjs +2 -4
  69. package/dist/cjs/providers/native/inject.native.js +2 -4
  70. package/dist/cjs/providers/native/inject.native.js.map +1 -1
  71. package/dist/cjs/providers/walletBridge.cjs +35 -0
  72. package/dist/cjs/providers/walletBridge.native.js +38 -0
  73. package/dist/cjs/providers/walletBridge.native.js.map +1 -0
  74. package/dist/cjs/providers/walletConfig.native.js.map +1 -1
  75. package/dist/esm/bridge/AuthBridge.mjs +99 -0
  76. package/dist/esm/bridge/AuthBridge.mjs.map +1 -0
  77. package/dist/esm/bridge/AuthBridge.native.js +158 -0
  78. package/dist/esm/bridge/AuthBridge.native.js.map +1 -0
  79. package/dist/esm/bridge/BridgeClient.mjs +13 -10
  80. package/dist/esm/bridge/BridgeClient.mjs.map +1 -1
  81. package/dist/esm/bridge/BridgeClient.native.js +18 -13
  82. package/dist/esm/bridge/BridgeClient.native.js.map +1 -1
  83. package/dist/esm/bridge/BridgeHost.mjs +12 -4
  84. package/dist/esm/bridge/BridgeHost.mjs.map +1 -1
  85. package/dist/esm/bridge/BridgeHost.native.js +12 -4
  86. package/dist/esm/bridge/BridgeHost.native.js.map +1 -1
  87. package/dist/esm/bridge/GpgBridge.mjs +36 -0
  88. package/dist/esm/bridge/GpgBridge.mjs.map +1 -0
  89. package/dist/esm/bridge/GpgBridge.native.js +83 -0
  90. package/dist/esm/bridge/GpgBridge.native.js.map +1 -0
  91. package/dist/esm/bridge/SuiBridge.mjs +26 -0
  92. package/dist/esm/bridge/SuiBridge.mjs.map +1 -0
  93. package/dist/esm/bridge/SuiBridge.native.js +71 -0
  94. package/dist/esm/bridge/SuiBridge.native.js.map +1 -0
  95. package/dist/esm/bridge/authTypes.mjs +3 -0
  96. package/dist/esm/bridge/authTypes.mjs.map +1 -0
  97. package/dist/esm/bridge/authTypes.native.js +3 -0
  98. package/dist/esm/bridge/authTypes.native.js.map +1 -0
  99. package/dist/esm/bridge/core.mjs +17 -0
  100. package/dist/esm/bridge/core.mjs.map +1 -0
  101. package/dist/esm/bridge/core.native.js +17 -0
  102. package/dist/esm/bridge/core.native.js.map +1 -0
  103. package/dist/esm/bridge/hosting.mjs +62 -0
  104. package/dist/esm/bridge/hosting.mjs.map +1 -0
  105. package/dist/esm/bridge/hosting.native.js +85 -0
  106. package/dist/esm/bridge/hosting.native.js.map +1 -0
  107. package/dist/esm/bridge/index.mjs +2 -9
  108. package/dist/esm/bridge/index.mjs.map +1 -1
  109. package/dist/esm/bridge/index.native.js +2 -9
  110. package/dist/esm/bridge/index.native.js.map +1 -1
  111. package/dist/esm/bridge/nativeHost.mjs +65 -0
  112. package/dist/esm/bridge/nativeHost.mjs.map +1 -0
  113. package/dist/esm/bridge/nativeHost.native.js +89 -0
  114. package/dist/esm/bridge/nativeHost.native.js.map +1 -0
  115. package/dist/esm/bridge/protocol.mjs +28 -2
  116. package/dist/esm/bridge/protocol.mjs.map +1 -1
  117. package/dist/esm/bridge/protocol.native.js +145 -2
  118. package/dist/esm/bridge/protocol.native.js.map +1 -1
  119. package/dist/esm/core/family.mjs +62 -0
  120. package/dist/esm/core/family.mjs.map +1 -0
  121. package/dist/esm/core/family.native.js +86 -0
  122. package/dist/esm/core/family.native.js.map +1 -0
  123. package/dist/esm/core/index.mjs +7 -0
  124. package/dist/esm/core/index.mjs.map +1 -0
  125. package/dist/esm/core/index.native.js +7 -0
  126. package/dist/esm/core/index.native.js.map +1 -0
  127. package/dist/esm/core/message.mjs +63 -0
  128. package/dist/esm/core/message.mjs.map +1 -0
  129. package/dist/esm/core/message.native.js +75 -0
  130. package/dist/esm/core/message.native.js.map +1 -0
  131. package/dist/esm/core/names.mjs +25 -0
  132. package/dist/esm/core/names.mjs.map +1 -0
  133. package/dist/esm/core/names.native.js +66 -0
  134. package/dist/esm/core/names.native.js.map +1 -0
  135. package/dist/esm/core/react.mjs +21 -0
  136. package/dist/esm/core/react.mjs.map +1 -0
  137. package/dist/esm/core/react.native.js +22 -0
  138. package/dist/esm/core/react.native.js.map +1 -0
  139. package/dist/esm/core/store.mjs +424 -0
  140. package/dist/esm/core/store.mjs.map +1 -0
  141. package/dist/esm/core/store.native.js +608 -0
  142. package/dist/esm/core/store.native.js.map +1 -0
  143. package/dist/esm/core/types.mjs +2 -0
  144. package/dist/esm/core/types.mjs.map +1 -0
  145. package/dist/esm/core/types.native.js +2 -0
  146. package/dist/esm/core/types.native.js.map +1 -0
  147. package/dist/esm/index.mjs +3 -2
  148. package/dist/esm/index.mjs.map +1 -1
  149. package/dist/esm/index.native.js +3 -2
  150. package/dist/esm/index.native.js.map +1 -1
  151. package/dist/esm/providers/WalletProvider.mjs +2 -1
  152. package/dist/esm/providers/WalletProvider.mjs.map +1 -1
  153. package/dist/esm/providers/WalletProvider.native.js +125 -93
  154. package/dist/esm/providers/WalletProvider.native.js.map +1 -1
  155. package/dist/esm/providers/index.mjs +2 -2
  156. package/dist/esm/providers/index.mjs.map +1 -1
  157. package/dist/esm/providers/index.native.js +2 -2
  158. package/dist/esm/providers/index.native.js.map +1 -1
  159. package/dist/esm/providers/native/deepLink.mjs +36 -24
  160. package/dist/esm/providers/native/deepLink.mjs.map +1 -1
  161. package/dist/esm/providers/native/deepLink.native.js +39 -26
  162. package/dist/esm/providers/native/deepLink.native.js.map +1 -1
  163. package/dist/esm/providers/native/inject.mjs +1 -3
  164. package/dist/esm/providers/native/inject.mjs.map +1 -1
  165. package/dist/esm/providers/native/inject.native.js +1 -3
  166. package/dist/esm/providers/native/inject.native.js.map +1 -1
  167. package/dist/esm/providers/walletBridge.mjs +9 -0
  168. package/dist/esm/providers/walletBridge.mjs.map +1 -0
  169. package/dist/esm/providers/walletBridge.native.js +9 -0
  170. package/dist/esm/providers/walletBridge.native.js.map +1 -0
  171. package/dist/esm/providers/walletConfig.mjs.map +1 -1
  172. package/dist/esm/providers/walletConfig.native.js.map +1 -1
  173. package/dist/jsx/bridge/AuthBridge.mjs +99 -0
  174. package/dist/jsx/bridge/AuthBridge.mjs.map +1 -0
  175. package/dist/jsx/bridge/AuthBridge.native.js +186 -0
  176. package/dist/jsx/bridge/AuthBridge.native.js.map +1 -0
  177. package/dist/jsx/bridge/BridgeClient.mjs +13 -10
  178. package/dist/jsx/bridge/BridgeClient.mjs.map +1 -1
  179. package/dist/jsx/bridge/BridgeClient.native.js +17 -12
  180. package/dist/jsx/bridge/BridgeClient.native.js.map +1 -1
  181. package/dist/jsx/bridge/BridgeHost.mjs +12 -4
  182. package/dist/jsx/bridge/BridgeHost.mjs.map +1 -1
  183. package/dist/jsx/bridge/BridgeHost.native.js +11 -3
  184. package/dist/jsx/bridge/BridgeHost.native.js.map +1 -1
  185. package/dist/jsx/bridge/GpgBridge.mjs +36 -0
  186. package/dist/jsx/bridge/GpgBridge.mjs.map +1 -0
  187. package/dist/jsx/bridge/GpgBridge.native.js +111 -0
  188. package/dist/jsx/bridge/GpgBridge.native.js.map +1 -0
  189. package/dist/jsx/bridge/SuiBridge.mjs +26 -0
  190. package/dist/jsx/bridge/SuiBridge.mjs.map +1 -0
  191. package/dist/jsx/bridge/SuiBridge.native.js +99 -0
  192. package/dist/jsx/bridge/SuiBridge.native.js.map +1 -0
  193. package/dist/jsx/bridge/authTypes.mjs +3 -0
  194. package/dist/jsx/bridge/authTypes.mjs.map +1 -0
  195. package/dist/jsx/bridge/authTypes.native.js +31 -0
  196. package/dist/jsx/bridge/authTypes.native.js.map +1 -0
  197. package/dist/jsx/bridge/core.mjs +17 -0
  198. package/dist/jsx/bridge/core.mjs.map +1 -0
  199. package/dist/jsx/bridge/core.native.js +68 -0
  200. package/dist/jsx/bridge/core.native.js.map +1 -0
  201. package/dist/jsx/bridge/hosting.mjs +62 -0
  202. package/dist/jsx/bridge/hosting.mjs.map +1 -0
  203. package/dist/jsx/bridge/hosting.native.js +117 -0
  204. package/dist/jsx/bridge/hosting.native.js.map +1 -0
  205. package/dist/jsx/bridge/index.mjs +2 -9
  206. package/dist/jsx/bridge/index.mjs.map +1 -1
  207. package/dist/jsx/bridge/index.native.js +2 -16
  208. package/dist/jsx/bridge/index.native.js.map +1 -1
  209. package/dist/jsx/bridge/nativeHost.mjs +65 -0
  210. package/dist/jsx/bridge/nativeHost.mjs.map +1 -0
  211. package/dist/jsx/bridge/nativeHost.native.js +118 -0
  212. package/dist/jsx/bridge/nativeHost.native.js.map +1 -0
  213. package/dist/jsx/bridge/protocol.mjs +28 -2
  214. package/dist/jsx/bridge/protocol.mjs.map +1 -1
  215. package/dist/jsx/bridge/protocol.native.js +147 -1
  216. package/dist/jsx/bridge/protocol.native.js.map +1 -1
  217. package/dist/jsx/core/family.mjs +62 -0
  218. package/dist/jsx/core/family.mjs.map +1 -0
  219. package/dist/jsx/core/family.native.js +115 -0
  220. package/dist/jsx/core/family.native.js.map +1 -0
  221. package/dist/jsx/core/index.mjs +7 -0
  222. package/dist/jsx/core/index.mjs.map +1 -0
  223. package/dist/jsx/core/index.native.js +44 -0
  224. package/dist/jsx/core/index.native.js.map +1 -0
  225. package/dist/jsx/core/message.mjs +63 -0
  226. package/dist/jsx/core/message.mjs.map +1 -0
  227. package/dist/jsx/core/message.native.js +104 -0
  228. package/dist/jsx/core/message.native.js.map +1 -0
  229. package/dist/jsx/core/names.mjs +25 -0
  230. package/dist/jsx/core/names.mjs.map +1 -0
  231. package/dist/jsx/core/names.native.js +95 -0
  232. package/dist/jsx/core/names.native.js.map +1 -0
  233. package/dist/jsx/core/react.mjs +21 -0
  234. package/dist/jsx/core/react.mjs.map +1 -0
  235. package/dist/jsx/core/react.native.js +52 -0
  236. package/dist/jsx/core/react.native.js.map +1 -0
  237. package/dist/jsx/core/store.mjs +424 -0
  238. package/dist/jsx/core/store.mjs.map +1 -0
  239. package/dist/jsx/core/store.native.js +637 -0
  240. package/dist/jsx/core/store.native.js.map +1 -0
  241. package/dist/jsx/core/types.mjs +2 -0
  242. package/dist/jsx/core/types.mjs.map +1 -0
  243. package/dist/jsx/core/types.native.js +21 -0
  244. package/dist/jsx/core/types.native.js.map +1 -0
  245. package/dist/jsx/index.js +3 -2
  246. package/dist/jsx/index.js.map +1 -1
  247. package/dist/jsx/index.mjs +3 -2
  248. package/dist/jsx/index.mjs.map +1 -1
  249. package/dist/jsx/index.native.js +2 -0
  250. package/dist/jsx/index.native.js.map +1 -1
  251. package/dist/jsx/providers/WalletProvider.mjs +2 -1
  252. package/dist/jsx/providers/WalletProvider.mjs.map +1 -1
  253. package/dist/jsx/providers/WalletProvider.native.js +123 -90
  254. package/dist/jsx/providers/WalletProvider.native.js.map +1 -1
  255. package/dist/jsx/providers/index.mjs +2 -2
  256. package/dist/jsx/providers/index.mjs.map +1 -1
  257. package/dist/jsx/providers/index.native.js +1 -0
  258. package/dist/jsx/providers/index.native.js.map +1 -1
  259. package/dist/jsx/providers/native/deepLink.mjs +36 -24
  260. package/dist/jsx/providers/native/deepLink.mjs.map +1 -1
  261. package/dist/jsx/providers/native/deepLink.native.js +43 -25
  262. package/dist/jsx/providers/native/deepLink.native.js.map +1 -1
  263. package/dist/jsx/providers/native/inject.mjs +1 -3
  264. package/dist/jsx/providers/native/inject.mjs.map +1 -1
  265. package/dist/jsx/providers/native/inject.native.js +2 -4
  266. package/dist/jsx/providers/native/inject.native.js.map +1 -1
  267. package/dist/jsx/providers/walletBridge.mjs +9 -0
  268. package/dist/jsx/providers/walletBridge.mjs.map +1 -0
  269. package/dist/jsx/providers/walletBridge.native.js +38 -0
  270. package/dist/jsx/providers/walletBridge.native.js.map +1 -0
  271. package/dist/jsx/providers/walletConfig.mjs.map +1 -1
  272. package/dist/jsx/providers/walletConfig.native.js.map +1 -1
  273. package/docs/bridge-protocol.md +485 -0
  274. package/package.json +14 -6
  275. package/src/bridge/AuthBridge.ts +146 -0
  276. package/src/bridge/BridgeClient.spec.ts +12 -0
  277. package/src/bridge/BridgeClient.ts +15 -10
  278. package/src/bridge/BridgeHost.spec.ts +20 -4
  279. package/src/bridge/BridgeHost.ts +16 -5
  280. package/src/bridge/GpgBridge.ts +49 -0
  281. package/src/bridge/SuiBridge.ts +34 -0
  282. package/src/bridge/authTypes.ts +76 -0
  283. package/src/bridge/core.ts +42 -0
  284. package/src/bridge/hosting.spec.ts +98 -0
  285. package/src/bridge/hosting.ts +99 -0
  286. package/src/bridge/index.ts +1 -8
  287. package/src/bridge/nativeHost.spec.ts +165 -0
  288. package/src/bridge/nativeHost.ts +120 -0
  289. package/src/bridge/protocol.spec.ts +24 -1
  290. package/src/bridge/protocol.ts +44 -1
  291. package/src/core/family.spec.ts +117 -0
  292. package/src/core/family.ts +103 -0
  293. package/src/core/imports.spec.ts +82 -0
  294. package/src/core/index.ts +47 -0
  295. package/src/core/message.spec.ts +178 -0
  296. package/src/core/message.ts +119 -0
  297. package/src/core/names.ts +29 -0
  298. package/src/core/react.spec.tsx +75 -0
  299. package/src/core/react.ts +34 -0
  300. package/src/core/store.spec.ts +890 -0
  301. package/src/core/store.ts +558 -0
  302. package/src/core/types.ts +96 -0
  303. package/src/index.ts +6 -0
  304. package/src/providers/WalletProvider.native.tsx +139 -85
  305. package/src/providers/WalletProvider.tsx +1 -1
  306. package/src/providers/index.ts +2 -0
  307. package/src/providers/native/deepLink.spec.ts +73 -1
  308. package/src/providers/native/deepLink.ts +76 -28
  309. package/src/providers/native/inject.ts +1 -9
  310. package/src/providers/walletBridge.ts +24 -0
  311. package/src/providers/walletConfig.ts +15 -1
  312. package/types/bridge/AuthBridge.d.ts +58 -0
  313. package/types/bridge/AuthBridge.d.ts.map +1 -0
  314. package/types/bridge/BridgeClient.d.ts +3 -1
  315. package/types/bridge/BridgeClient.d.ts.map +1 -1
  316. package/types/bridge/BridgeHost.d.ts +1 -1
  317. package/types/bridge/BridgeHost.d.ts.map +1 -1
  318. package/types/bridge/GpgBridge.d.ts +23 -0
  319. package/types/bridge/GpgBridge.d.ts.map +1 -0
  320. package/types/bridge/SuiBridge.d.ts +18 -0
  321. package/types/bridge/SuiBridge.d.ts.map +1 -0
  322. package/types/bridge/authTypes.d.ts +71 -0
  323. package/types/bridge/authTypes.d.ts.map +1 -0
  324. package/types/bridge/core.d.ts +16 -0
  325. package/types/bridge/core.d.ts.map +1 -0
  326. package/types/bridge/hosting.d.ts +34 -0
  327. package/types/bridge/hosting.d.ts.map +1 -0
  328. package/types/bridge/index.d.ts +1 -8
  329. package/types/bridge/index.d.ts.map +1 -1
  330. package/types/bridge/nativeHost.d.ts +55 -0
  331. package/types/bridge/nativeHost.d.ts.map +1 -0
  332. package/types/bridge/protocol.d.ts +34 -1
  333. package/types/bridge/protocol.d.ts.map +1 -1
  334. package/types/core/family.d.ts +44 -0
  335. package/types/core/family.d.ts.map +1 -0
  336. package/types/core/index.d.ts +7 -0
  337. package/types/core/index.d.ts.map +1 -0
  338. package/types/core/message.d.ts +44 -0
  339. package/types/core/message.d.ts.map +1 -0
  340. package/types/core/names.d.ts +7 -0
  341. package/types/core/names.d.ts.map +1 -0
  342. package/types/core/react.d.ts +14 -0
  343. package/types/core/react.d.ts.map +1 -0
  344. package/types/core/store.d.ts +64 -0
  345. package/types/core/store.d.ts.map +1 -0
  346. package/types/core/types.d.ts +88 -0
  347. package/types/core/types.d.ts.map +1 -0
  348. package/types/index.d.ts +2 -1
  349. package/types/index.d.ts.map +1 -1
  350. package/types/providers/WalletProvider.d.ts +1 -0
  351. package/types/providers/WalletProvider.d.ts.map +1 -1
  352. package/types/providers/WalletProvider.native.d.ts +2 -1
  353. package/types/providers/WalletProvider.native.d.ts.map +1 -1
  354. package/types/providers/index.d.ts +1 -1
  355. package/types/providers/index.d.ts.map +1 -1
  356. package/types/providers/native/deepLink.d.ts +29 -4
  357. package/types/providers/native/deepLink.d.ts.map +1 -1
  358. package/types/providers/native/inject.d.ts +1 -7
  359. package/types/providers/native/inject.d.ts.map +1 -1
  360. package/types/providers/walletBridge.d.ts +17 -0
  361. package/types/providers/walletBridge.d.ts.map +1 -0
  362. package/types/providers/walletConfig.d.ts +18 -1
  363. 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"}
@@ -0,0 +1,44 @@
1
+ import type { ScreenDef } from "@multiplatform.one/connectkit";
2
+ import type { ComponentType, ReactNode } from "react";
3
+ import { type WalletMessageRegistry, type WalletMessageSpec } from "./message";
4
+ import type { ConnectionDriver } from "./types";
5
+ /** What a family package hands the core: `eth({chains})`, `sol({rpcUrl})`, `gpg()`. */
6
+ export interface WalletFamilyDefinition {
7
+ /** Short family id, the one the Keycloak message names: `eth`, `sol`, `sui`, `btc`, `gpg`. */
8
+ readonly id: string;
9
+ readonly label: string;
10
+ /** Other names callers use for the family, such as the ecosystem name `evm` for `eth`. */
11
+ readonly aliases?: readonly string[];
12
+ readonly message: WalletMessageSpec;
13
+ /**
14
+ * Makes the family's connection driver. The store calls it once, the first
15
+ * time it needs the family, so a family nobody touches starts nothing.
16
+ */
17
+ readonly driver?: () => ConnectionDriver;
18
+ /** Signs without a wallet connection (GPG). Such a family has no driver. */
19
+ readonly connectionless?: boolean;
20
+ /** Modal screens the family contributes. */
21
+ readonly screens?: readonly ScreenDef[];
22
+ /** A provider the family needs mounted around the app. */
23
+ readonly Provider?: ComponentType<{
24
+ children?: ReactNode;
25
+ }>;
26
+ }
27
+ export interface WalletFamily extends WalletFamilyDefinition {
28
+ readonly aliases: readonly string[];
29
+ readonly connectionless: boolean;
30
+ }
31
+ /** Validates a family definition and freezes it. */
32
+ export declare function defineWalletFamily(definition: WalletFamilyDefinition): WalletFamily;
33
+ export interface FamilyRegistry {
34
+ /** In the order the app listed them, which is the connect list's order. */
35
+ readonly families: readonly WalletFamily[];
36
+ /** The family for an id or alias, or undefined. */
37
+ get(family: string): WalletFamily | undefined;
38
+ /** The family for an id or alias. Throws naming the registered families. */
39
+ require(family: string): WalletFamily;
40
+ readonly messages: WalletMessageRegistry;
41
+ }
42
+ /** The families one app registered. Refuses a family, id or alias registered twice. */
43
+ export declare function createFamilyRegistry(families: readonly WalletFamily[]): FamilyRegistry;
44
+ //# sourceMappingURL=family.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"family.d.ts","sourceRoot":"","sources":["../../src/core/family.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACvB,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,uFAAuF;AACvF,MAAM,WAAW,sBAAsB;IACrC,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0FAA0F;IAC1F,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,gBAAgB,CAAC;IACzC,4EAA4E;IAC5E,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IACxC,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,YAAa,SAAQ,sBAAsB;IAC1D,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED,oDAAoD;AACpD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,sBAAsB,GAAG,YAAY,CA8BnF;AAED,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C,mDAAmD;IACnD,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IAC9C,4EAA4E;IAC5E,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;CAC1C;AAED,uFAAuF;AACvF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,GAAG,cAAc,CAsBtF"}
@@ -0,0 +1,7 @@
1
+ export { createFamilyRegistry, defineWalletFamily, type FamilyRegistry, type WalletFamily, type WalletFamilyDefinition, } from "./family";
2
+ export { createMessageRegistry, formatWalletMessage, type MessageFamily, type WalletMessageRegistry, type WalletMessageSpec, } from "./message";
3
+ export { createConnectionStore, defaultConnectionStorageKey, type ConnectionStore, type ConnectionStoreOptions, type FamilyConnector, } from "./store";
4
+ export { ConnectionProvider, useConnection, useConnectionStore, type ConnectionProviderProps, } from "./react";
5
+ export type { ConnectionDriver, ConnectionState, ConnectionStatus, ConnectionStorage, DriverAccount, DriverConnectOptions, DriverState, SavedConnection, WalletConnector, } from "./types";
6
+ export { UnsupportedClientMethodError, type ChainClient, type ClientCapability, type ClientFamily, } from "../clients/types";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,sBAAsB,GAC5B,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,GACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,GACrB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,eAAe,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,4BAA4B,EAC5B,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,YAAY,GAClB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,44 @@
1
+ import type { WalletMessageOptions } from "../message/buildWalletMessage";
2
+ /**
3
+ * How one family's sign-in message differs from the shared envelope. A family
4
+ * package defines its spec; the envelope (domain line, statement, URI, Version,
5
+ * Chain ID, Nonce, Issued At) is the same bytes the Keycloak verifiers parse.
6
+ */
7
+ export interface WalletMessageSpec {
8
+ /** First-line text after the domain, which the verifiers content-sniff. */
9
+ readonly header: string;
10
+ /** Default statement. Null means none. */
11
+ readonly statement: string | null;
12
+ /** The `Chain ID:` value when the caller gives none. Null omits the line. */
13
+ readonly chainId: string | null;
14
+ /** Whether the message names the signer's address. GPG's identity is its key. Default true. */
15
+ readonly address?: boolean;
16
+ /**
17
+ * Honour a numeric `chainId` option. Only EVM chain ids are numbers; elsewhere
18
+ * a number is a connector's synthetic id and is ignored.
19
+ */
20
+ readonly numericChainId?: boolean;
21
+ /** EIP-4361 keeps an empty line where an omitted statement would be. */
22
+ readonly keepStatementLine?: boolean;
23
+ /** Canonical address form, such as EIP-55 for EVM. */
24
+ readonly normalizeAddress?: (address: string) => string;
25
+ }
26
+ export interface MessageFamily {
27
+ readonly id: string;
28
+ readonly aliases?: readonly string[];
29
+ readonly message: WalletMessageSpec;
30
+ }
31
+ export interface WalletMessageRegistry {
32
+ /** Registered family ids, in registration order. */
33
+ readonly families: readonly string[];
34
+ /** The family id for an id or alias, or undefined. */
35
+ resolve(family: string): string | undefined;
36
+ spec(family: string): WalletMessageSpec | undefined;
37
+ /** Builds the sign-in message. Throws for a family nobody registered. */
38
+ build(family: string, opts: WalletMessageOptions): string;
39
+ }
40
+ /** Builds one sign-in message from a family spec. `family` only names the family in errors. */
41
+ export declare function formatWalletMessage(spec: WalletMessageSpec, opts: WalletMessageOptions, family?: string): string;
42
+ /** The message half of the family registry: family id or alias to spec. */
43
+ export declare function createMessageRegistry(families: Iterable<MessageFamily>): WalletMessageRegistry;
44
+ //# sourceMappingURL=message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/core/message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAG1E;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,+FAA+F;IAC/F,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,wEAAwE;IACxE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,sDAAsD;IACtD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;CACzD;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;CACrC;AAED,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,sDAAsD;IACtD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAC;IACpD,yEAAyE;IACzE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAAC;CAC3D;AAaD,+FAA+F;AAC/F,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,oBAAoB,EAC1B,MAAM,SAAW,GAChB,MAAM,CAiCR;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,qBAAqB,CAsB9F"}
@@ -0,0 +1,7 @@
1
+ export declare function assertName(kind: string, name: unknown): asserts name is string;
2
+ /** Maps every id and alias to its entry's id, refusing a name two entries claim. */
3
+ export declare function nameTable(entries: Iterable<{
4
+ readonly id: string;
5
+ readonly aliases?: readonly string[];
6
+ }>): Map<string, string>;
7
+ //# sourceMappingURL=names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../src/core/names.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAI9E;AAED,oFAAoF;AACpF,wBAAgB,SAAS,CACvB,OAAO,EAAE,QAAQ,CAAC;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC,GAC/E,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBrB"}
@@ -0,0 +1,14 @@
1
+ import { type ReactNode } from "react";
2
+ import type { ConnectionStore } from "./store";
3
+ import type { ConnectionState } from "./types";
4
+ export interface ConnectionProviderProps {
5
+ store: ConnectionStore;
6
+ children?: ReactNode;
7
+ }
8
+ /** Makes one connection store the app's. Web3Provider mounts this once it owns a store. */
9
+ export declare function ConnectionProvider({ store, children }: ConnectionProviderProps): import("react").FunctionComponentElement<import("react").ProviderProps<ConnectionStore | null>>;
10
+ /** The store under the nearest ConnectionProvider, for connect, disconnect and reconnect. */
11
+ export declare function useConnectionStore(): ConnectionStore;
12
+ /** The active connection: status, family, connector, address, chainId and client. */
13
+ export declare function useConnection(): ConnectionState;
14
+ //# sourceMappingURL=react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/core/react.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI/C,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,2FAA2F;AAC3F,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,uBAAuB,mGAE9E;AAED,6FAA6F;AAC7F,wBAAgB,kBAAkB,IAAI,eAAe,CAIpD;AAED,qFAAqF;AACrF,wBAAgB,aAAa,IAAI,eAAe,CAG/C"}