@metamask/core-backend 5.0.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -1
- package/README.md +252 -1
- package/dist/AccountActivityService.cjs +1 -1
- package/dist/AccountActivityService.cjs.map +1 -1
- package/dist/AccountActivityService.mjs +1 -1
- package/dist/AccountActivityService.mjs.map +1 -1
- package/dist/BackendWebSocketService.cjs +5 -3
- package/dist/BackendWebSocketService.cjs.map +1 -1
- package/dist/BackendWebSocketService.d.cts +2 -2
- package/dist/BackendWebSocketService.d.cts.map +1 -1
- package/dist/BackendWebSocketService.d.mts +2 -2
- package/dist/BackendWebSocketService.d.mts.map +1 -1
- package/dist/BackendWebSocketService.mjs +5 -3
- package/dist/BackendWebSocketService.mjs.map +1 -1
- package/dist/api/ApiPlatformClient.cjs +177 -0
- package/dist/api/ApiPlatformClient.cjs.map +1 -0
- package/dist/api/ApiPlatformClient.d.cts +127 -0
- package/dist/api/ApiPlatformClient.d.cts.map +1 -0
- package/dist/api/ApiPlatformClient.d.mts +127 -0
- package/dist/api/ApiPlatformClient.d.mts.map +1 -0
- package/dist/api/ApiPlatformClient.mjs +172 -0
- package/dist/api/ApiPlatformClient.mjs.map +1 -0
- package/dist/api/accounts/client.cjs +492 -0
- package/dist/api/accounts/client.cjs.map +1 -0
- package/dist/api/accounts/client.d.cts +213 -0
- package/dist/api/accounts/client.d.cts.map +1 -0
- package/dist/api/accounts/client.d.mts +213 -0
- package/dist/api/accounts/client.d.mts.map +1 -0
- package/dist/api/accounts/client.mjs +488 -0
- package/dist/api/accounts/client.mjs.map +1 -0
- package/dist/api/accounts/index.cjs +9 -0
- package/dist/api/accounts/index.cjs.map +1 -0
- package/dist/api/accounts/index.d.cts +6 -0
- package/dist/api/accounts/index.d.cts.map +1 -0
- package/dist/api/accounts/index.d.mts +6 -0
- package/dist/api/accounts/index.d.mts.map +1 -0
- package/dist/api/accounts/index.mjs +5 -0
- package/dist/api/accounts/index.mjs.map +1 -0
- package/dist/api/accounts/types.cjs +7 -0
- package/dist/api/accounts/types.cjs.map +1 -0
- package/dist/api/accounts/types.d.cts +195 -0
- package/dist/api/accounts/types.d.cts.map +1 -0
- package/dist/api/accounts/types.d.mts +195 -0
- package/dist/api/accounts/types.d.mts.map +1 -0
- package/dist/api/accounts/types.mjs +6 -0
- package/dist/api/accounts/types.mjs.map +1 -0
- package/dist/api/base-client.cjs +149 -0
- package/dist/api/base-client.cjs.map +1 -0
- package/dist/api/base-client.d.cts +54 -0
- package/dist/api/base-client.d.cts.map +1 -0
- package/dist/api/base-client.d.mts +54 -0
- package/dist/api/base-client.d.mts.map +1 -0
- package/dist/api/base-client.mjs +143 -0
- package/dist/api/base-client.mjs.map +1 -0
- package/dist/api/index.cjs +35 -0
- package/dist/api/index.cjs.map +1 -0
- package/dist/api/index.d.cts +18 -0
- package/dist/api/index.d.cts.map +1 -0
- package/dist/api/index.d.mts +18 -0
- package/dist/api/index.d.mts.map +1 -0
- package/dist/api/index.mjs +18 -0
- package/dist/api/index.mjs.map +1 -0
- package/dist/api/prices/client.cjs +521 -0
- package/dist/api/prices/client.cjs.map +1 -0
- package/dist/api/prices/client.d.cts +235 -0
- package/dist/api/prices/client.d.cts.map +1 -0
- package/dist/api/prices/client.d.mts +235 -0
- package/dist/api/prices/client.d.mts.map +1 -0
- package/dist/api/prices/client.mjs +517 -0
- package/dist/api/prices/client.mjs.map +1 -0
- package/dist/api/prices/index.cjs +9 -0
- package/dist/api/prices/index.cjs.map +1 -0
- package/dist/api/prices/index.d.cts +6 -0
- package/dist/api/prices/index.d.cts.map +1 -0
- package/dist/api/prices/index.d.mts +6 -0
- package/dist/api/prices/index.d.mts.map +1 -0
- package/dist/api/prices/index.mjs +5 -0
- package/dist/api/prices/index.mjs.map +1 -0
- package/dist/api/prices/types.cjs +7 -0
- package/dist/api/prices/types.cjs.map +1 -0
- package/dist/api/prices/types.d.cts +61 -0
- package/dist/api/prices/types.d.cts.map +1 -0
- package/dist/api/prices/types.d.mts +61 -0
- package/dist/api/prices/types.d.mts.map +1 -0
- package/dist/api/prices/types.mjs +6 -0
- package/dist/api/prices/types.mjs.map +1 -0
- package/dist/api/shared-types.cjs +93 -0
- package/dist/api/shared-types.cjs.map +1 -0
- package/dist/api/shared-types.d.cts +131 -0
- package/dist/api/shared-types.d.cts.map +1 -0
- package/dist/api/shared-types.d.mts +131 -0
- package/dist/api/shared-types.d.mts.map +1 -0
- package/dist/api/shared-types.mjs +87 -0
- package/dist/api/shared-types.mjs.map +1 -0
- package/dist/api/test-utils.cjs +70 -0
- package/dist/api/test-utils.cjs.map +1 -0
- package/dist/api/test-utils.d.cts +30 -0
- package/dist/api/test-utils.d.cts.map +1 -0
- package/dist/api/test-utils.d.mts +30 -0
- package/dist/api/test-utils.d.mts.map +1 -0
- package/dist/api/test-utils.mjs +64 -0
- package/dist/api/test-utils.mjs.map +1 -0
- package/dist/api/token/client.cjs +342 -0
- package/dist/api/token/client.cjs.map +1 -0
- package/dist/api/token/client.d.cts +193 -0
- package/dist/api/token/client.d.cts.map +1 -0
- package/dist/api/token/client.d.mts +193 -0
- package/dist/api/token/client.d.mts.map +1 -0
- package/dist/api/token/client.mjs +338 -0
- package/dist/api/token/client.mjs.map +1 -0
- package/dist/api/token/index.cjs +9 -0
- package/dist/api/token/index.cjs.map +1 -0
- package/dist/api/token/index.d.cts +6 -0
- package/dist/api/token/index.d.cts.map +1 -0
- package/dist/api/token/index.d.mts +6 -0
- package/dist/api/token/index.d.mts.map +1 -0
- package/dist/api/token/index.mjs +5 -0
- package/dist/api/token/index.mjs.map +1 -0
- package/dist/api/token/types.cjs +7 -0
- package/dist/api/token/types.cjs.map +1 -0
- package/dist/api/token/types.d.cts +75 -0
- package/dist/api/token/types.d.cts.map +1 -0
- package/dist/api/token/types.d.mts +75 -0
- package/dist/api/token/types.d.mts.map +1 -0
- package/dist/api/token/types.mjs +6 -0
- package/dist/api/token/types.mjs.map +1 -0
- package/dist/api/tokens/client.cjs +91 -0
- package/dist/api/tokens/client.cjs.map +1 -0
- package/dist/api/tokens/client.d.cts +45 -0
- package/dist/api/tokens/client.d.cts.map +1 -0
- package/dist/api/tokens/client.d.mts +45 -0
- package/dist/api/tokens/client.d.mts.map +1 -0
- package/dist/api/tokens/client.mjs +87 -0
- package/dist/api/tokens/client.mjs.map +1 -0
- package/dist/api/tokens/index.cjs +9 -0
- package/dist/api/tokens/index.cjs.map +1 -0
- package/dist/api/tokens/index.d.cts +6 -0
- package/dist/api/tokens/index.d.cts.map +1 -0
- package/dist/api/tokens/index.d.mts +6 -0
- package/dist/api/tokens/index.d.mts.map +1 -0
- package/dist/api/tokens/index.mjs +5 -0
- package/dist/api/tokens/index.mjs.map +1 -0
- package/dist/api/tokens/types.cjs +7 -0
- package/dist/api/tokens/types.cjs.map +1 -0
- package/dist/api/tokens/types.d.cts +83 -0
- package/dist/api/tokens/types.d.cts.map +1 -0
- package/dist/api/tokens/types.d.mts +83 -0
- package/dist/api/tokens/types.d.mts.map +1 -0
- package/dist/api/tokens/types.mjs +6 -0
- package/dist/api/tokens/types.mjs.map +1 -0
- package/dist/index.cjs +33 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -7
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +6 -7
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +21 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +8 -11
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Accounts API Client - accounts.api.cx.metamask.io
|
|
4
|
+
*
|
|
5
|
+
* Handles all account-related API calls including:
|
|
6
|
+
* - Supported networks
|
|
7
|
+
* - Active networks
|
|
8
|
+
* - Balances (v2, v4, v5)
|
|
9
|
+
* - Transactions
|
|
10
|
+
* - Relationships
|
|
11
|
+
* - NFTs
|
|
12
|
+
* - Token discovery
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.AccountsApiClient = void 0;
|
|
16
|
+
const base_client_1 = require("../base-client.cjs");
|
|
17
|
+
/**
|
|
18
|
+
* Accounts API Client.
|
|
19
|
+
* Provides methods for interacting with the Accounts API.
|
|
20
|
+
*/
|
|
21
|
+
class AccountsApiClient extends base_client_1.BaseApiClient {
|
|
22
|
+
// ==========================================================================
|
|
23
|
+
// CACHE MANAGEMENT
|
|
24
|
+
// ==========================================================================
|
|
25
|
+
/**
|
|
26
|
+
* Invalidate all balance queries.
|
|
27
|
+
*/
|
|
28
|
+
async invalidateBalances() {
|
|
29
|
+
await this.queryClient.invalidateQueries({
|
|
30
|
+
queryKey: ['accounts', 'balances'],
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Invalidate all account queries.
|
|
35
|
+
*/
|
|
36
|
+
async invalidateAccounts() {
|
|
37
|
+
await this.queryClient.invalidateQueries({
|
|
38
|
+
queryKey: ['accounts'],
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
// ==========================================================================
|
|
42
|
+
// SUPPORTED NETWORKS
|
|
43
|
+
// ==========================================================================
|
|
44
|
+
/**
|
|
45
|
+
* Get list of supported networks (v1 endpoint).
|
|
46
|
+
*
|
|
47
|
+
* @param options - Fetch options including cache settings.
|
|
48
|
+
* @returns The list of supported networks.
|
|
49
|
+
*/
|
|
50
|
+
async fetchV1SupportedNetworks(options) {
|
|
51
|
+
return this.queryClient.fetchQuery({
|
|
52
|
+
queryKey: ['accounts', 'v1SupportedNetworks'],
|
|
53
|
+
queryFn: ({ signal }) => this.fetch(base_client_1.API_URLS.ACCOUNTS, '/v1/supportedNetworks', { signal }),
|
|
54
|
+
staleTime: options?.staleTime ?? base_client_1.STALE_TIMES.SUPPORTED_NETWORKS,
|
|
55
|
+
gcTime: options?.gcTime ?? base_client_1.GC_TIMES.EXTENDED,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get list of supported networks (v2 endpoint).
|
|
60
|
+
*
|
|
61
|
+
* @param options - Fetch options including cache settings.
|
|
62
|
+
* @returns The list of supported networks.
|
|
63
|
+
*/
|
|
64
|
+
async fetchV2SupportedNetworks(options) {
|
|
65
|
+
return this.queryClient.fetchQuery({
|
|
66
|
+
queryKey: ['accounts', 'v2SupportedNetworks'],
|
|
67
|
+
queryFn: ({ signal }) => this.fetch(base_client_1.API_URLS.ACCOUNTS, '/v2/supportedNetworks', { signal }),
|
|
68
|
+
staleTime: options?.staleTime ?? base_client_1.STALE_TIMES.SUPPORTED_NETWORKS,
|
|
69
|
+
gcTime: options?.gcTime ?? base_client_1.GC_TIMES.EXTENDED,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
// ==========================================================================
|
|
73
|
+
// ACTIVE NETWORKS
|
|
74
|
+
// ==========================================================================
|
|
75
|
+
/**
|
|
76
|
+
* Get active networks by CAIP-10 account IDs (v2 endpoint).
|
|
77
|
+
*
|
|
78
|
+
* @param accountIds - Array of CAIP-10 account IDs.
|
|
79
|
+
* @param queryOptions - Query filter options.
|
|
80
|
+
* @param queryOptions.filterMMListTokens - Whether to filter MM list tokens.
|
|
81
|
+
* @param queryOptions.networks - Networks to filter by.
|
|
82
|
+
* @param options - Fetch options including cache settings.
|
|
83
|
+
* @returns The active networks response.
|
|
84
|
+
*/
|
|
85
|
+
async fetchV2ActiveNetworks(accountIds, queryOptions, options) {
|
|
86
|
+
return this.queryClient.fetchQuery({
|
|
87
|
+
queryKey: [
|
|
88
|
+
'accounts',
|
|
89
|
+
'v2ActiveNetworks',
|
|
90
|
+
{
|
|
91
|
+
accountIds: [...accountIds].sort(),
|
|
92
|
+
options: queryOptions && {
|
|
93
|
+
...queryOptions,
|
|
94
|
+
networks: queryOptions.networks && [...queryOptions.networks].sort(),
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
queryFn: ({ signal }) => this.fetch(base_client_1.API_URLS.ACCOUNTS, '/v2/activeNetworks', {
|
|
99
|
+
signal,
|
|
100
|
+
params: {
|
|
101
|
+
accountIds,
|
|
102
|
+
filterMMListTokens: queryOptions?.filterMMListTokens,
|
|
103
|
+
networks: queryOptions?.networks,
|
|
104
|
+
},
|
|
105
|
+
}),
|
|
106
|
+
staleTime: options?.staleTime ?? base_client_1.STALE_TIMES.NETWORKS,
|
|
107
|
+
gcTime: options?.gcTime ?? base_client_1.GC_TIMES.DEFAULT,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
// ==========================================================================
|
|
111
|
+
// BALANCES
|
|
112
|
+
// ==========================================================================
|
|
113
|
+
/**
|
|
114
|
+
* Get account balances for a single address (v2 endpoint).
|
|
115
|
+
*
|
|
116
|
+
* @param address - The account address.
|
|
117
|
+
* @param queryOptions - Query filter options.
|
|
118
|
+
* @param queryOptions.networks - Networks to filter by.
|
|
119
|
+
* @param options - Fetch options including cache settings.
|
|
120
|
+
* @returns The account balances response.
|
|
121
|
+
*/
|
|
122
|
+
async fetchV2Balances(address, queryOptions, options) {
|
|
123
|
+
return this.queryClient.fetchQuery({
|
|
124
|
+
queryKey: [
|
|
125
|
+
'accounts',
|
|
126
|
+
'balances',
|
|
127
|
+
'v2',
|
|
128
|
+
{
|
|
129
|
+
address,
|
|
130
|
+
options: queryOptions && {
|
|
131
|
+
...queryOptions,
|
|
132
|
+
networks: queryOptions.networks && [...queryOptions.networks].sort(),
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
],
|
|
136
|
+
queryFn: ({ signal }) => this.fetch(base_client_1.API_URLS.ACCOUNTS, `/v2/accounts/${address}/balances`, {
|
|
137
|
+
signal,
|
|
138
|
+
params: { networks: queryOptions?.networks },
|
|
139
|
+
}),
|
|
140
|
+
staleTime: options?.staleTime ?? base_client_1.STALE_TIMES.BALANCES,
|
|
141
|
+
gcTime: options?.gcTime ?? base_client_1.GC_TIMES.DEFAULT,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get account balances with additional options (v2 endpoint).
|
|
146
|
+
*
|
|
147
|
+
* @param address - The account address.
|
|
148
|
+
* @param queryOptions - Query filter options.
|
|
149
|
+
* @param queryOptions.networks - Networks to filter by.
|
|
150
|
+
* @param queryOptions.filterSupportedTokens - Whether to filter supported tokens.
|
|
151
|
+
* @param queryOptions.includeTokenAddresses - Token addresses to include.
|
|
152
|
+
* @param queryOptions.includeStakedAssets - Whether to include staked assets.
|
|
153
|
+
* @param options - Fetch options including cache settings.
|
|
154
|
+
* @returns The account balances response.
|
|
155
|
+
*/
|
|
156
|
+
async fetchV2BalancesWithOptions(address, queryOptions, options) {
|
|
157
|
+
return this.queryClient.fetchQuery({
|
|
158
|
+
queryKey: [
|
|
159
|
+
'accounts',
|
|
160
|
+
'balances',
|
|
161
|
+
'v2',
|
|
162
|
+
{
|
|
163
|
+
address,
|
|
164
|
+
options: queryOptions && {
|
|
165
|
+
...queryOptions,
|
|
166
|
+
networks: queryOptions.networks && [...queryOptions.networks].sort(),
|
|
167
|
+
includeTokenAddresses: queryOptions.includeTokenAddresses &&
|
|
168
|
+
[...queryOptions.includeTokenAddresses].sort(),
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
],
|
|
172
|
+
queryFn: ({ signal }) => this.fetch(base_client_1.API_URLS.ACCOUNTS, `/v2/accounts/${address}/balances`, {
|
|
173
|
+
signal,
|
|
174
|
+
params: {
|
|
175
|
+
networks: queryOptions?.networks,
|
|
176
|
+
filterSupportedTokens: queryOptions?.filterSupportedTokens,
|
|
177
|
+
includeTokenAddresses: queryOptions?.includeTokenAddresses,
|
|
178
|
+
includeStakedAssets: queryOptions?.includeStakedAssets,
|
|
179
|
+
},
|
|
180
|
+
}),
|
|
181
|
+
staleTime: options?.staleTime ?? base_client_1.STALE_TIMES.BALANCES,
|
|
182
|
+
gcTime: options?.gcTime ?? base_client_1.GC_TIMES.DEFAULT,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Get balances for multiple accounts (v4 endpoint).
|
|
187
|
+
*
|
|
188
|
+
* @param accountAddresses - Array of account addresses.
|
|
189
|
+
* @param queryOptions - Query filter options.
|
|
190
|
+
* @param queryOptions.networks - Networks to filter by.
|
|
191
|
+
* @param options - Fetch options including cache settings.
|
|
192
|
+
* @returns The multi-account balances response.
|
|
193
|
+
*/
|
|
194
|
+
async fetchV4MultiAccountBalances(accountAddresses, queryOptions, options) {
|
|
195
|
+
return this.queryClient.fetchQuery({
|
|
196
|
+
queryKey: [
|
|
197
|
+
'accounts',
|
|
198
|
+
'balances',
|
|
199
|
+
'v4',
|
|
200
|
+
{
|
|
201
|
+
accountAddresses: [...accountAddresses].sort(),
|
|
202
|
+
options: queryOptions && {
|
|
203
|
+
...queryOptions,
|
|
204
|
+
networks: queryOptions.networks && [...queryOptions.networks].sort(),
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
],
|
|
208
|
+
queryFn: ({ signal }) => this.fetch(base_client_1.API_URLS.ACCOUNTS, '/v4/multiaccount/balances', {
|
|
209
|
+
signal,
|
|
210
|
+
params: {
|
|
211
|
+
accountAddresses,
|
|
212
|
+
networks: queryOptions?.networks,
|
|
213
|
+
},
|
|
214
|
+
}),
|
|
215
|
+
staleTime: options?.staleTime ?? base_client_1.STALE_TIMES.BALANCES,
|
|
216
|
+
gcTime: options?.gcTime ?? base_client_1.GC_TIMES.DEFAULT,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Get balances for multiple accounts using CAIP-10 IDs (v5 endpoint).
|
|
221
|
+
*
|
|
222
|
+
* @param accountIds - Array of CAIP-10 account IDs.
|
|
223
|
+
* @param queryOptions - Query filter options.
|
|
224
|
+
* @param queryOptions.filterMMListTokens - Whether to filter MM list tokens.
|
|
225
|
+
* @param queryOptions.networks - Networks to filter by.
|
|
226
|
+
* @param queryOptions.includeStakedAssets - Whether to include staked assets.
|
|
227
|
+
* @param options - Fetch options including cache settings.
|
|
228
|
+
* @returns The multi-account balances response.
|
|
229
|
+
*/
|
|
230
|
+
async fetchV5MultiAccountBalances(accountIds, queryOptions, options) {
|
|
231
|
+
return this.queryClient.fetchQuery({
|
|
232
|
+
queryKey: [
|
|
233
|
+
'accounts',
|
|
234
|
+
'balances',
|
|
235
|
+
'v5',
|
|
236
|
+
{
|
|
237
|
+
accountIds: [...accountIds].sort(),
|
|
238
|
+
options: queryOptions && {
|
|
239
|
+
...queryOptions,
|
|
240
|
+
networks: queryOptions.networks && [...queryOptions.networks].sort(),
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
],
|
|
244
|
+
queryFn: ({ signal }) => this.fetch(base_client_1.API_URLS.ACCOUNTS, '/v5/multiaccount/balances', {
|
|
245
|
+
signal,
|
|
246
|
+
params: {
|
|
247
|
+
accountIds,
|
|
248
|
+
networks: queryOptions?.networks,
|
|
249
|
+
filterMMListTokens: queryOptions?.filterMMListTokens,
|
|
250
|
+
includeStakedAssets: queryOptions?.includeStakedAssets,
|
|
251
|
+
},
|
|
252
|
+
}),
|
|
253
|
+
staleTime: options?.staleTime ?? base_client_1.STALE_TIMES.BALANCES,
|
|
254
|
+
gcTime: options?.gcTime ?? base_client_1.GC_TIMES.DEFAULT,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
// ==========================================================================
|
|
258
|
+
// TRANSACTIONS
|
|
259
|
+
// ==========================================================================
|
|
260
|
+
/**
|
|
261
|
+
* Get a specific transaction by hash (v1 endpoint).
|
|
262
|
+
*
|
|
263
|
+
* @param chainId - The chain ID.
|
|
264
|
+
* @param txHash - The transaction hash.
|
|
265
|
+
* @param queryOptions - Query filter options.
|
|
266
|
+
* @param queryOptions.includeLogs - Whether to include logs.
|
|
267
|
+
* @param queryOptions.includeValueTransfers - Whether to include value transfers.
|
|
268
|
+
* @param queryOptions.includeTxMetadata - Whether to include transaction metadata.
|
|
269
|
+
* @param queryOptions.lang - Language for metadata.
|
|
270
|
+
* @param options - Fetch options including cache settings.
|
|
271
|
+
* @returns The transaction details.
|
|
272
|
+
*/
|
|
273
|
+
async fetchV1TransactionByHash(chainId, txHash, queryOptions, options) {
|
|
274
|
+
return this.queryClient.fetchQuery({
|
|
275
|
+
queryKey: [
|
|
276
|
+
'accounts',
|
|
277
|
+
'transactions',
|
|
278
|
+
'v1ByHash',
|
|
279
|
+
{ chainId, txHash, options: queryOptions },
|
|
280
|
+
],
|
|
281
|
+
queryFn: ({ signal }) => this.fetch(base_client_1.API_URLS.ACCOUNTS, `/v1/networks/${chainId}/transactions/${txHash}`, {
|
|
282
|
+
signal,
|
|
283
|
+
params: {
|
|
284
|
+
includeLogs: queryOptions?.includeLogs,
|
|
285
|
+
includeValueTransfers: queryOptions?.includeValueTransfers,
|
|
286
|
+
includeTxMetadata: queryOptions?.includeTxMetadata,
|
|
287
|
+
lang: queryOptions?.lang,
|
|
288
|
+
},
|
|
289
|
+
}),
|
|
290
|
+
staleTime: options?.staleTime ?? base_client_1.STALE_TIMES.TRANSACTIONS,
|
|
291
|
+
gcTime: options?.gcTime ?? base_client_1.GC_TIMES.DEFAULT,
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Get account transactions (v1 endpoint).
|
|
296
|
+
*
|
|
297
|
+
* @param address - The account address.
|
|
298
|
+
* @param queryOptions - Query filter options.
|
|
299
|
+
* @param queryOptions.chainIds - Chain IDs to filter by.
|
|
300
|
+
* @param queryOptions.cursor - Pagination cursor.
|
|
301
|
+
* @param queryOptions.startTimestamp - Start timestamp filter.
|
|
302
|
+
* @param queryOptions.endTimestamp - End timestamp filter.
|
|
303
|
+
* @param queryOptions.sortDirection - Sort direction (ASC/DESC).
|
|
304
|
+
* @param options - Fetch options including cache settings.
|
|
305
|
+
* @returns The account transactions response.
|
|
306
|
+
*/
|
|
307
|
+
async fetchV1AccountTransactions(address, queryOptions, options) {
|
|
308
|
+
return this.queryClient.fetchQuery({
|
|
309
|
+
queryKey: [
|
|
310
|
+
'accounts',
|
|
311
|
+
'transactions',
|
|
312
|
+
'v1Account',
|
|
313
|
+
{
|
|
314
|
+
address,
|
|
315
|
+
options: queryOptions && {
|
|
316
|
+
...queryOptions,
|
|
317
|
+
chainIds: queryOptions.chainIds && [...queryOptions.chainIds].sort(),
|
|
318
|
+
},
|
|
319
|
+
},
|
|
320
|
+
],
|
|
321
|
+
queryFn: ({ signal }) => this.fetch(base_client_1.API_URLS.ACCOUNTS, `/v1/accounts/${address}/transactions`, {
|
|
322
|
+
signal,
|
|
323
|
+
params: {
|
|
324
|
+
networks: queryOptions?.chainIds,
|
|
325
|
+
cursor: queryOptions?.cursor,
|
|
326
|
+
startTimestamp: queryOptions?.startTimestamp,
|
|
327
|
+
endTimestamp: queryOptions?.endTimestamp,
|
|
328
|
+
sortDirection: queryOptions?.sortDirection,
|
|
329
|
+
},
|
|
330
|
+
}),
|
|
331
|
+
staleTime: options?.staleTime ?? base_client_1.STALE_TIMES.TRANSACTIONS,
|
|
332
|
+
gcTime: options?.gcTime ?? base_client_1.GC_TIMES.DEFAULT,
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Get multi-account transactions (v4 endpoint).
|
|
337
|
+
*
|
|
338
|
+
* @param accountIds - Array of CAIP-10 account IDs.
|
|
339
|
+
* @param queryOptions - Query filter options.
|
|
340
|
+
* @param queryOptions.networks - Networks to filter by.
|
|
341
|
+
* @param queryOptions.cursor - Pagination cursor.
|
|
342
|
+
* @param queryOptions.sortDirection - Sort direction (ASC/DESC).
|
|
343
|
+
* @param queryOptions.includeLogs - Whether to include logs.
|
|
344
|
+
* @param queryOptions.includeValueTransfers - Whether to include value transfers.
|
|
345
|
+
* @param queryOptions.includeTxMetadata - Whether to include transaction metadata.
|
|
346
|
+
* @param options - Fetch options including cache settings.
|
|
347
|
+
* @returns The multi-account transactions response.
|
|
348
|
+
*/
|
|
349
|
+
async fetchV4MultiAccountTransactions(accountIds, queryOptions, options) {
|
|
350
|
+
return this.queryClient.fetchQuery({
|
|
351
|
+
queryKey: [
|
|
352
|
+
'accounts',
|
|
353
|
+
'transactions',
|
|
354
|
+
'v4MultiAccount',
|
|
355
|
+
{
|
|
356
|
+
accountIds: [...accountIds].sort(),
|
|
357
|
+
options: queryOptions && {
|
|
358
|
+
...queryOptions,
|
|
359
|
+
networks: queryOptions.networks && [...queryOptions.networks].sort(),
|
|
360
|
+
},
|
|
361
|
+
},
|
|
362
|
+
],
|
|
363
|
+
queryFn: ({ signal }) => this.fetch(base_client_1.API_URLS.ACCOUNTS, '/v4/multiaccount/transactions', {
|
|
364
|
+
signal,
|
|
365
|
+
params: {
|
|
366
|
+
accountIds,
|
|
367
|
+
networks: queryOptions?.networks,
|
|
368
|
+
cursor: queryOptions?.cursor,
|
|
369
|
+
sortDirection: queryOptions?.sortDirection,
|
|
370
|
+
includeLogs: queryOptions?.includeLogs,
|
|
371
|
+
includeValueTransfers: queryOptions?.includeValueTransfers,
|
|
372
|
+
includeTxMetadata: queryOptions?.includeTxMetadata,
|
|
373
|
+
},
|
|
374
|
+
}),
|
|
375
|
+
staleTime: options?.staleTime ?? base_client_1.STALE_TIMES.TRANSACTIONS,
|
|
376
|
+
gcTime: options?.gcTime ?? base_client_1.GC_TIMES.DEFAULT,
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
// ==========================================================================
|
|
380
|
+
// RELATIONSHIPS
|
|
381
|
+
// ==========================================================================
|
|
382
|
+
/**
|
|
383
|
+
* Get account address relationship (v1 endpoint).
|
|
384
|
+
*
|
|
385
|
+
* @param chainId - The chain ID.
|
|
386
|
+
* @param from - The from address.
|
|
387
|
+
* @param to - The to address.
|
|
388
|
+
* @param options - Fetch options including cache settings.
|
|
389
|
+
* @returns The account relationship result.
|
|
390
|
+
*/
|
|
391
|
+
async fetchV1AccountRelationship(chainId, from, to, options) {
|
|
392
|
+
return this.queryClient.fetchQuery({
|
|
393
|
+
queryKey: ['accounts', 'v1Relationship', chainId, from, to],
|
|
394
|
+
queryFn: async ({ signal }) => {
|
|
395
|
+
try {
|
|
396
|
+
return await this.fetch(base_client_1.API_URLS.ACCOUNTS, `/v1/networks/${chainId}/accounts/${from}/relationships/${to}`, { signal });
|
|
397
|
+
}
|
|
398
|
+
catch (error) {
|
|
399
|
+
if (error instanceof base_client_1.HttpError && typeof error.body === 'object') {
|
|
400
|
+
const body = error.body;
|
|
401
|
+
if (body?.error &&
|
|
402
|
+
typeof body.error === 'object' &&
|
|
403
|
+
typeof body.error.code === 'string' &&
|
|
404
|
+
typeof body.error.message === 'string') {
|
|
405
|
+
return {
|
|
406
|
+
error: {
|
|
407
|
+
code: body.error.code,
|
|
408
|
+
message: body.error.message,
|
|
409
|
+
},
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
throw error;
|
|
414
|
+
}
|
|
415
|
+
},
|
|
416
|
+
staleTime: options?.staleTime ?? base_client_1.STALE_TIMES.DEFAULT,
|
|
417
|
+
gcTime: options?.gcTime ?? base_client_1.GC_TIMES.DEFAULT,
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
// ==========================================================================
|
|
421
|
+
// NFTs
|
|
422
|
+
// ==========================================================================
|
|
423
|
+
/**
|
|
424
|
+
* Get NFTs owned by an account (v2 endpoint).
|
|
425
|
+
*
|
|
426
|
+
* @param address - The account address.
|
|
427
|
+
* @param queryOptions - Query filter options.
|
|
428
|
+
* @param queryOptions.networks - Networks to filter by.
|
|
429
|
+
* @param queryOptions.cursor - Pagination cursor.
|
|
430
|
+
* @param options - Fetch options including cache settings.
|
|
431
|
+
* @returns The NFTs response.
|
|
432
|
+
*/
|
|
433
|
+
async fetchV2AccountNfts(address, queryOptions, options) {
|
|
434
|
+
return this.queryClient.fetchQuery({
|
|
435
|
+
queryKey: [
|
|
436
|
+
'accounts',
|
|
437
|
+
'v2Nfts',
|
|
438
|
+
{
|
|
439
|
+
address,
|
|
440
|
+
options: queryOptions && {
|
|
441
|
+
...queryOptions,
|
|
442
|
+
networks: queryOptions.networks && [...queryOptions.networks].sort(),
|
|
443
|
+
},
|
|
444
|
+
},
|
|
445
|
+
],
|
|
446
|
+
queryFn: ({ signal }) => this.fetch(base_client_1.API_URLS.ACCOUNTS, `/v2/accounts/${address}/nfts`, {
|
|
447
|
+
signal,
|
|
448
|
+
params: {
|
|
449
|
+
networks: queryOptions?.networks,
|
|
450
|
+
cursor: queryOptions?.cursor,
|
|
451
|
+
},
|
|
452
|
+
}),
|
|
453
|
+
staleTime: options?.staleTime ?? base_client_1.STALE_TIMES.DEFAULT,
|
|
454
|
+
gcTime: options?.gcTime ?? base_client_1.GC_TIMES.DEFAULT,
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
// ==========================================================================
|
|
458
|
+
// TOKEN DISCOVERY
|
|
459
|
+
// ==========================================================================
|
|
460
|
+
/**
|
|
461
|
+
* Get ERC20 tokens detected for an account (v2 endpoint).
|
|
462
|
+
*
|
|
463
|
+
* @param address - The account address.
|
|
464
|
+
* @param queryOptions - Query filter options.
|
|
465
|
+
* @param queryOptions.networks - Networks to filter by.
|
|
466
|
+
* @param options - Fetch options including cache settings.
|
|
467
|
+
* @returns The tokens response.
|
|
468
|
+
*/
|
|
469
|
+
async fetchV2AccountTokens(address, queryOptions, options) {
|
|
470
|
+
return this.queryClient.fetchQuery({
|
|
471
|
+
queryKey: [
|
|
472
|
+
'accounts',
|
|
473
|
+
'v2Tokens',
|
|
474
|
+
{
|
|
475
|
+
address,
|
|
476
|
+
options: queryOptions && {
|
|
477
|
+
...queryOptions,
|
|
478
|
+
networks: queryOptions.networks && [...queryOptions.networks].sort(),
|
|
479
|
+
},
|
|
480
|
+
},
|
|
481
|
+
],
|
|
482
|
+
queryFn: ({ signal }) => this.fetch(base_client_1.API_URLS.ACCOUNTS, `/v2/accounts/${address}/tokens`, {
|
|
483
|
+
signal,
|
|
484
|
+
params: { networks: queryOptions?.networks },
|
|
485
|
+
}),
|
|
486
|
+
staleTime: options?.staleTime ?? base_client_1.STALE_TIMES.DEFAULT,
|
|
487
|
+
gcTime: options?.gcTime ?? base_client_1.GC_TIMES.DEFAULT,
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
exports.AccountsApiClient = AccountsApiClient;
|
|
492
|
+
//# sourceMappingURL=client.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.cjs","sourceRoot":"","sources":["../../../src/api/accounts/client.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Accounts API Client - accounts.api.cx.metamask.io\n *\n * Handles all account-related API calls including:\n * - Supported networks\n * - Active networks\n * - Balances (v2, v4, v5)\n * - Transactions\n * - Relationships\n * - NFTs\n * - Token discovery\n */\n\nimport type { QueryFunctionContext } from '@tanstack/query-core';\n\nimport type {\n V1SupportedNetworksResponse,\n V2SupportedNetworksResponse,\n V2ActiveNetworksResponse,\n V2BalancesResponse,\n V4BalancesResponse,\n V5BalancesResponse,\n V1TransactionByHashResponse,\n V1AccountTransactionsResponse,\n V4MultiAccountTransactionsResponse,\n V1AccountRelationshipResult,\n V2NftsResponse,\n V2TokensResponse,\n} from './types';\nimport {\n BaseApiClient,\n API_URLS,\n STALE_TIMES,\n GC_TIMES,\n HttpError,\n} from '../base-client';\nimport type { FetchOptions } from '../shared-types';\n\n/**\n * Accounts API Client.\n * Provides methods for interacting with the Accounts API.\n */\nexport class AccountsApiClient extends BaseApiClient {\n // ==========================================================================\n // CACHE MANAGEMENT\n // ==========================================================================\n\n /**\n * Invalidate all balance queries.\n */\n async invalidateBalances(): Promise<void> {\n await this.queryClient.invalidateQueries({\n queryKey: ['accounts', 'balances'],\n });\n }\n\n /**\n * Invalidate all account queries.\n */\n async invalidateAccounts(): Promise<void> {\n await this.queryClient.invalidateQueries({\n queryKey: ['accounts'],\n });\n }\n\n // ==========================================================================\n // SUPPORTED NETWORKS\n // ==========================================================================\n\n /**\n * Get list of supported networks (v1 endpoint).\n *\n * @param options - Fetch options including cache settings.\n * @returns The list of supported networks.\n */\n async fetchV1SupportedNetworks(\n options?: FetchOptions,\n ): Promise<V1SupportedNetworksResponse> {\n return this.queryClient.fetchQuery({\n queryKey: ['accounts', 'v1SupportedNetworks'],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<V1SupportedNetworksResponse>(\n API_URLS.ACCOUNTS,\n '/v1/supportedNetworks',\n { signal },\n ),\n staleTime: options?.staleTime ?? STALE_TIMES.SUPPORTED_NETWORKS,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n });\n }\n\n /**\n * Get list of supported networks (v2 endpoint).\n *\n * @param options - Fetch options including cache settings.\n * @returns The list of supported networks.\n */\n async fetchV2SupportedNetworks(\n options?: FetchOptions,\n ): Promise<V2SupportedNetworksResponse> {\n return this.queryClient.fetchQuery({\n queryKey: ['accounts', 'v2SupportedNetworks'],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<V2SupportedNetworksResponse>(\n API_URLS.ACCOUNTS,\n '/v2/supportedNetworks',\n { signal },\n ),\n staleTime: options?.staleTime ?? STALE_TIMES.SUPPORTED_NETWORKS,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n });\n }\n\n // ==========================================================================\n // ACTIVE NETWORKS\n // ==========================================================================\n\n /**\n * Get active networks by CAIP-10 account IDs (v2 endpoint).\n *\n * @param accountIds - Array of CAIP-10 account IDs.\n * @param queryOptions - Query filter options.\n * @param queryOptions.filterMMListTokens - Whether to filter MM list tokens.\n * @param queryOptions.networks - Networks to filter by.\n * @param options - Fetch options including cache settings.\n * @returns The active networks response.\n */\n async fetchV2ActiveNetworks(\n accountIds: string[],\n queryOptions?: { filterMMListTokens?: boolean; networks?: string[] },\n options?: FetchOptions,\n ): Promise<V2ActiveNetworksResponse> {\n return this.queryClient.fetchQuery({\n queryKey: [\n 'accounts',\n 'v2ActiveNetworks',\n {\n accountIds: [...accountIds].sort(),\n options: queryOptions && {\n ...queryOptions,\n networks:\n queryOptions.networks && [...queryOptions.networks].sort(),\n },\n },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<V2ActiveNetworksResponse>(\n API_URLS.ACCOUNTS,\n '/v2/activeNetworks',\n {\n signal,\n params: {\n accountIds,\n filterMMListTokens: queryOptions?.filterMMListTokens,\n networks: queryOptions?.networks,\n },\n },\n ),\n staleTime: options?.staleTime ?? STALE_TIMES.NETWORKS,\n gcTime: options?.gcTime ?? GC_TIMES.DEFAULT,\n });\n }\n\n // ==========================================================================\n // BALANCES\n // ==========================================================================\n\n /**\n * Get account balances for a single address (v2 endpoint).\n *\n * @param address - The account address.\n * @param queryOptions - Query filter options.\n * @param queryOptions.networks - Networks to filter by.\n * @param options - Fetch options including cache settings.\n * @returns The account balances response.\n */\n async fetchV2Balances(\n address: string,\n queryOptions?: { networks?: number[] },\n options?: FetchOptions,\n ): Promise<V2BalancesResponse> {\n return this.queryClient.fetchQuery({\n queryKey: [\n 'accounts',\n 'balances',\n 'v2',\n {\n address,\n options: queryOptions && {\n ...queryOptions,\n networks:\n queryOptions.networks && [...queryOptions.networks].sort(),\n },\n },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<V2BalancesResponse>(\n API_URLS.ACCOUNTS,\n `/v2/accounts/${address}/balances`,\n {\n signal,\n params: { networks: queryOptions?.networks },\n },\n ),\n staleTime: options?.staleTime ?? STALE_TIMES.BALANCES,\n gcTime: options?.gcTime ?? GC_TIMES.DEFAULT,\n });\n }\n\n /**\n * Get account balances with additional options (v2 endpoint).\n *\n * @param address - The account address.\n * @param queryOptions - Query filter options.\n * @param queryOptions.networks - Networks to filter by.\n * @param queryOptions.filterSupportedTokens - Whether to filter supported tokens.\n * @param queryOptions.includeTokenAddresses - Token addresses to include.\n * @param queryOptions.includeStakedAssets - Whether to include staked assets.\n * @param options - Fetch options including cache settings.\n * @returns The account balances response.\n */\n async fetchV2BalancesWithOptions(\n address: string,\n queryOptions?: {\n networks?: number[];\n filterSupportedTokens?: boolean;\n includeTokenAddresses?: string[];\n includeStakedAssets?: boolean;\n },\n options?: FetchOptions,\n ): Promise<V2BalancesResponse> {\n return this.queryClient.fetchQuery({\n queryKey: [\n 'accounts',\n 'balances',\n 'v2',\n {\n address,\n options: queryOptions && {\n ...queryOptions,\n networks:\n queryOptions.networks && [...queryOptions.networks].sort(),\n includeTokenAddresses:\n queryOptions.includeTokenAddresses &&\n [...queryOptions.includeTokenAddresses].sort(),\n },\n },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<V2BalancesResponse>(\n API_URLS.ACCOUNTS,\n `/v2/accounts/${address}/balances`,\n {\n signal,\n params: {\n networks: queryOptions?.networks,\n filterSupportedTokens: queryOptions?.filterSupportedTokens,\n includeTokenAddresses: queryOptions?.includeTokenAddresses,\n includeStakedAssets: queryOptions?.includeStakedAssets,\n },\n },\n ),\n staleTime: options?.staleTime ?? STALE_TIMES.BALANCES,\n gcTime: options?.gcTime ?? GC_TIMES.DEFAULT,\n });\n }\n\n /**\n * Get balances for multiple accounts (v4 endpoint).\n *\n * @param accountAddresses - Array of account addresses.\n * @param queryOptions - Query filter options.\n * @param queryOptions.networks - Networks to filter by.\n * @param options - Fetch options including cache settings.\n * @returns The multi-account balances response.\n */\n async fetchV4MultiAccountBalances(\n accountAddresses: string[],\n queryOptions?: { networks?: number[] },\n options?: FetchOptions,\n ): Promise<V4BalancesResponse> {\n return this.queryClient.fetchQuery({\n queryKey: [\n 'accounts',\n 'balances',\n 'v4',\n {\n accountAddresses: [...accountAddresses].sort(),\n options: queryOptions && {\n ...queryOptions,\n networks:\n queryOptions.networks && [...queryOptions.networks].sort(),\n },\n },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<V4BalancesResponse>(\n API_URLS.ACCOUNTS,\n '/v4/multiaccount/balances',\n {\n signal,\n params: {\n accountAddresses,\n networks: queryOptions?.networks,\n },\n },\n ),\n staleTime: options?.staleTime ?? STALE_TIMES.BALANCES,\n gcTime: options?.gcTime ?? GC_TIMES.DEFAULT,\n });\n }\n\n /**\n * Get balances for multiple accounts using CAIP-10 IDs (v5 endpoint).\n *\n * @param accountIds - Array of CAIP-10 account IDs.\n * @param queryOptions - Query filter options.\n * @param queryOptions.filterMMListTokens - Whether to filter MM list tokens.\n * @param queryOptions.networks - Networks to filter by.\n * @param queryOptions.includeStakedAssets - Whether to include staked assets.\n * @param options - Fetch options including cache settings.\n * @returns The multi-account balances response.\n */\n async fetchV5MultiAccountBalances(\n accountIds: string[],\n queryOptions?: {\n filterMMListTokens?: boolean;\n networks?: string[];\n includeStakedAssets?: boolean;\n },\n options?: FetchOptions,\n ): Promise<V5BalancesResponse> {\n return this.queryClient.fetchQuery({\n queryKey: [\n 'accounts',\n 'balances',\n 'v5',\n {\n accountIds: [...accountIds].sort(),\n options: queryOptions && {\n ...queryOptions,\n networks:\n queryOptions.networks && [...queryOptions.networks].sort(),\n },\n },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<V5BalancesResponse>(\n API_URLS.ACCOUNTS,\n '/v5/multiaccount/balances',\n {\n signal,\n params: {\n accountIds,\n networks: queryOptions?.networks,\n filterMMListTokens: queryOptions?.filterMMListTokens,\n includeStakedAssets: queryOptions?.includeStakedAssets,\n },\n },\n ),\n staleTime: options?.staleTime ?? STALE_TIMES.BALANCES,\n gcTime: options?.gcTime ?? GC_TIMES.DEFAULT,\n });\n }\n\n // ==========================================================================\n // TRANSACTIONS\n // ==========================================================================\n\n /**\n * Get a specific transaction by hash (v1 endpoint).\n *\n * @param chainId - The chain ID.\n * @param txHash - The transaction hash.\n * @param queryOptions - Query filter options.\n * @param queryOptions.includeLogs - Whether to include logs.\n * @param queryOptions.includeValueTransfers - Whether to include value transfers.\n * @param queryOptions.includeTxMetadata - Whether to include transaction metadata.\n * @param queryOptions.lang - Language for metadata.\n * @param options - Fetch options including cache settings.\n * @returns The transaction details.\n */\n async fetchV1TransactionByHash(\n chainId: number,\n txHash: string,\n queryOptions?: {\n includeLogs?: boolean;\n includeValueTransfers?: boolean;\n includeTxMetadata?: boolean;\n lang?: string;\n },\n options?: FetchOptions,\n ): Promise<V1TransactionByHashResponse> {\n return this.queryClient.fetchQuery({\n queryKey: [\n 'accounts',\n 'transactions',\n 'v1ByHash',\n { chainId, txHash, options: queryOptions },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<V1TransactionByHashResponse>(\n API_URLS.ACCOUNTS,\n `/v1/networks/${chainId}/transactions/${txHash}`,\n {\n signal,\n params: {\n includeLogs: queryOptions?.includeLogs,\n includeValueTransfers: queryOptions?.includeValueTransfers,\n includeTxMetadata: queryOptions?.includeTxMetadata,\n lang: queryOptions?.lang,\n },\n },\n ),\n staleTime: options?.staleTime ?? STALE_TIMES.TRANSACTIONS,\n gcTime: options?.gcTime ?? GC_TIMES.DEFAULT,\n });\n }\n\n /**\n * Get account transactions (v1 endpoint).\n *\n * @param address - The account address.\n * @param queryOptions - Query filter options.\n * @param queryOptions.chainIds - Chain IDs to filter by.\n * @param queryOptions.cursor - Pagination cursor.\n * @param queryOptions.startTimestamp - Start timestamp filter.\n * @param queryOptions.endTimestamp - End timestamp filter.\n * @param queryOptions.sortDirection - Sort direction (ASC/DESC).\n * @param options - Fetch options including cache settings.\n * @returns The account transactions response.\n */\n async fetchV1AccountTransactions(\n address: string,\n queryOptions?: {\n chainIds?: string[];\n cursor?: string;\n startTimestamp?: number;\n endTimestamp?: number;\n sortDirection?: 'ASC' | 'DESC';\n },\n options?: FetchOptions,\n ): Promise<V1AccountTransactionsResponse> {\n return this.queryClient.fetchQuery({\n queryKey: [\n 'accounts',\n 'transactions',\n 'v1Account',\n {\n address,\n options: queryOptions && {\n ...queryOptions,\n chainIds:\n queryOptions.chainIds && [...queryOptions.chainIds].sort(),\n },\n },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<V1AccountTransactionsResponse>(\n API_URLS.ACCOUNTS,\n `/v1/accounts/${address}/transactions`,\n {\n signal,\n params: {\n networks: queryOptions?.chainIds,\n cursor: queryOptions?.cursor,\n startTimestamp: queryOptions?.startTimestamp,\n endTimestamp: queryOptions?.endTimestamp,\n sortDirection: queryOptions?.sortDirection,\n },\n },\n ),\n staleTime: options?.staleTime ?? STALE_TIMES.TRANSACTIONS,\n gcTime: options?.gcTime ?? GC_TIMES.DEFAULT,\n });\n }\n\n /**\n * Get multi-account transactions (v4 endpoint).\n *\n * @param accountIds - Array of CAIP-10 account IDs.\n * @param queryOptions - Query filter options.\n * @param queryOptions.networks - Networks to filter by.\n * @param queryOptions.cursor - Pagination cursor.\n * @param queryOptions.sortDirection - Sort direction (ASC/DESC).\n * @param queryOptions.includeLogs - Whether to include logs.\n * @param queryOptions.includeValueTransfers - Whether to include value transfers.\n * @param queryOptions.includeTxMetadata - Whether to include transaction metadata.\n * @param options - Fetch options including cache settings.\n * @returns The multi-account transactions response.\n */\n async fetchV4MultiAccountTransactions(\n accountIds: string[],\n queryOptions?: {\n networks?: string[];\n cursor?: string;\n sortDirection?: 'ASC' | 'DESC';\n includeLogs?: boolean;\n includeValueTransfers?: boolean;\n includeTxMetadata?: boolean;\n },\n options?: FetchOptions,\n ): Promise<V4MultiAccountTransactionsResponse> {\n return this.queryClient.fetchQuery({\n queryKey: [\n 'accounts',\n 'transactions',\n 'v4MultiAccount',\n {\n accountIds: [...accountIds].sort(),\n options: queryOptions && {\n ...queryOptions,\n networks:\n queryOptions.networks && [...queryOptions.networks].sort(),\n },\n },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<V4MultiAccountTransactionsResponse>(\n API_URLS.ACCOUNTS,\n '/v4/multiaccount/transactions',\n {\n signal,\n params: {\n accountIds,\n networks: queryOptions?.networks,\n cursor: queryOptions?.cursor,\n sortDirection: queryOptions?.sortDirection,\n includeLogs: queryOptions?.includeLogs,\n includeValueTransfers: queryOptions?.includeValueTransfers,\n includeTxMetadata: queryOptions?.includeTxMetadata,\n },\n },\n ),\n staleTime: options?.staleTime ?? STALE_TIMES.TRANSACTIONS,\n gcTime: options?.gcTime ?? GC_TIMES.DEFAULT,\n });\n }\n\n // ==========================================================================\n // RELATIONSHIPS\n // ==========================================================================\n\n /**\n * Get account address relationship (v1 endpoint).\n *\n * @param chainId - The chain ID.\n * @param from - The from address.\n * @param to - The to address.\n * @param options - Fetch options including cache settings.\n * @returns The account relationship result.\n */\n async fetchV1AccountRelationship(\n chainId: number,\n from: string,\n to: string,\n options?: FetchOptions,\n ): Promise<V1AccountRelationshipResult> {\n return this.queryClient.fetchQuery({\n queryKey: ['accounts', 'v1Relationship', chainId, from, to],\n queryFn: async ({ signal }: QueryFunctionContext) => {\n try {\n return await this.fetch<V1AccountRelationshipResult>(\n API_URLS.ACCOUNTS,\n `/v1/networks/${chainId}/accounts/${from}/relationships/${to}`,\n { signal },\n );\n } catch (error) {\n if (error instanceof HttpError && typeof error.body === 'object') {\n const body = error.body as {\n error?: { code?: string; message?: string };\n } | null;\n if (\n body?.error &&\n typeof body.error === 'object' &&\n typeof body.error.code === 'string' &&\n typeof body.error.message === 'string'\n ) {\n return {\n error: {\n code: body.error.code,\n message: body.error.message,\n },\n };\n }\n }\n throw error;\n }\n },\n staleTime: options?.staleTime ?? STALE_TIMES.DEFAULT,\n gcTime: options?.gcTime ?? GC_TIMES.DEFAULT,\n });\n }\n\n // ==========================================================================\n // NFTs\n // ==========================================================================\n\n /**\n * Get NFTs owned by an account (v2 endpoint).\n *\n * @param address - The account address.\n * @param queryOptions - Query filter options.\n * @param queryOptions.networks - Networks to filter by.\n * @param queryOptions.cursor - Pagination cursor.\n * @param options - Fetch options including cache settings.\n * @returns The NFTs response.\n */\n async fetchV2AccountNfts(\n address: string,\n queryOptions?: { networks?: number[]; cursor?: string },\n options?: FetchOptions,\n ): Promise<V2NftsResponse> {\n return this.queryClient.fetchQuery({\n queryKey: [\n 'accounts',\n 'v2Nfts',\n {\n address,\n options: queryOptions && {\n ...queryOptions,\n networks:\n queryOptions.networks && [...queryOptions.networks].sort(),\n },\n },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<V2NftsResponse>(\n API_URLS.ACCOUNTS,\n `/v2/accounts/${address}/nfts`,\n {\n signal,\n params: {\n networks: queryOptions?.networks,\n cursor: queryOptions?.cursor,\n },\n },\n ),\n staleTime: options?.staleTime ?? STALE_TIMES.DEFAULT,\n gcTime: options?.gcTime ?? GC_TIMES.DEFAULT,\n });\n }\n\n // ==========================================================================\n // TOKEN DISCOVERY\n // ==========================================================================\n\n /**\n * Get ERC20 tokens detected for an account (v2 endpoint).\n *\n * @param address - The account address.\n * @param queryOptions - Query filter options.\n * @param queryOptions.networks - Networks to filter by.\n * @param options - Fetch options including cache settings.\n * @returns The tokens response.\n */\n async fetchV2AccountTokens(\n address: string,\n queryOptions?: { networks?: number[] },\n options?: FetchOptions,\n ): Promise<V2TokensResponse> {\n return this.queryClient.fetchQuery({\n queryKey: [\n 'accounts',\n 'v2Tokens',\n {\n address,\n options: queryOptions && {\n ...queryOptions,\n networks:\n queryOptions.networks && [...queryOptions.networks].sort(),\n },\n },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<V2TokensResponse>(\n API_URLS.ACCOUNTS,\n `/v2/accounts/${address}/tokens`,\n {\n signal,\n params: { networks: queryOptions?.networks },\n },\n ),\n staleTime: options?.staleTime ?? STALE_TIMES.DEFAULT,\n gcTime: options?.gcTime ?? GC_TIMES.DEFAULT,\n });\n }\n}\n"]}
|