@metamask/connect-multichain 0.1.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 (241) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/LICENSE +20 -0
  3. package/README.md +15 -0
  4. package/dist/browser/es/connect-multichain.d.mts +585 -0
  5. package/dist/browser/es/connect-multichain.mjs +2609 -0
  6. package/dist/browser/es/connect-multichain.mjs.map +1 -0
  7. package/dist/browser/es/metafile-esm.json +1 -0
  8. package/dist/browser/iife/connect-multichain.d.ts +585 -0
  9. package/dist/browser/iife/connect-multichain.js +30057 -0
  10. package/dist/browser/iife/connect-multichain.js.map +1 -0
  11. package/dist/browser/iife/metafile-iife.json +1 -0
  12. package/dist/browser/umd/connect-multichain.d.ts +585 -0
  13. package/dist/browser/umd/connect-multichain.js +2622 -0
  14. package/dist/browser/umd/connect-multichain.js.map +1 -0
  15. package/dist/browser/umd/metafile-cjs.json +1 -0
  16. package/dist/node/cjs/connect-multichain.d.ts +585 -0
  17. package/dist/node/cjs/connect-multichain.js +2603 -0
  18. package/dist/node/cjs/connect-multichain.js.map +1 -0
  19. package/dist/node/cjs/metafile-cjs.json +1 -0
  20. package/dist/node/es/connect-multichain.d.mts +585 -0
  21. package/dist/node/es/connect-multichain.mjs +2564 -0
  22. package/dist/node/es/connect-multichain.mjs.map +1 -0
  23. package/dist/node/es/metafile-esm.json +1 -0
  24. package/dist/react-native/es/connect-multichain.d.mts +585 -0
  25. package/dist/react-native/es/connect-multichain.mjs +2517 -0
  26. package/dist/react-native/es/connect-multichain.mjs.map +1 -0
  27. package/dist/react-native/es/metafile-esm.json +1 -0
  28. package/dist/src/config/index.d.ts +4 -0
  29. package/dist/src/config/index.d.ts.map +1 -0
  30. package/dist/src/config/index.js +4 -0
  31. package/dist/src/config/index.js.map +1 -0
  32. package/dist/src/domain/errors/base.d.ts +7 -0
  33. package/dist/src/domain/errors/base.d.ts.map +1 -0
  34. package/dist/src/domain/errors/base.js +8 -0
  35. package/dist/src/domain/errors/base.js.map +1 -0
  36. package/dist/src/domain/errors/index.d.ts +3 -0
  37. package/dist/src/domain/errors/index.d.ts.map +1 -0
  38. package/dist/src/domain/errors/index.js +2 -0
  39. package/dist/src/domain/errors/index.js.map +1 -0
  40. package/dist/src/domain/errors/rpc.d.ts +25 -0
  41. package/dist/src/domain/errors/rpc.d.ts.map +1 -0
  42. package/dist/src/domain/errors/rpc.js +33 -0
  43. package/dist/src/domain/errors/rpc.js.map +1 -0
  44. package/dist/src/domain/errors/storage.d.ts +24 -0
  45. package/dist/src/domain/errors/storage.d.ts.map +1 -0
  46. package/dist/src/domain/errors/storage.js +30 -0
  47. package/dist/src/domain/errors/storage.js.map +1 -0
  48. package/dist/src/domain/errors/types.d.ts +7 -0
  49. package/dist/src/domain/errors/types.d.ts.map +1 -0
  50. package/dist/src/domain/errors/types.js +2 -0
  51. package/dist/src/domain/errors/types.js.map +1 -0
  52. package/dist/src/domain/events/index.d.ts +39 -0
  53. package/dist/src/domain/events/index.d.ts.map +1 -0
  54. package/dist/src/domain/events/index.js +58 -0
  55. package/dist/src/domain/events/index.js.map +1 -0
  56. package/dist/src/domain/events/types/index.d.ts +8 -0
  57. package/dist/src/domain/events/types/index.d.ts.map +1 -0
  58. package/dist/src/domain/events/types/index.js +2 -0
  59. package/dist/src/domain/events/types/index.js.map +1 -0
  60. package/dist/src/domain/index.d.ts +9 -0
  61. package/dist/src/domain/index.d.ts.map +1 -0
  62. package/dist/src/domain/index.js +9 -0
  63. package/dist/src/domain/index.js.map +1 -0
  64. package/dist/src/domain/logger/index.d.ts +41 -0
  65. package/dist/src/domain/logger/index.d.ts.map +1 -0
  66. package/dist/src/domain/logger/index.js +79 -0
  67. package/dist/src/domain/logger/index.js.map +1 -0
  68. package/dist/src/domain/multichain/api/constants.d.ts +5 -0
  69. package/dist/src/domain/multichain/api/constants.d.ts.map +1 -0
  70. package/dist/src/domain/multichain/api/constants.js +101 -0
  71. package/dist/src/domain/multichain/api/constants.js.map +1 -0
  72. package/dist/src/domain/multichain/api/eip155.d.ts +58 -0
  73. package/dist/src/domain/multichain/api/eip155.d.ts.map +1 -0
  74. package/dist/src/domain/multichain/api/eip155.js +2 -0
  75. package/dist/src/domain/multichain/api/eip155.js.map +1 -0
  76. package/dist/src/domain/multichain/api/infura.d.ts +3 -0
  77. package/dist/src/domain/multichain/api/infura.d.ts.map +1 -0
  78. package/dist/src/domain/multichain/api/infura.js +10 -0
  79. package/dist/src/domain/multichain/api/infura.js.map +1 -0
  80. package/dist/src/domain/multichain/api/types.d.ts +89 -0
  81. package/dist/src/domain/multichain/api/types.d.ts.map +1 -0
  82. package/dist/src/domain/multichain/api/types.js +2 -0
  83. package/dist/src/domain/multichain/api/types.js.map +1 -0
  84. package/dist/src/domain/multichain/index.d.ts +51 -0
  85. package/dist/src/domain/multichain/index.d.ts.map +1 -0
  86. package/dist/src/domain/multichain/index.js +33 -0
  87. package/dist/src/domain/multichain/index.js.map +1 -0
  88. package/dist/src/domain/multichain/types.d.ts +102 -0
  89. package/dist/src/domain/multichain/types.d.ts.map +1 -0
  90. package/dist/src/domain/multichain/types.js +2 -0
  91. package/dist/src/domain/multichain/types.js.map +1 -0
  92. package/dist/src/domain/platform/index.d.ts +17 -0
  93. package/dist/src/domain/platform/index.d.ts.map +1 -0
  94. package/dist/src/domain/platform/index.js +122 -0
  95. package/dist/src/domain/platform/index.js.map +1 -0
  96. package/dist/src/domain/store/adapter.d.ts +10 -0
  97. package/dist/src/domain/store/adapter.d.ts.map +1 -0
  98. package/dist/src/domain/store/adapter.js +6 -0
  99. package/dist/src/domain/store/adapter.js.map +1 -0
  100. package/dist/src/domain/store/client.d.ts +16 -0
  101. package/dist/src/domain/store/client.d.ts.map +1 -0
  102. package/dist/src/domain/store/client.js +3 -0
  103. package/dist/src/domain/store/client.js.map +1 -0
  104. package/dist/src/domain/store/index.d.ts +3 -0
  105. package/dist/src/domain/store/index.d.ts.map +1 -0
  106. package/dist/src/domain/store/index.js +3 -0
  107. package/dist/src/domain/store/index.js.map +1 -0
  108. package/dist/src/domain/ui/factory.d.ts +26 -0
  109. package/dist/src/domain/ui/factory.d.ts.map +1 -0
  110. package/dist/src/domain/ui/factory.js +2 -0
  111. package/dist/src/domain/ui/factory.js.map +1 -0
  112. package/dist/src/domain/ui/index.d.ts +3 -0
  113. package/dist/src/domain/ui/index.d.ts.map +1 -0
  114. package/dist/src/domain/ui/index.js +2 -0
  115. package/dist/src/domain/ui/index.js.map +1 -0
  116. package/dist/src/domain/ui/types.d.ts +34 -0
  117. package/dist/src/domain/ui/types.d.ts.map +1 -0
  118. package/dist/src/domain/ui/types.js +38 -0
  119. package/dist/src/domain/ui/types.js.map +1 -0
  120. package/dist/src/domain/utils/index.d.ts +7 -0
  121. package/dist/src/domain/utils/index.d.ts.map +1 -0
  122. package/dist/src/domain/utils/index.js +9 -0
  123. package/dist/src/domain/utils/index.js.map +1 -0
  124. package/dist/src/index.browser.d.ts +4 -0
  125. package/dist/src/index.browser.d.ts.map +1 -0
  126. package/dist/src/index.browser.js +28 -0
  127. package/dist/src/index.browser.js.map +1 -0
  128. package/dist/src/index.native.d.ts +4 -0
  129. package/dist/src/index.native.d.ts.map +1 -0
  130. package/dist/src/index.native.js +28 -0
  131. package/dist/src/index.native.js.map +1 -0
  132. package/dist/src/index.node.d.ts +4 -0
  133. package/dist/src/index.node.d.ts.map +1 -0
  134. package/dist/src/index.node.js +28 -0
  135. package/dist/src/index.node.js.map +1 -0
  136. package/dist/src/multichain/index.d.ts +41 -0
  137. package/dist/src/multichain/index.d.ts.map +1 -0
  138. package/dist/src/multichain/index.js +499 -0
  139. package/dist/src/multichain/index.js.map +1 -0
  140. package/dist/src/multichain/rpc/handlers/rpcClient.d.ts +19 -0
  141. package/dist/src/multichain/rpc/handlers/rpcClient.d.ts.map +1 -0
  142. package/dist/src/multichain/rpc/handlers/rpcClient.js +105 -0
  143. package/dist/src/multichain/rpc/handlers/rpcClient.js.map +1 -0
  144. package/dist/src/multichain/rpc/requestRouter.d.ts +29 -0
  145. package/dist/src/multichain/rpc/requestRouter.d.ts.map +1 -0
  146. package/dist/src/multichain/rpc/requestRouter.js +104 -0
  147. package/dist/src/multichain/rpc/requestRouter.js.map +1 -0
  148. package/dist/src/multichain/transports/default/index.d.ts +17 -0
  149. package/dist/src/multichain/transports/default/index.d.ts.map +1 -0
  150. package/dist/src/multichain/transports/default/index.js +101 -0
  151. package/dist/src/multichain/transports/default/index.js.map +1 -0
  152. package/dist/src/multichain/transports/mwp/KeyManager.d.ts +9 -0
  153. package/dist/src/multichain/transports/mwp/KeyManager.d.ts.map +1 -0
  154. package/dist/src/multichain/transports/mwp/KeyManager.js +35 -0
  155. package/dist/src/multichain/transports/mwp/KeyManager.js.map +1 -0
  156. package/dist/src/multichain/transports/mwp/index.d.ts +65 -0
  157. package/dist/src/multichain/transports/mwp/index.d.ts.map +1 -0
  158. package/dist/src/multichain/transports/mwp/index.js +323 -0
  159. package/dist/src/multichain/transports/mwp/index.js.map +1 -0
  160. package/dist/src/multichain/utils/index.d.ts +41 -0
  161. package/dist/src/multichain/utils/index.d.ts.map +1 -0
  162. package/dist/src/multichain/utils/index.js +239 -0
  163. package/dist/src/multichain/utils/index.js.map +1 -0
  164. package/dist/src/store/adapters/node.d.ts +9 -0
  165. package/dist/src/store/adapters/node.d.ts.map +1 -0
  166. package/dist/src/store/adapters/node.js +34 -0
  167. package/dist/src/store/adapters/node.js.map +1 -0
  168. package/dist/src/store/adapters/rn.d.ts +8 -0
  169. package/dist/src/store/adapters/rn.d.ts.map +1 -0
  170. package/dist/src/store/adapters/rn.js +33 -0
  171. package/dist/src/store/adapters/rn.js.map +1 -0
  172. package/dist/src/store/adapters/web.d.ts +16 -0
  173. package/dist/src/store/adapters/web.d.ts.map +1 -0
  174. package/dist/src/store/adapters/web.js +99 -0
  175. package/dist/src/store/adapters/web.js.map +1 -0
  176. package/dist/src/store/index.d.ts +17 -0
  177. package/dist/src/store/index.d.ts.map +1 -0
  178. package/dist/src/store/index.js +130 -0
  179. package/dist/src/store/index.js.map +1 -0
  180. package/dist/src/ui/index.d.ts +45 -0
  181. package/dist/src/ui/index.d.ts.map +1 -0
  182. package/dist/src/ui/index.js +185 -0
  183. package/dist/src/ui/index.js.map +1 -0
  184. package/dist/src/ui/modals/base/AbstractInstallModal.d.ts +16 -0
  185. package/dist/src/ui/modals/base/AbstractInstallModal.d.ts.map +1 -0
  186. package/dist/src/ui/modals/base/AbstractInstallModal.js +90 -0
  187. package/dist/src/ui/modals/base/AbstractInstallModal.js.map +1 -0
  188. package/dist/src/ui/modals/base/AbstractOTPModal.d.ts +8 -0
  189. package/dist/src/ui/modals/base/AbstractOTPModal.d.ts.map +1 -0
  190. package/dist/src/ui/modals/base/AbstractOTPModal.js +16 -0
  191. package/dist/src/ui/modals/base/AbstractOTPModal.js.map +1 -0
  192. package/dist/src/ui/modals/base/utils.d.ts +3 -0
  193. package/dist/src/ui/modals/base/utils.d.ts.map +1 -0
  194. package/dist/src/ui/modals/base/utils.js +30 -0
  195. package/dist/src/ui/modals/base/utils.js.map +1 -0
  196. package/dist/src/ui/modals/node/index.d.ts +3 -0
  197. package/dist/src/ui/modals/node/index.d.ts.map +1 -0
  198. package/dist/src/ui/modals/node/index.js +3 -0
  199. package/dist/src/ui/modals/node/index.js.map +1 -0
  200. package/dist/src/ui/modals/node/install.d.ts +9 -0
  201. package/dist/src/ui/modals/node/install.d.ts.map +1 -0
  202. package/dist/src/ui/modals/node/install.js +47 -0
  203. package/dist/src/ui/modals/node/install.js.map +1 -0
  204. package/dist/src/ui/modals/node/otp.d.ts +10 -0
  205. package/dist/src/ui/modals/node/otp.d.ts.map +1 -0
  206. package/dist/src/ui/modals/node/otp.js +10 -0
  207. package/dist/src/ui/modals/node/otp.js.map +1 -0
  208. package/dist/src/ui/modals/rn/index.d.ts +3 -0
  209. package/dist/src/ui/modals/rn/index.d.ts.map +1 -0
  210. package/dist/src/ui/modals/rn/index.js +3 -0
  211. package/dist/src/ui/modals/rn/index.js.map +1 -0
  212. package/dist/src/ui/modals/rn/install.d.ts +7 -0
  213. package/dist/src/ui/modals/rn/install.d.ts.map +1 -0
  214. package/dist/src/ui/modals/rn/install.js +9 -0
  215. package/dist/src/ui/modals/rn/install.js.map +1 -0
  216. package/dist/src/ui/modals/rn/otp.d.ts +10 -0
  217. package/dist/src/ui/modals/rn/otp.d.ts.map +1 -0
  218. package/dist/src/ui/modals/rn/otp.js +10 -0
  219. package/dist/src/ui/modals/rn/otp.js.map +1 -0
  220. package/dist/src/ui/modals/types.d.ts +13 -0
  221. package/dist/src/ui/modals/types.d.ts.map +1 -0
  222. package/dist/src/ui/modals/types.js +2 -0
  223. package/dist/src/ui/modals/types.js.map +1 -0
  224. package/dist/src/ui/modals/web/index.d.ts +3 -0
  225. package/dist/src/ui/modals/web/index.d.ts.map +1 -0
  226. package/dist/src/ui/modals/web/index.js +3 -0
  227. package/dist/src/ui/modals/web/index.js.map +1 -0
  228. package/dist/src/ui/modals/web/install.d.ts +7 -0
  229. package/dist/src/ui/modals/web/install.d.ts.map +1 -0
  230. package/dist/src/ui/modals/web/install.js +32 -0
  231. package/dist/src/ui/modals/web/install.js.map +1 -0
  232. package/dist/src/ui/modals/web/otp.d.ts +10 -0
  233. package/dist/src/ui/modals/web/otp.d.ts.map +1 -0
  234. package/dist/src/ui/modals/web/otp.js +10 -0
  235. package/dist/src/ui/modals/web/otp.js.map +1 -0
  236. package/dist/src/ui/qr.d.ts +3 -0
  237. package/dist/src/ui/qr.d.ts.map +1 -0
  238. package/dist/src/ui/qr.js +32 -0
  239. package/dist/src/ui/qr.js.map +1 -0
  240. package/dist/types/connect-multichain.d.ts +585 -0
  241. package/package.json +111 -0
@@ -0,0 +1,89 @@
1
+ import { CaipChainId } from '@metamask/utils';
2
+ import type EIP155 from './eip155';
3
+ /**
4
+ * Represents a blockchain scope identifier in CAIP format.
5
+ *
6
+ * Scopes define which blockchain networks and standards the SDK
7
+ * can interact with. The format follows CAIP standards for
8
+ * blockchain identification.
9
+ *
10
+ * @template T - The RPC API type to extract available scopes from
11
+ */
12
+ export type Scope<T extends RPCAPI = RPCAPI> = `eip155:${string}` | `solana:${string}` | `${Extract<keyof T, string>}:${string}`;
13
+ /**
14
+ * Represents a generic RPC (Remote Procedure Call) method function type.
15
+ *
16
+ * This type defines the signature for RPC methods that can be either synchronous
17
+ * or asynchronous, providing flexibility for different types of API calls.
18
+ *
19
+ * @template Params - The type of parameters that the RPC method accepts
20
+ * @template Return - The type of value that the RPC method returns
21
+ *
22
+ * @param params - The parameters to pass to the RPC method
23
+ * @returns Either a Promise that resolves to the return value, or the return value directly
24
+ */
25
+ export type RpcMethod<Params, Return> = (params: Params) => Promise<Return> | Return;
26
+ /**
27
+ * Defines the structure of the RPC API interface.
28
+ *
29
+ * This type represents the available RPC APIs organized by blockchain standard.
30
+ * Currently supports EIP-155 (Ethereum) with the potential for additional
31
+ * blockchain standards to be added in the future.
32
+ */
33
+ export type RPCAPI = {
34
+ /** EIP-155 compliant RPC methods for Ethereum-based chains */
35
+ eip155: EIP155;
36
+ };
37
+ /**
38
+ * Callback function type for handling incoming notifications.
39
+ *
40
+ * This type defines the signature for functions that process notification
41
+ * messages received from RPC connections.
42
+ *
43
+ * @param notification - The notification object to handle
44
+ */
45
+ export type NotificationCallback = (notification: unknown) => void;
46
+ /**
47
+ * Options for invoking RPC methods with specific scope and request parameters.
48
+ *
49
+ * This type defines the structure for method invocation options, allowing
50
+ * callers to specify both the blockchain scope and the specific request details.
51
+ */
52
+ export type InvokeMethodOptions = {
53
+ /** The blockchain scope/standard to use for the method call */
54
+ scope: Scope;
55
+ /** The request details including method name and parameters */
56
+ request: {
57
+ /** The name of the RPC method to invoke */
58
+ method: string;
59
+ /** The parameters to pass to the RPC method */
60
+ params: unknown;
61
+ };
62
+ };
63
+ /**
64
+ * Mapping of CAIP chain IDs to their corresponding RPC URLs.
65
+ *
66
+ * This type defines the structure for providing custom RPC endpoints
67
+ * for different blockchain networks using CAIP-2 format identifiers.
68
+ */
69
+ export type RpcUrlsMap = {
70
+ /** CAIP-2 format chain ID mapped to its RPC URL (e.g., "eip155:1" -> "https://...") */
71
+ [chainId: CaipChainId]: string;
72
+ };
73
+ /**
74
+ * Represents the structure of a JSON-RPC response.
75
+ *
76
+ * This type defines the expected format of JSON-RPC responses from RPC endpoints.
77
+ * It includes the unique identifier for the request, the JSON-RPC version used,
78
+ * and the result of the RPC call.
79
+ *
80
+ * id - The unique identifier for the request
81
+ * jsonrpc - The JSON-RPC version used
82
+ * result - The result of the RPC call JSON
83
+ */
84
+ export type RPCResponse = {
85
+ id: number;
86
+ jsonrpc: string;
87
+ result: unknown;
88
+ };
89
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/domain/multichain/api/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAEnC;;;;;;;;GAQG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IACvC,UAAU,MAAM,EAAE,GAClB,UAAU,MAAM,EAAE,GAClB,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;AAE5C;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,IAAI,CACtC,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAE9B;;;;;;GAMG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,+DAA+D;IAC/D,KAAK,EAAE,KAAK,CAAC;IACb,+DAA+D;IAC/D,OAAO,EAAE;QACP,2CAA2C;QAC3C,MAAM,EAAE,MAAM,CAAC;QACf,+CAA+C;QAC/C,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;CACH,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,uFAAuF;IACvF,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAAC;CAChC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/domain/multichain/api/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ import type { MultichainApiClient, Transport } from '@metamask/multichain-api-client';
2
+ import type { CaipAccountId, Json } from '@metamask/utils';
3
+ import { EventEmitter, type SDKEvents } from '../events';
4
+ import type { StoreClient } from '../store/client';
5
+ import type { InvokeMethodOptions, RPCAPI, Scope } from './api/types';
6
+ import type { MultichainOptions } from './types';
7
+ export type SDKState = 'pending' | 'loaded' | 'disconnected' | 'connected' | 'connecting';
8
+ export declare enum TransportType {
9
+ Browser = "browser",
10
+ MPW = "mwp",
11
+ UNKNOWN = "unknown"
12
+ }
13
+ /**
14
+ * Abstract base class for the Multichain SDK implementation.
15
+ *
16
+ * This class defines the core interface that all Multichain SDK implementations
17
+ * must provide, including session management, connection handling, and method invocation.
18
+ */
19
+ export declare abstract class MultichainCore extends EventEmitter<SDKEvents> {
20
+ protected readonly options: MultichainOptions;
21
+ abstract storage: StoreClient;
22
+ abstract state: SDKState;
23
+ abstract provider: MultichainApiClient<RPCAPI>;
24
+ abstract transport: Transport;
25
+ /**
26
+ * Establishes a connection to the multichain provider, or re-use existing session
27
+ *
28
+ * @returns Promise that resolves to the session data
29
+ */
30
+ abstract connect(scopes: Scope[], caipAccountIds: CaipAccountId[]): Promise<void>;
31
+ /**
32
+ * Disconnects from the multichain provider.
33
+ *
34
+ * @returns Promise that resolves when disconnection is complete
35
+ */
36
+ abstract disconnect(): Promise<void>;
37
+ /**
38
+ * Invokes an RPC method with the specified options.
39
+ *
40
+ * @param options - The method invocation options including scope and request details
41
+ * @returns Promise that resolves to the method result
42
+ */
43
+ abstract invokeMethod(options: InvokeMethodOptions): Promise<Json>;
44
+ constructor(options: MultichainOptions);
45
+ }
46
+ export declare function getTransportType(type: string): TransportType;
47
+ export * from './api/constants';
48
+ export * from './api/infura';
49
+ export type * from './api/types';
50
+ export type * from './types';
51
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/multichain/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACV,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,MAAM,QAAQ,GAChB,SAAS,GACT,QAAQ,GACR,cAAc,GACd,WAAW,GACX,YAAY,CAAC;AAEjB,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,GAAG,QAAQ;IACX,OAAO,YAAY;CACpB;AAED;;;;;GAKG;AACH,8BAAsB,cAAe,SAAQ,YAAY,CAAC,SAAS,CAAC;IAkCtD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB;IAjCzD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAE9B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IAEzB,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE/C,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAE9B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CACd,MAAM,EAAE,KAAK,EAAE,EACf,cAAc,EAAE,aAAa,EAAE,GAC9B,OAAO,CAAC,IAAI,CAAC;IAEhB;;;;OAIG;IACH,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAEpC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;gBAEnC,OAAO,EAAE,iBAAiB;CAG1D;AAGD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAS5D;AAED,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,mBAAmB,aAAa,CAAC;AACjC,mBAAmB,SAAS,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { EventEmitter } from '../events';
2
+ export var TransportType;
3
+ (function (TransportType) {
4
+ TransportType["Browser"] = "browser";
5
+ TransportType["MPW"] = "mwp";
6
+ TransportType["UNKNOWN"] = "unknown";
7
+ })(TransportType || (TransportType = {}));
8
+ /**
9
+ * Abstract base class for the Multichain SDK implementation.
10
+ *
11
+ * This class defines the core interface that all Multichain SDK implementations
12
+ * must provide, including session management, connection handling, and method invocation.
13
+ */
14
+ export class MultichainCore extends EventEmitter {
15
+ constructor(options) {
16
+ super();
17
+ this.options = options;
18
+ }
19
+ }
20
+ /* c8 ignore end */
21
+ export function getTransportType(type) {
22
+ switch (type) {
23
+ case 'browser':
24
+ return TransportType.Browser;
25
+ case 'mwp':
26
+ return TransportType.MPW;
27
+ default:
28
+ return TransportType.UNKNOWN;
29
+ }
30
+ }
31
+ export * from './api/constants';
32
+ export * from './api/infura';
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/domain/multichain/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAkB,MAAM,WAAW,CAAC;AAYzD,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,oCAAmB,CAAA;IACnB,4BAAW,CAAA;IACX,oCAAmB,CAAA;AACrB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED;;;;;GAKG;AACH,MAAM,OAAgB,cAAe,SAAQ,YAAuB;IAkClE,YAA+B,OAA0B;QACvD,KAAK,EAAE,CAAC;QADqB,YAAO,GAAP,OAAO,CAAmB;IAEzD,CAAC;CACF;AACD,mBAAmB;AAEnB,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,aAAa,CAAC,OAAO,CAAC;QAC/B,KAAK,KAAK;YACR,OAAO,aAAa,CAAC,GAAG,CAAC;QAC3B;YACE,OAAO,aAAa,CAAC,OAAO,CAAC;IACjC,CAAC;AACH,CAAC;AAED,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,102 @@
1
+ import type { SessionRequest } from '@metamask/mobile-wallet-protocol-core';
2
+ import type { Transport } from '@metamask/multichain-api-client';
3
+ import type { CaipAccountId } from '@metamask/utils';
4
+ import type { MultichainCore } from '.';
5
+ import type { ModalFactory } from '../../ui';
6
+ import type { PlatformType } from '../platform';
7
+ import type { StoreClient } from '../store';
8
+ import type { RpcUrlsMap, Scope } from './api/types';
9
+ export type { SessionData } from '@metamask/multichain-api-client';
10
+ /**
11
+ * Configuration settings for the dapp using the SDK.
12
+ *
13
+ * This type allows for two variants of dapp configuration:
14
+ * - Using a regular icon URL
15
+ * - Using a base64-encoded icon
16
+ */
17
+ export type DappSettings = {
18
+ name?: string;
19
+ url?: string;
20
+ } & ({
21
+ iconUrl?: string;
22
+ } | {
23
+ base64Icon?: string;
24
+ });
25
+ export type ConnectionRequest = {
26
+ sessionRequest: SessionRequest;
27
+ metadata: {
28
+ dapp: DappSettings;
29
+ sdk: {
30
+ version: string;
31
+ platform: PlatformType;
32
+ };
33
+ };
34
+ };
35
+ /**
36
+ * Constructor options for creating a Multichain SDK instance.
37
+ *
38
+ * This type defines all the configuration options available when
39
+ * initializing the SDK, including dapp settings, API configuration,
40
+ * analytics, storage, UI preferences, and transport options.
41
+ */
42
+ export type MultichainOptions = {
43
+ /** Dapp identification and branding settings */
44
+ dapp: DappSettings;
45
+ /** Optional API configuration for external services */
46
+ api?: {
47
+ /** The Infura API key to use for RPC requests */
48
+ infuraAPIKey?: string;
49
+ /** A map of RPC URLs to use for read-only requests */
50
+ readonlyRPCMap?: RpcUrlsMap;
51
+ };
52
+ /** Analytics configuration */
53
+ analytics?: {
54
+ enabled: false;
55
+ } | {
56
+ enabled: true;
57
+ integrationType: string;
58
+ };
59
+ /** Storage client for persisting SDK data */
60
+ storage: StoreClient;
61
+ /** UI configuration options */
62
+ ui: {
63
+ factory: ModalFactory;
64
+ headless?: boolean;
65
+ preferExtension?: boolean;
66
+ preferDesktop?: boolean;
67
+ };
68
+ mobile?: {
69
+ preferredOpenLink?: (deeplink: string, target?: string) => void;
70
+ /**
71
+ * The `MetaMaskSDK` constructor option `useDeeplink: boolean` controls which type of link is used:
72
+ * - If `true`, the SDK will attempt to use the `metamask://` deeplink.
73
+ * - If `false` (the default for web), the SDK will use the `https://metamask.app.link` universal link.
74
+ */
75
+ useDeeplink?: boolean;
76
+ };
77
+ /** Optional transport configuration */
78
+ transport?: {
79
+ /** Extension ID for browser extension transport */
80
+ extensionId?: string;
81
+ onNotification?: (notification: unknown) => void;
82
+ };
83
+ };
84
+ type MultiChainFNOptions = Omit<MultichainOptions, 'storage' | 'ui'> & {
85
+ ui?: Omit<MultichainOptions['ui'], 'factory'>;
86
+ } & {
87
+ storage?: StoreClient;
88
+ };
89
+ /**
90
+ * Complete options for Multichain SDK configuration.
91
+ *
92
+ * This type extends the base options with storage configuration,
93
+ * providing all necessary options for SDK initialization.
94
+ */
95
+ export type CreateMultichainFN = (options: MultiChainFNOptions) => Promise<MultichainCore>;
96
+ export type ExtendedTransport = Omit<Transport, 'connect'> & {
97
+ connect: (props?: {
98
+ scopes: Scope[];
99
+ caipAccountIds: CaipAccountId[];
100
+ }) => Promise<void>;
101
+ };
102
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/domain/multichain/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/domain/multichain/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ export declare enum PlatformType {
2
+ NonBrowser = "nodejs",
3
+ MetaMaskMobileWebview = "in-app-browser",
4
+ DesktopWeb = "web-desktop",
5
+ MobileWeb = "web-mobile",
6
+ ReactNative = "react-native"
7
+ }
8
+ export declare function getPlatformType(): PlatformType;
9
+ /**
10
+ * Check if MetaMask extension is installed
11
+ *
12
+ * @returns True if extension is installed, false otherwise
13
+ */
14
+ export declare function isMetamaskExtensionInstalled(): boolean;
15
+ export declare function isSecure(): boolean;
16
+ export declare function hasExtension(): Promise<boolean>;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/platform/index.ts"],"names":[],"mappings":"AAMA,oBAAY,YAAY;IAEtB,UAAU,WAAW;IAErB,qBAAqB,mBAAmB;IAExC,UAAU,gBAAgB;IAE1B,SAAS,eAAe;IAExB,WAAW,iBAAiB;CAC7B;AA8CD,wBAAgB,eAAe,IAAI,YAAY,CAc9C;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,IAAI,OAAO,CAMtD;AAED,wBAAgB,QAAQ,IAAI,OAAO,CAGlC;AAiCD,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAErD"}
@@ -0,0 +1,122 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ /* eslint-disable @typescript-eslint/explicit-function-return-type */
11
+ /* eslint-disable no-restricted-globals */
12
+ /* eslint-disable jsdoc/require-jsdoc */
13
+ /* eslint-disable @typescript-eslint/naming-convention */
14
+ import { parse } from 'bowser';
15
+ export var PlatformType;
16
+ (function (PlatformType) {
17
+ // React Native or Nodejs
18
+ PlatformType["NonBrowser"] = "nodejs";
19
+ // MetaMask Mobile in-app browser
20
+ PlatformType["MetaMaskMobileWebview"] = "in-app-browser";
21
+ // Desktop Browser
22
+ PlatformType["DesktopWeb"] = "web-desktop";
23
+ // Mobile Browser
24
+ PlatformType["MobileWeb"] = "web-mobile";
25
+ // ReactNative
26
+ PlatformType["ReactNative"] = "react-native";
27
+ })(PlatformType || (PlatformType = {}));
28
+ function isNotBrowser() {
29
+ var _a;
30
+ if (typeof window === 'undefined') {
31
+ return true;
32
+ }
33
+ if (!(window === null || window === void 0 ? void 0 : window.navigator)) {
34
+ return true;
35
+ }
36
+ if (typeof global !== 'undefined' &&
37
+ ((_a = global === null || global === void 0 ? void 0 : global.navigator) === null || _a === void 0 ? void 0 : _a.product) === 'ReactNative') {
38
+ return true;
39
+ }
40
+ return (navigator === null || navigator === void 0 ? void 0 : navigator.product) === 'ReactNative';
41
+ }
42
+ function isReactNative() {
43
+ var _a;
44
+ const hasWindowNavigator = typeof window !== 'undefined' && window.navigator !== undefined;
45
+ const nav = hasWindowNavigator ? window.navigator : undefined;
46
+ if (!nav) {
47
+ return false;
48
+ }
49
+ return hasWindowNavigator && ((_a = window.navigator) === null || _a === void 0 ? void 0 : _a.product) === 'ReactNative';
50
+ }
51
+ function isMetaMaskMobileWebView() {
52
+ return (typeof window !== 'undefined' &&
53
+ // @ts-expect-error ReactNativeWebView should be defined
54
+ Boolean(window.ReactNativeWebView) &&
55
+ Boolean(window.navigator.userAgent.endsWith('MetaMaskMobile')));
56
+ }
57
+ function isMobile() {
58
+ var _a, _b;
59
+ const browser = parse(window.navigator.userAgent);
60
+ return (((_a = browser === null || browser === void 0 ? void 0 : browser.platform) === null || _a === void 0 ? void 0 : _a.type) === 'mobile' || ((_b = browser === null || browser === void 0 ? void 0 : browser.platform) === null || _b === void 0 ? void 0 : _b.type) === 'tablet');
61
+ }
62
+ export function getPlatformType() {
63
+ if (isReactNative()) {
64
+ return PlatformType.ReactNative;
65
+ }
66
+ if (isNotBrowser()) {
67
+ return PlatformType.NonBrowser;
68
+ }
69
+ if (isMetaMaskMobileWebView()) {
70
+ return PlatformType.MetaMaskMobileWebview;
71
+ }
72
+ if (isMobile()) {
73
+ return PlatformType.MobileWeb;
74
+ }
75
+ return PlatformType.DesktopWeb;
76
+ }
77
+ /**
78
+ * Check if MetaMask extension is installed
79
+ *
80
+ * @returns True if extension is installed, false otherwise
81
+ */
82
+ export function isMetamaskExtensionInstalled() {
83
+ var _a;
84
+ if (typeof window === 'undefined') {
85
+ return false;
86
+ }
87
+ // @ts-expect-error ethereum should be defined
88
+ return Boolean((_a = window.ethereum) === null || _a === void 0 ? void 0 : _a.isMetaMask);
89
+ }
90
+ export function isSecure() {
91
+ const platformType = getPlatformType();
92
+ return isReactNative() || platformType === PlatformType.MobileWeb;
93
+ }
94
+ // Immediately start MetaMask detection when module loads
95
+ const detectionPromise = (() => __awaiter(void 0, void 0, void 0, function* () {
96
+ const pt = getPlatformType();
97
+ if (pt === PlatformType.NonBrowser || pt === PlatformType.ReactNative) {
98
+ return Promise.resolve(false);
99
+ }
100
+ return new Promise((resolve) => {
101
+ const providers = [];
102
+ const handler = (event) => {
103
+ var _a, _b;
104
+ if ((_b = (_a = event === null || event === void 0 ? void 0 : event.detail) === null || _a === void 0 ? void 0 : _a.info) === null || _b === void 0 ? void 0 : _b.rdns) {
105
+ providers.push(event.detail);
106
+ }
107
+ };
108
+ window.addEventListener('eip6963:announceProvider', handler);
109
+ window.dispatchEvent(new Event('eip6963:requestProvider'));
110
+ setTimeout(() => {
111
+ window.removeEventListener('eip6963:announceProvider', handler);
112
+ const hasMetaMask = providers.some((provider) => { var _a; return ((_a = provider === null || provider === void 0 ? void 0 : provider.info) === null || _a === void 0 ? void 0 : _a.rdns) === 'io.metamask'; });
113
+ resolve(hasMetaMask);
114
+ }, 300); // default timeout
115
+ });
116
+ }))();
117
+ export function hasExtension() {
118
+ return __awaiter(this, void 0, void 0, function* () {
119
+ return detectionPromise;
120
+ });
121
+ }
122
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/domain/platform/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export type StoreOptions = Record<string, any>;
2
+ export declare abstract class StoreAdapter {
3
+ options?: StoreOptions | undefined;
4
+ abstract platform: 'web' | 'rn' | 'node';
5
+ constructor(options?: StoreOptions | undefined);
6
+ abstract get(key: string): Promise<string | null>;
7
+ abstract set(key: string, value: string): Promise<void>;
8
+ abstract delete(key: string): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/domain/store/adapter.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE/C,8BAAsB,YAAY;IAGb,OAAO,CAAC,EAAE,YAAY;IAFzC,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;gBAEtB,OAAO,CAAC,EAAE,YAAY,YAAA;IAEzC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAEjD,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAEvD,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAC5C"}
@@ -0,0 +1,6 @@
1
+ export class StoreAdapter {
2
+ constructor(options) {
3
+ this.options = options;
4
+ }
5
+ }
6
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/domain/store/adapter.ts"],"names":[],"mappings":"AAKA,MAAM,OAAgB,YAAY;IAGhC,YAAmB,OAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;IAAG,CAAC;CAO9C"}
@@ -0,0 +1,16 @@
1
+ import type { StoreAdapter } from '.';
2
+ import type { TransportType } from '../multichain';
3
+ export declare abstract class StoreClient {
4
+ abstract adapter: StoreAdapter;
5
+ abstract getAnonId(): Promise<string>;
6
+ abstract getExtensionId(): Promise<string | null>;
7
+ abstract setExtensionId(extensionId: string): Promise<void>;
8
+ abstract getTransport(): Promise<TransportType | null>;
9
+ abstract setTransport(transport: TransportType): Promise<void>;
10
+ abstract removeTransport(): Promise<void>;
11
+ abstract setAnonId(anonId: string): Promise<void>;
12
+ abstract removeExtensionId(): Promise<void>;
13
+ abstract removeAnonId(): Promise<void>;
14
+ abstract getDebug(): Promise<string | null>;
15
+ }
16
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/domain/store/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,8BAAsB,WAAW;IAC/B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAE/B,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAErC,QAAQ,CAAC,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAEjD,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE3D,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAEtD,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAE9D,QAAQ,CAAC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAEzC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAEjD,QAAQ,CAAC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAE3C,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAEtC,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAC5C"}
@@ -0,0 +1,3 @@
1
+ export class StoreClient {
2
+ }
3
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/domain/store/client.ts"],"names":[],"mappings":"AAIA,MAAM,OAAgB,WAAW;CAsBhC"}
@@ -0,0 +1,3 @@
1
+ export * from './adapter';
2
+ export * from './client';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/store/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './adapter';
2
+ export * from './client';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/domain/store/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { Transport } from '@metamask/multichain-api-client';
2
+ import type { CaipAccountId } from '@metamask/utils';
3
+ import type { MultichainOptions, Scope, SessionData } from '../multichain';
4
+ /**
5
+ * Options passed when establishing a connection through a modal.
6
+ * Contains the scopes (permissions) and account IDs involved in the connection.
7
+ */
8
+ export type ModalFactoryConnectOptions = {
9
+ scopes: Scope[];
10
+ caipAccountIds: CaipAccountId[];
11
+ };
12
+ /**
13
+ * Configuration options for the modal factory.
14
+ * Combines mobile settings from SDK options with UI preferences and connection handling.
15
+ */
16
+ export type ModalFactoryOptions = Pick<MultichainOptions, 'mobile' | 'transport'> & {
17
+ ui: {
18
+ headless?: boolean;
19
+ preferExtension?: boolean;
20
+ preferDesktop?: boolean;
21
+ };
22
+ onConnection: (transport: Transport, options: ModalFactoryConnectOptions) => Promise<void>;
23
+ getCurrentSession: () => Promise<SessionData | undefined>;
24
+ connection?: ModalFactoryConnectOptions;
25
+ };
26
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/domain/ui/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE3E;;;GAGG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,iBAAiB,EACjB,QAAQ,GAAG,WAAW,CACvB,GAAG;IACF,EAAE,EAAE;QACF,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,YAAY,EAAE,CACZ,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,0BAA0B,KAChC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,iBAAiB,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAC1D,UAAU,CAAC,EAAE,0BAA0B,CAAC;CACzC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../src/domain/ui/factory.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export type * from './factory';
2
+ export * from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/ui/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,WAAW,CAAC;AAC/B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/domain/ui/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { Components } from '@metamask/multichain-ui';
2
+ import type { ConnectionRequest } from '../multichain';
3
+ export type OTPCode = string;
4
+ export type QRLink = string;
5
+ export type InstallWidgetProps = Components.MmInstallModal & {
6
+ parentElement?: Element;
7
+ connectionRequest: ConnectionRequest;
8
+ onClose: (shouldTerminate?: boolean) => void;
9
+ startDesktopOnboarding: () => void;
10
+ createConnectionRequest: () => Promise<ConnectionRequest>;
11
+ generateQRCode: (connectionRequest: ConnectionRequest) => Promise<QRLink>;
12
+ };
13
+ export type OTPCodeWidgetProps = Components.MmOtpModal & {
14
+ parentElement?: Element;
15
+ onClose: () => Promise<void>;
16
+ onDisconnect?: () => void;
17
+ createOTPCode: () => Promise<OTPCode>;
18
+ updateOTPCode: (otpValue: string) => void;
19
+ };
20
+ export type DataType = OTPCode | QRLink;
21
+ /**
22
+ * Abstract Modal class with shared functionality across all models
23
+ */
24
+ export declare abstract class Modal<Options, Data extends DataType = DataType> {
25
+ protected readonly options: Options;
26
+ protected abstract instance?: HTMLMmInstallModalElement | HTMLMmOtpModalElement | undefined;
27
+ abstract mount(): void;
28
+ abstract unmount(): void;
29
+ constructor(options: Options);
30
+ get isMounted(): boolean;
31
+ get data(): Data;
32
+ set data(data: Data);
33
+ }
34
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/domain/ui/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAC7B,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAE5B,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,cAAc,GAAG;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,sBAAsB,EAAE,MAAM,IAAI,CAAC;IACnC,uBAAuB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC1D,cAAc,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3E,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,UAAU,GAAG;IACvD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AACxC;;GAEG;AACH,8BAAsB,KAAK,CAAC,OAAO,EAAE,IAAI,SAAS,QAAQ,GAAG,QAAQ;IAWvD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO;IAV/C,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACxB,yBAAyB,GACzB,qBAAqB,GACrB,SAAS,CAAC;IAEd,QAAQ,CAAC,KAAK,IAAI,IAAI;IAEtB,QAAQ,CAAC,OAAO,IAAI,IAAI;gBAGO,OAAO,EAAE,OAAO;IAE/C,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,IAAI,IAAI,IAAI,CAkBf;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAgBlB;CACF"}