402mob-merchant-sdk 0.4.2 → 0.6.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.
@@ -0,0 +1,524 @@
1
+ export type ProtectedWorkPrepareRequest = {
2
+ "task": {
3
+ "input": unknown;
4
+ "rules": {
5
+ "version": "json-conversion-v1";
6
+ "fields": Array<{
7
+ "output": string;
8
+ "source": string;
9
+ "type": "string" | "number" | "boolean";
10
+ "convert": boolean;
11
+ }>;
12
+ };
13
+ };
14
+ "terms": {
15
+ "buyer": string;
16
+ "seller": string;
17
+ "amount": string;
18
+ "deliveryDeadline": number;
19
+ "evaluationPeriod": number;
20
+ "correctionPeriod": number;
21
+ "resolutionDeadline": number;
22
+ "reviewPeriod": number;
23
+ "appealPeriod": number;
24
+ "appealVerifier": string;
25
+ "fallbackVerifier": string;
26
+ "appealOriginHash": string;
27
+ "fallbackOriginHash": string;
28
+ "nonce": string;
29
+ };
30
+ };
31
+ export type ProtectedWorkFundingRequest = {
32
+ "terms": {
33
+ "buyer": string;
34
+ "seller": string;
35
+ "amount": string;
36
+ "workHash": string;
37
+ "deliveryDeadline": number;
38
+ "evaluationPeriod": number;
39
+ "correctionPeriod": number;
40
+ "resolutionDeadline": number;
41
+ "reviewPeriod": number;
42
+ "appealPeriod": number;
43
+ "appealVerifier": string;
44
+ "fallbackVerifier": string;
45
+ "appealOriginHash": string;
46
+ "fallbackOriginHash": string;
47
+ "verifierHash": "0x549e14e0594e4ff6f3b10b7e08720365903107a23fe531e5383e2dc0b3be2e1a";
48
+ "nonce": string;
49
+ };
50
+ "sellerSignature": string;
51
+ "consentUntil": number;
52
+ "appealConsent": string;
53
+ "fallbackConsent": string;
54
+ };
55
+ export type ProtectedWorkChallengeRequest = {
56
+ "action": "read";
57
+ "wallet": string;
58
+ };
59
+ export type ProtectedWorkSubmissionRequest = {
60
+ "task": {
61
+ "input": unknown;
62
+ "rules": {
63
+ "version": "json-conversion-v1";
64
+ "fields": Array<{
65
+ "output": string;
66
+ "source": string;
67
+ "type": "string" | "number" | "boolean";
68
+ "convert": boolean;
69
+ }>;
70
+ };
71
+ };
72
+ "result": unknown;
73
+ "attempt": number;
74
+ "signature": string;
75
+ };
76
+ export type ProtectedWorkResultRequest = {
77
+ "proof": {
78
+ "wallet": string;
79
+ "expiresAt": number;
80
+ "signature": string;
81
+ };
82
+ };
83
+ export type ProtectedWorkPrepareResponse = {
84
+ "jobId": string;
85
+ "terms": {
86
+ "buyer": string;
87
+ "seller": string;
88
+ "amount": string;
89
+ "workHash": string;
90
+ "deliveryDeadline": number;
91
+ "evaluationPeriod": number;
92
+ "correctionPeriod": number;
93
+ "resolutionDeadline": number;
94
+ "reviewPeriod": number;
95
+ "appealPeriod": number;
96
+ "appealVerifier": string;
97
+ "fallbackVerifier": string;
98
+ "appealOriginHash": string;
99
+ "fallbackOriginHash": string;
100
+ "verifierHash": "0x549e14e0594e4ff6f3b10b7e08720365903107a23fe531e5383e2dc0b3be2e1a";
101
+ "nonce": string;
102
+ };
103
+ "workHash": string;
104
+ "sellerSigning": {
105
+ "domain": {
106
+ "name": "402Mob Protected Work";
107
+ "version": "3";
108
+ "chainId": 8453;
109
+ "verifyingContract": string;
110
+ };
111
+ "types": {
112
+ "Terms": [{
113
+ "name": "buyer";
114
+ "type": "address";
115
+ }, {
116
+ "name": "seller";
117
+ "type": "address";
118
+ }, {
119
+ "name": "amount";
120
+ "type": "uint256";
121
+ }, {
122
+ "name": "workHash";
123
+ "type": "bytes32";
124
+ }, {
125
+ "name": "deliveryDeadline";
126
+ "type": "uint256";
127
+ }, {
128
+ "name": "evaluationPeriod";
129
+ "type": "uint256";
130
+ }, {
131
+ "name": "correctionPeriod";
132
+ "type": "uint256";
133
+ }, {
134
+ "name": "resolutionDeadline";
135
+ "type": "uint256";
136
+ }, {
137
+ "name": "reviewPeriod";
138
+ "type": "uint256";
139
+ }, {
140
+ "name": "appealPeriod";
141
+ "type": "uint256";
142
+ }, {
143
+ "name": "appealVerifier";
144
+ "type": "address";
145
+ }, {
146
+ "name": "fallbackVerifier";
147
+ "type": "address";
148
+ }, {
149
+ "name": "appealOriginHash";
150
+ "type": "bytes32";
151
+ }, {
152
+ "name": "fallbackOriginHash";
153
+ "type": "bytes32";
154
+ }, {
155
+ "name": "verifierHash";
156
+ "type": "bytes32";
157
+ }, {
158
+ "name": "nonce";
159
+ "type": "bytes32";
160
+ }];
161
+ };
162
+ "primaryType": "Terms";
163
+ "message": {
164
+ "buyer": string;
165
+ "seller": string;
166
+ "amount": string;
167
+ "workHash": string;
168
+ "deliveryDeadline": number;
169
+ "evaluationPeriod": number;
170
+ "correctionPeriod": number;
171
+ "resolutionDeadline": number;
172
+ "reviewPeriod": number;
173
+ "appealPeriod": number;
174
+ "appealVerifier": string;
175
+ "fallbackVerifier": string;
176
+ "appealOriginHash": string;
177
+ "fallbackOriginHash": string;
178
+ "verifierHash": "0x549e14e0594e4ff6f3b10b7e08720365903107a23fe531e5383e2dc0b3be2e1a";
179
+ "nonce": string;
180
+ };
181
+ };
182
+ };
183
+ export type ProtectedWorkFundingResponse = {
184
+ "jobId": string;
185
+ "transactions": Array<{
186
+ "chainId": 8453;
187
+ "to": string;
188
+ "data": string;
189
+ "value": "0";
190
+ "from"?: string;
191
+ }>;
192
+ "instruction": string;
193
+ };
194
+ export type ProtectedWorkStatus = {
195
+ "jobId": string;
196
+ "terms": {
197
+ "buyer": string;
198
+ "seller": string;
199
+ "amount": string;
200
+ "workHash": string;
201
+ "deliveryDeadline": number;
202
+ "evaluationPeriod": number;
203
+ "correctionPeriod": number;
204
+ "resolutionDeadline": number;
205
+ "reviewPeriod": number;
206
+ "appealPeriod": number;
207
+ "appealVerifier": string;
208
+ "fallbackVerifier": string;
209
+ "appealOriginHash": string;
210
+ "fallbackOriginHash": string;
211
+ "verifierHash": "0x549e14e0594e4ff6f3b10b7e08720365903107a23fe531e5383e2dc0b3be2e1a";
212
+ "nonce": string;
213
+ };
214
+ "state": "unknown" | "funded" | "submitted" | "rejected" | "review" | "challenged" | "approved" | "completed" | "refunded";
215
+ "attempt": number;
216
+ "resultHash": string | null;
217
+ "evaluationUntil": number;
218
+ "correctionUntil": number;
219
+ "fallbackUntil": number;
220
+ "buyerReceived": boolean;
221
+ "outcome": "none" | "buyer_accepted" | "review_elapsed" | "appeal_approved" | "verifier_rejected" | "no_submission" | "evaluation_timeout" | "uncorrected_rejection" | "verifiers_unavailable";
222
+ "activeAppealRound": number | null;
223
+ "reviewUntil": number;
224
+ "appealUntil": number;
225
+ "appealUsed": boolean;
226
+ "reason": number;
227
+ "evidenceHash": string;
228
+ "chainTimestamp": number;
229
+ "refundEligible": boolean;
230
+ "payoutEligible": boolean;
231
+ "refundTransaction": {
232
+ "chainId": 8453;
233
+ "to": string;
234
+ "data": string;
235
+ "value": "0";
236
+ "from"?: string;
237
+ };
238
+ "finalizeTransaction": {
239
+ "chainId": 8453;
240
+ "to": string;
241
+ "data": string;
242
+ "value": "0";
243
+ "from"?: string;
244
+ };
245
+ };
246
+ export type ProtectedWorkChallenge = {
247
+ "message": string;
248
+ "expiresAt": number;
249
+ "wallet": string;
250
+ "action": "read";
251
+ };
252
+ export type ProtectedWorkSubmissionResponse = {
253
+ "jobId": string;
254
+ "resultHash": string;
255
+ "attempt": number;
256
+ "replay": boolean;
257
+ "submissionTransaction": {
258
+ "chainId": 8453;
259
+ "to": string;
260
+ "data": string;
261
+ "value": "0";
262
+ "from"?: string;
263
+ } | null;
264
+ "relay": {
265
+ "queued": boolean;
266
+ "id": string | null;
267
+ };
268
+ "retainedUntil": string;
269
+ };
270
+ export type ProtectedWorkResult = {
271
+ "jobId": string;
272
+ "state": "unknown" | "funded" | "submitted" | "rejected" | "review" | "challenged" | "approved" | "completed" | "refunded";
273
+ "attempt": number;
274
+ "resultHash": string;
275
+ "task": {
276
+ "input": unknown;
277
+ "rules": {
278
+ "version": "json-conversion-v1";
279
+ "fields": Array<{
280
+ "output": string;
281
+ "source": string;
282
+ "type": "string" | "number" | "boolean";
283
+ "convert": boolean;
284
+ }>;
285
+ };
286
+ };
287
+ "result": unknown;
288
+ };
289
+ export type ProtectedWorkCapability = {
290
+ "protocol": string;
291
+ "status": string;
292
+ "configured": boolean;
293
+ "defaultEnabled": boolean;
294
+ "descriptor": string;
295
+ "guide": string;
296
+ "verifierSpecification": string;
297
+ "verifierHash": string;
298
+ "network": string;
299
+ "asset": string;
300
+ "task": string;
301
+ "maxAmountAtomic": string;
302
+ "maxOpenJobs": number;
303
+ "maxSubmissionBytes": number;
304
+ "inputBytes": number;
305
+ "resultBytes": number;
306
+ "maxFields": number;
307
+ "maxAttempts": number;
308
+ "maxAppeals": number;
309
+ "resultRetentionDaysAfterDeadline": number;
310
+ "payment": string;
311
+ "evaluator": string;
312
+ "timeout": string;
313
+ "scope": string;
314
+ "clients": string;
315
+ "sourceSdk": {
316
+ "package": string;
317
+ "version": string;
318
+ "published": boolean;
319
+ "requiresSourceBuild": boolean;
320
+ "entryPoint": string;
321
+ "guide": string;
322
+ };
323
+ "limits": string;
324
+ };
325
+ export type ProtectedWorkCandidateRequest = {
326
+ "attempt": number;
327
+ "resultHash": string;
328
+ };
329
+ export type ProtectedWorkActionRequest = {
330
+ "action": "receipt";
331
+ "signature"?: string;
332
+ } | {
333
+ "action": "accept";
334
+ "signature"?: string;
335
+ } | {
336
+ "action": "challenge";
337
+ "reason": "wrong_output" | "rules_mismatch" | "result_unavailable" | "evaluator_timeout";
338
+ "evidenceHash": string;
339
+ "signature"?: string;
340
+ } | {
341
+ "action": "finalize";
342
+ } | {
343
+ "action": "refund";
344
+ };
345
+ export type ProtectedWorkAppealRequest = {
346
+ "round": number;
347
+ "valid": boolean;
348
+ "signature": string;
349
+ };
350
+ export type ProtectedWorkEvaluationRequest = {};
351
+ export type ProtectedWorkCandidateSigning = {
352
+ "signing": {
353
+ "domain": {
354
+ "name": "402Mob Protected Work";
355
+ "version": "3";
356
+ "chainId": 8453;
357
+ "verifyingContract": string;
358
+ };
359
+ "types": {
360
+ "Candidate": [{
361
+ "name": "jobId";
362
+ "type": "bytes32";
363
+ }, {
364
+ "name": "attempt";
365
+ "type": "uint256";
366
+ }, {
367
+ "name": "resultHash";
368
+ "type": "bytes32";
369
+ }];
370
+ };
371
+ "primaryType": "Candidate";
372
+ "message": {
373
+ "jobId": string;
374
+ "attempt": number;
375
+ "resultHash": string;
376
+ };
377
+ };
378
+ };
379
+ export type ProtectedWorkEvaluationResponse = {
380
+ "jobId": string;
381
+ "resultHash": string;
382
+ "attempt": number;
383
+ "valid": boolean;
384
+ "evaluationTransaction": {
385
+ "chainId": 8453;
386
+ "to": string;
387
+ "data": string;
388
+ "value": "0";
389
+ "from"?: string;
390
+ };
391
+ "relay": {
392
+ "queued": boolean;
393
+ "id": string | null;
394
+ };
395
+ };
396
+ export type ProtectedWorkActionResponse = {
397
+ "signing": {
398
+ "domain": {
399
+ "name": "402Mob Protected Work";
400
+ "version": "3";
401
+ "chainId": 8453;
402
+ "verifyingContract": string;
403
+ };
404
+ "types": {
405
+ "Accept": [{
406
+ "name": "jobId";
407
+ "type": "bytes32";
408
+ }, {
409
+ "name": "attempt";
410
+ "type": "uint256";
411
+ }, {
412
+ "name": "resultHash";
413
+ "type": "bytes32";
414
+ }];
415
+ };
416
+ "primaryType": "Accept";
417
+ "message": {
418
+ "jobId": string;
419
+ "attempt": number;
420
+ "resultHash": string;
421
+ };
422
+ } | {
423
+ "domain": {
424
+ "name": "402Mob Protected Work";
425
+ "version": "3";
426
+ "chainId": 8453;
427
+ "verifyingContract": string;
428
+ };
429
+ "types": {
430
+ "Challenge": [{
431
+ "name": "jobId";
432
+ "type": "bytes32";
433
+ }, {
434
+ "name": "attempt";
435
+ "type": "uint256";
436
+ }, {
437
+ "name": "resultHash";
438
+ "type": "bytes32";
439
+ }, {
440
+ "name": "reason";
441
+ "type": "uint8";
442
+ }, {
443
+ "name": "evidenceHash";
444
+ "type": "bytes32";
445
+ }];
446
+ };
447
+ "primaryType": "Challenge";
448
+ "message": {
449
+ "jobId": string;
450
+ "attempt": number;
451
+ "resultHash": string;
452
+ "reason": number;
453
+ "evidenceHash": string;
454
+ };
455
+ } | {
456
+ "domain": {
457
+ "name": "402Mob Protected Work";
458
+ "version": "3";
459
+ "chainId": 8453;
460
+ "verifyingContract": string;
461
+ };
462
+ "types": {
463
+ "Receipt": [{
464
+ "name": "jobId";
465
+ "type": "bytes32";
466
+ }, {
467
+ "name": "attempt";
468
+ "type": "uint256";
469
+ }, {
470
+ "name": "resultHash";
471
+ "type": "bytes32";
472
+ }];
473
+ };
474
+ "primaryType": "Receipt";
475
+ "message": {
476
+ "jobId": string;
477
+ "attempt": number;
478
+ "resultHash": string;
479
+ };
480
+ };
481
+ "transaction": null;
482
+ "relay": {
483
+ "queued": boolean;
484
+ "id": string | null;
485
+ };
486
+ } | {
487
+ "signing": null;
488
+ "transaction": {
489
+ "chainId": 8453;
490
+ "to": string;
491
+ "data": string;
492
+ "value": "0";
493
+ "from"?: string;
494
+ };
495
+ "relay": {
496
+ "queued": boolean;
497
+ "id": string | null;
498
+ };
499
+ };
500
+ export type ProtectedWorkAppealResponse = {
501
+ "transaction": {
502
+ "chainId": 8453;
503
+ "to": string;
504
+ "data": string;
505
+ "value": "0";
506
+ "from"?: string;
507
+ };
508
+ "relay": {
509
+ "queued": boolean;
510
+ "id": string | null;
511
+ };
512
+ };
513
+ export type ProtectedWorkReplicasRequest = {
514
+ "attempt": number;
515
+ "resultHash": string;
516
+ "replicaA": string;
517
+ "replicaB": string;
518
+ };
519
+ export type ProtectedWorkReplicasResponse = {
520
+ "jobId": string;
521
+ "attempt": number;
522
+ "resultHash": string;
523
+ "replicated": true;
524
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,40 @@
1
+ import type * as T from './protected-work-types.js';
2
+ export * from './protected-work-types.js';
3
+ export declare class ProtectedWorkApiError extends Error {
4
+ readonly status: number;
5
+ readonly code: string;
6
+ constructor(status: number, code: string, message: string);
7
+ }
8
+ export interface ProtectedWorkClientOptions {
9
+ /** Exact HTTPS origin. HTTP is allowed only for loopback integration tests. */
10
+ baseUrl?: string;
11
+ /** Pin the reviewed contract and verifier before requesting signing data or transactions. */
12
+ contract?: string;
13
+ verifierHash?: string;
14
+ fetch?: typeof globalThis.fetch;
15
+ }
16
+ /** HTTP transport only. No keys, merchant bearer tokens, wallet signing or transaction broadcasting. */
17
+ export declare class ProtectedWorkClient {
18
+ private readonly origin;
19
+ private readonly contract;
20
+ private readonly verifierHash;
21
+ private readonly fetcher;
22
+ constructor(options?: ProtectedWorkClientOptions);
23
+ getCapabilities(): Promise<T.ProtectedWorkCapability>;
24
+ prepare(input: T.ProtectedWorkPrepareRequest): Promise<T.ProtectedWorkPrepareResponse>;
25
+ prepareFunding(input: T.ProtectedWorkFundingRequest): Promise<T.ProtectedWorkFundingResponse>;
26
+ getJob(id: string): Promise<T.ProtectedWorkStatus>;
27
+ createReadChallenge(id: string, input: T.ProtectedWorkChallengeRequest): Promise<T.ProtectedWorkChallenge>;
28
+ createCandidateSigning(id: string, input: T.ProtectedWorkCandidateRequest): Promise<T.ProtectedWorkCandidateSigning>;
29
+ submitCandidate(id: string, input: T.ProtectedWorkSubmissionRequest): Promise<T.ProtectedWorkSubmissionResponse>;
30
+ attachReplicas(id: string, input: T.ProtectedWorkReplicasRequest): Promise<T.ProtectedWorkReplicasResponse>;
31
+ evaluate(id: string): Promise<T.ProtectedWorkEvaluationResponse>;
32
+ readResult(id: string, input: T.ProtectedWorkResultRequest): Promise<T.ProtectedWorkResult>;
33
+ /** With no signature, requests a draft. A signed action may be relayed by a configured server. */
34
+ requestAction(id: string, input: T.ProtectedWorkActionRequest): Promise<T.ProtectedWorkActionResponse>;
35
+ submitAppeal(id: string, input: T.ProtectedWorkAppealRequest): Promise<T.ProtectedWorkAppealResponse>;
36
+ private job;
37
+ private invalid;
38
+ private transaction;
39
+ private call;
40
+ }