@metamask/keyring-api 10.0.0 → 11.0.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 (330) hide show
  1. package/CHANGELOG.md +16 -1
  2. package/dist/{JsonRpcRequest.js → JsonRpcRequest.cjs} +2 -2
  3. package/dist/JsonRpcRequest.cjs.map +1 -0
  4. package/dist/{JsonRpcRequest.d.ts → JsonRpcRequest.d.cts} +3 -2
  5. package/dist/JsonRpcRequest.d.cts.map +1 -0
  6. package/dist/JsonRpcRequest.d.mts +17 -0
  7. package/dist/JsonRpcRequest.d.mts.map +1 -0
  8. package/dist/JsonRpcRequest.mjs +10 -0
  9. package/dist/JsonRpcRequest.mjs.map +1 -0
  10. package/dist/{KeyringClient.js → KeyringClient.cjs} +4 -4
  11. package/dist/KeyringClient.cjs.map +1 -0
  12. package/dist/{KeyringClient.d.ts → KeyringClient.d.cts} +4 -3
  13. package/dist/KeyringClient.d.cts.map +1 -0
  14. package/dist/KeyringClient.d.mts +29 -0
  15. package/dist/KeyringClient.d.mts.map +1 -0
  16. package/dist/KeyringClient.mjs +120 -0
  17. package/dist/KeyringClient.mjs.map +1 -0
  18. package/dist/{KeyringSnapRpcClient.js → KeyringSnapRpcClient.cjs} +2 -2
  19. package/dist/KeyringSnapRpcClient.cjs.map +1 -0
  20. package/dist/{KeyringSnapRpcClient.d.ts → KeyringSnapRpcClient.d.cts} +6 -5
  21. package/dist/KeyringSnapRpcClient.d.cts.map +1 -0
  22. package/dist/KeyringSnapRpcClient.d.mts +40 -0
  23. package/dist/KeyringSnapRpcClient.d.mts.map +1 -0
  24. package/dist/KeyringSnapRpcClient.mjs +63 -0
  25. package/dist/KeyringSnapRpcClient.mjs.map +1 -0
  26. package/dist/api/{account.js → account.cjs} +12 -4
  27. package/dist/api/account.cjs.map +1 -0
  28. package/dist/api/{account.d.ts → account.d.cts} +12 -4
  29. package/dist/api/account.d.cts.map +1 -0
  30. package/dist/api/account.d.mts +70 -0
  31. package/dist/api/account.d.mts.map +1 -0
  32. package/dist/api/account.mjs +61 -0
  33. package/dist/api/account.mjs.map +1 -0
  34. package/dist/api/{balance.js → balance.cjs} +3 -3
  35. package/dist/api/balance.cjs.map +1 -0
  36. package/dist/api/{balance.d.ts → balance.d.cts} +2 -1
  37. package/dist/api/balance.d.cts.map +1 -0
  38. package/dist/api/balance.d.mts +10 -0
  39. package/dist/api/balance.d.mts.map +1 -0
  40. package/dist/api/balance.mjs +8 -0
  41. package/dist/api/balance.mjs.map +1 -0
  42. package/dist/api/{caip.js → caip.cjs} +5 -5
  43. package/dist/api/caip.cjs.map +1 -0
  44. package/dist/api/{caip.d.ts → caip.d.cts} +2 -1
  45. package/dist/api/caip.d.cts.map +1 -0
  46. package/dist/api/caip.d.mts +38 -0
  47. package/dist/api/caip.d.mts.map +1 -0
  48. package/dist/api/caip.mjs +43 -0
  49. package/dist/api/caip.mjs.map +1 -0
  50. package/dist/api/{export.js → export.cjs} +1 -1
  51. package/dist/api/export.cjs.map +1 -0
  52. package/dist/api/{export.d.ts → export.d.cts} +2 -1
  53. package/dist/api/export.d.cts.map +1 -0
  54. package/dist/api/export.d.mts +9 -0
  55. package/dist/api/export.d.mts.map +1 -0
  56. package/dist/api/export.mjs +4 -0
  57. package/dist/api/export.mjs.map +1 -0
  58. package/dist/api/{index.js → index.cjs} +7 -7
  59. package/dist/api/index.cjs.map +1 -0
  60. package/dist/api/index.d.cts +8 -0
  61. package/dist/api/index.d.cts.map +1 -0
  62. package/dist/api/index.d.mts +8 -0
  63. package/dist/api/index.d.mts.map +1 -0
  64. package/dist/api/index.mjs +7 -0
  65. package/dist/api/index.mjs.map +1 -0
  66. package/dist/api/{keyring.js → keyring.cjs} +1 -1
  67. package/dist/api/keyring.cjs.map +1 -0
  68. package/dist/api/{keyring.d.ts → keyring.d.cts} +8 -7
  69. package/dist/api/keyring.d.cts.map +1 -0
  70. package/dist/api/keyring.d.mts +160 -0
  71. package/dist/api/keyring.d.mts.map +1 -0
  72. package/dist/api/keyring.mjs +2 -0
  73. package/dist/api/keyring.mjs.map +1 -0
  74. package/dist/api/{request.js → request.cjs} +3 -3
  75. package/dist/api/request.cjs.map +1 -0
  76. package/dist/api/{request.d.ts → request.d.cts} +3 -2
  77. package/dist/api/request.d.cts.map +1 -0
  78. package/dist/api/request.d.mts +40 -0
  79. package/dist/api/request.d.mts.map +1 -0
  80. package/dist/api/request.mjs +26 -0
  81. package/dist/api/request.mjs.map +1 -0
  82. package/dist/api/{response.js → response.cjs} +2 -2
  83. package/dist/api/response.cjs.map +1 -0
  84. package/dist/api/{response.d.ts → response.d.cts} +2 -1
  85. package/dist/api/response.d.cts.map +1 -0
  86. package/dist/api/response.d.mts +25 -0
  87. package/dist/api/response.d.mts.map +1 -0
  88. package/dist/api/response.mjs +41 -0
  89. package/dist/api/response.mjs.map +1 -0
  90. package/dist/{eth/erc4337/index.js → btc/index.cjs} +2 -2
  91. package/dist/btc/index.cjs.map +1 -0
  92. package/dist/btc/index.d.cts +2 -0
  93. package/dist/btc/index.d.cts.map +1 -0
  94. package/dist/btc/index.d.mts +2 -0
  95. package/dist/btc/index.d.mts.map +1 -0
  96. package/dist/btc/index.mjs +2 -0
  97. package/dist/btc/index.mjs.map +1 -0
  98. package/dist/btc/{types.js → types.cjs} +3 -3
  99. package/dist/btc/types.cjs.map +1 -0
  100. package/dist/btc/{types.d.ts → types.d.cts} +2 -1
  101. package/dist/btc/types.d.cts.map +1 -0
  102. package/dist/btc/types.d.mts +34 -0
  103. package/dist/btc/types.d.mts.map +1 -0
  104. package/dist/btc/types.mjs +37 -0
  105. package/dist/btc/types.mjs.map +1 -0
  106. package/dist/{contexts.js → contexts.cjs} +1 -1
  107. package/dist/contexts.cjs.map +1 -0
  108. package/dist/{contexts.d.ts → contexts.d.cts} +1 -0
  109. package/dist/contexts.d.cts.map +1 -0
  110. package/dist/contexts.d.mts +8 -0
  111. package/dist/contexts.d.mts.map +1 -0
  112. package/dist/contexts.mjs +2 -0
  113. package/dist/contexts.mjs.map +1 -0
  114. package/dist/{btc/index.js → eth/erc4337/index.cjs} +2 -2
  115. package/dist/eth/erc4337/index.cjs.map +1 -0
  116. package/dist/eth/erc4337/index.d.cts +2 -0
  117. package/dist/eth/erc4337/index.d.cts.map +1 -0
  118. package/dist/eth/erc4337/index.d.mts +2 -0
  119. package/dist/eth/erc4337/index.d.mts.map +1 -0
  120. package/dist/eth/erc4337/index.mjs +2 -0
  121. package/dist/eth/erc4337/index.mjs.map +1 -0
  122. package/dist/eth/erc4337/{types.js → types.cjs} +4 -4
  123. package/dist/eth/erc4337/types.cjs.map +1 -0
  124. package/dist/eth/erc4337/{types.d.ts → types.d.cts} +6 -5
  125. package/dist/eth/erc4337/types.d.cts.map +1 -0
  126. package/dist/eth/erc4337/types.d.mts +98 -0
  127. package/dist/eth/erc4337/types.d.mts.map +1 -0
  128. package/dist/eth/erc4337/types.mjs +59 -0
  129. package/dist/eth/erc4337/types.mjs.map +1 -0
  130. package/dist/eth/index.cjs +20 -0
  131. package/dist/eth/index.cjs.map +1 -0
  132. package/dist/eth/index.d.cts +4 -0
  133. package/dist/eth/index.d.cts.map +1 -0
  134. package/dist/eth/index.d.mts +4 -0
  135. package/dist/eth/index.d.mts.map +1 -0
  136. package/dist/eth/index.mjs +4 -0
  137. package/dist/eth/index.mjs.map +1 -0
  138. package/dist/eth/{types.js → types.cjs} +3 -3
  139. package/dist/eth/types.cjs.map +1 -0
  140. package/dist/eth/{types.d.ts → types.d.cts} +2 -1
  141. package/dist/eth/types.d.cts.map +1 -0
  142. package/dist/eth/types.d.mts +81 -0
  143. package/dist/eth/types.d.mts.map +1 -0
  144. package/dist/eth/types.mjs +70 -0
  145. package/dist/eth/types.mjs.map +1 -0
  146. package/dist/eth/{utils.js → utils.cjs} +3 -4
  147. package/dist/eth/{utils.js.map → utils.cjs.map} +1 -1
  148. package/dist/eth/{utils.d.ts → utils.d.cts} +2 -1
  149. package/dist/eth/utils.d.cts.map +1 -0
  150. package/dist/eth/utils.d.mts +9 -0
  151. package/dist/eth/utils.d.mts.map +1 -0
  152. package/dist/eth/utils.mjs +11 -0
  153. package/dist/eth/utils.mjs.map +1 -0
  154. package/dist/{events.js → events.cjs} +1 -1
  155. package/dist/events.cjs.map +1 -0
  156. package/dist/{events.d.ts → events.d.cts} +1 -0
  157. package/dist/events.d.cts.map +1 -0
  158. package/dist/events.d.mts +11 -0
  159. package/dist/events.d.mts.map +1 -0
  160. package/dist/events.mjs +14 -0
  161. package/dist/events.mjs.map +1 -0
  162. package/dist/index.cjs +29 -0
  163. package/dist/index.cjs.map +1 -0
  164. package/dist/index.d.cts +14 -0
  165. package/dist/index.d.cts.map +1 -0
  166. package/dist/index.d.mts +14 -0
  167. package/dist/index.d.mts.map +1 -0
  168. package/dist/index.mjs +13 -0
  169. package/dist/index.mjs.map +1 -0
  170. package/dist/internal/{api.js → api.cjs} +5 -5
  171. package/dist/internal/api.cjs.map +1 -0
  172. package/dist/internal/{api.d.ts → api.d.cts} +20 -15
  173. package/dist/internal/api.d.cts.map +1 -0
  174. package/dist/internal/api.d.mts +420 -0
  175. package/dist/internal/api.d.mts.map +1 -0
  176. package/dist/internal/api.mjs +136 -0
  177. package/dist/internal/api.mjs.map +1 -0
  178. package/dist/internal/eth/{EthKeyring.js → EthKeyring.cjs} +1 -1
  179. package/dist/internal/eth/EthKeyring.cjs.map +1 -0
  180. package/dist/internal/eth/{EthKeyring.d.ts → EthKeyring.d.cts} +4 -3
  181. package/dist/internal/eth/EthKeyring.d.cts.map +1 -0
  182. package/dist/internal/eth/EthKeyring.d.mts +34 -0
  183. package/dist/internal/eth/EthKeyring.d.mts.map +1 -0
  184. package/dist/internal/eth/EthKeyring.mjs +2 -0
  185. package/dist/internal/eth/EthKeyring.mjs.map +1 -0
  186. package/dist/internal/eth/{index.js → index.cjs} +1 -1
  187. package/dist/internal/eth/index.cjs.map +1 -0
  188. package/dist/internal/eth/index.d.cts +2 -0
  189. package/dist/internal/eth/index.d.cts.map +1 -0
  190. package/dist/internal/eth/index.d.mts +2 -0
  191. package/dist/internal/eth/index.d.mts.map +1 -0
  192. package/dist/internal/eth/index.mjs +2 -0
  193. package/dist/internal/eth/index.mjs.map +1 -0
  194. package/dist/internal/{events.js → events.cjs} +5 -5
  195. package/dist/internal/events.cjs.map +1 -0
  196. package/dist/internal/{events.d.ts → events.d.cts} +13 -10
  197. package/dist/internal/events.d.cts.map +1 -0
  198. package/dist/internal/events.d.mts +162 -0
  199. package/dist/internal/events.d.mts.map +1 -0
  200. package/dist/internal/events.mjs +69 -0
  201. package/dist/internal/events.mjs.map +1 -0
  202. package/dist/internal/{index.js → index.cjs} +5 -5
  203. package/dist/internal/index.cjs.map +1 -0
  204. package/dist/internal/index.d.cts +6 -0
  205. package/dist/internal/index.d.cts.map +1 -0
  206. package/dist/internal/index.d.mts +6 -0
  207. package/dist/internal/index.d.mts.map +1 -0
  208. package/dist/internal/index.mjs +5 -0
  209. package/dist/internal/index.mjs.map +1 -0
  210. package/dist/internal/{rpc.js → rpc.cjs} +3 -3
  211. package/dist/internal/rpc.cjs.map +1 -0
  212. package/dist/internal/{rpc.d.ts → rpc.d.cts} +1 -0
  213. package/dist/internal/rpc.d.cts.map +1 -0
  214. package/dist/internal/rpc.d.mts +26 -0
  215. package/dist/internal/rpc.d.mts.map +1 -0
  216. package/dist/internal/rpc.mjs +29 -0
  217. package/dist/internal/{rpc.js.map → rpc.mjs.map} +1 -1
  218. package/dist/internal/{types.js → types.cjs} +12 -6
  219. package/dist/internal/types.cjs.map +1 -0
  220. package/dist/internal/{types.d.ts → types.d.cts} +87 -22
  221. package/dist/internal/types.d.cts.map +1 -0
  222. package/dist/internal/types.d.mts +392 -0
  223. package/dist/internal/types.d.mts.map +1 -0
  224. package/dist/internal/types.mjs +49 -0
  225. package/dist/internal/types.mjs.map +1 -0
  226. package/dist/{rpc-handler.js → rpc-handler.cjs} +6 -6
  227. package/dist/rpc-handler.cjs.map +1 -0
  228. package/dist/{rpc-handler.d.ts → rpc-handler.d.cts} +4 -3
  229. package/dist/rpc-handler.d.cts.map +1 -0
  230. package/dist/rpc-handler.d.mts +30 -0
  231. package/dist/rpc-handler.d.mts.map +1 -0
  232. package/dist/rpc-handler.mjs +131 -0
  233. package/dist/rpc-handler.mjs.map +1 -0
  234. package/dist/{snap-utils.js → snap-utils.cjs} +2 -3
  235. package/dist/snap-utils.cjs.map +1 -0
  236. package/dist/{snap-utils.d.ts → snap-utils.d.cts} +4 -3
  237. package/dist/snap-utils.d.cts.map +1 -0
  238. package/dist/snap-utils.d.mts +12 -0
  239. package/dist/snap-utils.d.mts.map +1 -0
  240. package/dist/snap-utils.mjs +17 -0
  241. package/dist/snap-utils.mjs.map +1 -0
  242. package/dist/{utils/index.js → sol/index.cjs} +2 -3
  243. package/dist/sol/index.cjs.map +1 -0
  244. package/dist/sol/index.d.cts +2 -0
  245. package/dist/sol/index.d.cts.map +1 -0
  246. package/dist/sol/index.d.mts +2 -0
  247. package/dist/sol/index.d.mts.map +1 -0
  248. package/dist/sol/index.mjs +2 -0
  249. package/dist/sol/index.mjs.map +1 -0
  250. package/dist/sol/types.cjs +36 -0
  251. package/dist/sol/types.cjs.map +1 -0
  252. package/dist/sol/types.d.cts +39 -0
  253. package/dist/sol/types.d.cts.map +1 -0
  254. package/dist/sol/types.d.mts +39 -0
  255. package/dist/sol/types.d.mts.map +1 -0
  256. package/dist/sol/types.mjs +33 -0
  257. package/dist/sol/types.mjs.map +1 -0
  258. package/dist/{superstruct.js → superstruct.cjs} +5 -6
  259. package/dist/superstruct.cjs.map +1 -0
  260. package/dist/{superstruct.d.ts → superstruct.d.cts} +3 -2
  261. package/dist/superstruct.d.cts.map +1 -0
  262. package/dist/superstruct.d.mts +84 -0
  263. package/dist/superstruct.d.mts.map +1 -0
  264. package/dist/superstruct.mjs +74 -0
  265. package/dist/superstruct.mjs.map +1 -0
  266. package/dist/{eth/index.js → utils/index.cjs} +3 -4
  267. package/dist/utils/index.cjs.map +1 -0
  268. package/dist/utils/index.d.cts +3 -0
  269. package/dist/utils/index.d.cts.map +1 -0
  270. package/dist/utils/index.d.mts +3 -0
  271. package/dist/utils/index.d.mts.map +1 -0
  272. package/dist/utils/index.mjs +3 -0
  273. package/dist/utils/index.mjs.map +1 -0
  274. package/dist/utils/{types.js → types.cjs} +2 -2
  275. package/dist/utils/types.cjs.map +1 -0
  276. package/dist/utils/{types.d.ts → types.d.cts} +2 -1
  277. package/dist/utils/types.d.cts.map +1 -0
  278. package/dist/utils/types.d.mts +18 -0
  279. package/dist/utils/types.d.mts.map +1 -0
  280. package/dist/utils/types.mjs +26 -0
  281. package/dist/utils/types.mjs.map +1 -0
  282. package/dist/utils/{typing.js → typing.cjs} +2 -3
  283. package/dist/utils/{typing.js.map → typing.cjs.map} +1 -1
  284. package/dist/utils/{typing.d.ts → typing.d.cts} +1 -0
  285. package/dist/utils/typing.d.cts.map +1 -0
  286. package/dist/utils/typing.d.mts +33 -0
  287. package/dist/utils/typing.d.mts.map +1 -0
  288. package/dist/utils/typing.mjs +17 -0
  289. package/dist/utils/typing.mjs.map +1 -0
  290. package/package.json +19 -8
  291. package/dist/JsonRpcRequest.js.map +0 -1
  292. package/dist/KeyringClient.js.map +0 -1
  293. package/dist/KeyringSnapRpcClient.js.map +0 -1
  294. package/dist/api/account.js.map +0 -1
  295. package/dist/api/balance.js.map +0 -1
  296. package/dist/api/caip.js.map +0 -1
  297. package/dist/api/export.js.map +0 -1
  298. package/dist/api/index.d.ts +0 -7
  299. package/dist/api/index.js.map +0 -1
  300. package/dist/api/keyring.js.map +0 -1
  301. package/dist/api/request.js.map +0 -1
  302. package/dist/api/response.js.map +0 -1
  303. package/dist/btc/index.d.ts +0 -1
  304. package/dist/btc/index.js.map +0 -1
  305. package/dist/btc/types.js.map +0 -1
  306. package/dist/contexts.js.map +0 -1
  307. package/dist/eth/erc4337/index.d.ts +0 -1
  308. package/dist/eth/erc4337/index.js.map +0 -1
  309. package/dist/eth/erc4337/types.js.map +0 -1
  310. package/dist/eth/index.d.ts +0 -3
  311. package/dist/eth/index.js.map +0 -1
  312. package/dist/eth/types.js.map +0 -1
  313. package/dist/events.js.map +0 -1
  314. package/dist/index.d.ts +0 -11
  315. package/dist/index.js +0 -27
  316. package/dist/index.js.map +0 -1
  317. package/dist/internal/api.js.map +0 -1
  318. package/dist/internal/eth/EthKeyring.js.map +0 -1
  319. package/dist/internal/eth/index.d.ts +0 -1
  320. package/dist/internal/eth/index.js.map +0 -1
  321. package/dist/internal/events.js.map +0 -1
  322. package/dist/internal/index.d.ts +0 -5
  323. package/dist/internal/index.js.map +0 -1
  324. package/dist/internal/types.js.map +0 -1
  325. package/dist/rpc-handler.js.map +0 -1
  326. package/dist/snap-utils.js.map +0 -1
  327. package/dist/superstruct.js.map +0 -1
  328. package/dist/utils/index.d.ts +0 -2
  329. package/dist/utils/index.js.map +0 -1
  330. package/dist/utils/types.js.map +0 -1
@@ -0,0 +1,49 @@
1
+ import { boolean, string, number } from "@metamask/superstruct";
2
+ import { BtcAccountType, EthAccountType, KeyringAccountStruct, SolAccountType } from "../api/index.mjs";
3
+ import { BtcP2wpkhAccountStruct } from "../btc/types.mjs";
4
+ import { EthEoaAccountStruct, EthErc4337AccountStruct } from "../eth/types.mjs";
5
+ import { SolDataAccountStruct } from "../sol/types.mjs";
6
+ import { exactOptional, object } from "../superstruct.mjs";
7
+ export const InternalAccountMetadataStruct = object({
8
+ metadata: object({
9
+ name: string(),
10
+ nameLastUpdatedAt: exactOptional(number()),
11
+ snap: exactOptional(object({
12
+ id: string(),
13
+ enabled: boolean(),
14
+ name: string(),
15
+ })),
16
+ lastSelected: exactOptional(number()),
17
+ importTime: number(),
18
+ keyring: object({
19
+ type: string(),
20
+ }),
21
+ }),
22
+ });
23
+ export const InternalEthEoaAccountStruct = object({
24
+ ...EthEoaAccountStruct.schema,
25
+ ...InternalAccountMetadataStruct.schema,
26
+ });
27
+ export const InternalEthErc4337AccountStruct = object({
28
+ ...EthErc4337AccountStruct.schema,
29
+ ...InternalAccountMetadataStruct.schema,
30
+ });
31
+ export const InternalBtcP2wpkhAccountStruct = object({
32
+ ...BtcP2wpkhAccountStruct.schema,
33
+ ...InternalAccountMetadataStruct.schema,
34
+ });
35
+ export const InternalSolDataAccountStruct = object({
36
+ ...SolDataAccountStruct.schema,
37
+ ...InternalAccountMetadataStruct.schema,
38
+ });
39
+ export const InternalAccountStructs = {
40
+ [`${EthAccountType.Eoa}`]: InternalEthEoaAccountStruct,
41
+ [`${EthAccountType.Erc4337}`]: InternalEthErc4337AccountStruct,
42
+ [`${BtcAccountType.P2wpkh}`]: InternalBtcP2wpkhAccountStruct,
43
+ [`${SolAccountType.DataAccount}`]: InternalSolDataAccountStruct,
44
+ };
45
+ export const InternalAccountStruct = object({
46
+ ...KeyringAccountStruct.schema,
47
+ ...InternalAccountMetadataStruct.schema,
48
+ });
49
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../src/internal/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,8BAA8B;AAEhE,OAAO,EACL,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,cAAc,EACf,yBAAe;AAChB,OAAO,EAAE,sBAAsB,EAAE,yBAAqB;AACtD,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,yBAAqB;AAC5E,OAAO,EAAE,oBAAoB,EAAE,yBAAqB;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,2BAAuB;AAOvD,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,EAAE;QACd,iBAAiB,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC;QAC1C,IAAI,EAAE,aAAa,CACjB,MAAM,CAAC;YACL,EAAE,EAAE,MAAM,EAAE;YACZ,OAAO,EAAE,OAAO,EAAE;YAClB,IAAI,EAAE,MAAM,EAAE;SACf,CAAC,CACH;QACD,YAAY,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC;QACrC,UAAU,EAAE,MAAM,EAAE;QACpB,OAAO,EAAE,MAAM,CAAC;YACd,IAAI,EAAE,MAAM,EAAE;SACf,CAAC;KACH,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC;IAChD,GAAG,mBAAmB,CAAC,MAAM;IAC7B,GAAG,6BAA6B,CAAC,MAAM;CACxC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC;IACpD,GAAG,uBAAuB,CAAC,MAAM;IACjC,GAAG,6BAA6B,CAAC,MAAM;CACxC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC;IACnD,GAAG,sBAAsB,CAAC,MAAM;IAChC,GAAG,6BAA6B,CAAC,MAAM;CACxC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC;IACjD,GAAG,oBAAoB,CAAC,MAAM;IAC9B,GAAG,6BAA6B,CAAC,MAAM;CACxC,CAAC,CAAC;AAcH,MAAM,CAAC,MAAM,sBAAsB,GAM/B;IACF,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,2BAA2B;IACtD,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,EAAE,+BAA+B;IAC9D,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,8BAA8B;IAC5D,CAAC,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC,EAAE,4BAA4B;CAChE,CAAC;AAQF,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC;IAC1C,GAAG,oBAAoB,CAAC,MAAM;IAC9B,GAAG,6BAA6B,CAAC,MAAM;CACxC,CAAC,CAAC","sourcesContent":["import type { Infer, Struct } from '@metamask/superstruct';\nimport { boolean, string, number } from '@metamask/superstruct';\n\nimport {\n BtcAccountType,\n EthAccountType,\n KeyringAccountStruct,\n SolAccountType,\n} from '../api';\nimport { BtcP2wpkhAccountStruct } from '../btc/types';\nimport { EthEoaAccountStruct, EthErc4337AccountStruct } from '../eth/types';\nimport { SolDataAccountStruct } from '../sol/types';\nimport { exactOptional, object } from '../superstruct';\n\nexport type InternalAccountType =\n | EthAccountType\n | BtcAccountType\n | SolAccountType;\n\nexport const InternalAccountMetadataStruct = object({\n metadata: object({\n name: string(),\n nameLastUpdatedAt: exactOptional(number()),\n snap: exactOptional(\n object({\n id: string(),\n enabled: boolean(),\n name: string(),\n }),\n ),\n lastSelected: exactOptional(number()),\n importTime: number(),\n keyring: object({\n type: string(),\n }),\n }),\n});\n\nexport const InternalEthEoaAccountStruct = object({\n ...EthEoaAccountStruct.schema,\n ...InternalAccountMetadataStruct.schema,\n});\n\nexport const InternalEthErc4337AccountStruct = object({\n ...EthErc4337AccountStruct.schema,\n ...InternalAccountMetadataStruct.schema,\n});\n\nexport const InternalBtcP2wpkhAccountStruct = object({\n ...BtcP2wpkhAccountStruct.schema,\n ...InternalAccountMetadataStruct.schema,\n});\n\nexport const InternalSolDataAccountStruct = object({\n ...SolDataAccountStruct.schema,\n ...InternalAccountMetadataStruct.schema,\n});\n\nexport type InternalEthEoaAccount = Infer<typeof InternalEthEoaAccountStruct>;\n\nexport type InternalEthErc4337Account = Infer<\n typeof InternalEthErc4337AccountStruct\n>;\n\nexport type InternalBtcP2wpkhAccount = Infer<\n typeof InternalBtcP2wpkhAccountStruct\n>;\n\nexport type InternalSolDataAccount = Infer<typeof InternalSolDataAccountStruct>;\n\nexport const InternalAccountStructs: Record<\n string,\n | Struct<InternalEthEoaAccount>\n | Struct<InternalEthErc4337Account>\n | Struct<InternalBtcP2wpkhAccount>\n | Struct<InternalSolDataAccount>\n> = {\n [`${EthAccountType.Eoa}`]: InternalEthEoaAccountStruct,\n [`${EthAccountType.Erc4337}`]: InternalEthErc4337AccountStruct,\n [`${BtcAccountType.P2wpkh}`]: InternalBtcP2wpkhAccountStruct,\n [`${SolAccountType.DataAccount}`]: InternalSolDataAccountStruct,\n};\n\nexport type InternalAccountTypes =\n | InternalEthEoaAccount\n | InternalEthErc4337Account\n | InternalBtcP2wpkhAccount\n | InternalSolDataAccount;\n\nexport const InternalAccountStruct = object({\n ...KeyringAccountStruct.schema,\n ...InternalAccountMetadataStruct.schema,\n});\n\n/**\n * Internal account representation.\n *\n * This type is used internally by MetaMask to add additional metadata to the\n * account object. It's should not be used by external applications.\n */\nexport type InternalAccount = Infer<typeof InternalAccountStruct>;\n"]}
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handleKeyringRequest = exports.MethodNotSupportedError = void 0;
3
+ exports.MethodNotSupportedError = void 0;
4
+ exports.handleKeyringRequest = handleKeyringRequest;
4
5
  const superstruct_1 = require("@metamask/superstruct");
5
- const api_1 = require("./internal/api");
6
- const rpc_1 = require("./internal/rpc");
7
- const JsonRpcRequest_1 = require("./JsonRpcRequest");
6
+ const api_1 = require("./internal/api.cjs");
7
+ const rpc_1 = require("./internal/rpc.cjs");
8
+ const JsonRpcRequest_1 = require("./JsonRpcRequest.cjs");
8
9
  /**
9
10
  * Error thrown when a keyring JSON-RPC method is not supported.
10
11
  */
@@ -132,5 +133,4 @@ async function handleKeyringRequest(keyring, request) {
132
133
  throw new Error(message);
133
134
  }
134
135
  }
135
- exports.handleKeyringRequest = handleKeyringRequest;
136
- //# sourceMappingURL=rpc-handler.js.map
136
+ //# sourceMappingURL=rpc-handler.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-handler.cjs","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert } from '@metamask/superstruct';\nimport type { Json } from '@metamask/utils';\n\nimport type { Keyring } from './api';\nimport {\n GetAccountRequestStruct,\n CreateAccountRequestStruct,\n ApproveRequestRequestStruct,\n DeleteAccountRequestStruct,\n ExportAccountRequestStruct,\n GetRequestRequestStruct,\n RejectRequestRequestStruct,\n SubmitRequestRequestStruct,\n UpdateAccountRequestStruct,\n FilterAccountChainsStruct,\n ListAccountsRequestStruct,\n ListRequestsRequestStruct,\n GetAccountBalancesRequestStruct,\n} from './internal/api';\nimport { KeyringRpcMethod } from './internal/rpc';\nimport type { JsonRpcRequest } from './JsonRpcRequest';\nimport { JsonRpcRequestStruct } from './JsonRpcRequest';\n\n/**\n * Error thrown when a keyring JSON-RPC method is not supported.\n */\nexport class MethodNotSupportedError extends Error {\n constructor(method: string) {\n super(`Method not supported: ${method}`);\n }\n}\n\n/**\n * Inner function that dispatches JSON-RPC request to the associated Keyring\n * methods.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @returns A promise that resolves to the keyring response.\n */\nasync function dispatchRequest(\n keyring: Keyring,\n request: JsonRpcRequest,\n): Promise<Json | void> {\n // We first have to make sure that the request is a valid JSON-RPC request so\n // we can check its method name.\n assert(request, JsonRpcRequestStruct);\n\n switch (request.method) {\n case `${KeyringRpcMethod.ListAccounts}`: {\n assert(request, ListAccountsRequestStruct);\n return keyring.listAccounts();\n }\n\n case `${KeyringRpcMethod.GetAccount}`: {\n assert(request, GetAccountRequestStruct);\n return keyring.getAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.CreateAccount}`: {\n assert(request, CreateAccountRequestStruct);\n return keyring.createAccount(request.params.options);\n }\n\n case `${KeyringRpcMethod.GetAccountBalances}`: {\n if (keyring.getAccountBalances === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, GetAccountBalancesRequestStruct);\n return keyring.getAccountBalances(\n request.params.id,\n request.params.assets,\n );\n }\n\n case `${KeyringRpcMethod.FilterAccountChains}`: {\n assert(request, FilterAccountChainsStruct);\n return keyring.filterAccountChains(\n request.params.id,\n request.params.chains,\n );\n }\n\n case `${KeyringRpcMethod.UpdateAccount}`: {\n assert(request, UpdateAccountRequestStruct);\n return keyring.updateAccount(request.params.account);\n }\n\n case `${KeyringRpcMethod.DeleteAccount}`: {\n assert(request, DeleteAccountRequestStruct);\n return keyring.deleteAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.ExportAccount}`: {\n if (keyring.exportAccount === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ExportAccountRequestStruct);\n return keyring.exportAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.ListRequests}`: {\n if (keyring.listRequests === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ListRequestsRequestStruct);\n return keyring.listRequests();\n }\n\n case `${KeyringRpcMethod.GetRequest}`: {\n if (keyring.getRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, GetRequestRequestStruct);\n return keyring.getRequest(request.params.id);\n }\n\n case `${KeyringRpcMethod.SubmitRequest}`: {\n assert(request, SubmitRequestRequestStruct);\n return keyring.submitRequest(request.params);\n }\n\n case `${KeyringRpcMethod.ApproveRequest}`: {\n if (keyring.approveRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ApproveRequestRequestStruct);\n return keyring.approveRequest(request.params.id, request.params.data);\n }\n\n case `${KeyringRpcMethod.RejectRequest}`: {\n if (keyring.rejectRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, RejectRequestRequestStruct);\n return keyring.rejectRequest(request.params.id);\n }\n\n default: {\n throw new MethodNotSupportedError(request.method);\n }\n }\n}\n\n/**\n * Handles a keyring JSON-RPC request.\n *\n * This function is meant to be used as a handler for Keyring JSON-RPC requests\n * in an Accounts Snap.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @returns A promise that resolves to the keyring response.\n * @example\n * ```ts\n * export const onKeyringRequest: OnKeyringRequestHandler = async ({\n * origin,\n * request,\n * }) => {\n * return await handleKeyringRequest(keyring, request);\n * };\n * ```\n */\nexport async function handleKeyringRequest(\n keyring: Keyring,\n request: JsonRpcRequest,\n): Promise<Json | void> {\n try {\n return await dispatchRequest(keyring, request);\n } catch (error) {\n const message =\n error instanceof Error && typeof error.message === 'string'\n ? error.message\n : 'An unknown error occurred while handling the keyring request';\n\n throw new Error(message);\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
- import type { Json } from '@metamask/utils';
2
- import type { Keyring } from './api';
3
- import type { JsonRpcRequest } from './JsonRpcRequest';
1
+ import type { Json } from "@metamask/utils";
2
+ import type { Keyring } from "./api/index.cjs";
3
+ import type { JsonRpcRequest } from "./JsonRpcRequest.cjs";
4
4
  /**
5
5
  * Error thrown when a keyring JSON-RPC method is not supported.
6
6
  */
@@ -27,3 +27,4 @@ export declare class MethodNotSupportedError extends Error {
27
27
  * ```
28
28
  */
29
29
  export declare function handleKeyringRequest(keyring: Keyring, request: JsonRpcRequest): Promise<Json | void>;
30
+ //# sourceMappingURL=rpc-handler.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-handler.d.cts","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C,OAAO,KAAK,EAAE,OAAO,EAAE,wBAAc;AAiBrC,OAAO,KAAK,EAAE,cAAc,EAAE,6BAAyB;AAGvD;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,MAAM,EAAE,MAAM;CAG3B;AAkHD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAWtB"}
@@ -0,0 +1,30 @@
1
+ import type { Json } from "@metamask/utils";
2
+ import type { Keyring } from "./api/index.mjs";
3
+ import type { JsonRpcRequest } from "./JsonRpcRequest.mjs";
4
+ /**
5
+ * Error thrown when a keyring JSON-RPC method is not supported.
6
+ */
7
+ export declare class MethodNotSupportedError extends Error {
8
+ constructor(method: string);
9
+ }
10
+ /**
11
+ * Handles a keyring JSON-RPC request.
12
+ *
13
+ * This function is meant to be used as a handler for Keyring JSON-RPC requests
14
+ * in an Accounts Snap.
15
+ *
16
+ * @param keyring - Keyring instance.
17
+ * @param request - Keyring JSON-RPC request.
18
+ * @returns A promise that resolves to the keyring response.
19
+ * @example
20
+ * ```ts
21
+ * export const onKeyringRequest: OnKeyringRequestHandler = async ({
22
+ * origin,
23
+ * request,
24
+ * }) => {
25
+ * return await handleKeyringRequest(keyring, request);
26
+ * };
27
+ * ```
28
+ */
29
+ export declare function handleKeyringRequest(keyring: Keyring, request: JsonRpcRequest): Promise<Json | void>;
30
+ //# sourceMappingURL=rpc-handler.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-handler.d.mts","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C,OAAO,KAAK,EAAE,OAAO,EAAE,wBAAc;AAiBrC,OAAO,KAAK,EAAE,cAAc,EAAE,6BAAyB;AAGvD;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,MAAM,EAAE,MAAM;CAG3B;AAkHD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAWtB"}
@@ -0,0 +1,131 @@
1
+ import { assert } from "@metamask/superstruct";
2
+ import { GetAccountRequestStruct, CreateAccountRequestStruct, ApproveRequestRequestStruct, DeleteAccountRequestStruct, ExportAccountRequestStruct, GetRequestRequestStruct, RejectRequestRequestStruct, SubmitRequestRequestStruct, UpdateAccountRequestStruct, FilterAccountChainsStruct, ListAccountsRequestStruct, ListRequestsRequestStruct, GetAccountBalancesRequestStruct } from "./internal/api.mjs";
3
+ import { KeyringRpcMethod } from "./internal/rpc.mjs";
4
+ import { JsonRpcRequestStruct } from "./JsonRpcRequest.mjs";
5
+ /**
6
+ * Error thrown when a keyring JSON-RPC method is not supported.
7
+ */
8
+ export class MethodNotSupportedError extends Error {
9
+ constructor(method) {
10
+ super(`Method not supported: ${method}`);
11
+ }
12
+ }
13
+ /**
14
+ * Inner function that dispatches JSON-RPC request to the associated Keyring
15
+ * methods.
16
+ *
17
+ * @param keyring - Keyring instance.
18
+ * @param request - Keyring JSON-RPC request.
19
+ * @returns A promise that resolves to the keyring response.
20
+ */
21
+ async function dispatchRequest(keyring, request) {
22
+ // We first have to make sure that the request is a valid JSON-RPC request so
23
+ // we can check its method name.
24
+ assert(request, JsonRpcRequestStruct);
25
+ switch (request.method) {
26
+ case `${KeyringRpcMethod.ListAccounts}`: {
27
+ assert(request, ListAccountsRequestStruct);
28
+ return keyring.listAccounts();
29
+ }
30
+ case `${KeyringRpcMethod.GetAccount}`: {
31
+ assert(request, GetAccountRequestStruct);
32
+ return keyring.getAccount(request.params.id);
33
+ }
34
+ case `${KeyringRpcMethod.CreateAccount}`: {
35
+ assert(request, CreateAccountRequestStruct);
36
+ return keyring.createAccount(request.params.options);
37
+ }
38
+ case `${KeyringRpcMethod.GetAccountBalances}`: {
39
+ if (keyring.getAccountBalances === undefined) {
40
+ throw new MethodNotSupportedError(request.method);
41
+ }
42
+ assert(request, GetAccountBalancesRequestStruct);
43
+ return keyring.getAccountBalances(request.params.id, request.params.assets);
44
+ }
45
+ case `${KeyringRpcMethod.FilterAccountChains}`: {
46
+ assert(request, FilterAccountChainsStruct);
47
+ return keyring.filterAccountChains(request.params.id, request.params.chains);
48
+ }
49
+ case `${KeyringRpcMethod.UpdateAccount}`: {
50
+ assert(request, UpdateAccountRequestStruct);
51
+ return keyring.updateAccount(request.params.account);
52
+ }
53
+ case `${KeyringRpcMethod.DeleteAccount}`: {
54
+ assert(request, DeleteAccountRequestStruct);
55
+ return keyring.deleteAccount(request.params.id);
56
+ }
57
+ case `${KeyringRpcMethod.ExportAccount}`: {
58
+ if (keyring.exportAccount === undefined) {
59
+ throw new MethodNotSupportedError(request.method);
60
+ }
61
+ assert(request, ExportAccountRequestStruct);
62
+ return keyring.exportAccount(request.params.id);
63
+ }
64
+ case `${KeyringRpcMethod.ListRequests}`: {
65
+ if (keyring.listRequests === undefined) {
66
+ throw new MethodNotSupportedError(request.method);
67
+ }
68
+ assert(request, ListRequestsRequestStruct);
69
+ return keyring.listRequests();
70
+ }
71
+ case `${KeyringRpcMethod.GetRequest}`: {
72
+ if (keyring.getRequest === undefined) {
73
+ throw new MethodNotSupportedError(request.method);
74
+ }
75
+ assert(request, GetRequestRequestStruct);
76
+ return keyring.getRequest(request.params.id);
77
+ }
78
+ case `${KeyringRpcMethod.SubmitRequest}`: {
79
+ assert(request, SubmitRequestRequestStruct);
80
+ return keyring.submitRequest(request.params);
81
+ }
82
+ case `${KeyringRpcMethod.ApproveRequest}`: {
83
+ if (keyring.approveRequest === undefined) {
84
+ throw new MethodNotSupportedError(request.method);
85
+ }
86
+ assert(request, ApproveRequestRequestStruct);
87
+ return keyring.approveRequest(request.params.id, request.params.data);
88
+ }
89
+ case `${KeyringRpcMethod.RejectRequest}`: {
90
+ if (keyring.rejectRequest === undefined) {
91
+ throw new MethodNotSupportedError(request.method);
92
+ }
93
+ assert(request, RejectRequestRequestStruct);
94
+ return keyring.rejectRequest(request.params.id);
95
+ }
96
+ default: {
97
+ throw new MethodNotSupportedError(request.method);
98
+ }
99
+ }
100
+ }
101
+ /**
102
+ * Handles a keyring JSON-RPC request.
103
+ *
104
+ * This function is meant to be used as a handler for Keyring JSON-RPC requests
105
+ * in an Accounts Snap.
106
+ *
107
+ * @param keyring - Keyring instance.
108
+ * @param request - Keyring JSON-RPC request.
109
+ * @returns A promise that resolves to the keyring response.
110
+ * @example
111
+ * ```ts
112
+ * export const onKeyringRequest: OnKeyringRequestHandler = async ({
113
+ * origin,
114
+ * request,
115
+ * }) => {
116
+ * return await handleKeyringRequest(keyring, request);
117
+ * };
118
+ * ```
119
+ */
120
+ export async function handleKeyringRequest(keyring, request) {
121
+ try {
122
+ return await dispatchRequest(keyring, request);
123
+ }
124
+ catch (error) {
125
+ const message = error instanceof Error && typeof error.message === 'string'
126
+ ? error.message
127
+ : 'An unknown error occurred while handling the keyring request';
128
+ throw new Error(message);
129
+ }
130
+ }
131
+ //# sourceMappingURL=rpc-handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-handler.mjs","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert } from '@metamask/superstruct';\nimport type { Json } from '@metamask/utils';\n\nimport type { Keyring } from './api';\nimport {\n GetAccountRequestStruct,\n CreateAccountRequestStruct,\n ApproveRequestRequestStruct,\n DeleteAccountRequestStruct,\n ExportAccountRequestStruct,\n GetRequestRequestStruct,\n RejectRequestRequestStruct,\n SubmitRequestRequestStruct,\n UpdateAccountRequestStruct,\n FilterAccountChainsStruct,\n ListAccountsRequestStruct,\n ListRequestsRequestStruct,\n GetAccountBalancesRequestStruct,\n} from './internal/api';\nimport { KeyringRpcMethod } from './internal/rpc';\nimport type { JsonRpcRequest } from './JsonRpcRequest';\nimport { JsonRpcRequestStruct } from './JsonRpcRequest';\n\n/**\n * Error thrown when a keyring JSON-RPC method is not supported.\n */\nexport class MethodNotSupportedError extends Error {\n constructor(method: string) {\n super(`Method not supported: ${method}`);\n }\n}\n\n/**\n * Inner function that dispatches JSON-RPC request to the associated Keyring\n * methods.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @returns A promise that resolves to the keyring response.\n */\nasync function dispatchRequest(\n keyring: Keyring,\n request: JsonRpcRequest,\n): Promise<Json | void> {\n // We first have to make sure that the request is a valid JSON-RPC request so\n // we can check its method name.\n assert(request, JsonRpcRequestStruct);\n\n switch (request.method) {\n case `${KeyringRpcMethod.ListAccounts}`: {\n assert(request, ListAccountsRequestStruct);\n return keyring.listAccounts();\n }\n\n case `${KeyringRpcMethod.GetAccount}`: {\n assert(request, GetAccountRequestStruct);\n return keyring.getAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.CreateAccount}`: {\n assert(request, CreateAccountRequestStruct);\n return keyring.createAccount(request.params.options);\n }\n\n case `${KeyringRpcMethod.GetAccountBalances}`: {\n if (keyring.getAccountBalances === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, GetAccountBalancesRequestStruct);\n return keyring.getAccountBalances(\n request.params.id,\n request.params.assets,\n );\n }\n\n case `${KeyringRpcMethod.FilterAccountChains}`: {\n assert(request, FilterAccountChainsStruct);\n return keyring.filterAccountChains(\n request.params.id,\n request.params.chains,\n );\n }\n\n case `${KeyringRpcMethod.UpdateAccount}`: {\n assert(request, UpdateAccountRequestStruct);\n return keyring.updateAccount(request.params.account);\n }\n\n case `${KeyringRpcMethod.DeleteAccount}`: {\n assert(request, DeleteAccountRequestStruct);\n return keyring.deleteAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.ExportAccount}`: {\n if (keyring.exportAccount === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ExportAccountRequestStruct);\n return keyring.exportAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.ListRequests}`: {\n if (keyring.listRequests === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ListRequestsRequestStruct);\n return keyring.listRequests();\n }\n\n case `${KeyringRpcMethod.GetRequest}`: {\n if (keyring.getRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, GetRequestRequestStruct);\n return keyring.getRequest(request.params.id);\n }\n\n case `${KeyringRpcMethod.SubmitRequest}`: {\n assert(request, SubmitRequestRequestStruct);\n return keyring.submitRequest(request.params);\n }\n\n case `${KeyringRpcMethod.ApproveRequest}`: {\n if (keyring.approveRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ApproveRequestRequestStruct);\n return keyring.approveRequest(request.params.id, request.params.data);\n }\n\n case `${KeyringRpcMethod.RejectRequest}`: {\n if (keyring.rejectRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, RejectRequestRequestStruct);\n return keyring.rejectRequest(request.params.id);\n }\n\n default: {\n throw new MethodNotSupportedError(request.method);\n }\n }\n}\n\n/**\n * Handles a keyring JSON-RPC request.\n *\n * This function is meant to be used as a handler for Keyring JSON-RPC requests\n * in an Accounts Snap.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @returns A promise that resolves to the keyring response.\n * @example\n * ```ts\n * export const onKeyringRequest: OnKeyringRequestHandler = async ({\n * origin,\n * request,\n * }) => {\n * return await handleKeyringRequest(keyring, request);\n * };\n * ```\n */\nexport async function handleKeyringRequest(\n keyring: Keyring,\n request: JsonRpcRequest,\n): Promise<Json | void> {\n try {\n return await dispatchRequest(keyring, request);\n } catch (error) {\n const message =\n error instanceof Error && typeof error.message === 'string'\n ? error.message\n : 'An unknown error occurred while handling the keyring request';\n\n throw new Error(message);\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.emitSnapKeyringEvent = void 0;
3
+ exports.emitSnapKeyringEvent = emitSnapKeyringEvent;
4
4
  /**
5
5
  * Emit a keyring event from a snap.
6
6
  *
@@ -17,5 +17,4 @@ async function emitSnapKeyringEvent(snap, event, data) {
17
17
  },
18
18
  });
19
19
  }
20
- exports.emitSnapKeyringEvent = emitSnapKeyringEvent;
21
- //# sourceMappingURL=snap-utils.js.map
20
+ //# sourceMappingURL=snap-utils.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snap-utils.cjs","sourceRoot":"","sources":["../src/snap-utils.ts"],"names":[],"mappings":";;AAYA,oDAYC;AAnBD;;;;;;GAMG;AACI,KAAK,UAAU,oBAAoB,CACxC,IAAmB,EACnB,KAAmB,EACnB,IAA0B;IAE1B,MAAM,IAAI,CAAC,OAAO,CAAC;QACjB,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE;SACpB;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { SnapsProvider } from '@metamask/snaps-sdk';\nimport type { Json } from '@metamask/utils';\n\nimport type { KeyringEvent } from './events';\n\n/**\n * Emit a keyring event from a snap.\n *\n * @param snap - The global snap object.\n * @param event - The event name.\n * @param data - The event data.\n */\nexport async function emitSnapKeyringEvent(\n snap: SnapsProvider,\n event: KeyringEvent,\n data: Record<string, Json>,\n): Promise<void> {\n await snap.request({\n method: 'snap_manageAccounts',\n params: {\n method: event,\n params: { ...data },\n },\n });\n}\n"]}
@@ -1,6 +1,6 @@
1
- import type { SnapsProvider } from '@metamask/snaps-sdk';
2
- import type { Json } from '@metamask/utils';
3
- import type { KeyringEvent } from './events';
1
+ import type { SnapsProvider } from "@metamask/snaps-sdk";
2
+ import type { Json } from "@metamask/utils";
3
+ import type { KeyringEvent } from "./events.cjs";
4
4
  /**
5
5
  * Emit a keyring event from a snap.
6
6
  *
@@ -9,3 +9,4 @@ import type { KeyringEvent } from './events';
9
9
  * @param data - The event data.
10
10
  */
11
11
  export declare function emitSnapKeyringEvent(snap: SnapsProvider, event: KeyringEvent, data: Record<string, Json>): Promise<void>;
12
+ //# sourceMappingURL=snap-utils.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snap-utils.d.cts","sourceRoot":"","sources":["../src/snap-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,4BAA4B;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAiB;AAE7C;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GACzB,OAAO,CAAC,IAAI,CAAC,CAQf"}
@@ -0,0 +1,12 @@
1
+ import type { SnapsProvider } from "@metamask/snaps-sdk";
2
+ import type { Json } from "@metamask/utils";
3
+ import type { KeyringEvent } from "./events.mjs";
4
+ /**
5
+ * Emit a keyring event from a snap.
6
+ *
7
+ * @param snap - The global snap object.
8
+ * @param event - The event name.
9
+ * @param data - The event data.
10
+ */
11
+ export declare function emitSnapKeyringEvent(snap: SnapsProvider, event: KeyringEvent, data: Record<string, Json>): Promise<void>;
12
+ //# sourceMappingURL=snap-utils.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snap-utils.d.mts","sourceRoot":"","sources":["../src/snap-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,4BAA4B;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAiB;AAE7C;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GACzB,OAAO,CAAC,IAAI,CAAC,CAQf"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Emit a keyring event from a snap.
3
+ *
4
+ * @param snap - The global snap object.
5
+ * @param event - The event name.
6
+ * @param data - The event data.
7
+ */
8
+ export async function emitSnapKeyringEvent(snap, event, data) {
9
+ await snap.request({
10
+ method: 'snap_manageAccounts',
11
+ params: {
12
+ method: event,
13
+ params: { ...data },
14
+ },
15
+ });
16
+ }
17
+ //# sourceMappingURL=snap-utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snap-utils.mjs","sourceRoot":"","sources":["../src/snap-utils.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAmB,EACnB,KAAmB,EACnB,IAA0B;IAE1B,MAAM,IAAI,CAAC,OAAO,CAAC;QACjB,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE;SACpB;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { SnapsProvider } from '@metamask/snaps-sdk';\nimport type { Json } from '@metamask/utils';\n\nimport type { KeyringEvent } from './events';\n\n/**\n * Emit a keyring event from a snap.\n *\n * @param snap - The global snap object.\n * @param event - The event name.\n * @param data - The event data.\n */\nexport async function emitSnapKeyringEvent(\n snap: SnapsProvider,\n event: KeyringEvent,\n data: Record<string, Json>,\n): Promise<void> {\n await snap.request({\n method: 'snap_manageAccounts',\n params: {\n method: event,\n params: { ...data },\n },\n });\n}\n"]}
@@ -14,6 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./types"), exports);
18
- __exportStar(require("./typing"), exports);
19
- //# sourceMappingURL=index.js.map
17
+ __exportStar(require("./types.cjs"), exports);
18
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/sol/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAAwB","sourcesContent":["export * from './types';\n"]}
@@ -0,0 +1,2 @@
1
+ export * from "./types.cjs";
2
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/sol/index.ts"],"names":[],"mappings":"AAAA,4BAAwB"}
@@ -0,0 +1,2 @@
1
+ export * from "./types.mjs";
2
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/sol/index.ts"],"names":[],"mappings":"AAAA,4BAAwB"}
@@ -0,0 +1,2 @@
1
+ export * from "./types.mjs";
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/sol/index.ts"],"names":[],"mappings":"AAAA,4BAAwB","sourcesContent":["export * from './types';\n"]}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SolDataAccountStruct = exports.SolMethod = exports.SolAddressStruct = void 0;
4
+ const superstruct_1 = require("@metamask/superstruct");
5
+ const api_1 = require("../api/index.cjs");
6
+ const superstruct_2 = require("../superstruct.cjs");
7
+ /**
8
+ * Solana addresses are represented in the format of a 256-bit ed25519 public key and
9
+ * are encoded using base58.
10
+ * They are usually 32 to 44 characters long.
11
+ */
12
+ exports.SolAddressStruct = (0, superstruct_2.definePattern)('SolAddress', /^[1-9A-HJ-NP-Za-km-z]{32,44}$/iu);
13
+ /**
14
+ * Supported Solana methods.
15
+ */
16
+ var SolMethod;
17
+ (function (SolMethod) {
18
+ // General transaction methods
19
+ SolMethod["SendAndConfirmTransaction"] = "sendAndConfirmTransaction";
20
+ })(SolMethod || (exports.SolMethod = SolMethod = {}));
21
+ exports.SolDataAccountStruct = (0, superstruct_2.object)({
22
+ ...api_1.KeyringAccountStruct.schema,
23
+ /**
24
+ * Account address.
25
+ */
26
+ address: exports.SolAddressStruct,
27
+ /**
28
+ * Account type.
29
+ */
30
+ type: (0, superstruct_1.literal)(`${api_1.SolAccountType.DataAccount}`),
31
+ /**
32
+ * Account supported methods.
33
+ */
34
+ methods: (0, superstruct_1.array)((0, superstruct_1.enums)([`${SolMethod.SendAndConfirmTransaction}`])),
35
+ });
36
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../src/sol/types.ts"],"names":[],"mappings":";;;AACA,uDAA8D;AAE9D,0CAA8D;AAC9D,oDAAuD;AAEvD;;;;GAIG;AACU,QAAA,gBAAgB,GAAG,IAAA,2BAAa,EAC3C,YAAY,EACZ,iCAAiC,CAClC,CAAC;AAEF;;GAEG;AACH,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,8BAA8B;IAC9B,oEAAuD,CAAA;AACzD,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAEY,QAAA,oBAAoB,GAAG,IAAA,oBAAM,EAAC;IACzC,GAAG,0BAAoB,CAAC,MAAM;IAE9B;;OAEG;IACH,OAAO,EAAE,wBAAgB;IAEzB;;OAEG;IACH,IAAI,EAAE,IAAA,qBAAO,EAAC,GAAG,oBAAc,CAAC,WAAW,EAAE,CAAC;IAE9C;;OAEG;IACH,OAAO,EAAE,IAAA,mBAAK,EAAC,IAAA,mBAAK,EAAC,CAAC,GAAG,SAAS,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;CAClE,CAAC,CAAC","sourcesContent":["import type { Infer } from '@metamask/superstruct';\nimport { array, enums, literal } from '@metamask/superstruct';\n\nimport { KeyringAccountStruct, SolAccountType } from '../api';\nimport { object, definePattern } from '../superstruct';\n\n/**\n * Solana addresses are represented in the format of a 256-bit ed25519 public key and\n * are encoded using base58.\n * They are usually 32 to 44 characters long.\n */\nexport const SolAddressStruct = definePattern(\n 'SolAddress',\n /^[1-9A-HJ-NP-Za-km-z]{32,44}$/iu,\n);\n\n/**\n * Supported Solana methods.\n */\nexport enum SolMethod {\n // General transaction methods\n SendAndConfirmTransaction = 'sendAndConfirmTransaction',\n}\n\nexport const SolDataAccountStruct = object({\n ...KeyringAccountStruct.schema,\n\n /**\n * Account address.\n */\n address: SolAddressStruct,\n\n /**\n * Account type.\n */\n type: literal(`${SolAccountType.DataAccount}`),\n\n /**\n * Account supported methods.\n */\n methods: array(enums([`${SolMethod.SendAndConfirmTransaction}`])),\n});\n\nexport type SolDataAccount = Infer<typeof SolDataAccountStruct>;\n"]}
@@ -0,0 +1,39 @@
1
+ import type { Infer } from "@metamask/superstruct";
2
+ /**
3
+ * Solana addresses are represented in the format of a 256-bit ed25519 public key and
4
+ * are encoded using base58.
5
+ * They are usually 32 to 44 characters long.
6
+ */
7
+ export declare const SolAddressStruct: import("@metamask/superstruct").Struct<string, null>;
8
+ /**
9
+ * Supported Solana methods.
10
+ */
11
+ export declare enum SolMethod {
12
+ SendAndConfirmTransaction = "sendAndConfirmTransaction"
13
+ }
14
+ export declare const SolDataAccountStruct: import("@metamask/superstruct").Struct<{
15
+ type: "solana:data-account";
16
+ id: string;
17
+ address: string;
18
+ options: Record<string, import("@metamask/utils").Json>;
19
+ methods: "sendAndConfirmTransaction"[];
20
+ }, {
21
+ /**
22
+ * Account address.
23
+ */
24
+ address: import("@metamask/superstruct").Struct<string, null>;
25
+ /**
26
+ * Account type.
27
+ */
28
+ type: import("@metamask/superstruct").Struct<"solana:data-account", "solana:data-account">;
29
+ /**
30
+ * Account supported methods.
31
+ */
32
+ methods: import("@metamask/superstruct").Struct<"sendAndConfirmTransaction"[], import("@metamask/superstruct").Struct<"sendAndConfirmTransaction", {
33
+ sendAndConfirmTransaction: "sendAndConfirmTransaction";
34
+ }>>;
35
+ id: import("@metamask/superstruct").Struct<string, null>;
36
+ options: import("@metamask/superstruct").Struct<Record<string, import("@metamask/utils").Json>, null>;
37
+ }>;
38
+ export type SolDataAccount = Infer<typeof SolDataAccountStruct>;
39
+ //# sourceMappingURL=types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../src/sol/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,8BAA8B;AAMnD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,sDAG5B,CAAC;AAEF;;GAEG;AACH,oBAAY,SAAS;IAEnB,yBAAyB,8BAA8B;CACxD;AAED,eAAO,MAAM,oBAAoB;;;;;;;IAG/B;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;;;;;EAEH,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,39 @@
1
+ import type { Infer } from "@metamask/superstruct";
2
+ /**
3
+ * Solana addresses are represented in the format of a 256-bit ed25519 public key and
4
+ * are encoded using base58.
5
+ * They are usually 32 to 44 characters long.
6
+ */
7
+ export declare const SolAddressStruct: import("@metamask/superstruct").Struct<string, null>;
8
+ /**
9
+ * Supported Solana methods.
10
+ */
11
+ export declare enum SolMethod {
12
+ SendAndConfirmTransaction = "sendAndConfirmTransaction"
13
+ }
14
+ export declare const SolDataAccountStruct: import("@metamask/superstruct").Struct<{
15
+ type: "solana:data-account";
16
+ id: string;
17
+ address: string;
18
+ options: Record<string, import("@metamask/utils").Json>;
19
+ methods: "sendAndConfirmTransaction"[];
20
+ }, {
21
+ /**
22
+ * Account address.
23
+ */
24
+ address: import("@metamask/superstruct").Struct<string, null>;
25
+ /**
26
+ * Account type.
27
+ */
28
+ type: import("@metamask/superstruct").Struct<"solana:data-account", "solana:data-account">;
29
+ /**
30
+ * Account supported methods.
31
+ */
32
+ methods: import("@metamask/superstruct").Struct<"sendAndConfirmTransaction"[], import("@metamask/superstruct").Struct<"sendAndConfirmTransaction", {
33
+ sendAndConfirmTransaction: "sendAndConfirmTransaction";
34
+ }>>;
35
+ id: import("@metamask/superstruct").Struct<string, null>;
36
+ options: import("@metamask/superstruct").Struct<Record<string, import("@metamask/utils").Json>, null>;
37
+ }>;
38
+ export type SolDataAccount = Infer<typeof SolDataAccountStruct>;
39
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../src/sol/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,8BAA8B;AAMnD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,sDAG5B,CAAC;AAEF;;GAEG;AACH,oBAAY,SAAS;IAEnB,yBAAyB,8BAA8B;CACxD;AAED,eAAO,MAAM,oBAAoB;;;;;;;IAG/B;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;;;;;EAEH,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { array, enums, literal } from "@metamask/superstruct";
2
+ import { KeyringAccountStruct, SolAccountType } from "../api/index.mjs";
3
+ import { object, definePattern } from "../superstruct.mjs";
4
+ /**
5
+ * Solana addresses are represented in the format of a 256-bit ed25519 public key and
6
+ * are encoded using base58.
7
+ * They are usually 32 to 44 characters long.
8
+ */
9
+ export const SolAddressStruct = definePattern('SolAddress', /^[1-9A-HJ-NP-Za-km-z]{32,44}$/iu);
10
+ /**
11
+ * Supported Solana methods.
12
+ */
13
+ export var SolMethod;
14
+ (function (SolMethod) {
15
+ // General transaction methods
16
+ SolMethod["SendAndConfirmTransaction"] = "sendAndConfirmTransaction";
17
+ })(SolMethod || (SolMethod = {}));
18
+ export const SolDataAccountStruct = object({
19
+ ...KeyringAccountStruct.schema,
20
+ /**
21
+ * Account address.
22
+ */
23
+ address: SolAddressStruct,
24
+ /**
25
+ * Account type.
26
+ */
27
+ type: literal(`${SolAccountType.DataAccount}`),
28
+ /**
29
+ * Account supported methods.
30
+ */
31
+ methods: array(enums([`${SolMethod.SendAndConfirmTransaction}`])),
32
+ });
33
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../src/sol/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,8BAA8B;AAE9D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,yBAAe;AAC9D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,2BAAuB;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAC3C,YAAY,EACZ,iCAAiC,CAClC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,8BAA8B;IAC9B,oEAAuD,CAAA;AACzD,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;IACzC,GAAG,oBAAoB,CAAC,MAAM;IAE9B;;OAEG;IACH,OAAO,EAAE,gBAAgB;IAEzB;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC;IAE9C;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;CAClE,CAAC,CAAC","sourcesContent":["import type { Infer } from '@metamask/superstruct';\nimport { array, enums, literal } from '@metamask/superstruct';\n\nimport { KeyringAccountStruct, SolAccountType } from '../api';\nimport { object, definePattern } from '../superstruct';\n\n/**\n * Solana addresses are represented in the format of a 256-bit ed25519 public key and\n * are encoded using base58.\n * They are usually 32 to 44 characters long.\n */\nexport const SolAddressStruct = definePattern(\n 'SolAddress',\n /^[1-9A-HJ-NP-Za-km-z]{32,44}$/iu,\n);\n\n/**\n * Supported Solana methods.\n */\nexport enum SolMethod {\n // General transaction methods\n SendAndConfirmTransaction = 'sendAndConfirmTransaction',\n}\n\nexport const SolDataAccountStruct = object({\n ...KeyringAccountStruct.schema,\n\n /**\n * Account address.\n */\n address: SolAddressStruct,\n\n /**\n * Account type.\n */\n type: literal(`${SolAccountType.DataAccount}`),\n\n /**\n * Account supported methods.\n */\n methods: array(enums([`${SolMethod.SendAndConfirmTransaction}`])),\n});\n\nexport type SolDataAccount = Infer<typeof SolDataAccountStruct>;\n"]}