@metamask-previews/keyring-api 23.3.0-e51c895 → 23.4.0-5951828

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 (154) hide show
  1. package/CHANGELOG.md +20 -1
  2. package/dist/api/account-options.cjs +3 -3
  3. package/dist/api/account-options.cjs.map +1 -1
  4. package/dist/api/account-options.d.cts.map +1 -1
  5. package/dist/api/account-options.d.mts.map +1 -1
  6. package/dist/api/account-options.mjs +2 -2
  7. package/dist/api/account-options.mjs.map +1 -1
  8. package/dist/api/account.cjs +1 -1
  9. package/dist/api/account.cjs.map +1 -1
  10. package/dist/api/account.mjs +2 -2
  11. package/dist/api/account.mjs.map +1 -1
  12. package/dist/api/asset.cjs +3 -3
  13. package/dist/api/asset.cjs.map +1 -1
  14. package/dist/api/asset.d.cts.map +1 -1
  15. package/dist/api/asset.d.mts.map +1 -1
  16. package/dist/api/asset.mjs +2 -2
  17. package/dist/api/asset.mjs.map +1 -1
  18. package/dist/api/balance.cjs +1 -1
  19. package/dist/api/balance.cjs.map +1 -1
  20. package/dist/api/balance.mjs +2 -2
  21. package/dist/api/balance.mjs.map +1 -1
  22. package/dist/api/options.cjs +3 -2
  23. package/dist/api/options.cjs.map +1 -1
  24. package/dist/api/options.d.cts +1 -1
  25. package/dist/api/options.d.cts.map +1 -1
  26. package/dist/api/options.d.mts +1 -1
  27. package/dist/api/options.d.mts.map +1 -1
  28. package/dist/api/options.mjs +2 -1
  29. package/dist/api/options.mjs.map +1 -1
  30. package/dist/api/pagination.cjs +2 -3
  31. package/dist/api/pagination.cjs.map +1 -1
  32. package/dist/api/pagination.d.cts +1 -1
  33. package/dist/api/pagination.d.cts.map +1 -1
  34. package/dist/api/pagination.d.mts +1 -1
  35. package/dist/api/pagination.d.mts.map +1 -1
  36. package/dist/api/pagination.mjs +1 -2
  37. package/dist/api/pagination.mjs.map +1 -1
  38. package/dist/api/request.cjs +3 -3
  39. package/dist/api/request.cjs.map +1 -1
  40. package/dist/api/request.d.cts +1 -1
  41. package/dist/api/request.d.cts.map +1 -1
  42. package/dist/api/request.d.mts +1 -1
  43. package/dist/api/request.d.mts.map +1 -1
  44. package/dist/api/request.mjs +2 -2
  45. package/dist/api/request.mjs.map +1 -1
  46. package/dist/api/response.cjs +5 -6
  47. package/dist/api/response.cjs.map +1 -1
  48. package/dist/api/response.d.cts.map +1 -1
  49. package/dist/api/response.d.mts.map +1 -1
  50. package/dist/api/response.mjs +1 -2
  51. package/dist/api/response.mjs.map +1 -1
  52. package/dist/api/transaction.cjs +10 -10
  53. package/dist/api/transaction.cjs.map +1 -1
  54. package/dist/api/transaction.d.cts +11 -11
  55. package/dist/api/transaction.d.cts.map +1 -1
  56. package/dist/api/transaction.d.mts +11 -11
  57. package/dist/api/transaction.d.mts.map +1 -1
  58. package/dist/api/transaction.mjs +2 -2
  59. package/dist/api/transaction.mjs.map +1 -1
  60. package/dist/btc/types.cjs +5 -6
  61. package/dist/btc/types.cjs.map +1 -1
  62. package/dist/btc/types.d.cts.map +1 -1
  63. package/dist/btc/types.d.mts.map +1 -1
  64. package/dist/btc/types.mjs +1 -2
  65. package/dist/btc/types.mjs.map +1 -1
  66. package/dist/eth/erc4337/types.cjs +9 -8
  67. package/dist/eth/erc4337/types.cjs.map +1 -1
  68. package/dist/eth/erc4337/types.d.cts +4 -4
  69. package/dist/eth/erc4337/types.d.cts.map +1 -1
  70. package/dist/eth/erc4337/types.d.mts +4 -4
  71. package/dist/eth/erc4337/types.d.mts.map +1 -1
  72. package/dist/eth/erc4337/types.mjs +2 -1
  73. package/dist/eth/erc4337/types.mjs.map +1 -1
  74. package/dist/eth/rpc/params.cjs +4 -5
  75. package/dist/eth/rpc/params.cjs.map +1 -1
  76. package/dist/eth/rpc/params.d.cts.map +1 -1
  77. package/dist/eth/rpc/params.d.mts.map +1 -1
  78. package/dist/eth/rpc/params.mjs +1 -2
  79. package/dist/eth/rpc/params.mjs.map +1 -1
  80. package/dist/eth/types.cjs +4 -5
  81. package/dist/eth/types.cjs.map +1 -1
  82. package/dist/eth/types.d.cts +1 -1
  83. package/dist/eth/types.d.cts.map +1 -1
  84. package/dist/eth/types.d.mts +1 -1
  85. package/dist/eth/types.d.mts.map +1 -1
  86. package/dist/eth/types.mjs +2 -3
  87. package/dist/eth/types.mjs.map +1 -1
  88. package/dist/events.cjs +20 -20
  89. package/dist/events.cjs.map +1 -1
  90. package/dist/events.d.cts +4 -4
  91. package/dist/events.d.cts.map +1 -1
  92. package/dist/events.d.mts +4 -4
  93. package/dist/events.d.mts.map +1 -1
  94. package/dist/events.mjs +2 -2
  95. package/dist/events.mjs.map +1 -1
  96. package/dist/rpc.cjs +36 -36
  97. package/dist/rpc.cjs.map +1 -1
  98. package/dist/rpc.d.cts +78 -42
  99. package/dist/rpc.d.cts.map +1 -1
  100. package/dist/rpc.d.mts +78 -42
  101. package/dist/rpc.d.mts.map +1 -1
  102. package/dist/rpc.mjs +2 -2
  103. package/dist/rpc.mjs.map +1 -1
  104. package/dist/sol/types.cjs +1 -2
  105. package/dist/sol/types.cjs.map +1 -1
  106. package/dist/sol/types.d.cts.map +1 -1
  107. package/dist/sol/types.d.mts.map +1 -1
  108. package/dist/sol/types.mjs +1 -2
  109. package/dist/sol/types.mjs.map +1 -1
  110. package/dist/trx/types.cjs +1 -2
  111. package/dist/trx/types.cjs.map +1 -1
  112. package/dist/trx/types.d.cts.map +1 -1
  113. package/dist/trx/types.d.mts.map +1 -1
  114. package/dist/trx/types.mjs +1 -2
  115. package/dist/trx/types.mjs.map +1 -1
  116. package/dist/v2/api/index.cjs +1 -0
  117. package/dist/v2/api/index.cjs.map +1 -1
  118. package/dist/v2/api/index.d.cts +1 -0
  119. package/dist/v2/api/index.d.cts.map +1 -1
  120. package/dist/v2/api/index.d.mts +1 -0
  121. package/dist/v2/api/index.d.mts.map +1 -1
  122. package/dist/v2/api/index.mjs +1 -0
  123. package/dist/v2/api/index.mjs.map +1 -1
  124. package/dist/v2/api/keyring-capabilities.cjs +37 -0
  125. package/dist/v2/api/keyring-capabilities.cjs.map +1 -1
  126. package/dist/v2/api/keyring-capabilities.d.cts +57 -0
  127. package/dist/v2/api/keyring-capabilities.d.cts.map +1 -1
  128. package/dist/v2/api/keyring-capabilities.d.mts +57 -0
  129. package/dist/v2/api/keyring-capabilities.d.mts.map +1 -1
  130. package/dist/v2/api/keyring-capabilities.mjs +37 -0
  131. package/dist/v2/api/keyring-capabilities.mjs.map +1 -1
  132. package/dist/v2/api/keyring-rpc.cjs +10 -10
  133. package/dist/v2/api/keyring-rpc.cjs.map +1 -1
  134. package/dist/v2/api/keyring-rpc.d.cts +2 -2
  135. package/dist/v2/api/keyring-rpc.d.cts.map +1 -1
  136. package/dist/v2/api/keyring-rpc.d.mts +2 -2
  137. package/dist/v2/api/keyring-rpc.d.mts.map +1 -1
  138. package/dist/v2/api/keyring-rpc.mjs +2 -2
  139. package/dist/v2/api/keyring-rpc.mjs.map +1 -1
  140. package/dist/v2/api/keyring-snap-rpc.cjs +92 -0
  141. package/dist/v2/api/keyring-snap-rpc.cjs.map +1 -0
  142. package/dist/v2/api/keyring-snap-rpc.d.cts +545 -0
  143. package/dist/v2/api/keyring-snap-rpc.d.cts.map +1 -0
  144. package/dist/v2/api/keyring-snap-rpc.d.mts +545 -0
  145. package/dist/v2/api/keyring-snap-rpc.d.mts.map +1 -0
  146. package/dist/v2/api/keyring-snap-rpc.mjs +88 -0
  147. package/dist/v2/api/keyring-snap-rpc.mjs.map +1 -0
  148. package/dist/xlm/types.cjs +1 -2
  149. package/dist/xlm/types.cjs.map +1 -1
  150. package/dist/xlm/types.d.cts.map +1 -1
  151. package/dist/xlm/types.d.mts.map +1 -1
  152. package/dist/xlm/types.mjs +1 -2
  153. package/dist/xlm/types.mjs.map +1 -1
  154. package/package.json +2 -2
@@ -0,0 +1,545 @@
1
+ import type { AccountId, JsonRpcRequest } from "@metamask/keyring-utils";
2
+ import type { Infer } from "@metamask/superstruct";
3
+ import type { ResolvedAccountAddress } from "../../api/address.mjs";
4
+ import type { Balance } from "../../api/balance.mjs";
5
+ import type { CaipAssetType, CaipAssetTypeOrId, CaipChainId } from "../../api/caip.mjs";
6
+ import type { Pagination } from "../../api/pagination.mjs";
7
+ import type { TransactionsPage } from "../../api/transaction.mjs";
8
+ import type { KeyringRpc, KeyringRpcRequests } from "./keyring-rpc.mjs";
9
+ /**
10
+ * All keyring RPC methods available to a Snap - includes the base
11
+ * {@link KeyringRpcMethod} set plus snap-specific extensions.
12
+ */
13
+ export declare const KeyringSnapRpcMethod: {
14
+ readonly SetSelectedAccounts: "keyring_setSelectedAccounts";
15
+ readonly GetAccountTransactions: "keyring_getAccountTransactions";
16
+ readonly GetAccountAssets: "keyring_getAccountAssets";
17
+ readonly GetAccountBalances: "keyring_getAccountBalances";
18
+ readonly ResolveAccountAddress: "keyring_resolveAccountAddress";
19
+ readonly GetAccounts: "keyring_getAccounts";
20
+ readonly CreateAccounts: "keyring_createAccounts";
21
+ readonly GetAccount: "keyring_getAccount";
22
+ readonly DeleteAccount: "keyring_deleteAccount";
23
+ readonly ExportAccount: "keyring_exportAccount";
24
+ readonly SubmitRequest: "keyring_submitRequest";
25
+ };
26
+ /**
27
+ * All keyring RPC methods available to a Snap.
28
+ */
29
+ export type KeyringSnapRpcMethod = (typeof KeyringSnapRpcMethod)[keyof typeof KeyringSnapRpcMethod];
30
+ /**
31
+ * Check if a method is a Snap keyring RPC method (v2).
32
+ *
33
+ * @param method - Method to check.
34
+ * @returns Whether the method is a Snap keyring RPC method (v2).
35
+ */
36
+ export declare function isKeyringSnapRpcMethod(method: string): method is KeyringSnapRpcMethod;
37
+ export declare const SetSelectedAccountsRequestStruct: import("@metamask/superstruct").Struct<{
38
+ method: "keyring_setSelectedAccounts";
39
+ id: string | number | null;
40
+ jsonrpc: "2.0";
41
+ params: {
42
+ accounts: string[];
43
+ };
44
+ }, {
45
+ method: import("@metamask/superstruct").Struct<"keyring_setSelectedAccounts", "keyring_setSelectedAccounts">;
46
+ params: import("@metamask/superstruct").Struct<{
47
+ accounts: string[];
48
+ }, {
49
+ accounts: import("@metamask/superstruct").Struct<string[], import("@metamask/superstruct").Struct<string, null>>;
50
+ }>;
51
+ jsonrpc: import("@metamask/superstruct").Struct<"2.0", "2.0">;
52
+ id: import("@metamask/superstruct").Struct<string | number | null, null>;
53
+ }>;
54
+ export type SetSelectedAccountsRequest = Infer<typeof SetSelectedAccountsRequestStruct>;
55
+ export declare const SetSelectedAccountsResponseStruct: import("@metamask/superstruct").Struct<null, null>;
56
+ export type SetSelectedAccountsResponse = Infer<typeof SetSelectedAccountsResponseStruct>;
57
+ export declare const GetAccountTransactionsRequestStruct: import("@metamask/superstruct").Struct<{
58
+ method: "keyring_getAccountTransactions";
59
+ id: string | number | null;
60
+ jsonrpc: "2.0";
61
+ params: {
62
+ id: string;
63
+ pagination: {
64
+ limit: number;
65
+ next?: string | null;
66
+ };
67
+ };
68
+ }, {
69
+ method: import("@metamask/superstruct").Struct<"keyring_getAccountTransactions", "keyring_getAccountTransactions">;
70
+ params: import("@metamask/superstruct").Struct<{
71
+ id: string;
72
+ pagination: {
73
+ limit: number;
74
+ next?: string | null;
75
+ };
76
+ }, {
77
+ id: import("@metamask/superstruct").Struct<string, null>;
78
+ pagination: import("@metamask/superstruct").Struct<{
79
+ limit: number;
80
+ next?: string | null;
81
+ }, {
82
+ limit: import("@metamask/superstruct").Struct<number, null>;
83
+ next: import("@metamask/superstruct").ExactOptionalStruct<string | null, null>;
84
+ }>;
85
+ }>;
86
+ jsonrpc: import("@metamask/superstruct").Struct<"2.0", "2.0">;
87
+ id: import("@metamask/superstruct").Struct<string | number | null, null>;
88
+ }>;
89
+ export type GetAccountTransactionsRequest = Infer<typeof GetAccountTransactionsRequestStruct>;
90
+ export declare const GetAccountTransactionsResponseStruct: import("@metamask/superstruct").Struct<{
91
+ data: {
92
+ type: "unknown" | "send" | "receive" | "swap" | "bridge:send" | "bridge:receive" | "stake:deposit" | "stake:withdraw" | "token:approve" | "token:disapprove";
93
+ id: string;
94
+ from: {
95
+ address: string;
96
+ asset: {
97
+ unit: string;
98
+ type: `${string}:${string}/${string}:${string}`;
99
+ amount: string;
100
+ fungible: true;
101
+ } | {
102
+ id: `${string}:${string}/${string}:${string}/${string}`;
103
+ fungible: false;
104
+ } | null;
105
+ }[];
106
+ events: {
107
+ status: "submitted" | "unconfirmed" | "confirmed" | "failed";
108
+ timestamp: number | null;
109
+ }[];
110
+ chain: `${string}:${string}`;
111
+ status: "submitted" | "unconfirmed" | "confirmed" | "failed";
112
+ account: string;
113
+ timestamp: number | null;
114
+ to: {
115
+ address: string;
116
+ asset: {
117
+ unit: string;
118
+ type: `${string}:${string}/${string}:${string}`;
119
+ amount: string;
120
+ fungible: true;
121
+ } | {
122
+ id: `${string}:${string}/${string}:${string}/${string}`;
123
+ fungible: false;
124
+ } | null;
125
+ }[];
126
+ fees: {
127
+ type: "base" | "priority";
128
+ asset: {
129
+ unit: string;
130
+ type: `${string}:${string}/${string}:${string}`;
131
+ amount: string;
132
+ fungible: true;
133
+ } | {
134
+ id: `${string}:${string}/${string}:${string}/${string}`;
135
+ fungible: false;
136
+ };
137
+ }[];
138
+ details?: {
139
+ origin?: string;
140
+ securityAlertResponse?: "Benign" | "Warning" | "Malicious";
141
+ typeLabel?: string;
142
+ };
143
+ }[];
144
+ next: string | null;
145
+ }, {
146
+ data: import("@metamask/superstruct").Struct<{
147
+ type: "unknown" | "send" | "receive" | "swap" | "bridge:send" | "bridge:receive" | "stake:deposit" | "stake:withdraw" | "token:approve" | "token:disapprove";
148
+ id: string;
149
+ from: {
150
+ address: string;
151
+ asset: {
152
+ unit: string;
153
+ type: `${string}:${string}/${string}:${string}`;
154
+ amount: string;
155
+ fungible: true;
156
+ } | {
157
+ id: `${string}:${string}/${string}:${string}/${string}`;
158
+ fungible: false;
159
+ } | null;
160
+ }[];
161
+ events: {
162
+ status: "submitted" | "unconfirmed" | "confirmed" | "failed";
163
+ timestamp: number | null;
164
+ }[];
165
+ chain: `${string}:${string}`;
166
+ status: "submitted" | "unconfirmed" | "confirmed" | "failed";
167
+ account: string;
168
+ timestamp: number | null;
169
+ to: {
170
+ address: string;
171
+ asset: {
172
+ unit: string;
173
+ type: `${string}:${string}/${string}:${string}`;
174
+ amount: string;
175
+ fungible: true;
176
+ } | {
177
+ id: `${string}:${string}/${string}:${string}/${string}`;
178
+ fungible: false;
179
+ } | null;
180
+ }[];
181
+ fees: {
182
+ type: "base" | "priority";
183
+ asset: {
184
+ unit: string;
185
+ type: `${string}:${string}/${string}:${string}`;
186
+ amount: string;
187
+ fungible: true;
188
+ } | {
189
+ id: `${string}:${string}/${string}:${string}/${string}`;
190
+ fungible: false;
191
+ };
192
+ }[];
193
+ details?: {
194
+ origin?: string;
195
+ securityAlertResponse?: "Benign" | "Warning" | "Malicious";
196
+ typeLabel?: string;
197
+ };
198
+ }[], import("@metamask/superstruct").Struct<{
199
+ type: "unknown" | "send" | "receive" | "swap" | "bridge:send" | "bridge:receive" | "stake:deposit" | "stake:withdraw" | "token:approve" | "token:disapprove";
200
+ id: string;
201
+ from: {
202
+ address: string;
203
+ asset: {
204
+ unit: string;
205
+ type: `${string}:${string}/${string}:${string}`;
206
+ amount: string;
207
+ fungible: true;
208
+ } | {
209
+ id: `${string}:${string}/${string}:${string}/${string}`;
210
+ fungible: false;
211
+ } | null;
212
+ }[];
213
+ events: {
214
+ status: "submitted" | "unconfirmed" | "confirmed" | "failed";
215
+ timestamp: number | null;
216
+ }[];
217
+ chain: `${string}:${string}`;
218
+ status: "submitted" | "unconfirmed" | "confirmed" | "failed";
219
+ account: string;
220
+ timestamp: number | null;
221
+ to: {
222
+ address: string;
223
+ asset: {
224
+ unit: string;
225
+ type: `${string}:${string}/${string}:${string}`;
226
+ amount: string;
227
+ fungible: true;
228
+ } | {
229
+ id: `${string}:${string}/${string}:${string}/${string}`;
230
+ fungible: false;
231
+ } | null;
232
+ }[];
233
+ fees: {
234
+ type: "base" | "priority";
235
+ asset: {
236
+ unit: string;
237
+ type: `${string}:${string}/${string}:${string}`;
238
+ amount: string;
239
+ fungible: true;
240
+ } | {
241
+ id: `${string}:${string}/${string}:${string}/${string}`;
242
+ fungible: false;
243
+ };
244
+ }[];
245
+ details?: {
246
+ origin?: string;
247
+ securityAlertResponse?: "Benign" | "Warning" | "Malicious";
248
+ typeLabel?: string;
249
+ };
250
+ }, {
251
+ id: import("@metamask/superstruct").Struct<string, null>;
252
+ chain: import("@metamask/superstruct").Struct<`${string}:${string}`, null>;
253
+ account: import("@metamask/superstruct").Struct<string, null>;
254
+ status: import("@metamask/superstruct").Struct<"submitted" | "unconfirmed" | "confirmed" | "failed", {
255
+ submitted: "submitted";
256
+ unconfirmed: "unconfirmed";
257
+ confirmed: "confirmed";
258
+ failed: "failed";
259
+ }>;
260
+ timestamp: import("@metamask/superstruct").Struct<number | null, null>;
261
+ type: import("@metamask/superstruct").Struct<"unknown" | "send" | "receive" | "swap" | "bridge:send" | "bridge:receive" | "stake:deposit" | "stake:withdraw" | "token:approve" | "token:disapprove", {
262
+ unknown: "unknown";
263
+ send: "send";
264
+ receive: "receive";
265
+ swap: "swap";
266
+ "bridge:send": "bridge:send";
267
+ "bridge:receive": "bridge:receive";
268
+ "stake:deposit": "stake:deposit";
269
+ "stake:withdraw": "stake:withdraw";
270
+ "token:approve": "token:approve";
271
+ "token:disapprove": "token:disapprove";
272
+ }>;
273
+ from: import("@metamask/superstruct").Struct<{
274
+ address: string;
275
+ asset: {
276
+ unit: string;
277
+ type: `${string}:${string}/${string}:${string}`;
278
+ amount: string;
279
+ fungible: true;
280
+ } | {
281
+ id: `${string}:${string}/${string}:${string}/${string}`;
282
+ fungible: false;
283
+ } | null;
284
+ }[], import("@metamask/superstruct").Struct<{
285
+ address: string;
286
+ asset: {
287
+ unit: string;
288
+ type: `${string}:${string}/${string}:${string}`;
289
+ amount: string;
290
+ fungible: true;
291
+ } | {
292
+ id: `${string}:${string}/${string}:${string}/${string}`;
293
+ fungible: false;
294
+ } | null;
295
+ }, {
296
+ address: import("@metamask/superstruct").Struct<string, null>;
297
+ asset: import("@metamask/superstruct").Struct<{
298
+ unit: string;
299
+ type: `${string}:${string}/${string}:${string}`;
300
+ amount: string;
301
+ fungible: true;
302
+ } | {
303
+ id: `${string}:${string}/${string}:${string}/${string}`;
304
+ fungible: false;
305
+ } | null, null>;
306
+ }>>;
307
+ to: import("@metamask/superstruct").Struct<{
308
+ address: string;
309
+ asset: {
310
+ unit: string;
311
+ type: `${string}:${string}/${string}:${string}`;
312
+ amount: string;
313
+ fungible: true;
314
+ } | {
315
+ id: `${string}:${string}/${string}:${string}/${string}`;
316
+ fungible: false;
317
+ } | null;
318
+ }[], import("@metamask/superstruct").Struct<{
319
+ address: string;
320
+ asset: {
321
+ unit: string;
322
+ type: `${string}:${string}/${string}:${string}`;
323
+ amount: string;
324
+ fungible: true;
325
+ } | {
326
+ id: `${string}:${string}/${string}:${string}/${string}`;
327
+ fungible: false;
328
+ } | null;
329
+ }, {
330
+ address: import("@metamask/superstruct").Struct<string, null>;
331
+ asset: import("@metamask/superstruct").Struct<{
332
+ unit: string;
333
+ type: `${string}:${string}/${string}:${string}`;
334
+ amount: string;
335
+ fungible: true;
336
+ } | {
337
+ id: `${string}:${string}/${string}:${string}/${string}`;
338
+ fungible: false;
339
+ } | null, null>;
340
+ }>>;
341
+ fees: import("@metamask/superstruct").Struct<{
342
+ type: "base" | "priority";
343
+ asset: {
344
+ unit: string;
345
+ type: `${string}:${string}/${string}:${string}`;
346
+ amount: string;
347
+ fungible: true;
348
+ } | {
349
+ id: `${string}:${string}/${string}:${string}/${string}`;
350
+ fungible: false;
351
+ };
352
+ }[], import("@metamask/superstruct").Struct<{
353
+ type: "base" | "priority";
354
+ asset: {
355
+ unit: string;
356
+ type: `${string}:${string}/${string}:${string}`;
357
+ amount: string;
358
+ fungible: true;
359
+ } | {
360
+ id: `${string}:${string}/${string}:${string}/${string}`;
361
+ fungible: false;
362
+ };
363
+ }, {
364
+ type: import("@metamask/superstruct").Struct<"base" | "priority", {
365
+ base: "base";
366
+ priority: "priority";
367
+ }>;
368
+ asset: import("@metamask/superstruct").Struct<{
369
+ unit: string;
370
+ type: `${string}:${string}/${string}:${string}`;
371
+ amount: string;
372
+ fungible: true;
373
+ } | {
374
+ id: `${string}:${string}/${string}:${string}/${string}`;
375
+ fungible: false;
376
+ }, null>;
377
+ }>>;
378
+ events: import("@metamask/superstruct").Struct<{
379
+ status: "submitted" | "unconfirmed" | "confirmed" | "failed";
380
+ timestamp: number | null;
381
+ }[], import("@metamask/superstruct").Struct<{
382
+ status: "submitted" | "unconfirmed" | "confirmed" | "failed";
383
+ timestamp: number | null;
384
+ }, {
385
+ status: import("@metamask/superstruct").Struct<"submitted" | "unconfirmed" | "confirmed" | "failed", {
386
+ submitted: "submitted";
387
+ unconfirmed: "unconfirmed";
388
+ confirmed: "confirmed";
389
+ failed: "failed";
390
+ }>;
391
+ timestamp: import("@metamask/superstruct").Struct<number | null, null>;
392
+ }>>;
393
+ details: import("@metamask/superstruct").ExactOptionalStruct<{
394
+ origin?: string;
395
+ securityAlertResponse?: "Benign" | "Warning" | "Malicious";
396
+ typeLabel?: string;
397
+ }, {
398
+ origin: import("@metamask/superstruct").ExactOptionalStruct<string, null>;
399
+ securityAlertResponse: import("@metamask/superstruct").ExactOptionalStruct<"Benign" | "Warning" | "Malicious", {
400
+ Benign: "Benign";
401
+ Warning: "Warning";
402
+ Malicious: "Malicious";
403
+ }>;
404
+ typeLabel: import("@metamask/superstruct").ExactOptionalStruct<string, null>;
405
+ }>;
406
+ }>>;
407
+ next: import("@metamask/superstruct").Struct<string | null, null>;
408
+ }>;
409
+ export type GetAccountTransactionsResponse = Infer<typeof GetAccountTransactionsResponseStruct>;
410
+ export declare const GetAccountAssetsRequestStruct: import("@metamask/superstruct").Struct<{
411
+ method: "keyring_getAccountAssets";
412
+ id: string | number | null;
413
+ jsonrpc: "2.0";
414
+ params: {
415
+ id: string;
416
+ };
417
+ }, {
418
+ method: import("@metamask/superstruct").Struct<"keyring_getAccountAssets", "keyring_getAccountAssets">;
419
+ params: import("@metamask/superstruct").Struct<{
420
+ id: string;
421
+ }, {
422
+ id: import("@metamask/superstruct").Struct<string, null>;
423
+ }>;
424
+ jsonrpc: import("@metamask/superstruct").Struct<"2.0", "2.0">;
425
+ id: import("@metamask/superstruct").Struct<string | number | null, null>;
426
+ }>;
427
+ export type GetAccountAssetsRequest = Infer<typeof GetAccountAssetsRequestStruct>;
428
+ export declare const GetAccountAssetsResponseStruct: import("@metamask/superstruct").Struct<(`${string}:${string}/${string}:${string}` | `${string}:${string}/${string}:${string}/${string}`)[], import("@metamask/superstruct").Struct<`${string}:${string}/${string}:${string}` | `${string}:${string}/${string}:${string}/${string}`, null>>;
429
+ export type GetAccountAssetsResponse = Infer<typeof GetAccountAssetsResponseStruct>;
430
+ export declare const GetAccountBalancesRequestStruct: import("@metamask/superstruct").Struct<{
431
+ method: "keyring_getAccountBalances";
432
+ id: string | number | null;
433
+ jsonrpc: "2.0";
434
+ params: {
435
+ id: string;
436
+ assets: `${string}:${string}/${string}:${string}`[];
437
+ };
438
+ }, {
439
+ method: import("@metamask/superstruct").Struct<"keyring_getAccountBalances", "keyring_getAccountBalances">;
440
+ params: import("@metamask/superstruct").Struct<{
441
+ id: string;
442
+ assets: `${string}:${string}/${string}:${string}`[];
443
+ }, {
444
+ id: import("@metamask/superstruct").Struct<string, null>;
445
+ assets: import("@metamask/superstruct").Struct<`${string}:${string}/${string}:${string}`[], import("@metamask/superstruct").Struct<`${string}:${string}/${string}:${string}`, null>>;
446
+ }>;
447
+ jsonrpc: import("@metamask/superstruct").Struct<"2.0", "2.0">;
448
+ id: import("@metamask/superstruct").Struct<string | number | null, null>;
449
+ }>;
450
+ export type GetAccountBalancesRequest = Infer<typeof GetAccountBalancesRequestStruct>;
451
+ export declare const GetAccountBalancesResponseStruct: import("@metamask/superstruct").Struct<Record<`${string}:${string}/${string}:${string}`, {
452
+ unit: string;
453
+ amount: string;
454
+ }>, null>;
455
+ export type GetAccountBalancesResponse = Infer<typeof GetAccountBalancesResponseStruct>;
456
+ export declare const ResolveAccountAddressRequestStruct: import("@metamask/superstruct").Struct<{
457
+ method: "keyring_resolveAccountAddress";
458
+ id: string | number | null;
459
+ jsonrpc: "2.0";
460
+ params: {
461
+ request: {
462
+ method: string;
463
+ id: string | number | null;
464
+ jsonrpc: "2.0";
465
+ params?: Record<string, import("@metamask/utils").Json> | import("@metamask/utils").Json[];
466
+ };
467
+ scope: `${string}:${string}`;
468
+ };
469
+ }, {
470
+ method: import("@metamask/superstruct").Struct<"keyring_resolveAccountAddress", "keyring_resolveAccountAddress">;
471
+ params: import("@metamask/superstruct").Struct<{
472
+ request: {
473
+ method: string;
474
+ id: string | number | null;
475
+ jsonrpc: "2.0";
476
+ params?: Record<string, import("@metamask/utils").Json> | import("@metamask/utils").Json[];
477
+ };
478
+ scope: `${string}:${string}`;
479
+ }, {
480
+ scope: import("@metamask/superstruct").Struct<`${string}:${string}`, null>;
481
+ request: import("@metamask/superstruct").Struct<{
482
+ method: string;
483
+ id: string | number | null;
484
+ jsonrpc: "2.0";
485
+ params?: Record<string, import("@metamask/utils").Json> | import("@metamask/utils").Json[];
486
+ }, {
487
+ jsonrpc: import("@metamask/superstruct").Struct<"2.0", "2.0">;
488
+ id: import("@metamask/superstruct").Struct<string | number | null, null>;
489
+ method: import("@metamask/superstruct").Struct<string, null>;
490
+ params: import("@metamask/superstruct").ExactOptionalStruct<Record<string, import("@metamask/utils").Json> | import("@metamask/utils").Json[], null>;
491
+ }>;
492
+ }>;
493
+ jsonrpc: import("@metamask/superstruct").Struct<"2.0", "2.0">;
494
+ id: import("@metamask/superstruct").Struct<string | number | null, null>;
495
+ }>;
496
+ export type ResolveAccountAddressRequest = Infer<typeof ResolveAccountAddressRequestStruct>;
497
+ export declare const ResolveAccountAddressResponseStruct: import("@metamask/superstruct").Struct<{
498
+ address: `${string}:${string}:${string}`;
499
+ } | null, {
500
+ address: import("@metamask/superstruct").Struct<`${string}:${string}:${string}`, null>;
501
+ }>;
502
+ export type ResolveAccountAddressResponse = Infer<typeof ResolveAccountAddressResponseStruct>;
503
+ /**
504
+ * All keyring RPC requests available to a Snap - includes base
505
+ * {@link KeyringRpcRequests} plus snap-specific request types.
506
+ */
507
+ export type KeyringSnapRpcRequests = KeyringRpcRequests | SetSelectedAccountsRequest | GetAccountTransactionsRequest | GetAccountAssetsRequest | GetAccountBalancesRequest | ResolveAccountAddressRequest;
508
+ /**
509
+ * Extract the proper request type for a given {@link KeyringSnapRpcMethod}.
510
+ */
511
+ export type KeyringSnapRpcRequest<RpcMethod extends KeyringSnapRpcMethod> = Extract<KeyringSnapRpcRequests, {
512
+ method: `${RpcMethod}`;
513
+ }>;
514
+ /**
515
+ * Snap keyring RPC interface - extends the base {@link KeyringRpc} with
516
+ * optional snap-specific methods that a Snap may expose.
517
+ */
518
+ export type KeyringSnapRpc = KeyringRpc & {
519
+ /**
520
+ * Notify the Snap of the currently selected accounts.
521
+ * Maps to `keyring_setSelectedAccounts`.
522
+ */
523
+ setSelectedAccounts?: (accounts: AccountId[]) => Promise<void>;
524
+ /**
525
+ * Get transactions for an account with pagination.
526
+ * Maps to `keyring_getAccountTransactions`.
527
+ */
528
+ getAccountTransactions?: (id: AccountId, pagination: Pagination) => Promise<TransactionsPage>;
529
+ /**
530
+ * Get the asset types supported by an account.
531
+ * Maps to `keyring_getAccountAssets`.
532
+ */
533
+ getAccountAssets?: (id: AccountId) => Promise<CaipAssetTypeOrId[]>;
534
+ /**
535
+ * Get balances for an account for the requested asset types.
536
+ * Maps to `keyring_getAccountBalances`.
537
+ */
538
+ getAccountBalances?: (id: AccountId, assets: CaipAssetType[]) => Promise<Record<CaipAssetType, Balance>>;
539
+ /**
540
+ * Resolve the account address to use for routing a signing request.
541
+ * Maps to `keyring_resolveAccountAddress`.
542
+ */
543
+ resolveAccountAddress?: (scope: CaipChainId, request: JsonRpcRequest) => Promise<ResolvedAccountAddress | null>;
544
+ };
545
+ //# sourceMappingURL=keyring-snap-rpc.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyring-snap-rpc.d.mts","sourceRoot":"","sources":["../../../src/v2/api/keyring-snap-rpc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import { UuidStruct, JsonRpcRequestStruct } from "@metamask/keyring-utils";
2
+ import { array, literal, nullable, number, object, record, string, union } from "@metamask/superstruct";
3
+ import { ResolvedAccountAddressStruct } from "../../api/address.mjs";
4
+ import { BalanceStruct } from "../../api/balance.mjs";
5
+ import { CaipAssetTypeOrIdStruct, CaipAssetTypeStruct, CaipChainIdStruct } from "../../api/caip.mjs";
6
+ import { PaginationStruct } from "../../api/pagination.mjs";
7
+ import { TransactionsPageStruct } from "../../api/transaction.mjs";
8
+ import { KeyringRpcMethod } from "./keyring-rpc.mjs";
9
+ /**
10
+ * All keyring RPC methods available to a Snap - includes the base
11
+ * {@link KeyringRpcMethod} set plus snap-specific extensions.
12
+ */
13
+ export const KeyringSnapRpcMethod = {
14
+ ...KeyringRpcMethod,
15
+ SetSelectedAccounts: 'keyring_setSelectedAccounts',
16
+ GetAccountTransactions: 'keyring_getAccountTransactions',
17
+ GetAccountAssets: 'keyring_getAccountAssets',
18
+ GetAccountBalances: 'keyring_getAccountBalances',
19
+ ResolveAccountAddress: 'keyring_resolveAccountAddress',
20
+ };
21
+ /**
22
+ * Check if a method is a Snap keyring RPC method (v2).
23
+ *
24
+ * @param method - Method to check.
25
+ * @returns Whether the method is a Snap keyring RPC method (v2).
26
+ */
27
+ export function isKeyringSnapRpcMethod(method) {
28
+ return Object.values(KeyringSnapRpcMethod).includes(method);
29
+ }
30
+ // ----------------------------------------------------------------------------
31
+ const CommonHeader = {
32
+ jsonrpc: literal('2.0'),
33
+ id: union([string(), number(), literal(null)]),
34
+ };
35
+ // ----------------------------------------------------------------------------
36
+ // Set selected accounts
37
+ export const SetSelectedAccountsRequestStruct = object({
38
+ ...CommonHeader,
39
+ method: literal(`${KeyringSnapRpcMethod.SetSelectedAccounts}`),
40
+ params: object({
41
+ accounts: array(string()),
42
+ }),
43
+ });
44
+ export const SetSelectedAccountsResponseStruct = literal(null);
45
+ // ----------------------------------------------------------------------------
46
+ // Get account transactions
47
+ export const GetAccountTransactionsRequestStruct = object({
48
+ ...CommonHeader,
49
+ method: literal(`${KeyringSnapRpcMethod.GetAccountTransactions}`),
50
+ params: object({
51
+ id: UuidStruct,
52
+ pagination: PaginationStruct,
53
+ }),
54
+ });
55
+ export const GetAccountTransactionsResponseStruct = TransactionsPageStruct;
56
+ // ----------------------------------------------------------------------------
57
+ // Get account assets
58
+ export const GetAccountAssetsRequestStruct = object({
59
+ ...CommonHeader,
60
+ method: literal(`${KeyringSnapRpcMethod.GetAccountAssets}`),
61
+ params: object({
62
+ id: UuidStruct,
63
+ }),
64
+ });
65
+ export const GetAccountAssetsResponseStruct = array(CaipAssetTypeOrIdStruct);
66
+ // ----------------------------------------------------------------------------
67
+ // Get account balances
68
+ export const GetAccountBalancesRequestStruct = object({
69
+ ...CommonHeader,
70
+ method: literal(`${KeyringSnapRpcMethod.GetAccountBalances}`),
71
+ params: object({
72
+ id: UuidStruct,
73
+ assets: array(CaipAssetTypeStruct),
74
+ }),
75
+ });
76
+ export const GetAccountBalancesResponseStruct = record(CaipAssetTypeStruct, BalanceStruct);
77
+ // ----------------------------------------------------------------------------
78
+ // Resolve account address
79
+ export const ResolveAccountAddressRequestStruct = object({
80
+ ...CommonHeader,
81
+ method: literal(`${KeyringSnapRpcMethod.ResolveAccountAddress}`),
82
+ params: object({
83
+ scope: CaipChainIdStruct,
84
+ request: JsonRpcRequestStruct,
85
+ }),
86
+ });
87
+ export const ResolveAccountAddressResponseStruct = nullable(ResolvedAccountAddressStruct);
88
+ //# sourceMappingURL=keyring-snap-rpc.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyring-snap-rpc.mjs","sourceRoot":"","sources":["../../../src/v2/api/keyring-snap-rpc.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AccountId, JsonRpcRequest } from '@metamask/keyring-utils';\nimport { UuidStruct, JsonRpcRequestStruct } from '@metamask/keyring-utils';\nimport type { Infer } from '@metamask/superstruct';\nimport {\n array,\n literal,\n nullable,\n number,\n object,\n record,\n string,\n union,\n} from '@metamask/superstruct';\n\nimport { ResolvedAccountAddressStruct } from '../../api/address';\nimport type { ResolvedAccountAddress } from '../../api/address';\nimport { BalanceStruct } from '../../api/balance';\nimport type { Balance } from '../../api/balance';\nimport {\n CaipAssetTypeOrIdStruct,\n CaipAssetTypeStruct,\n CaipChainIdStruct,\n} from '../../api/caip';\nimport type {\n CaipAssetType,\n CaipAssetTypeOrId,\n CaipChainId,\n} from '../../api/caip';\nimport { PaginationStruct } from '../../api/pagination';\nimport type { Pagination } from '../../api/pagination';\nimport { TransactionsPageStruct } from '../../api/transaction';\nimport type { TransactionsPage } from '../../api/transaction';\nimport { KeyringRpcMethod } from './keyring-rpc';\nimport type { KeyringRpc, KeyringRpcRequests } from './keyring-rpc';\n\n/**\n * All keyring RPC methods available to a Snap - includes the base\n * {@link KeyringRpcMethod} set plus snap-specific extensions.\n */\nexport const KeyringSnapRpcMethod = {\n ...KeyringRpcMethod,\n SetSelectedAccounts: 'keyring_setSelectedAccounts',\n GetAccountTransactions: 'keyring_getAccountTransactions',\n GetAccountAssets: 'keyring_getAccountAssets',\n GetAccountBalances: 'keyring_getAccountBalances',\n ResolveAccountAddress: 'keyring_resolveAccountAddress',\n} as const;\n\n/**\n * All keyring RPC methods available to a Snap.\n */\nexport type KeyringSnapRpcMethod =\n (typeof KeyringSnapRpcMethod)[keyof typeof KeyringSnapRpcMethod];\n\n/**\n * Check if a method is a Snap keyring RPC method (v2).\n *\n * @param method - Method to check.\n * @returns Whether the method is a Snap keyring RPC method (v2).\n */\nexport function isKeyringSnapRpcMethod(\n method: string,\n): method is KeyringSnapRpcMethod {\n return Object.values(KeyringSnapRpcMethod).includes(\n method as KeyringSnapRpcMethod,\n );\n}\n\n// ----------------------------------------------------------------------------\n\nconst CommonHeader = {\n jsonrpc: literal('2.0'),\n id: union([string(), number(), literal(null)]),\n};\n\n// ----------------------------------------------------------------------------\n// Set selected accounts\n\nexport const SetSelectedAccountsRequestStruct = object({\n ...CommonHeader,\n method: literal(`${KeyringSnapRpcMethod.SetSelectedAccounts}`),\n params: object({\n accounts: array(string()),\n }),\n});\n\nexport type SetSelectedAccountsRequest = Infer<\n typeof SetSelectedAccountsRequestStruct\n>;\n\nexport const SetSelectedAccountsResponseStruct = literal(null);\n\nexport type SetSelectedAccountsResponse = Infer<\n typeof SetSelectedAccountsResponseStruct\n>;\n\n// ----------------------------------------------------------------------------\n// Get account transactions\n\nexport const GetAccountTransactionsRequestStruct = object({\n ...CommonHeader,\n method: literal(`${KeyringSnapRpcMethod.GetAccountTransactions}`),\n params: object({\n id: UuidStruct,\n pagination: PaginationStruct,\n }),\n});\n\nexport type GetAccountTransactionsRequest = Infer<\n typeof GetAccountTransactionsRequestStruct\n>;\n\nexport const GetAccountTransactionsResponseStruct = TransactionsPageStruct;\n\nexport type GetAccountTransactionsResponse = Infer<\n typeof GetAccountTransactionsResponseStruct\n>;\n\n// ----------------------------------------------------------------------------\n// Get account assets\n\nexport const GetAccountAssetsRequestStruct = object({\n ...CommonHeader,\n method: literal(`${KeyringSnapRpcMethod.GetAccountAssets}`),\n params: object({\n id: UuidStruct,\n }),\n});\n\nexport type GetAccountAssetsRequest = Infer<\n typeof GetAccountAssetsRequestStruct\n>;\n\nexport const GetAccountAssetsResponseStruct = array(CaipAssetTypeOrIdStruct);\n\nexport type GetAccountAssetsResponse = Infer<\n typeof GetAccountAssetsResponseStruct\n>;\n\n// ----------------------------------------------------------------------------\n// Get account balances\n\nexport const GetAccountBalancesRequestStruct = object({\n ...CommonHeader,\n method: literal(`${KeyringSnapRpcMethod.GetAccountBalances}`),\n params: object({\n id: UuidStruct,\n assets: array(CaipAssetTypeStruct),\n }),\n});\n\nexport type GetAccountBalancesRequest = Infer<\n typeof GetAccountBalancesRequestStruct\n>;\n\nexport const GetAccountBalancesResponseStruct = record(\n CaipAssetTypeStruct,\n BalanceStruct,\n);\n\nexport type GetAccountBalancesResponse = Infer<\n typeof GetAccountBalancesResponseStruct\n>;\n\n// ----------------------------------------------------------------------------\n// Resolve account address\n\nexport const ResolveAccountAddressRequestStruct = object({\n ...CommonHeader,\n method: literal(`${KeyringSnapRpcMethod.ResolveAccountAddress}`),\n params: object({\n scope: CaipChainIdStruct,\n request: JsonRpcRequestStruct,\n }),\n});\n\nexport type ResolveAccountAddressRequest = Infer<\n typeof ResolveAccountAddressRequestStruct\n>;\n\nexport const ResolveAccountAddressResponseStruct = nullable(\n ResolvedAccountAddressStruct,\n);\n\nexport type ResolveAccountAddressResponse = Infer<\n typeof ResolveAccountAddressResponseStruct\n>;\n\n// ----------------------------------------------------------------------------\n\n/**\n * All keyring RPC requests available to a Snap - includes base\n * {@link KeyringRpcRequests} plus snap-specific request types.\n */\nexport type KeyringSnapRpcRequests =\n | KeyringRpcRequests\n | SetSelectedAccountsRequest\n | GetAccountTransactionsRequest\n | GetAccountAssetsRequest\n | GetAccountBalancesRequest\n | ResolveAccountAddressRequest;\n\n/**\n * Extract the proper request type for a given {@link KeyringSnapRpcMethod}.\n */\nexport type KeyringSnapRpcRequest<RpcMethod extends KeyringSnapRpcMethod> =\n Extract<KeyringSnapRpcRequests, { method: `${RpcMethod}` }>;\n\n// ----------------------------------------------------------------------------\n\n/**\n * Snap keyring RPC interface - extends the base {@link KeyringRpc} with\n * optional snap-specific methods that a Snap may expose.\n */\nexport type KeyringSnapRpc = KeyringRpc & {\n /**\n * Notify the Snap of the currently selected accounts.\n * Maps to `keyring_setSelectedAccounts`.\n */\n setSelectedAccounts?: (accounts: AccountId[]) => Promise<void>;\n\n /**\n * Get transactions for an account with pagination.\n * Maps to `keyring_getAccountTransactions`.\n */\n getAccountTransactions?: (\n id: AccountId,\n pagination: Pagination,\n ) => Promise<TransactionsPage>;\n\n /**\n * Get the asset types supported by an account.\n * Maps to `keyring_getAccountAssets`.\n */\n getAccountAssets?: (id: AccountId) => Promise<CaipAssetTypeOrId[]>;\n\n /**\n * Get balances for an account for the requested asset types.\n * Maps to `keyring_getAccountBalances`.\n */\n getAccountBalances?: (\n id: AccountId,\n assets: CaipAssetType[],\n ) => Promise<Record<CaipAssetType, Balance>>;\n\n /**\n * Resolve the account address to use for routing a signing request.\n * Maps to `keyring_resolveAccountAddress`.\n */\n resolveAccountAddress?: (\n scope: CaipChainId,\n request: JsonRpcRequest,\n ) => Promise<ResolvedAccountAddress | null>;\n};\n"]}