@sudobility/indexer_client 0.0.41 → 0.0.43

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 (95) hide show
  1. package/dist/business/indexer-service.d.ts.map +1 -1
  2. package/dist/business/indexer-service.js +3 -1
  3. package/dist/business/indexer-service.js.map +1 -1
  4. package/dist/hooks/useIndexerCreateNonce.d.ts +2 -2
  5. package/dist/hooks/useIndexerCreateNonce.d.ts.map +1 -1
  6. package/dist/hooks/useIndexerCreateNonce.js +4 -3
  7. package/dist/hooks/useIndexerCreateNonce.js.map +1 -1
  8. package/dist/hooks/useIndexerGetDelegatedFrom.d.ts +2 -2
  9. package/dist/hooks/useIndexerGetDelegatedFrom.d.ts.map +1 -1
  10. package/dist/hooks/useIndexerGetDelegatedFrom.js +3 -2
  11. package/dist/hooks/useIndexerGetDelegatedFrom.js.map +1 -1
  12. package/dist/hooks/useIndexerGetDelegatedTo.d.ts +2 -2
  13. package/dist/hooks/useIndexerGetDelegatedTo.d.ts.map +1 -1
  14. package/dist/hooks/useIndexerGetDelegatedTo.js +3 -2
  15. package/dist/hooks/useIndexerGetDelegatedTo.js.map +1 -1
  16. package/dist/hooks/useIndexerGetEntitlement.d.ts +2 -2
  17. package/dist/hooks/useIndexerGetEntitlement.d.ts.map +1 -1
  18. package/dist/hooks/useIndexerGetEntitlement.js +3 -2
  19. package/dist/hooks/useIndexerGetEntitlement.js.map +1 -1
  20. package/dist/hooks/useIndexerGetNonce.d.ts +2 -2
  21. package/dist/hooks/useIndexerGetNonce.d.ts.map +1 -1
  22. package/dist/hooks/useIndexerGetNonce.js +3 -2
  23. package/dist/hooks/useIndexerGetNonce.js.map +1 -1
  24. package/dist/hooks/useIndexerGetPointsBalance.d.ts +2 -2
  25. package/dist/hooks/useIndexerGetPointsBalance.d.ts.map +1 -1
  26. package/dist/hooks/useIndexerGetPointsBalance.js +3 -2
  27. package/dist/hooks/useIndexerGetPointsBalance.js.map +1 -1
  28. package/dist/hooks/useIndexerGetSigningMessage.d.ts +2 -2
  29. package/dist/hooks/useIndexerGetSigningMessage.d.ts.map +1 -1
  30. package/dist/hooks/useIndexerGetSigningMessage.js +4 -3
  31. package/dist/hooks/useIndexerGetSigningMessage.js.map +1 -1
  32. package/dist/hooks/useIndexerGetWalletAccounts.d.ts +2 -2
  33. package/dist/hooks/useIndexerGetWalletAccounts.d.ts.map +1 -1
  34. package/dist/hooks/useIndexerGetWalletAccounts.js +3 -2
  35. package/dist/hooks/useIndexerGetWalletAccounts.js.map +1 -1
  36. package/dist/hooks/useIndexerGetWalletPermissions.d.ts +2 -1
  37. package/dist/hooks/useIndexerGetWalletPermissions.d.ts.map +1 -1
  38. package/dist/hooks/useIndexerGetWalletPermissions.js +4 -3
  39. package/dist/hooks/useIndexerGetWalletPermissions.js.map +1 -1
  40. package/dist/hooks/useIndexerMail.d.ts +2 -2
  41. package/dist/hooks/useIndexerMail.d.ts.map +1 -1
  42. package/dist/hooks/useIndexerMail.js +24 -13
  43. package/dist/hooks/useIndexerMail.js.map +1 -1
  44. package/dist/hooks/useIndexerMailTemplates.d.ts +3 -3
  45. package/dist/hooks/useIndexerMailTemplates.d.ts.map +1 -1
  46. package/dist/hooks/useIndexerMailTemplates.js +3 -3
  47. package/dist/hooks/useIndexerMailTemplates.js.map +1 -1
  48. package/dist/hooks/useIndexerMailWebhooks.d.ts +3 -3
  49. package/dist/hooks/useIndexerMailWebhooks.d.ts.map +1 -1
  50. package/dist/hooks/useIndexerMailWebhooks.js +3 -3
  51. package/dist/hooks/useIndexerMailWebhooks.js.map +1 -1
  52. package/dist/hooks/useIndexerNameService.d.ts +3 -3
  53. package/dist/hooks/useIndexerNameService.d.ts.map +1 -1
  54. package/dist/hooks/useIndexerNameService.js +6 -4
  55. package/dist/hooks/useIndexerNameService.js.map +1 -1
  56. package/dist/hooks/useIndexerPoints.d.ts +6 -6
  57. package/dist/hooks/useIndexerPoints.d.ts.map +1 -1
  58. package/dist/hooks/useIndexerPoints.js +18 -17
  59. package/dist/hooks/useIndexerPoints.js.map +1 -1
  60. package/dist/hooks/useIndexerReferralCode.d.ts +3 -3
  61. package/dist/hooks/useIndexerReferralCode.d.ts.map +1 -1
  62. package/dist/hooks/useIndexerReferralCode.js +3 -3
  63. package/dist/hooks/useIndexerReferralCode.js.map +1 -1
  64. package/dist/hooks/useIndexerReferralStats.d.ts +3 -3
  65. package/dist/hooks/useIndexerReferralStats.d.ts.map +1 -1
  66. package/dist/hooks/useIndexerReferralStats.js +3 -3
  67. package/dist/hooks/useIndexerReferralStats.js.map +1 -1
  68. package/dist/hooks/useIndexerValidateUsername.d.ts +2 -2
  69. package/dist/hooks/useIndexerValidateUsername.d.ts.map +1 -1
  70. package/dist/hooks/useIndexerValidateUsername.js +4 -3
  71. package/dist/hooks/useIndexerValidateUsername.js.map +1 -1
  72. package/dist/network/FetchNetworkClient.d.ts +17 -0
  73. package/dist/network/FetchNetworkClient.d.ts.map +1 -0
  74. package/dist/network/FetchNetworkClient.js +83 -0
  75. package/dist/network/FetchNetworkClient.js.map +1 -0
  76. package/dist/network/IndexerClient.d.ts +3 -24
  77. package/dist/network/IndexerClient.d.ts.map +1 -1
  78. package/dist/network/IndexerClient.js +163 -342
  79. package/dist/network/IndexerClient.js.map +1 -1
  80. package/dist/network/index.d.ts +2 -1
  81. package/dist/network/index.d.ts.map +1 -1
  82. package/dist/network/index.js +1 -0
  83. package/dist/network/index.js.map +1 -1
  84. package/dist/utils/index.d.ts +1 -0
  85. package/dist/utils/index.d.ts.map +1 -1
  86. package/dist/utils/index.js +1 -0
  87. package/dist/utils/index.js.map +1 -1
  88. package/dist/utils/indexer-factory.d.ts.map +1 -1
  89. package/dist/utils/indexer-factory.js +7 -7
  90. package/dist/utils/indexer-factory.js.map +1 -1
  91. package/dist/utils/indexer-helpers.d.ts +6 -0
  92. package/dist/utils/indexer-helpers.d.ts.map +1 -0
  93. package/dist/utils/indexer-helpers.js +28 -0
  94. package/dist/utils/indexer-helpers.js.map +1 -0
  95. package/package.json +4 -6
@@ -1,285 +1,156 @@
1
- import axios from 'axios';
1
+ import { buildUrl, createAuthHeaders, createHeaders, handleApiError, } from '../utils/indexer-helpers';
2
2
  export class IndexerClient {
3
- constructor(endpointUrl, dev = false, timeout = 30000) {
3
+ constructor(endpointUrl, networkClient, dev = false) {
4
4
  this.baseUrl = endpointUrl;
5
+ this.networkClient = networkClient;
5
6
  this.dev = dev;
6
- this.timeout = timeout;
7
- }
8
- async get(url, options) {
9
- return this.request(url, { ...options, method: 'GET' });
10
- }
11
- async post(url, body, options) {
12
- return this.request(url, {
13
- ...options,
14
- method: 'POST',
15
- body,
16
- });
17
- }
18
- async put(url, body, options) {
19
- return this.request(url, {
20
- ...options,
21
- method: 'PUT',
22
- body,
23
- });
24
- }
25
- async delete(url, options) {
26
- return this.request(url, { ...options, method: 'DELETE' });
27
- }
28
- async request(url, options) {
29
- const fullUrl = `${this.baseUrl}${url}`;
30
- const axiosConfig = {
31
- method: options?.method || 'GET',
32
- url: fullUrl,
33
- headers: {
34
- 'Content-Type': 'application/json',
35
- Accept: 'application/json',
36
- ...(this.dev && { 'x-dev': 'true' }),
37
- ...options?.headers,
38
- },
39
- timeout: this.timeout,
40
- signal: options?.signal,
41
- withCredentials: false,
42
- };
43
- if (options?.body) {
44
- if (typeof options.body === 'string') {
45
- try {
46
- axiosConfig.data = JSON.parse(options.body);
47
- }
48
- catch {
49
- axiosConfig.data = options.body;
50
- }
51
- }
52
- else {
53
- axiosConfig.data = options.body;
54
- }
55
- }
56
- try {
57
- const response = await axios(axiosConfig);
58
- return {
59
- ok: response.status >= 200 && response.status < 300,
60
- status: response.status,
61
- statusText: response.statusText,
62
- data: response.data,
63
- headers: response.headers,
64
- success: response.status >= 200 && response.status < 300,
65
- timestamp: new Date().toISOString(),
66
- };
67
- }
68
- catch (error) {
69
- if (error.response || error.request) {
70
- if (error.response) {
71
- return {
72
- ok: false,
73
- status: error.response.status,
74
- statusText: error.response.statusText,
75
- data: error.response.data,
76
- headers: error.response.headers,
77
- success: false,
78
- timestamp: new Date().toISOString(),
79
- };
80
- }
81
- console.error('[IndexerClient] Network error details:', {
82
- message: error.message,
83
- code: error.code,
84
- url: fullUrl,
85
- method: axiosConfig.method,
86
- });
87
- throw new Error(`Indexer API request failed: ${error.message}`);
88
- }
89
- throw new Error(`Indexer API request failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
90
- }
91
7
  }
92
8
  async validateUsername(username) {
93
- const response = await this.get(`/users/${encodeURIComponent(username)}/validate`);
94
- if (!response.ok) {
95
- const errorMessage = response.data?.error || 'Unknown error';
96
- console.error('[IndexerClient] validateUsername failed:', errorMessage);
97
- throw new Error(`Failed to validate username: ${errorMessage}`);
9
+ const headers = createHeaders(this.dev);
10
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/users/${encodeURIComponent(username)}/validate`), { headers });
11
+ if (!response.ok || !response.data) {
12
+ throw handleApiError(response, 'validate username');
98
13
  }
99
14
  return response.data;
100
15
  }
101
16
  async getMessage(chainId, walletAddress, domain, url) {
17
+ const headers = createHeaders(this.dev);
102
18
  const queryParams = new URLSearchParams({
103
19
  chainId: chainId.toString(),
104
20
  domain,
105
21
  url,
106
22
  });
107
- const response = await this.get(`/wallets/${encodeURIComponent(walletAddress)}/message?${queryParams.toString()}`);
108
- if (!response.ok) {
109
- const errorMessage = response.data?.error || 'Unknown error';
110
- console.error('[IndexerClient] getMessage failed:', errorMessage);
111
- throw new Error(`Failed to get message: ${errorMessage}`);
23
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/message?${queryParams.toString()}`), { headers });
24
+ if (!response.ok || !response.data) {
25
+ throw handleApiError(response, 'get message');
112
26
  }
113
27
  return response.data;
114
28
  }
115
29
  async getPointsInfo() {
116
- const response = await this.get('/points');
117
- if (!response.ok) {
118
- const errorMessage = response.data?.error || 'Unknown error';
119
- console.error('[IndexerClient] getPointsInfo failed:', errorMessage);
120
- throw new Error(`Failed to get points info: ${errorMessage}`);
30
+ const headers = createHeaders(this.dev);
31
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, '/points'), { headers });
32
+ if (!response.ok || !response.data) {
33
+ throw handleApiError(response, 'get points info');
121
34
  }
122
35
  return response.data;
123
36
  }
124
37
  async getPointsLeaderboard(count = 10) {
125
- const response = await this.get(`/points/leaderboard/${count}`);
126
- if (!response.ok) {
127
- const errorMessage = response.data?.error || 'Unknown error';
128
- console.error('[IndexerClient] getPointsLeaderboard failed:', errorMessage);
129
- throw new Error(`Failed to get points leaderboard: ${errorMessage}`);
38
+ const headers = createHeaders(this.dev);
39
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/points/leaderboard/${count}`), { headers });
40
+ if (!response.ok || !response.data) {
41
+ throw handleApiError(response, 'get points leaderboard');
130
42
  }
131
43
  return response.data;
132
44
  }
133
45
  async getPointsSiteStats() {
134
- const response = await this.get('/points/site-stats');
135
- if (!response.ok) {
136
- const errorMessage = response.data?.error || 'Unknown error';
137
- console.error('[IndexerClient] getPointsSiteStats failed:', errorMessage);
138
- throw new Error(`Failed to get site stats: ${errorMessage}`);
46
+ const headers = createHeaders(this.dev);
47
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, '/points/site-stats'), { headers });
48
+ if (!response.ok || !response.data) {
49
+ throw handleApiError(response, 'get site stats');
139
50
  }
140
51
  return response.data;
141
52
  }
142
- createAuthHeaders(auth) {
143
- return {
144
- 'x-signature': auth.signature.replace(/[\r\n]/g, ''),
145
- 'x-message': encodeURIComponent(auth.message),
146
- 'x-signer': auth.signer,
147
- };
148
- }
149
53
  async getWalletAccounts(walletAddress, auth, referralCode) {
150
- const headers = this.createAuthHeaders(auth);
151
- if (referralCode) {
152
- headers['x-referral'] = referralCode;
153
- }
154
- const response = await this.get(`/wallets/${encodeURIComponent(walletAddress)}/accounts`, { headers });
155
- if (!response.ok) {
156
- const errorMessage = response.data?.error || 'Unknown error';
157
- console.error('[IndexerClient] getWalletAccounts failed:', errorMessage);
158
- throw new Error(`Failed to get wallet accounts: ${errorMessage}`);
54
+ const additionalHeaders = referralCode
55
+ ? { 'x-referral': referralCode }
56
+ : undefined;
57
+ const headers = createAuthHeaders(auth, this.dev, additionalHeaders);
58
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/accounts`), { headers });
59
+ if (!response.ok || !response.data) {
60
+ throw handleApiError(response, 'get wallet accounts');
159
61
  }
160
62
  return response.data;
161
63
  }
162
64
  async getDelegatedTo(walletAddress, auth) {
163
- const response = await this.get(`/delegations/from/${encodeURIComponent(walletAddress)}`, {
164
- headers: this.createAuthHeaders(auth),
165
- });
166
- if (!response.ok) {
167
- const errorMessage = response.data?.error || 'Unknown error';
168
- console.error('[IndexerClient] getDelegatedTo failed:', errorMessage);
169
- throw new Error(`Failed to get delegation: ${errorMessage}`);
65
+ const headers = createAuthHeaders(auth, this.dev);
66
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/delegations/from/${encodeURIComponent(walletAddress)}`), { headers });
67
+ if (!response.ok || !response.data) {
68
+ throw handleApiError(response, 'get delegation');
170
69
  }
171
70
  return response.data;
172
71
  }
173
72
  async getDelegatedFrom(walletAddress, auth) {
174
- const response = await this.get(`/delegations/to/${encodeURIComponent(walletAddress)}`, {
175
- headers: this.createAuthHeaders(auth),
176
- });
177
- if (!response.ok) {
178
- const errorMessage = response.data?.error || 'Unknown error';
179
- console.error('[IndexerClient] getDelegatedFrom failed:', errorMessage);
180
- throw new Error(`Failed to get delegators: ${errorMessage}`);
73
+ const headers = createAuthHeaders(auth, this.dev);
74
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/delegations/to/${encodeURIComponent(walletAddress)}`), { headers });
75
+ if (!response.ok || !response.data) {
76
+ throw handleApiError(response, 'get delegators');
181
77
  }
182
78
  return response.data;
183
79
  }
184
80
  async createNonce(username, auth) {
185
- const response = await this.post(`/users/${encodeURIComponent(username)}/nonce`, {}, {
186
- headers: this.createAuthHeaders(auth),
187
- });
188
- if (!response.ok) {
189
- const errorMessage = response.data?.error || 'Unknown error';
190
- console.error('[IndexerClient] createNonce failed:', errorMessage);
191
- throw new Error(`Failed to create nonce: ${errorMessage}`);
81
+ const headers = createAuthHeaders(auth, this.dev);
82
+ const response = await this.networkClient.post(buildUrl(this.baseUrl, `/users/${encodeURIComponent(username)}/nonce`), {}, { headers });
83
+ if (!response.ok || !response.data) {
84
+ throw handleApiError(response, 'create nonce');
192
85
  }
193
86
  return response.data;
194
87
  }
195
88
  async getNonce(username, auth) {
196
- const response = await this.get(`/users/${encodeURIComponent(username)}/nonce`, {
197
- headers: this.createAuthHeaders(auth),
198
- });
199
- if (!response.ok) {
200
- const errorMessage = response.data?.error || 'Unknown error';
201
- console.error('[IndexerClient] getNonce failed:', errorMessage);
202
- throw new Error(`Failed to get nonce: ${errorMessage}`);
89
+ const headers = createAuthHeaders(auth, this.dev);
90
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/users/${encodeURIComponent(username)}/nonce`), { headers });
91
+ if (!response.ok || !response.data) {
92
+ throw handleApiError(response, 'get nonce');
203
93
  }
204
94
  return response.data;
205
95
  }
206
96
  async getEntitlement(walletAddress, auth) {
207
- const response = await this.get(`/wallets/${encodeURIComponent(walletAddress)}/entitlements/`, {
208
- headers: this.createAuthHeaders(auth),
209
- });
210
- if (!response.ok) {
211
- const errorMessage = response.data?.error || 'Unknown error';
212
- console.error('[IndexerClient] getEntitlement failed:', errorMessage);
213
- throw new Error(`Failed to get entitlement: ${errorMessage}`);
97
+ const headers = createAuthHeaders(auth, this.dev);
98
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/entitlements/`), { headers });
99
+ if (!response.ok || !response.data) {
100
+ throw handleApiError(response, 'get entitlement');
214
101
  }
215
102
  return response.data;
216
103
  }
217
104
  async getPointsBalance(walletAddress, auth) {
218
- const response = await this.get(`/wallets/${encodeURIComponent(walletAddress)}/points`, {
219
- headers: this.createAuthHeaders(auth),
220
- });
221
- if (!response.ok) {
222
- const errorMessage = response.data?.error || 'Unknown error';
223
- console.error('[IndexerClient] getPointsBalance failed:', errorMessage);
224
- throw new Error(`Failed to get points balance: ${errorMessage}`);
105
+ const headers = createAuthHeaders(auth, this.dev);
106
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/points`), { headers });
107
+ if (!response.ok || !response.data) {
108
+ throw handleApiError(response, 'get points balance');
225
109
  }
226
110
  return response.data;
227
111
  }
228
112
  async getReferralCode(walletAddress, auth) {
229
- const response = await this.post(`/wallets/${encodeURIComponent(walletAddress)}/referral`, {}, {
230
- headers: this.createAuthHeaders(auth),
231
- });
232
- if (!response.ok) {
233
- const errorMessage = response.data?.error ||
234
- response.data?.message ||
235
- JSON.stringify(response.data) ||
236
- `HTTP ${response.status}`;
237
- console.error('[IndexerClient] getReferralCode failed:', errorMessage);
238
- throw new Error(`Failed to get referral code: ${errorMessage}`);
113
+ const headers = createAuthHeaders(auth, this.dev);
114
+ const response = await this.networkClient.post(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/referral`), {}, { headers });
115
+ if (!response.ok || !response.data) {
116
+ throw handleApiError(response, 'get referral code');
239
117
  }
240
118
  return response.data;
241
119
  }
242
120
  async getReferralStats(referralCode) {
243
- const response = await this.post(`/referrals/${encodeURIComponent(referralCode)}/stats`, {});
244
- if (!response.ok) {
245
- const errorMessage = response.data?.error || 'Unknown error';
246
- console.error('[IndexerClient] getReferralStats failed:', errorMessage);
247
- throw new Error(`Failed to get referral stats: ${errorMessage}`);
121
+ const headers = createHeaders(this.dev);
122
+ const response = await this.networkClient.post(buildUrl(this.baseUrl, `/referrals/${encodeURIComponent(referralCode)}/stats`), {}, { headers });
123
+ if (!response.ok || !response.data) {
124
+ throw handleApiError(response, 'get referral stats');
248
125
  }
249
126
  return response.data;
250
127
  }
251
128
  async getWalletNames(walletAddress, auth) {
252
- const response = await this.get(`/wallets/${encodeURIComponent(walletAddress)}/names`, {
253
- headers: this.createAuthHeaders(auth),
254
- });
255
- if (!response.ok) {
256
- const errorMessage = response.data?.error || 'Unknown error';
257
- console.error('[IndexerClient] getWalletNames failed:', errorMessage);
258
- throw new Error(`Failed to get wallet names: ${errorMessage}`);
129
+ const headers = createAuthHeaders(auth, this.dev);
130
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/names`), { headers });
131
+ if (!response.ok || !response.data) {
132
+ throw handleApiError(response, 'get wallet names');
259
133
  }
260
134
  return response.data;
261
135
  }
262
136
  async resolveNameToAddress(name) {
263
- const response = await this.get(`/wallets/named/${encodeURIComponent(name)}`);
264
- if (!response.ok) {
265
- const errorMessage = response.data?.error || 'Unknown error';
266
- console.error('[IndexerClient] resolveNameToAddress failed:', errorMessage);
267
- throw new Error(`Failed to resolve name: ${errorMessage}`);
137
+ const headers = createHeaders(this.dev);
138
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/wallets/named/${encodeURIComponent(name)}`), { headers });
139
+ if (!response.ok || !response.data) {
140
+ throw handleApiError(response, 'resolve name');
268
141
  }
269
142
  return response.data;
270
143
  }
271
144
  async createMailTemplate(walletAddress, auth, template) {
272
- const response = await this.post(`/wallets/${encodeURIComponent(walletAddress)}/templates`, template, {
273
- headers: this.createAuthHeaders(auth),
274
- });
275
- if (!response.ok) {
276
- const errorMessage = response.data?.error || 'Unknown error';
277
- console.error('[IndexerClient] createMailTemplate failed:', errorMessage);
278
- throw new Error(`Failed to create template: ${errorMessage}`);
145
+ const headers = createAuthHeaders(auth, this.dev);
146
+ const response = await this.networkClient.post(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/templates`), template, { headers });
147
+ if (!response.ok || !response.data) {
148
+ throw handleApiError(response, 'create template');
279
149
  }
280
150
  return response.data;
281
151
  }
282
152
  async getMailTemplates(walletAddress, auth, params) {
153
+ const headers = createAuthHeaders(auth, this.dev);
283
154
  const queryParams = new URLSearchParams();
284
155
  if (params?.active !== undefined) {
285
156
  queryParams.append('active', params.active.toString());
@@ -291,62 +162,47 @@ export class IndexerClient {
291
162
  queryParams.append('offset', params.offset.toString());
292
163
  }
293
164
  const queryString = queryParams.toString();
294
- const url = `/wallets/${encodeURIComponent(walletAddress)}/templates${queryString ? `?${queryString}` : ''}`;
295
- const response = await this.get(url, {
296
- headers: this.createAuthHeaders(auth),
297
- });
298
- if (!response.ok) {
299
- const errorMessage = response.data?.error || 'Unknown error';
300
- console.error('[IndexerClient] getMailTemplates failed:', errorMessage);
301
- throw new Error(`Failed to get templates: ${errorMessage}`);
165
+ const path = `/wallets/${encodeURIComponent(walletAddress)}/templates${queryString ? `?${queryString}` : ''}`;
166
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, path), { headers });
167
+ if (!response.ok || !response.data) {
168
+ throw handleApiError(response, 'get templates');
302
169
  }
303
170
  return response.data;
304
171
  }
305
172
  async getMailTemplate(walletAddress, templateId, auth) {
306
- const response = await this.get(`/wallets/${encodeURIComponent(walletAddress)}/templates/${encodeURIComponent(templateId)}`, {
307
- headers: this.createAuthHeaders(auth),
308
- });
309
- if (!response.ok) {
310
- const errorMessage = response.data?.error || 'Unknown error';
311
- console.error('[IndexerClient] getMailTemplate failed:', errorMessage);
312
- throw new Error(`Failed to get template: ${errorMessage}`);
173
+ const headers = createAuthHeaders(auth, this.dev);
174
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/templates/${encodeURIComponent(templateId)}`), { headers });
175
+ if (!response.ok || !response.data) {
176
+ throw handleApiError(response, 'get template');
313
177
  }
314
178
  return response.data;
315
179
  }
316
180
  async updateMailTemplate(walletAddress, templateId, auth, updates) {
317
- const response = await this.put(`/wallets/${encodeURIComponent(walletAddress)}/templates/${encodeURIComponent(templateId)}`, updates, {
318
- headers: this.createAuthHeaders(auth),
319
- });
320
- if (!response.ok) {
321
- const errorMessage = response.data?.error || 'Unknown error';
322
- console.error('[IndexerClient] updateMailTemplate failed:', errorMessage);
323
- throw new Error(`Failed to update template: ${errorMessage}`);
181
+ const headers = createAuthHeaders(auth, this.dev);
182
+ const response = await this.networkClient.put(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/templates/${encodeURIComponent(templateId)}`), updates, { headers });
183
+ if (!response.ok || !response.data) {
184
+ throw handleApiError(response, 'update template');
324
185
  }
325
186
  return response.data;
326
187
  }
327
188
  async deleteMailTemplate(walletAddress, templateId, auth) {
328
- const response = await this.delete(`/wallets/${encodeURIComponent(walletAddress)}/templates/${encodeURIComponent(templateId)}`, {
329
- headers: this.createAuthHeaders(auth),
330
- });
331
- if (!response.ok) {
332
- const errorMessage = response.data?.error || 'Unknown error';
333
- console.error('[IndexerClient] deleteMailTemplate failed:', errorMessage);
334
- throw new Error(`Failed to delete template: ${errorMessage}`);
189
+ const headers = createAuthHeaders(auth, this.dev);
190
+ const response = await this.networkClient.delete(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/templates/${encodeURIComponent(templateId)}`), { headers });
191
+ if (!response.ok || !response.data) {
192
+ throw handleApiError(response, 'delete template');
335
193
  }
336
194
  return response.data;
337
195
  }
338
196
  async createWebhook(walletAddress, auth, webhook) {
339
- const response = await this.post(`/wallets/${encodeURIComponent(walletAddress)}/webhooks`, webhook, {
340
- headers: this.createAuthHeaders(auth),
341
- });
342
- if (!response.ok) {
343
- const errorMessage = response.data?.error || 'Unknown error';
344
- console.error('[IndexerClient] createWebhook failed:', errorMessage);
345
- throw new Error(`Failed to create webhook: ${errorMessage}`);
197
+ const headers = createAuthHeaders(auth, this.dev);
198
+ const response = await this.networkClient.post(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/webhooks`), webhook, { headers });
199
+ if (!response.ok || !response.data) {
200
+ throw handleApiError(response, 'create webhook');
346
201
  }
347
202
  return response.data;
348
203
  }
349
204
  async getWebhooks(walletAddress, auth, params) {
205
+ const headers = createAuthHeaders(auth, this.dev);
350
206
  const queryParams = new URLSearchParams();
351
207
  if (params?.active !== undefined) {
352
208
  queryParams.append('active', params.active.toString());
@@ -358,68 +214,57 @@ export class IndexerClient {
358
214
  queryParams.append('offset', params.offset.toString());
359
215
  }
360
216
  const queryString = queryParams.toString();
361
- const url = `/wallets/${encodeURIComponent(walletAddress)}/webhooks${queryString ? `?${queryString}` : ''}`;
362
- const response = await this.get(url, {
363
- headers: this.createAuthHeaders(auth),
364
- });
365
- if (!response.ok) {
366
- const errorMessage = response.data?.error || 'Unknown error';
367
- console.error('[IndexerClient] getWebhooks failed:', errorMessage);
368
- throw new Error(`Failed to get webhooks: ${errorMessage}`);
217
+ const path = `/wallets/${encodeURIComponent(walletAddress)}/webhooks${queryString ? `?${queryString}` : ''}`;
218
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, path), { headers });
219
+ if (!response.ok || !response.data) {
220
+ throw handleApiError(response, 'get webhooks');
369
221
  }
370
222
  return response.data;
371
223
  }
372
224
  async getWebhook(walletAddress, webhookId, auth) {
373
- const response = await this.get(`/wallets/${encodeURIComponent(walletAddress)}/webhooks/${encodeURIComponent(webhookId)}`, {
374
- headers: this.createAuthHeaders(auth),
375
- });
376
- if (!response.ok) {
377
- const errorMessage = response.data?.error || 'Unknown error';
378
- console.error('[IndexerClient] getWebhook failed:', errorMessage);
379
- throw new Error(`Failed to get webhook: ${errorMessage}`);
225
+ const headers = createAuthHeaders(auth, this.dev);
226
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/webhooks/${encodeURIComponent(webhookId)}`), { headers });
227
+ if (!response.ok || !response.data) {
228
+ throw handleApiError(response, 'get webhook');
380
229
  }
381
230
  return response.data;
382
231
  }
383
232
  async deleteWebhook(walletAddress, webhookId, auth) {
384
- const response = await this.delete(`/wallets/${encodeURIComponent(walletAddress)}/webhooks/${encodeURIComponent(webhookId)}`, {
385
- headers: this.createAuthHeaders(auth),
386
- });
387
- if (!response.ok) {
388
- const errorMessage = response.data?.error || 'Unknown error';
389
- console.error('[IndexerClient] deleteWebhook failed:', errorMessage);
390
- throw new Error(`Failed to delete webhook: ${errorMessage}`);
233
+ const headers = createAuthHeaders(auth, this.dev);
234
+ const response = await this.networkClient.delete(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/webhooks/${encodeURIComponent(webhookId)}`), { headers });
235
+ if (!response.ok || !response.data) {
236
+ throw handleApiError(response, 'delete webhook');
391
237
  }
392
238
  return response.data;
393
239
  }
394
240
  async createAuthChallenge(walletIdentifier, clientId, redirectUri, deviceFingerprint) {
395
- const response = await this.post('/auth/challenge', {
241
+ const headers = createHeaders(this.dev);
242
+ const response = await this.networkClient.post(buildUrl(this.baseUrl, '/auth/challenge'), {
396
243
  wallet_identifier: walletIdentifier,
397
244
  client_id: clientId,
398
245
  redirect_uri: redirectUri,
399
246
  device_fingerprint: deviceFingerprint,
400
- });
401
- if (!response.ok) {
402
- const errorMessage = response.data?.error || 'Unknown error';
403
- console.error('[IndexerClient] createAuthChallenge failed:', errorMessage);
404
- throw new Error(`Failed to create auth challenge: ${errorMessage}`);
247
+ }, { headers });
248
+ if (!response.ok || !response.data) {
249
+ throw handleApiError(response, 'create auth challenge');
405
250
  }
406
251
  return response.data;
407
252
  }
408
253
  async verifyAuthSignature(sessionId, signature, chainType, currentWallet) {
409
- const response = await this.post('/auth/verify', {
254
+ const headers = createHeaders(this.dev);
255
+ const response = await this.networkClient.post(buildUrl(this.baseUrl, '/auth/verify'), {
410
256
  session_id: sessionId,
411
257
  signature,
412
258
  chain_type: chainType,
413
259
  current_wallet: currentWallet,
414
- });
415
- if (!response.ok) {
416
- const errorMessage = response.data?.error || 'Unknown error';
417
- console.error('[IndexerClient] verifyAuthSignature failed:', errorMessage);
418
- throw new Error(`Failed to verify signature: ${errorMessage}`);
260
+ }, { headers });
261
+ if (!response.ok || !response.data) {
262
+ throw handleApiError(response, 'verify signature');
419
263
  }
420
264
  return response.data;
421
265
  }
422
266
  async authorizeOAuth(clientId, redirectUri, responseType, scope, state, sessionId, codeChallenge, codeChallengeMethod, nonce, privacy) {
267
+ const headers = createHeaders(this.dev, { 'X-Session-Id': sessionId });
423
268
  const queryParams = new URLSearchParams({
424
269
  client_id: clientId,
425
270
  redirect_uri: redirectUri,
@@ -435,19 +280,14 @@ export class IndexerClient {
435
280
  queryParams.append('nonce', nonce);
436
281
  if (privacy)
437
282
  queryParams.append('privacy', privacy);
438
- const response = await this.get(`/oauth/authorize?${queryParams.toString()}`, {
439
- headers: {
440
- 'X-Session-Id': sessionId,
441
- },
442
- });
443
- if (!response.ok) {
444
- const errorMessage = response.data?.error || 'Unknown error';
445
- console.error('[IndexerClient] authorizeOAuth failed:', errorMessage);
446
- throw new Error(`Failed to authorize: ${errorMessage}`);
283
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/oauth/authorize?${queryParams.toString()}`), { headers });
284
+ if (!response.ok || !response.data) {
285
+ throw handleApiError(response, 'authorize');
447
286
  }
448
287
  return response.data;
449
288
  }
450
289
  async exchangeOAuthToken(grantType, clientId, code, redirectUri, clientSecret, codeVerifier, refreshToken) {
290
+ const headers = createHeaders(this.dev);
451
291
  const body = {
452
292
  grant_type: grantType,
453
293
  client_id: clientId,
@@ -462,112 +302,93 @@ export class IndexerClient {
462
302
  body.code_verifier = codeVerifier;
463
303
  if (refreshToken)
464
304
  body.refresh_token = refreshToken;
465
- const response = await this.post('/oauth/token', body);
466
- if (!response.ok) {
467
- const errorMessage = response.data?.error || 'Unknown error';
468
- console.error('[IndexerClient] exchangeOAuthToken failed:', errorMessage);
469
- throw new Error(`Failed to exchange token: ${errorMessage}`);
305
+ const response = await this.networkClient.post(buildUrl(this.baseUrl, '/oauth/token'), body, { headers });
306
+ if (!response.ok || !response.data) {
307
+ throw handleApiError(response, 'exchange token');
470
308
  }
471
309
  return response.data;
472
310
  }
473
311
  async getOAuthUserInfo(accessToken) {
474
- const response = await this.get('/oauth/userinfo', {
475
- headers: {
476
- Authorization: `Bearer ${accessToken}`,
477
- },
312
+ const headers = createHeaders(this.dev, {
313
+ Authorization: `Bearer ${accessToken}`,
478
314
  });
479
- if (!response.ok) {
480
- const errorMessage = response.data?.error || 'Unknown error';
481
- console.error('[IndexerClient] getOAuthUserInfo failed:', errorMessage);
482
- throw new Error(`Failed to get user info: ${errorMessage}`);
315
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, '/oauth/userinfo'), { headers });
316
+ if (!response.ok || !response.data) {
317
+ throw handleApiError(response, 'get user info');
483
318
  }
484
319
  return response.data;
485
320
  }
486
321
  async revokeOAuthToken(token, tokenTypeHint) {
322
+ const headers = createHeaders(this.dev);
487
323
  const body = { token };
488
324
  if (tokenTypeHint)
489
325
  body.token_type_hint = tokenTypeHint;
490
- const response = await this.post('/oauth/revoke', body);
491
- if (!response.ok) {
492
- const errorMessage = response.data?.error || 'Unknown error';
493
- console.error('[IndexerClient] revokeOAuthToken failed:', errorMessage);
494
- throw new Error(`Failed to revoke token: ${errorMessage}`);
326
+ const response = await this.networkClient.post(buildUrl(this.baseUrl, '/oauth/revoke'), body, { headers });
327
+ if (!response.ok || !response.data) {
328
+ throw handleApiError(response, 'revoke token');
495
329
  }
496
330
  }
497
331
  async getOAuthClientInfo(clientId) {
498
- const response = await this.get(`/oauth/clients/${clientId}`);
499
- if (!response.ok) {
500
- const errorMessage = response.data?.error || 'Unknown error';
501
- console.error('[IndexerClient] getOAuthClientInfo failed:', errorMessage);
502
- throw new Error(`Failed to get client info: ${errorMessage}`);
332
+ const headers = createHeaders(this.dev);
333
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/oauth/clients/${clientId}`), { headers });
334
+ if (!response.ok || !response.data) {
335
+ throw handleApiError(response, 'get client info');
503
336
  }
504
337
  return response.data;
505
338
  }
506
339
  async initiateKYC(walletAddress, auth, verificationLevel) {
507
- const response = await this.post(`/kyc/initiate/${encodeURIComponent(walletAddress)}`, { verificationLevel }, {
508
- headers: this.createAuthHeaders(auth),
509
- });
510
- if (!response.ok) {
511
- const errorMessage = response.data?.error || 'Unknown error';
512
- console.error('[IndexerClient] initiateKYC failed:', errorMessage);
513
- throw new Error(`Failed to initiate KYC: ${errorMessage}`);
340
+ const headers = createAuthHeaders(auth, this.dev);
341
+ const response = await this.networkClient.post(buildUrl(this.baseUrl, `/kyc/initiate/${encodeURIComponent(walletAddress)}`), { verificationLevel }, { headers });
342
+ if (!response.ok || !response.data) {
343
+ throw handleApiError(response, 'initiate KYC');
514
344
  }
515
345
  return response.data;
516
346
  }
517
347
  async getKYCStatus(walletAddress, auth) {
518
- const response = await this.get(`/kyc/status/${encodeURIComponent(walletAddress)}`, {
519
- headers: this.createAuthHeaders(auth),
520
- });
521
- if (!response.ok) {
522
- const errorMessage = response.data?.error || 'Unknown error';
523
- console.error('[IndexerClient] getKYCStatus failed:', errorMessage);
524
- throw new Error(`Failed to get KYC status: ${errorMessage}`);
348
+ const headers = createAuthHeaders(auth, this.dev);
349
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/kyc/status/${encodeURIComponent(walletAddress)}`), { headers });
350
+ if (!response.ok || !response.data) {
351
+ throw handleApiError(response, 'get KYC status');
525
352
  }
526
353
  return response.data;
527
354
  }
528
355
  async checkAuthenticated(walletAddress, auth) {
529
- const response = await this.get(`/wallets/${encodeURIComponent(walletAddress)}/authenticated`, {
530
- headers: this.createAuthHeaders(auth),
531
- });
532
- if (!response.ok) {
533
- const errorMessage = response.data?.error || 'Unknown error';
534
- console.error('[IndexerClient] checkAuthenticated failed:', errorMessage);
535
- throw new Error(`Failed to check authentication status: ${errorMessage}`);
356
+ const headers = createAuthHeaders(auth, this.dev);
357
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/authenticated`), { headers });
358
+ if (!response.ok || !response.data) {
359
+ throw handleApiError(response, 'check authentication status');
536
360
  }
537
361
  return response.data;
538
362
  }
539
363
  async getBlockStatus() {
540
- const response = await this.get('/blocks');
541
- if (!response.ok) {
542
- const errorMessage = response.data?.error || 'Unknown error';
543
- console.error('[IndexerClient] getBlockStatus failed:', errorMessage);
544
- throw new Error(`Failed to get block status: ${errorMessage}`);
364
+ const headers = createHeaders(this.dev);
365
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, '/blocks'), { headers });
366
+ if (!response.ok || !response.data) {
367
+ throw handleApiError(response, 'get block status');
545
368
  }
546
369
  return response.data;
547
370
  }
548
371
  async getContractPermissions(contractAddress, chainId, testNet = false) {
372
+ const headers = createHeaders(this.dev);
549
373
  const queryParams = new URLSearchParams({
550
374
  chainId: chainId.toString(),
551
375
  testNet: testNet.toString(),
552
376
  });
553
- const response = await this.get(`/permissions/contract/${encodeURIComponent(contractAddress)}?${queryParams.toString()}`);
554
- if (!response.ok) {
555
- const errorMessage = response.data?.error || 'Unknown error';
556
- console.error('[IndexerClient] getContractPermissions failed:', errorMessage);
557
- throw new Error(`Failed to get contract permissions: ${errorMessage}`);
377
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/permissions/contract/${encodeURIComponent(contractAddress)}?${queryParams.toString()}`), { headers });
378
+ if (!response.ok || !response.data) {
379
+ throw handleApiError(response, 'get contract permissions');
558
380
  }
559
381
  return response.data;
560
382
  }
561
383
  async getWalletPermissions(walletAddress, chainId, testNet = false) {
384
+ const headers = createHeaders(this.dev);
562
385
  const queryParams = new URLSearchParams({
563
386
  chainId: chainId.toString(),
564
387
  testNet: testNet.toString(),
565
388
  });
566
- const response = await this.get(`/permissions/wallet/${encodeURIComponent(walletAddress)}?${queryParams.toString()}`);
567
- if (!response.ok) {
568
- const errorMessage = response.data?.error || 'Unknown error';
569
- console.error('[IndexerClient] getWalletPermissions failed:', errorMessage);
570
- throw new Error(`Failed to get wallet permissions: ${errorMessage}`);
389
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/permissions/wallet/${encodeURIComponent(walletAddress)}?${queryParams.toString()}`), { headers });
390
+ if (!response.ok || !response.data) {
391
+ throw handleApiError(response, 'get wallet permissions');
571
392
  }
572
393
  return response.data;
573
394
  }