@openzeppelin/guardian-client 0.13.2

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 (47) hide show
  1. package/README.md +140 -0
  2. package/dist/auth-request.d.ts +10 -0
  3. package/dist/auth-request.d.ts.map +1 -0
  4. package/dist/auth-request.js +38 -0
  5. package/dist/auth-request.js.map +1 -0
  6. package/dist/auth-request.test.d.ts +2 -0
  7. package/dist/auth-request.test.d.ts.map +1 -0
  8. package/dist/auth-request.test.js +10 -0
  9. package/dist/auth-request.test.js.map +1 -0
  10. package/dist/conversion.d.ts +18 -0
  11. package/dist/conversion.d.ts.map +1 -0
  12. package/dist/conversion.js +187 -0
  13. package/dist/conversion.js.map +1 -0
  14. package/dist/conversion.test.d.ts +2 -0
  15. package/dist/conversion.test.d.ts.map +1 -0
  16. package/dist/conversion.test.js +317 -0
  17. package/dist/conversion.test.js.map +1 -0
  18. package/dist/http.d.ts +33 -0
  19. package/dist/http.d.ts.map +1 -0
  20. package/dist/http.js +191 -0
  21. package/dist/http.js.map +1 -0
  22. package/dist/http.test.d.ts +2 -0
  23. package/dist/http.test.d.ts.map +1 -0
  24. package/dist/http.test.js +493 -0
  25. package/dist/http.test.js.map +1 -0
  26. package/dist/index.d.ts +4 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +3 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/server-types.d.ts +150 -0
  31. package/dist/server-types.d.ts.map +1 -0
  32. package/dist/server-types.js +2 -0
  33. package/dist/server-types.js.map +1 -0
  34. package/dist/types.d.ts +159 -0
  35. package/dist/types.d.ts.map +1 -0
  36. package/dist/types.js +2 -0
  37. package/dist/types.js.map +1 -0
  38. package/package.json +36 -0
  39. package/src/auth-request.test.ts +11 -0
  40. package/src/auth-request.ts +49 -0
  41. package/src/conversion.test.ts +400 -0
  42. package/src/conversion.ts +247 -0
  43. package/src/http.test.ts +597 -0
  44. package/src/http.ts +244 -0
  45. package/src/index.ts +25 -0
  46. package/src/server-types.ts +142 -0
  47. package/src/types.ts +167 -0
@@ -0,0 +1,317 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { fromServerCosignerSignature, fromServerConfigureResponse, fromServerDeltaObject, fromServerDeltaStatus, fromServerProposalMetadata, fromServerStateObject, toServerConfigureRequest, toServerCosignerSignature, toServerDeltaProposalRequest, toServerDeltaStatus, toServerExecutionDelta, toServerProposalMetadata, toServerSignProposalRequest, } from './conversion.js';
3
+ describe('conversion', () => {
4
+ describe('fromServer conversions (server → camelCase)', () => {
5
+ it('converts CosignerSignature', () => {
6
+ const server = {
7
+ signer_id: '0xabc',
8
+ signature: { scheme: 'falcon', signature: '0x123' },
9
+ timestamp: '2024-01-01T00:00:00Z',
10
+ };
11
+ const result = fromServerCosignerSignature(server);
12
+ expect(result).toEqual({
13
+ signerId: '0xabc',
14
+ signature: { scheme: 'falcon', signature: '0x123' },
15
+ timestamp: '2024-01-01T00:00:00Z',
16
+ });
17
+ });
18
+ it('converts pending DeltaStatus', () => {
19
+ const server = {
20
+ status: 'pending',
21
+ timestamp: '2024-01-01T00:00:00Z',
22
+ proposer_id: '0xproposer',
23
+ cosigner_sigs: [
24
+ { signer_id: '0xsig1', signature: { scheme: 'falcon', signature: '0x1' }, timestamp: '2024-01-01T00:00:00Z' },
25
+ ],
26
+ };
27
+ const result = fromServerDeltaStatus(server);
28
+ expect(result).toEqual({
29
+ status: 'pending',
30
+ timestamp: '2024-01-01T00:00:00Z',
31
+ proposerId: '0xproposer',
32
+ cosignerSigs: [
33
+ { signerId: '0xsig1', signature: { scheme: 'falcon', signature: '0x1' }, timestamp: '2024-01-01T00:00:00Z' },
34
+ ],
35
+ });
36
+ });
37
+ it('converts candidate/canonical/discarded DeltaStatus', () => {
38
+ const statuses = [
39
+ { status: 'candidate', timestamp: '2024-01-01T00:00:00Z' },
40
+ { status: 'canonical', timestamp: '2024-01-02T00:00:00Z' },
41
+ { status: 'discarded', timestamp: '2024-01-03T00:00:00Z' },
42
+ ];
43
+ for (const server of statuses) {
44
+ const result = fromServerDeltaStatus(server);
45
+ expect(result.status).toBe(server.status);
46
+ expect(result.timestamp).toBe(server.timestamp);
47
+ }
48
+ });
49
+ it('converts ProposalMetadata with all fields', () => {
50
+ const server = {
51
+ proposal_type: 'update_procedure_threshold',
52
+ target_threshold: 2,
53
+ target_procedure: 'send_asset',
54
+ signer_commitments: ['0x1', '0x2'],
55
+ salt: '0xsalt',
56
+ description: 'test',
57
+ new_guardian_pubkey: '0xpubkey',
58
+ new_guardian_endpoint: 'http://guardian',
59
+ note_ids: ['0xnote1'],
60
+ recipient_id: '0xrecipient',
61
+ faucet_id: '0xfaucet',
62
+ amount: '1000',
63
+ };
64
+ const result = fromServerProposalMetadata(server);
65
+ expect(result).toEqual({
66
+ proposalType: 'update_procedure_threshold',
67
+ targetThreshold: 2,
68
+ targetProcedure: 'send_asset',
69
+ signerCommitments: ['0x1', '0x2'],
70
+ salt: '0xsalt',
71
+ description: 'test',
72
+ newGuardianPubkey: '0xpubkey',
73
+ newGuardianEndpoint: 'http://guardian',
74
+ noteIds: ['0xnote1'],
75
+ recipientId: '0xrecipient',
76
+ faucetId: '0xfaucet',
77
+ amount: '1000',
78
+ });
79
+ });
80
+ it('converts ProposalMetadata with partial fields', () => {
81
+ const server = {
82
+ proposal_type: 'p2id',
83
+ description: 'send funds',
84
+ };
85
+ const result = fromServerProposalMetadata(server);
86
+ expect(result.proposalType).toBe('p2id');
87
+ expect(result.description).toBe('send funds');
88
+ expect(result.targetThreshold).toBeUndefined();
89
+ });
90
+ it('converts DeltaObject', () => {
91
+ const server = {
92
+ account_id: '0xaccount',
93
+ nonce: 1,
94
+ prev_commitment: '0xprev',
95
+ new_commitment: '0xnew',
96
+ delta_payload: {
97
+ tx_summary: { data: 'base64data' },
98
+ signatures: [{ signer_id: '0xsig', signature: { scheme: 'falcon', signature: '0x123' } }],
99
+ metadata: { proposal_type: 'add_signer', description: 'test' },
100
+ },
101
+ ack_sig: '0xack',
102
+ status: { status: 'canonical', timestamp: '2024-01-01T00:00:00Z' },
103
+ };
104
+ const result = fromServerDeltaObject(server);
105
+ expect(result.accountId).toBe('0xaccount');
106
+ expect(result.nonce).toBe(1);
107
+ expect(result.prevCommitment).toBe('0xprev');
108
+ expect(result.newCommitment).toBe('0xnew');
109
+ expect(result.deltaPayload.txSummary.data).toBe('base64data');
110
+ expect(result.deltaPayload.signatures[0].signerId).toBe('0xsig');
111
+ expect(result.deltaPayload.metadata?.proposalType).toBe('add_signer');
112
+ expect(result.ackSig).toBe('0xack');
113
+ expect(result.status.status).toBe('canonical');
114
+ });
115
+ it('converts DeltaObject without optional fields', () => {
116
+ const server = {
117
+ account_id: '0xaccount',
118
+ nonce: 1,
119
+ prev_commitment: '0xprev',
120
+ delta_payload: {
121
+ tx_summary: { data: 'base64data' },
122
+ signatures: [],
123
+ },
124
+ status: { status: 'pending', timestamp: '2024-01-01T00:00:00Z', proposer_id: '0xp', cosigner_sigs: [] },
125
+ };
126
+ const result = fromServerDeltaObject(server);
127
+ expect(result.newCommitment).toBeUndefined();
128
+ expect(result.deltaPayload.metadata).toBeUndefined();
129
+ expect(result.ackSig).toBeUndefined();
130
+ });
131
+ it('converts StateObject', () => {
132
+ const server = {
133
+ account_id: '0xaccount',
134
+ commitment: '0xcommit',
135
+ state_json: { data: 'statedata' },
136
+ created_at: '2024-01-01T00:00:00Z',
137
+ updated_at: '2024-01-02T00:00:00Z',
138
+ };
139
+ const result = fromServerStateObject(server);
140
+ expect(result).toEqual({
141
+ accountId: '0xaccount',
142
+ commitment: '0xcommit',
143
+ stateJson: { data: 'statedata' },
144
+ createdAt: '2024-01-01T00:00:00Z',
145
+ updatedAt: '2024-01-02T00:00:00Z',
146
+ });
147
+ });
148
+ it('converts ConfigureResponse', () => {
149
+ const server = {
150
+ success: true,
151
+ message: 'configured',
152
+ ack_pubkey: '0xpubkey',
153
+ };
154
+ const result = fromServerConfigureResponse(server);
155
+ expect(result).toEqual({
156
+ success: true,
157
+ message: 'configured',
158
+ ackPubkey: '0xpubkey',
159
+ });
160
+ });
161
+ });
162
+ describe('toServer conversions (camelCase → server)', () => {
163
+ it('converts CosignerSignature', () => {
164
+ const sig = {
165
+ signerId: '0xabc',
166
+ signature: { scheme: 'falcon', signature: '0x123' },
167
+ timestamp: '2024-01-01T00:00:00Z',
168
+ };
169
+ const result = toServerCosignerSignature(sig);
170
+ expect(result).toEqual({
171
+ signer_id: '0xabc',
172
+ signature: { scheme: 'falcon', signature: '0x123' },
173
+ timestamp: '2024-01-01T00:00:00Z',
174
+ });
175
+ });
176
+ it('converts pending DeltaStatus', () => {
177
+ const status = {
178
+ status: 'pending',
179
+ timestamp: '2024-01-01T00:00:00Z',
180
+ proposerId: '0xproposer',
181
+ cosignerSigs: [
182
+ { signerId: '0xsig1', signature: { scheme: 'falcon', signature: '0x1' }, timestamp: '2024-01-01T00:00:00Z' },
183
+ ],
184
+ };
185
+ const result = toServerDeltaStatus(status);
186
+ expect(result).toEqual({
187
+ status: 'pending',
188
+ timestamp: '2024-01-01T00:00:00Z',
189
+ proposer_id: '0xproposer',
190
+ cosigner_sigs: [
191
+ { signer_id: '0xsig1', signature: { scheme: 'falcon', signature: '0x1' }, timestamp: '2024-01-01T00:00:00Z' },
192
+ ],
193
+ });
194
+ });
195
+ it('converts ProposalMetadata', () => {
196
+ const meta = {
197
+ proposalType: 'update_procedure_threshold',
198
+ targetThreshold: 2,
199
+ targetProcedure: 'receive_asset',
200
+ signerCommitments: ['0x1', '0x2'],
201
+ salt: '0xsalt',
202
+ description: 'test',
203
+ };
204
+ const result = toServerProposalMetadata(meta);
205
+ expect(result).toEqual({
206
+ proposal_type: 'update_procedure_threshold',
207
+ target_threshold: 2,
208
+ target_procedure: 'receive_asset',
209
+ signer_commitments: ['0x1', '0x2'],
210
+ salt: '0xsalt',
211
+ description: 'test',
212
+ new_guardian_pubkey: undefined,
213
+ new_guardian_endpoint: undefined,
214
+ note_ids: undefined,
215
+ recipient_id: undefined,
216
+ faucet_id: undefined,
217
+ amount: undefined,
218
+ });
219
+ });
220
+ it('converts ConfigureRequest', () => {
221
+ const req = {
222
+ accountId: '0xaccount',
223
+ auth: { MidenFalconRpo: { cosigner_commitments: ['0x1', '0x2'] } },
224
+ initialState: { data: 'statedata', accountId: '0xaccount' },
225
+ };
226
+ const result = toServerConfigureRequest(req);
227
+ expect(result).toEqual({
228
+ account_id: '0xaccount',
229
+ auth: { MidenFalconRpo: { cosigner_commitments: ['0x1', '0x2'] } },
230
+ initial_state: { data: 'statedata', account_id: '0xaccount' },
231
+ });
232
+ });
233
+ it('converts DeltaProposalRequest', () => {
234
+ const req = {
235
+ accountId: '0xaccount',
236
+ nonce: 1,
237
+ deltaPayload: {
238
+ txSummary: { data: 'base64data' },
239
+ signatures: [{ signerId: '0xsig', signature: { scheme: 'falcon', signature: '0x123' } }],
240
+ metadata: { proposalType: 'add_signer', description: 'test' },
241
+ },
242
+ };
243
+ const result = toServerDeltaProposalRequest(req);
244
+ expect(result.account_id).toBe('0xaccount');
245
+ expect(result.nonce).toBe(1);
246
+ expect(result.delta_payload.tx_summary.data).toBe('base64data');
247
+ expect(result.delta_payload.signatures[0].signer_id).toBe('0xsig');
248
+ expect(result.delta_payload.metadata?.proposal_type).toBe('add_signer');
249
+ });
250
+ it('converts SignProposalRequest', () => {
251
+ const req = {
252
+ accountId: '0xaccount',
253
+ commitment: '0xcommit',
254
+ signature: { scheme: 'falcon', signature: '0x123' },
255
+ };
256
+ const result = toServerSignProposalRequest(req);
257
+ expect(result).toEqual({
258
+ account_id: '0xaccount',
259
+ commitment: '0xcommit',
260
+ signature: { scheme: 'falcon', signature: '0x123' },
261
+ });
262
+ });
263
+ it('converts ExecutionDelta', () => {
264
+ const delta = {
265
+ accountId: '0xaccount',
266
+ nonce: 1,
267
+ prevCommitment: '0xprev',
268
+ newCommitment: '0xnew',
269
+ deltaPayload: { data: 'base64data' },
270
+ ackSig: '0xack',
271
+ status: { status: 'canonical', timestamp: '2024-01-01T00:00:00Z' },
272
+ };
273
+ const result = toServerExecutionDelta(delta);
274
+ expect(result.account_id).toBe('0xaccount');
275
+ expect(result.nonce).toBe(1);
276
+ expect(result.prev_commitment).toBe('0xprev');
277
+ expect(result.new_commitment).toBe('0xnew');
278
+ expect(result.delta_payload.data).toBe('base64data');
279
+ expect(result.ack_sig).toBe('0xack');
280
+ expect(result.status.status).toBe('canonical');
281
+ });
282
+ });
283
+ describe('roundtrip conversions', () => {
284
+ it('DeltaStatus survives roundtrip', () => {
285
+ const original = {
286
+ status: 'pending',
287
+ timestamp: '2024-01-01T00:00:00Z',
288
+ proposerId: '0xproposer',
289
+ cosignerSigs: [
290
+ { signerId: '0xsig', signature: { scheme: 'falcon', signature: '0x123' }, timestamp: '2024-01-01T00:00:00Z' },
291
+ ],
292
+ };
293
+ const server = toServerDeltaStatus(original);
294
+ const result = fromServerDeltaStatus(server);
295
+ expect(result).toEqual(original);
296
+ });
297
+ it('ProposalMetadata survives roundtrip', () => {
298
+ const original = {
299
+ proposalType: 'p2id',
300
+ description: 'send funds',
301
+ recipientId: '0xrecipient',
302
+ faucetId: '0xfaucet',
303
+ amount: '1000',
304
+ salt: '0xsalt',
305
+ };
306
+ const server = toServerProposalMetadata(original);
307
+ const result = fromServerProposalMetadata(server);
308
+ expect(result.proposalType).toBe(original.proposalType);
309
+ expect(result.description).toBe(original.description);
310
+ expect(result.recipientId).toBe(original.recipientId);
311
+ expect(result.faucetId).toBe(original.faucetId);
312
+ expect(result.amount).toBe(original.amount);
313
+ expect(result.salt).toBe(original.salt);
314
+ });
315
+ });
316
+ });
317
+ //# sourceMappingURL=conversion.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversion.test.js","sourceRoot":"","sources":["../src/conversion.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,EAC5B,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,iBAAiB,CAAC;AAmBzB,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;QAC3D,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,MAAM,GAA4B;gBACtC,SAAS,EAAE,OAAO;gBAClB,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE;gBACnD,SAAS,EAAE,sBAAsB;aAClC,CAAC;YAEF,MAAM,MAAM,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;YAEnD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,QAAQ,EAAE,OAAO;gBACjB,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE;gBACnD,SAAS,EAAE,sBAAsB;aAClC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,MAAM,GAAsB;gBAChC,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,sBAAsB;gBACjC,WAAW,EAAE,YAAY;gBACzB,aAAa,EAAE;oBACb,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE;iBAC9G;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAE7C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,sBAAsB;gBACjC,UAAU,EAAE,YAAY;gBACxB,YAAY,EAAE;oBACZ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE;iBAC7G;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,QAAQ,GAAwB;gBACpC,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,sBAAsB,EAAE;gBAC1D,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,sBAAsB,EAAE;gBAC1D,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,sBAAsB,EAAE;aAC3D,CAAC;YAEF,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBAC7C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC1C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,MAAM,GAA2B;gBACrC,aAAa,EAAE,4BAA4B;gBAC3C,gBAAgB,EAAE,CAAC;gBACnB,gBAAgB,EAAE,YAAY;gBAC9B,kBAAkB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;gBAClC,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,MAAM;gBACnB,mBAAmB,EAAE,UAAU;gBAC/B,qBAAqB,EAAE,iBAAiB;gBACxC,QAAQ,EAAE,CAAC,SAAS,CAAC;gBACrB,YAAY,EAAE,aAAa;gBAC3B,SAAS,EAAE,UAAU;gBACrB,MAAM,EAAE,MAAM;aACf,CAAC;YAEF,MAAM,MAAM,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;YAElD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,YAAY,EAAE,4BAA4B;gBAC1C,eAAe,EAAE,CAAC;gBAClB,eAAe,EAAE,YAAY;gBAC7B,iBAAiB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;gBACjC,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,MAAM;gBACnB,iBAAiB,EAAE,UAAU;gBAC7B,mBAAmB,EAAE,iBAAiB;gBACtC,OAAO,EAAE,CAAC,SAAS,CAAC;gBACpB,WAAW,EAAE,aAAa;gBAC1B,QAAQ,EAAE,UAAU;gBACpB,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,MAAM,GAA2B;gBACrC,aAAa,EAAE,MAAM;gBACrB,WAAW,EAAE,YAAY;aAC1B,CAAC;YAEF,MAAM,MAAM,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;YAElD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,aAAa,EAAE,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,MAAM,GAAsB;gBAChC,UAAU,EAAE,WAAW;gBACvB,KAAK,EAAE,CAAC;gBACR,eAAe,EAAE,QAAQ;gBACzB,cAAc,EAAE,OAAO;gBACvB,aAAa,EAAE;oBACb,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;oBAClC,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC;oBACzF,QAAQ,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE;iBAC/D;gBACD,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,sBAAsB,EAAE;aACnE,CAAC;YAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAE7C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9D,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACtE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,MAAM,GAAsB;gBAChC,UAAU,EAAE,WAAW;gBACvB,KAAK,EAAE,CAAC;gBACR,eAAe,EAAE,QAAQ;gBACzB,aAAa,EAAE;oBACb,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;oBAClC,UAAU,EAAE,EAAE;iBACf;gBACD,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,sBAAsB,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE;aACxG,CAAC;YAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAE7C,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,aAAa,EAAE,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,MAAM,GAAsB;gBAChC,UAAU,EAAE,WAAW;gBACvB,UAAU,EAAE,UAAU;gBACtB,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBACjC,UAAU,EAAE,sBAAsB;gBAClC,UAAU,EAAE,sBAAsB;aACnC,CAAC;YAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAE7C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,SAAS,EAAE,WAAW;gBACtB,UAAU,EAAE,UAAU;gBACtB,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBAChC,SAAS,EAAE,sBAAsB;gBACjC,SAAS,EAAE,sBAAsB;aAClC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,MAAM,GAA4B;gBACtC,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,YAAY;gBACrB,UAAU,EAAE,UAAU;aACvB,CAAC;YAEF,MAAM,MAAM,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;YAEnD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,YAAY;gBACrB,SAAS,EAAE,UAAU;aACtB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACzD,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,GAAG,GAAsB;gBAC7B,QAAQ,EAAE,OAAO;gBACjB,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE;gBACnD,SAAS,EAAE,sBAAsB;aAClC,CAAC;YAEF,MAAM,MAAM,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;YAE9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,SAAS,EAAE,OAAO;gBAClB,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE;gBACnD,SAAS,EAAE,sBAAsB;aAClC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,MAAM,GAAgB;gBAC1B,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,sBAAsB;gBACjC,UAAU,EAAE,YAAY;gBACxB,YAAY,EAAE;oBACZ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE;iBAC7G;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAE3C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,sBAAsB;gBACjC,WAAW,EAAE,YAAY;gBACzB,aAAa,EAAE;oBACb,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE;iBAC9G;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,IAAI,GAAqB;gBAC7B,YAAY,EAAE,4BAA4B;gBAC1C,eAAe,EAAE,CAAC;gBAClB,eAAe,EAAE,eAAe;gBAChC,iBAAiB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;gBACjC,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,MAAM;aACpB,CAAC;YAEF,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;YAE9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,aAAa,EAAE,4BAA4B;gBAC3C,gBAAgB,EAAE,CAAC;gBACnB,gBAAgB,EAAE,eAAe;gBACjC,kBAAkB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;gBAClC,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,MAAM;gBACnB,mBAAmB,EAAE,SAAS;gBAC9B,qBAAqB,EAAE,SAAS;gBAChC,QAAQ,EAAE,SAAS;gBACnB,YAAY,EAAE,SAAS;gBACvB,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,GAAG,GAAqB;gBAC5B,SAAS,EAAE,WAAW;gBACtB,IAAI,EAAE,EAAE,cAAc,EAAE,EAAE,oBAAoB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;gBAClE,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE;aAC5D,CAAC;YAEF,MAAM,MAAM,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;YAE7C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE,WAAW;gBACvB,IAAI,EAAE,EAAE,cAAc,EAAE,EAAE,oBAAoB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;gBAClE,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE;aAC9D,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,GAAG,GAAyB;gBAChC,SAAS,EAAE,WAAW;gBACtB,KAAK,EAAE,CAAC;gBACR,YAAY,EAAE;oBACZ,SAAS,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;oBACjC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC;oBACxF,QAAQ,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE;iBAC9D;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,4BAA4B,CAAC,GAAG,CAAC,CAAC;YAEjD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,GAAG,GAAwB;gBAC/B,SAAS,EAAE,WAAW;gBACtB,UAAU,EAAE,UAAU;gBACtB,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE;aACpD,CAAC;YAEF,MAAM,MAAM,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAC;YAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE,WAAW;gBACvB,UAAU,EAAE,UAAU;gBACtB,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE;aACpD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,KAAK,GAAmB;gBAC5B,SAAS,EAAE,WAAW;gBACtB,KAAK,EAAE,CAAC;gBACR,cAAc,EAAE,QAAQ;gBACxB,aAAa,EAAE,OAAO;gBACtB,YAAY,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;gBACpC,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,sBAAsB,EAAE;aACnE,CAAC;YAEF,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAE7C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,QAAQ,GAAgB;gBAC5B,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,sBAAsB;gBACjC,UAAU,EAAE,YAAY;gBACxB,YAAY,EAAE;oBACZ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE;iBAC9G;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAE7C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,QAAQ,GAAqB;gBACjC,YAAY,EAAE,MAAM;gBACpB,WAAW,EAAE,YAAY;gBACzB,WAAW,EAAE,aAAa;gBAC1B,QAAQ,EAAE,UAAU;gBACpB,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,QAAQ;aACf,CAAC;YAEF,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;YAElD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACxD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/http.d.ts ADDED
@@ -0,0 +1,33 @@
1
+ import type { ConfigureRequest, ConfigureResponse, DeltaObject, DeltaProposalRequest, DeltaProposalResponse, ExecutionDelta, PubkeyResponse, PushDeltaResponse, SignProposalRequest, SignatureScheme, Signer, StateObject } from './types.js';
2
+ /**
3
+ * Error thrown by the GUARDIAN HTTP client.
4
+ */
5
+ export declare class GuardianHttpError extends Error {
6
+ readonly status: number;
7
+ readonly statusText: string;
8
+ readonly body: string;
9
+ constructor(status: number, statusText: string, body: string);
10
+ }
11
+ /**
12
+ * Minimal HTTP client for GUARDIAN server.
13
+ */
14
+ export declare class GuardianHttpClient {
15
+ private signer;
16
+ private readonly baseUrl;
17
+ private lastTimestamp;
18
+ constructor(baseUrl: string);
19
+ setSigner(signer: Signer): void;
20
+ getPubkey(scheme?: SignatureScheme): Promise<PubkeyResponse>;
21
+ configure(request: ConfigureRequest): Promise<ConfigureResponse>;
22
+ getState(accountId: string): Promise<StateObject>;
23
+ getDeltaProposals(accountId: string): Promise<DeltaObject[]>;
24
+ getDeltaProposal(accountId: string, commitment: string): Promise<DeltaObject>;
25
+ pushDeltaProposal(request: DeltaProposalRequest): Promise<DeltaProposalResponse>;
26
+ signDeltaProposal(request: SignProposalRequest): Promise<DeltaObject>;
27
+ pushDelta(delta: ExecutionDelta): Promise<PushDeltaResponse>;
28
+ getDelta(accountId: string, nonce: number): Promise<DeltaObject>;
29
+ getDeltaSince(accountId: string, fromNonce: number): Promise<DeltaObject>;
30
+ private fetch;
31
+ private fetchAuthenticated;
32
+ }
33
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,MAAM,EACN,WAAW,EACZ,MAAM,YAAY,CAAC;AAqBpB;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;aAExB,MAAM,EAAE,MAAM;aACd,UAAU,EAAE,MAAM;aAClB,IAAI,EAAE,MAAM;gBAFZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM;CAK/B;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,aAAa,CAAK;gBAEd,OAAO,EAAE,MAAM;IAI3B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzB,SAAS,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAU5D,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAUhE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAUjD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAU5D,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAU7E,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAahF,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IAUrE,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiB5D,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiBhE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;YAiBjE,KAAK;YAkBL,kBAAkB;CAqCjC"}
package/dist/http.js ADDED
@@ -0,0 +1,191 @@
1
+ import { RequestAuthPayload } from './auth-request.js';
2
+ import { fromServerConfigureResponse, fromServerDeltaObject, fromServerStateObject, toServerConfigureRequest, toServerDeltaProposalRequest, toServerExecutionDelta, toServerSignProposalRequest, } from './conversion.js';
3
+ /**
4
+ * Error thrown by the GUARDIAN HTTP client.
5
+ */
6
+ export class GuardianHttpError extends Error {
7
+ status;
8
+ statusText;
9
+ body;
10
+ constructor(status, statusText, body) {
11
+ super(`GUARDIAN HTTP error ${status}: ${statusText} - ${body}`);
12
+ this.status = status;
13
+ this.statusText = statusText;
14
+ this.body = body;
15
+ this.name = 'GuardianHttpError';
16
+ }
17
+ }
18
+ /**
19
+ * Minimal HTTP client for GUARDIAN server.
20
+ */
21
+ export class GuardianHttpClient {
22
+ signer = null;
23
+ baseUrl;
24
+ lastTimestamp = 0;
25
+ constructor(baseUrl) {
26
+ this.baseUrl = baseUrl;
27
+ }
28
+ setSigner(signer) {
29
+ this.signer = signer;
30
+ }
31
+ async getPubkey(scheme) {
32
+ const query = scheme ? `?scheme=${scheme}` : '';
33
+ const response = await this.fetch(`/pubkey${query}`, { method: 'GET' });
34
+ const data = (await response.json());
35
+ return {
36
+ commitment: data.commitment,
37
+ pubkey: data.pubkey,
38
+ };
39
+ }
40
+ async configure(request) {
41
+ const serverRequest = toServerConfigureRequest(request);
42
+ const response = await this.fetchAuthenticated('/configure', {
43
+ method: 'POST',
44
+ body: JSON.stringify(serverRequest),
45
+ }, request.accountId, serverRequest);
46
+ const server = (await response.json());
47
+ return fromServerConfigureResponse(server);
48
+ }
49
+ async getState(accountId) {
50
+ const requestQuery = { account_id: accountId };
51
+ const params = new URLSearchParams(requestQuery);
52
+ const response = await this.fetchAuthenticated(`/state?${params}`, {
53
+ method: 'GET',
54
+ }, accountId, requestQuery);
55
+ const server = (await response.json());
56
+ return fromServerStateObject(server);
57
+ }
58
+ async getDeltaProposals(accountId) {
59
+ const requestQuery = { account_id: accountId };
60
+ const params = new URLSearchParams(requestQuery);
61
+ const response = await this.fetchAuthenticated(`/delta/proposal?${params}`, {
62
+ method: 'GET',
63
+ }, accountId, requestQuery);
64
+ const data = (await response.json());
65
+ return data.proposals.map(fromServerDeltaObject);
66
+ }
67
+ async getDeltaProposal(accountId, commitment) {
68
+ const requestQuery = { account_id: accountId, commitment };
69
+ const params = new URLSearchParams(requestQuery);
70
+ const response = await this.fetchAuthenticated(`/delta/proposal/single?${params}`, {
71
+ method: 'GET',
72
+ }, accountId, requestQuery);
73
+ const data = (await response.json());
74
+ return fromServerDeltaObject(data);
75
+ }
76
+ async pushDeltaProposal(request) {
77
+ const serverRequest = toServerDeltaProposalRequest(request);
78
+ const response = await this.fetchAuthenticated('/delta/proposal', {
79
+ method: 'POST',
80
+ body: JSON.stringify(serverRequest),
81
+ }, request.accountId, serverRequest);
82
+ const server = (await response.json());
83
+ return {
84
+ delta: fromServerDeltaObject(server.delta),
85
+ commitment: server.commitment,
86
+ };
87
+ }
88
+ async signDeltaProposal(request) {
89
+ const serverRequest = toServerSignProposalRequest(request);
90
+ const response = await this.fetchAuthenticated('/delta/proposal', {
91
+ method: 'PUT',
92
+ body: JSON.stringify(serverRequest),
93
+ }, request.accountId, serverRequest);
94
+ const server = (await response.json());
95
+ return fromServerDeltaObject(server);
96
+ }
97
+ async pushDelta(delta) {
98
+ const serverDelta = toServerExecutionDelta(delta);
99
+ const response = await this.fetchAuthenticated('/delta', {
100
+ method: 'POST',
101
+ body: JSON.stringify(serverDelta),
102
+ }, delta.accountId, serverDelta);
103
+ const server = (await response.json());
104
+ return {
105
+ accountId: server.account_id,
106
+ nonce: server.nonce,
107
+ newCommitment: server.new_commitment,
108
+ ackSig: server.ack_sig,
109
+ ackPubkey: server.ack_pubkey,
110
+ ackScheme: server.ack_scheme,
111
+ };
112
+ }
113
+ async getDelta(accountId, nonce) {
114
+ const requestPayload = {
115
+ account_id: accountId,
116
+ nonce,
117
+ };
118
+ const requestQuery = {
119
+ account_id: accountId,
120
+ nonce: nonce.toString(),
121
+ };
122
+ const params = new URLSearchParams(requestQuery);
123
+ const response = await this.fetchAuthenticated(`/delta?${params}`, {
124
+ method: 'GET',
125
+ }, accountId, requestPayload);
126
+ const server = (await response.json());
127
+ return fromServerDeltaObject(server);
128
+ }
129
+ async getDeltaSince(accountId, fromNonce) {
130
+ const requestPayload = {
131
+ account_id: accountId,
132
+ nonce: fromNonce,
133
+ };
134
+ const requestQuery = {
135
+ account_id: accountId,
136
+ nonce: fromNonce.toString(),
137
+ };
138
+ const params = new URLSearchParams(requestQuery);
139
+ const response = await this.fetchAuthenticated(`/delta/since?${params}`, {
140
+ method: 'GET',
141
+ }, accountId, requestPayload);
142
+ const server = (await response.json());
143
+ return fromServerDeltaObject(server);
144
+ }
145
+ async fetch(path, init) {
146
+ const url = `${this.baseUrl}${path}`;
147
+ const response = await fetch(url, {
148
+ ...init,
149
+ headers: {
150
+ 'Content-Type': 'application/json',
151
+ ...init.headers,
152
+ },
153
+ });
154
+ if (!response.ok) {
155
+ const body = await response.text();
156
+ throw new GuardianHttpError(response.status, response.statusText, body);
157
+ }
158
+ return response;
159
+ }
160
+ async fetchAuthenticated(path, init, accountId, requestPayload, retries = 2) {
161
+ if (!this.signer) {
162
+ throw new Error('No signer configured. Call setSigner() first.');
163
+ }
164
+ const now = Date.now();
165
+ const timestamp = now > this.lastTimestamp ? now : this.lastTimestamp + 1;
166
+ this.lastTimestamp = timestamp;
167
+ const authPayload = RequestAuthPayload.fromRequest(requestPayload);
168
+ const signature = this.signer.signRequest
169
+ ? await this.signer.signRequest(accountId, timestamp, authPayload)
170
+ : await this.signer.signAccountIdWithTimestamp(accountId, timestamp);
171
+ try {
172
+ return await this.fetch(path, {
173
+ ...init,
174
+ headers: {
175
+ ...init.headers,
176
+ 'x-pubkey': this.signer.publicKey,
177
+ 'x-signature': signature,
178
+ 'x-timestamp': timestamp.toString(),
179
+ },
180
+ });
181
+ }
182
+ catch (err) {
183
+ if (retries > 0 && err instanceof GuardianHttpError && err.body.includes('Replay attack')) {
184
+ await new Promise((resolve) => setTimeout(resolve, 50));
185
+ return this.fetchAuthenticated(path, init, accountId, requestPayload, retries - 1);
186
+ }
187
+ throw err;
188
+ }
189
+ }
190
+ }
191
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=http.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.test.d.ts","sourceRoot":"","sources":["../src/http.test.ts"],"names":[],"mappings":""}