@genesis-tech/genesispay-seller 0.13.2 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +227 -0
- package/README.md +719 -91
- package/dist/checkout-documents.d.ts +105 -0
- package/dist/checkout-documents.d.ts.map +1 -0
- package/dist/checkout-documents.js +171 -0
- package/dist/checkout-documents.js.map +1 -0
- package/dist/checkout-return.d.ts +5 -5
- package/dist/checkout-return.d.ts.map +1 -1
- package/dist/checkout-return.js +3 -2
- package/dist/checkout-return.js.map +1 -1
- package/dist/client.d.ts +57 -7
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +100 -10
- package/dist/client.js.map +1 -1
- package/dist/contract-mandates.d.ts +39 -0
- package/dist/contract-mandates.d.ts.map +1 -0
- package/dist/contract-mandates.js +98 -0
- package/dist/contract-mandates.js.map +1 -0
- package/dist/contract-usage.d.ts +29 -0
- package/dist/contract-usage.d.ts.map +1 -0
- package/dist/contract-usage.js +92 -0
- package/dist/contract-usage.js.map +1 -0
- package/dist/errors.d.ts +71 -5
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +124 -13
- package/dist/errors.js.map +1 -1
- package/dist/fulfillment-attempts.d.ts +29 -0
- package/dist/fulfillment-attempts.d.ts.map +1 -0
- package/dist/fulfillment-attempts.js +71 -0
- package/dist/fulfillment-attempts.js.map +1 -0
- package/dist/fulfillment.d.ts +152 -0
- package/dist/fulfillment.d.ts.map +1 -0
- package/dist/fulfillment.js +810 -0
- package/dist/fulfillment.js.map +1 -0
- package/dist/genesispay-settlement.d.ts +4 -2
- package/dist/genesispay-settlement.d.ts.map +1 -1
- package/dist/genesispay-settlement.js +412 -15
- package/dist/genesispay-settlement.js.map +1 -1
- package/dist/index.d.ts +11 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -4
- package/dist/index.js.map +1 -1
- package/dist/invoices.d.ts +31 -0
- package/dist/invoices.d.ts.map +1 -1
- package/dist/invoices.js +61 -2
- package/dist/invoices.js.map +1 -1
- package/dist/item-tax.d.ts +25 -0
- package/dist/item-tax.d.ts.map +1 -0
- package/dist/item-tax.js +43 -0
- package/dist/item-tax.js.map +1 -0
- package/dist/mandate-gate.d.ts +6 -1
- package/dist/mandate-gate.d.ts.map +1 -1
- package/dist/mandate-gate.js +81 -7
- package/dist/mandate-gate.js.map +1 -1
- package/dist/mandates.d.ts +21 -4
- package/dist/mandates.d.ts.map +1 -1
- package/dist/mandates.js +24 -3
- package/dist/mandates.js.map +1 -1
- package/dist/networks.d.ts.map +1 -1
- package/dist/networks.js +5 -4
- package/dist/networks.js.map +1 -1
- package/dist/payment-gate.d.ts +32 -1
- package/dist/payment-gate.d.ts.map +1 -1
- package/dist/payment-gate.js +275 -11
- package/dist/payment-gate.js.map +1 -1
- package/dist/products.d.ts +40 -16
- package/dist/products.d.ts.map +1 -1
- package/dist/products.js +1078 -56
- package/dist/products.js.map +1 -1
- package/dist/strict-response.d.ts +21 -0
- package/dist/strict-response.d.ts.map +1 -0
- package/dist/strict-response.js +68 -0
- package/dist/strict-response.js.map +1 -0
- package/dist/webhooks.d.ts +77 -2
- package/dist/webhooks.d.ts.map +1 -1
- package/dist/webhooks.js +20 -0
- package/dist/webhooks.js.map +1 -1
- package/package.json +3 -3
package/dist/client.js
CHANGED
|
@@ -2,6 +2,8 @@ import { GenesisPayConfigError, GenesisPayNetworkSafetyError, GenesisPayValidati
|
|
|
2
2
|
import { createMandatesResource } from "./mandates.js";
|
|
3
3
|
import { createCustomersResource } from "./customers.js";
|
|
4
4
|
import { createInvoicesResource } from "./invoices.js";
|
|
5
|
+
import { createCheckoutDocumentsResource } from "./checkout-documents.js";
|
|
6
|
+
import { parseItemTax, parsePaymentLinkTax } from "./item-tax.js";
|
|
5
7
|
import { createPaymentGate } from "./payment-gate.js";
|
|
6
8
|
import { DEFAULT_FACILITATOR_BASE_URL, genesisPaySettlement } from "./genesispay-settlement.js";
|
|
7
9
|
import { createPlansResource } from "./plans.js";
|
|
@@ -12,6 +14,8 @@ import { parseUsdcAmountToMinorUnits } from "./usdc-amount.js";
|
|
|
12
14
|
import { asRecord, oneOf, optionalMetadata, optionalString, requiredString, toCount, } from "./resource.js";
|
|
13
15
|
import { constructEvent } from "./webhooks.js";
|
|
14
16
|
import { isPayerRedirectUrl } from "./checkout-return.js";
|
|
17
|
+
import { createFulfillmentResource, GENESISPAY_API_VERSION, GENESISPAY_VERSION_HEADER, } from "./fulfillment.js";
|
|
18
|
+
import { requireStrictResponseMetadata, strictResponseContext } from "./strict-response.js";
|
|
15
19
|
// The error classes live in ./errors.js (shared with every future resource:
|
|
16
20
|
// plans, mandates, …) and are re-exported here so existing imports from
|
|
17
21
|
// "./client.js" keep working.
|
|
@@ -74,6 +78,7 @@ function toCheckoutLink(raw) {
|
|
|
74
78
|
// sends a non-string `amount` still falls back instead of yielding "".
|
|
75
79
|
const amount = requiredString(typeof raw.amount === "string" ? raw.amount : raw.amountUsdc);
|
|
76
80
|
return {
|
|
81
|
+
taxConfig: parsePaymentLinkTax(raw.taxConfig),
|
|
77
82
|
publicId: requiredString(raw.publicId),
|
|
78
83
|
payUrl: requiredString(raw.payUrl),
|
|
79
84
|
amount,
|
|
@@ -252,6 +257,16 @@ function validateRedirectFields(input) {
|
|
|
252
257
|
}
|
|
253
258
|
return { returnUrl, cancelUrl };
|
|
254
259
|
}
|
|
260
|
+
function requireIdempotencyKey(options, operation) {
|
|
261
|
+
const value = options?.idempotencyKey;
|
|
262
|
+
if (typeof value !== "string" ||
|
|
263
|
+
value.length < 1 ||
|
|
264
|
+
value.length > 255 ||
|
|
265
|
+
value.trim() !== value) {
|
|
266
|
+
throw new GenesisPayValidationError(`${operation} requires an idempotencyKey with 1–255 characters and no surrounding whitespace.`, [{ path: "idempotencyKey", message: "invalid idempotency key" }]);
|
|
267
|
+
}
|
|
268
|
+
return value;
|
|
269
|
+
}
|
|
255
270
|
function paymentNotConfiguredResponse() {
|
|
256
271
|
return Response.json({
|
|
257
272
|
error: "payment_not_configured",
|
|
@@ -278,6 +293,10 @@ export class GenesisPay {
|
|
|
278
293
|
customers;
|
|
279
294
|
/** Draft, finalize, deliver, and collect one-off invoices. */
|
|
280
295
|
invoices;
|
|
296
|
+
/** Immutable documents generated after hosted human checkout completes. */
|
|
297
|
+
checkoutDocuments;
|
|
298
|
+
/** Strict seller-scoped payment authority. Tolerant checkout views are display-only. */
|
|
299
|
+
fulfillment;
|
|
281
300
|
/**
|
|
282
301
|
* Payment mandates: bounded, revocable spending approvals a payer signs once.
|
|
283
302
|
*
|
|
@@ -321,20 +340,37 @@ export class GenesisPay {
|
|
|
321
340
|
this.configTtlMs = options.configTtlMs ?? 300_000;
|
|
322
341
|
this.expectedPayTo = options.expectedPayTo?.trim().toLowerCase() || undefined;
|
|
323
342
|
this.checkout = {
|
|
324
|
-
create: (input) => this.createCheckout(input),
|
|
343
|
+
create: (input, creationOptions) => this.createCheckout(input, creationOptions),
|
|
344
|
+
updateTax: async (publicId, input) => {
|
|
345
|
+
if (!publicId.trim())
|
|
346
|
+
throw new GenesisPayConfigError("A payment link publicId is required.");
|
|
347
|
+
const body = await this.request({ method: "PATCH", path: `/api/v1/links/${encodeURIComponent(publicId)}`, operation: "PATCH /api/v1/links/:publicId", action: "update item tax", body: { taxConfig: parseItemTax(input.taxConfig), expectedTaxConfig: parseItemTax(input.expectedTaxConfig) } });
|
|
348
|
+
const link = asRecord(asRecord(body)?.link);
|
|
349
|
+
if (!link)
|
|
350
|
+
throw new GenesisPayConfigError("Item tax update returned no payment link.");
|
|
351
|
+
this.assertPinnedDestination(link.destinationWallet, "checkout link");
|
|
352
|
+
return toCheckoutLink(link);
|
|
353
|
+
},
|
|
325
354
|
retrieve: (publicId) => this.retrieveCheckout(publicId),
|
|
326
355
|
simulatePayment: (publicId, opts) => this.simulateCheckoutPayment(publicId, opts),
|
|
327
356
|
};
|
|
328
357
|
// Both resources get the same bound request seam, so their errors go
|
|
329
358
|
// through the one shared mapper in ./errors.ts like checkout's do.
|
|
330
359
|
this.plans = createPlansResource(this.request, (wallet, what) => this.assertPinnedDestination(wallet, what));
|
|
360
|
+
this.fulfillment = createFulfillmentResource({
|
|
361
|
+
baseUrl: this.baseUrl,
|
|
362
|
+
apiKey: this.apiKey,
|
|
363
|
+
fetchFn: this.fetchFn,
|
|
364
|
+
assertPinnedDestination: (wallet, what) => this.assertPinnedDestination(wallet, what),
|
|
365
|
+
});
|
|
331
366
|
// Shares the client's own link mapper so the minted link's shape cannot
|
|
332
367
|
// drift from `checkout.create`'s.
|
|
333
|
-
this.products = createProductsResource(this.request, (wallet, what) => this.assertPinnedDestination(wallet, what), (raw) => toCheckoutLink(raw), this.baseUrl, (publicId, body) => this.performProductGateRequest(publicId, body));
|
|
368
|
+
this.products = createProductsResource(this.request, (wallet, what) => this.assertPinnedDestination(wallet, what), (raw) => toCheckoutLink(raw), this.baseUrl, (input) => this.fulfillment.verify(input), (publicId, body) => this.performProductGateRequest(publicId, body), (input) => this.performStrictSellerRequest(input));
|
|
334
369
|
this.entitlements = createEntitlementsResource(this.request);
|
|
335
370
|
this.mandates = createMandatesResource(this.request);
|
|
336
371
|
this.customers = createCustomersResource(this.request);
|
|
337
372
|
this.invoices = createInvoicesResource(this.request);
|
|
373
|
+
this.checkoutDocuments = createCheckoutDocumentsResource(this.request);
|
|
338
374
|
// Stateless pass-through: verification depends only on the endpoint secret,
|
|
339
375
|
// never on this client's key, mode or base URL.
|
|
340
376
|
this.webhooks = {
|
|
@@ -349,11 +385,32 @@ export class GenesisPay {
|
|
|
349
385
|
authorization: `Bearer ${this.apiKey}`,
|
|
350
386
|
"content-type": "application/json",
|
|
351
387
|
accept: "application/json",
|
|
388
|
+
[GENESISPAY_VERSION_HEADER]: GENESISPAY_API_VERSION,
|
|
352
389
|
},
|
|
353
390
|
body: JSON.stringify(body),
|
|
354
391
|
cache: "no-store",
|
|
355
392
|
});
|
|
356
393
|
}
|
|
394
|
+
async performStrictSellerRequest(input) {
|
|
395
|
+
const hasBody = input.body !== undefined;
|
|
396
|
+
try {
|
|
397
|
+
return await this.fetchFn(`${this.baseUrl}${input.path}`, {
|
|
398
|
+
method: input.method ?? "GET",
|
|
399
|
+
headers: {
|
|
400
|
+
authorization: `Bearer ${this.apiKey}`,
|
|
401
|
+
accept: "application/json",
|
|
402
|
+
[GENESISPAY_VERSION_HEADER]: GENESISPAY_API_VERSION,
|
|
403
|
+
...(hasBody ? { "content-type": "application/json" } : {}),
|
|
404
|
+
...input.headers,
|
|
405
|
+
},
|
|
406
|
+
...(hasBody ? { body: JSON.stringify(input.body) } : {}),
|
|
407
|
+
cache: "no-store",
|
|
408
|
+
});
|
|
409
|
+
}
|
|
410
|
+
catch (error) {
|
|
411
|
+
throw new GenesisPayConfigError(`Failed to reach GenesisPay for a strict seller request: ${describeError(error)}`);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
357
414
|
/**
|
|
358
415
|
* Resolve (and cache) the seller config from the key. Single-flight so a
|
|
359
416
|
* cold-start burst shares one request; failures are never cached (the memo is
|
|
@@ -476,8 +533,8 @@ export class GenesisPay {
|
|
|
476
533
|
}
|
|
477
534
|
}
|
|
478
535
|
/**
|
|
479
|
-
* Applies the `expectedPayTo` pin to a
|
|
480
|
-
*
|
|
536
|
+
* Applies the `expectedPayTo` pin to a frozen or explicitly expected destination
|
|
537
|
+
* on creation and authenticated retrieval alike (MR-102/MR-202).
|
|
481
538
|
*
|
|
482
539
|
* Checking it in `assertSafe` alone was not enough: that only covers the
|
|
483
540
|
* `/api/v1/seller` config lookup, while a checkout link and a subscription
|
|
@@ -493,10 +550,10 @@ export class GenesisPay {
|
|
|
493
550
|
// response the pin cannot vouch for — an intermediary that strips the
|
|
494
551
|
// field must not read as "matches". Silently returning here made the
|
|
495
552
|
// guarantee bypassable by omission.
|
|
496
|
-
throw new GenesisPayNetworkSafetyError(`The ${what}
|
|
553
|
+
throw new GenesisPayNetworkSafetyError(`The ${what} carried no destination to check against expectedPayTo.`);
|
|
497
554
|
}
|
|
498
555
|
if (wallet.toLowerCase() !== this.expectedPayTo) {
|
|
499
|
-
throw new GenesisPayNetworkSafetyError(`The ${what}
|
|
556
|
+
throw new GenesisPayNetworkSafetyError(`The ${what} destination does not match expectedPayTo.`);
|
|
500
557
|
}
|
|
501
558
|
}
|
|
502
559
|
/**
|
|
@@ -535,14 +592,31 @@ export class GenesisPay {
|
|
|
535
592
|
// what a missing object means, and says so in its own error message.
|
|
536
593
|
return (await response.json().catch(() => null));
|
|
537
594
|
}
|
|
538
|
-
|
|
595
|
+
/**
|
|
596
|
+
* Creates a payable checkout link — and refuses to hand one back unless the
|
|
597
|
+
* backend that created it answered in this SDK's API version.
|
|
598
|
+
*
|
|
599
|
+
* The version header alone is a request, not a negotiation: a backend that
|
|
600
|
+
* predates the strict surface (or one that was rolled back) ignores it, mints
|
|
601
|
+
* a legacy link, and returns a perfectly ordinary 201. That link is payable
|
|
602
|
+
* and its attempt carries no authority provenance, so strict fulfillment can
|
|
603
|
+
* never verify it — the payer's money would be stranded in an unfulfillable
|
|
604
|
+
* purchase. So the raw response is read here rather than through the tolerant
|
|
605
|
+
* shared seam, and the version + request ID are checked before the link
|
|
606
|
+
* becomes a payUrl anyone can hand to a payer.
|
|
607
|
+
*/
|
|
608
|
+
async createCheckout(input, options) {
|
|
609
|
+
const idempotencyKey = requireIdempotencyKey(options, "checkout.create");
|
|
610
|
+
// Runtime validation also protects JavaScript callers and older integrations.
|
|
611
|
+
if (input.linkType !== undefined && input.linkType !== "single") {
|
|
612
|
+
throw new GenesisPayValidationError("Payment requests are single-use. Create a product for repeat purchases.");
|
|
613
|
+
}
|
|
539
614
|
const amount = resolveCheckoutAmount(input);
|
|
540
615
|
const { returnUrl, cancelUrl } = validateRedirectFields(input);
|
|
541
|
-
const
|
|
616
|
+
const response = await this.performStrictSellerRequest({
|
|
542
617
|
method: "POST",
|
|
543
618
|
path: "/api/v1/links",
|
|
544
|
-
|
|
545
|
-
action: "create a checkout link",
|
|
619
|
+
headers: { "Idempotency-Key": idempotencyKey },
|
|
546
620
|
body: {
|
|
547
621
|
title: input.title,
|
|
548
622
|
description: input.description,
|
|
@@ -555,11 +629,25 @@ export class GenesisPay {
|
|
|
555
629
|
...(input.destinationWallet ? { destinationWallet: input.destinationWallet } : {}),
|
|
556
630
|
...(input.asset ? { asset: input.asset } : {}),
|
|
557
631
|
...(input.metadata ? { metadata: input.metadata } : {}),
|
|
632
|
+
...(input.lineItems ? { lineItems: input.lineItems } : {}),
|
|
633
|
+
...(input.taxConfig ? { taxConfig: parsePaymentLinkTax(input.taxConfig) } : {}),
|
|
558
634
|
...(input.clientReferenceId ? { clientReferenceId: input.clientReferenceId } : {}),
|
|
559
635
|
...(returnUrl ? { returnUrl } : {}),
|
|
560
636
|
...(cancelUrl ? { cancelUrl } : {}),
|
|
561
637
|
},
|
|
562
638
|
});
|
|
639
|
+
if (!response.ok) {
|
|
640
|
+
// Error bodies are not authority; keep best-effort header/body metadata
|
|
641
|
+
// even when a proxy replaces or interrupts the response body. The shared
|
|
642
|
+
// mapper still owns status and issue classification and consumes the original.
|
|
643
|
+
const errorBody = await response.clone().json().catch(() => null);
|
|
644
|
+
await throwForErrorResponse(response, {
|
|
645
|
+
operation: "POST /api/v1/links",
|
|
646
|
+
metadata: strictResponseContext(response, errorBody),
|
|
647
|
+
});
|
|
648
|
+
}
|
|
649
|
+
const body = (await response.json().catch(() => null));
|
|
650
|
+
requireStrictResponseMetadata(response, body, "checkout link");
|
|
563
651
|
const link = asRecord(body)?.link;
|
|
564
652
|
if (!link || typeof link.payUrl !== "string" || !link.payUrl) {
|
|
565
653
|
throw new GenesisPayConfigError(`GenesisPay link created but no payUrl in response: ${JSON.stringify(body)}`);
|
|
@@ -586,6 +674,8 @@ export class GenesisPay {
|
|
|
586
674
|
if (!link || typeof link.publicId !== "string" || !link.publicId) {
|
|
587
675
|
throw new GenesisPayConfigError(`GenesisPay returned no link for publicId "${id}": ${JSON.stringify(body)}`);
|
|
588
676
|
}
|
|
677
|
+
// Check the raw field before the tolerant display mapper can default it.
|
|
678
|
+
this.assertPinnedDestination(link.destinationWallet, "checkout link");
|
|
589
679
|
return toCheckoutSession(link);
|
|
590
680
|
}
|
|
591
681
|
/** Test-mode only — see the doc on `checkout.simulatePayment`. */
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type Address, type Hex, type TypedData } from "viem";
|
|
2
|
+
import { type GenesisPayRequest } from "./resource.js";
|
|
3
|
+
import { type Mandate, type MandateCreateInput } from "./mandates.js";
|
|
4
|
+
export type ContractSubscriptionCreateInput = Omit<MandateCreateInput, "kind" | "amountPerPeriod" | "periodDays"> & {
|
|
5
|
+
amountPerPeriod: string;
|
|
6
|
+
periodDays: number;
|
|
7
|
+
validUntil: string;
|
|
8
|
+
};
|
|
9
|
+
export type ContractPerUseCreateInput = Omit<MandateCreateInput, "kind" | "amountPerPeriod" | "periodDays"> & {
|
|
10
|
+
validUntil: string;
|
|
11
|
+
};
|
|
12
|
+
export type ContractMandateTypedData = {
|
|
13
|
+
domain: {
|
|
14
|
+
name: string;
|
|
15
|
+
version: string;
|
|
16
|
+
chainId: number;
|
|
17
|
+
verifyingContract: Address;
|
|
18
|
+
};
|
|
19
|
+
types: TypedData;
|
|
20
|
+
primaryType: "MandateTerms" | "Permit";
|
|
21
|
+
message: Record<string, string>;
|
|
22
|
+
};
|
|
23
|
+
export type ContractSubscriptionCreateResult = {
|
|
24
|
+
mandate: Mandate;
|
|
25
|
+
spender: string;
|
|
26
|
+
approval: {
|
|
27
|
+
protocol: "contract_mandate_v1";
|
|
28
|
+
termsHash: Hex;
|
|
29
|
+
expiresAt: string;
|
|
30
|
+
termsTypedData: ContractMandateTypedData;
|
|
31
|
+
permitTypedData: ContractMandateTypedData;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export declare function parseContractSubscriptionResult(body: unknown): ContractSubscriptionCreateResult;
|
|
35
|
+
export declare function parseContractPerUseResult(body: unknown): ContractSubscriptionCreateResult;
|
|
36
|
+
export type ContractPerUseCreateResult = ContractSubscriptionCreateResult;
|
|
37
|
+
export declare function createContractSubscription(request: GenesisPayRequest, input: ContractSubscriptionCreateInput): Promise<ContractSubscriptionCreateResult>;
|
|
38
|
+
export declare function createContractPerUse(request: GenesisPayRequest, input: ContractPerUseCreateInput): Promise<ContractSubscriptionCreateResult>;
|
|
39
|
+
//# sourceMappingURL=contract-mandates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-mandates.d.ts","sourceRoot":"","sources":["../src/contract-mandates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,MAAM,CAAC;AAKrG,OAAO,EAAY,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAa,KAAK,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEjF,MAAM,MAAM,+BAA+B,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,iBAAiB,GAAG,YAAY,CAAC,GAAG;IAClH,eAAe,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;CACjE,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,iBAAiB,GAAG,YAAY,CAAC,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AACrI,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,OAAO,CAAA;KAAE,CAAC;IACvF,KAAK,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,cAAc,GAAG,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3F,CAAC;AACF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAClC,QAAQ,EAAE;QAAE,QAAQ,EAAE,qBAAqB,CAAC;QAAC,SAAS,EAAE,GAAG,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAC7E,cAAc,EAAE,wBAAwB,CAAC;QAAC,eAAe,EAAE,wBAAwB,CAAA;KAAE,CAAC;CACzF,CAAC;AAiDF,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,OAAO,oCAA8D;AAC3H,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,oCAAyD;AAChH,MAAM,MAAM,0BAA0B,GAAG,gCAAgC,CAAC;AAE1E,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,+BAA+B,6CAalH;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,yBAAyB,6CAWtG"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { getAddress, hashTypedData, parseUnits } from "viem";
|
|
2
|
+
import { buildMandatePermitTypedData, buildMandateTermsTypedData, mandateTermsStructHash } from "@genesis-tech/genesispay-protocol";
|
|
3
|
+
import { GENESISPAY_ASSET_DEPLOYMENTS } from "@genesis-tech/genesispay-protocol/asset-deployments";
|
|
4
|
+
import { GenesisPayConfigError } from "./errors.js";
|
|
5
|
+
import { asRecord } from "./resource.js";
|
|
6
|
+
import { toMandate } from "./mandates.js";
|
|
7
|
+
const fail = () => new GenesisPayConfigError("GenesisPay returned an inconsistent contract mandate approval.");
|
|
8
|
+
const same = (a, b) => a.toLowerCase() === b.toLowerCase();
|
|
9
|
+
function string(value) { if (typeof value !== "string" || !value)
|
|
10
|
+
throw fail(); return value; }
|
|
11
|
+
function uint(value) { const text = string(value); if (!/^(0|[1-9][0-9]*)$/.test(text))
|
|
12
|
+
throw fail(); return BigInt(text); }
|
|
13
|
+
function address(value) { return getAddress(string(value)); }
|
|
14
|
+
function typed(value, primaryType) {
|
|
15
|
+
const raw = asRecord(value), domain = asRecord(raw?.domain), message = asRecord(raw?.message), types = asRecord(raw?.types);
|
|
16
|
+
if (!raw || !domain || !message || !types || raw.primaryType !== primaryType ||
|
|
17
|
+
!Number.isSafeInteger(domain.chainId) || Object.values(message).some((item) => typeof item !== "string") ||
|
|
18
|
+
Object.values(types).some((fields) => !Array.isArray(fields) || fields.some((field) => {
|
|
19
|
+
const pair = asRecord(field);
|
|
20
|
+
return !pair || typeof pair.name !== "string" || typeof pair.type !== "string";
|
|
21
|
+
})))
|
|
22
|
+
throw fail();
|
|
23
|
+
return { domain: { name: string(domain.name), version: string(domain.version), chainId: domain.chainId,
|
|
24
|
+
verifyingContract: address(domain.verifyingContract) }, primaryType, types: types, message: message };
|
|
25
|
+
}
|
|
26
|
+
/** Compare independently constructed protocol hashes; never silently repair the server's signing payload. */
|
|
27
|
+
function parseContractMandateResult(body, kind) {
|
|
28
|
+
try {
|
|
29
|
+
const raw = asRecord(body), row = asRecord(raw?.mandate), approval = asRecord(raw?.approval);
|
|
30
|
+
if (!row || row.protocol !== "contract_mandate_v1" || row.kind !== kind || !approval || approval.protocol !== "contract_mandate_v1")
|
|
31
|
+
throw fail();
|
|
32
|
+
const termsTypedData = typed(approval.termsTypedData, "MandateTerms"), permitTypedData = typed(approval.permitTypedData, "Permit");
|
|
33
|
+
const m = termsTypedData.message;
|
|
34
|
+
if (m.kind !== (kind === "subscription" ? "0" : "1") || !/^0x[0-9a-fA-F]{64}$/.test(string(m.mandateId)))
|
|
35
|
+
throw fail();
|
|
36
|
+
const terms = { mandateId: m.mandateId, payer: address(m.payer), seller: address(m.seller), treasury: address(m.treasury),
|
|
37
|
+
lifetimeCap: uint(m.lifetimeCap), perChargeCap: uint(m.perChargeCap), feeBps: uint(m.feeBps), kind: kind === "subscription" ? 0n : 1n,
|
|
38
|
+
amount: uint(m.amount), interval: uint(m.interval), validAfter: uint(m.validAfter), validBefore: uint(m.validBefore),
|
|
39
|
+
expectedOutstanding: uint(m.expectedOutstanding), permitNonce: uint(m.permitNonce), permitDeadline: uint(m.permitDeadline) };
|
|
40
|
+
if ((row.chainId !== 8453 && row.chainId !== 84532) || (row.asset !== "USDC" && row.asset !== "EURC"))
|
|
41
|
+
throw fail();
|
|
42
|
+
const asset = GENESISPAY_ASSET_DEPLOYMENTS[row.chainId === 8453 ? "live" : "test"][row.asset];
|
|
43
|
+
if (row.contractVersion !== "1")
|
|
44
|
+
throw fail();
|
|
45
|
+
const deployment = { chainId: row.chainId, token: asset.tokenAddress, executor: address(row.executor), version: "1" };
|
|
46
|
+
const expectedTerms = buildMandateTermsTypedData(deployment, terms);
|
|
47
|
+
const expectedPermit = buildMandatePermitTypedData(deployment, terms, asset.eip712);
|
|
48
|
+
const termsHash = mandateTermsStructHash(deployment, terms);
|
|
49
|
+
if (hashTypedData(termsTypedData) !== hashTypedData(expectedTerms) || hashTypedData(permitTypedData) !== hashTypedData(expectedPermit) ||
|
|
50
|
+
!same(termsHash, string(approval.termsHash)) || !same(deployment.executor, string(raw?.spender)) ||
|
|
51
|
+
!same(terms.payer, string(row.payerWallet)) || !same(terms.seller, string(row.destinationWallet)) ||
|
|
52
|
+
!same(terms.treasury, string(row.treasury)) || terms.lifetimeCap !== uint(row.allowanceMinor) ||
|
|
53
|
+
terms.perChargeCap !== uint(row.capPerChargeMinor) ||
|
|
54
|
+
terms.feeBps !== uint(row.feeBps) || terms.validBefore !== uint(row.validBefore))
|
|
55
|
+
throw fail();
|
|
56
|
+
if (kind === "subscription" ? terms.amount !== uint(row.amountPerPeriodMinor) || !Number.isSafeInteger(row.periodDays) ||
|
|
57
|
+
terms.interval !== BigInt(row.periodDays) * 86400n : row.amountPerPeriodMinor !== null || row.periodDays !== null)
|
|
58
|
+
throw fail();
|
|
59
|
+
return { mandate: toMandate(row), spender: deployment.executor, approval: { protocol: "contract_mandate_v1", termsHash,
|
|
60
|
+
expiresAt: string(approval.expiresAt), termsTypedData, permitTypedData } };
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
throw fail();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
export function parseContractSubscriptionResult(body) { return parseContractMandateResult(body, "subscription"); }
|
|
67
|
+
export function parseContractPerUseResult(body) { return parseContractMandateResult(body, "per_use"); }
|
|
68
|
+
export async function createContractSubscription(request, input) {
|
|
69
|
+
const body = await request({ method: "POST", path: "/api/v1/mandates", operation: "POST /api/v1/mandates",
|
|
70
|
+
action: "create a contract subscription", body: { ...input, kind: "subscription", protocol: "contract_mandate_v1" } });
|
|
71
|
+
const result = parseContractSubscriptionResult(body);
|
|
72
|
+
const amount = (value) => { if (!/^[0-9]+(?:\.[0-9]{1,6})?$/.test(value))
|
|
73
|
+
throw fail(); return parseUnits(value, 6); };
|
|
74
|
+
const terms = result.approval.termsTypedData.message;
|
|
75
|
+
if (!same(result.mandate.payerWallet, input.payerWallet) ||
|
|
76
|
+
input.destinationWallet && !same(result.mandate.destinationWallet, input.destinationWallet) ||
|
|
77
|
+
result.mandate.asset !== (input.asset ?? "USDC") || BigInt(result.mandate.allowanceMinor) !== amount(input.allowance) ||
|
|
78
|
+
BigInt(result.mandate.capPerChargeMinor) !== amount(input.capPerCharge) ||
|
|
79
|
+
BigInt(result.mandate.amountPerPeriodMinor) !== amount(input.amountPerPeriod) || result.mandate.periodDays !== input.periodDays ||
|
|
80
|
+
Number(BigInt(terms.validBefore)) !== Math.floor(Date.parse(input.validUntil) / 1000))
|
|
81
|
+
throw fail();
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
export async function createContractPerUse(request, input) {
|
|
85
|
+
const body = await request({ method: "POST", path: "/api/v1/mandates", operation: "POST /api/v1/mandates",
|
|
86
|
+
action: "create a contract per-use mandate", body: { ...input, kind: "per_use", protocol: "contract_mandate_v1" } });
|
|
87
|
+
const result = parseContractPerUseResult(body);
|
|
88
|
+
const amount = (value) => { if (!/^[0-9]+(?:\.[0-9]{1,6})?$/.test(value))
|
|
89
|
+
throw fail(); return parseUnits(value, 6); };
|
|
90
|
+
if (!same(result.mandate.payerWallet, input.payerWallet) ||
|
|
91
|
+
input.destinationWallet && !same(result.mandate.destinationWallet, input.destinationWallet) ||
|
|
92
|
+
result.mandate.asset !== (input.asset ?? "USDC") || BigInt(result.mandate.allowanceMinor) !== amount(input.allowance) ||
|
|
93
|
+
BigInt(result.mandate.capPerChargeMinor) !== amount(input.capPerCharge) ||
|
|
94
|
+
Number(BigInt(result.approval.termsTypedData.message.validBefore)) !== Math.floor(Date.parse(input.validUntil) / 1000))
|
|
95
|
+
throw fail();
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=contract-mandates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-mandates.js","sourceRoot":"","sources":["../src/contract-mandates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type Hex } from "viem";
|
|
2
|
+
import { buildMandateChargeTypedData } from "@genesis-tech/genesispay-protocol";
|
|
3
|
+
import type { ContractPerUseCreateResult } from "./contract-mandates.js";
|
|
4
|
+
import { type GenesisPayRequest } from "./resource.js";
|
|
5
|
+
export type ContractUsageInput = {
|
|
6
|
+
mandate: ContractPerUseCreateResult;
|
|
7
|
+
amountMinor: string;
|
|
8
|
+
idempotencyKey: string;
|
|
9
|
+
resourceUrl?: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
};
|
|
12
|
+
export type ContractUsageCharge = {
|
|
13
|
+
id: string;
|
|
14
|
+
mandateId: string;
|
|
15
|
+
protocol: "contract_mandate_v1";
|
|
16
|
+
status: "pending" | "settled" | "failed";
|
|
17
|
+
authorityStatus: "proposed" | "submitted" | "confirmed" | "closed";
|
|
18
|
+
operationId: string;
|
|
19
|
+
amountMinor: string;
|
|
20
|
+
feeMinor: string;
|
|
21
|
+
txHash: Hex | null;
|
|
22
|
+
resourceUrl: string | null;
|
|
23
|
+
description: string | null;
|
|
24
|
+
chargeTypedData: ReturnType<typeof buildMandateChargeTypedData>;
|
|
25
|
+
};
|
|
26
|
+
export declare function proposeContractUsage(request: GenesisPayRequest, input: ContractUsageInput): Promise<ContractUsageCharge>;
|
|
27
|
+
export declare function submitContractUsage(request: GenesisPayRequest, proposal: ContractUsageCharge, signature: Hex): Promise<ContractUsageCharge>;
|
|
28
|
+
export declare function getContractUsage(request: GenesisPayRequest, proposal: ContractUsageCharge): Promise<ContractUsageCharge>;
|
|
29
|
+
//# sourceMappingURL=contract-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-usage.d.ts","sourceRoot":"","sources":["../src/contract-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,GAAG,EAAkB,MAAM,MAAM,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EACP,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEzE,OAAO,EAAY,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEjE,MAAM,MAAM,kBAAkB,GAAG;IAAE,OAAO,EAAE,0BAA0B,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAClH,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC/C,MAAM,MAAM,mBAAmB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,qBAAqB,CAAC;IACjG,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IAAC,eAAe,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC7G,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACvI,eAAe,EAAE,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAA;CAAE,CAAC;AAiDpE,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAU9H;AAYD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,SAAS,EAAE,GAAG,gCAG5G;AACD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB,gCAA+C"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { getAddress, hashTypedData } from "viem";
|
|
2
|
+
import { buildMandateChargeTypedData, buildMandateTermsTypedData, mandateTermsStructHash } from "@genesis-tech/genesispay-protocol";
|
|
3
|
+
import { GENESISPAY_ASSET_DEPLOYMENTS } from "@genesis-tech/genesispay-protocol/asset-deployments";
|
|
4
|
+
import { GenesisPayConfigError } from "./errors.js";
|
|
5
|
+
import { asRecord } from "./resource.js";
|
|
6
|
+
const fail = () => new GenesisPayConfigError("GenesisPay returned an inconsistent contract charge approval.");
|
|
7
|
+
function text(value) { if (typeof value !== "string")
|
|
8
|
+
throw fail(); return value; }
|
|
9
|
+
function uint(value) { const raw = text(value); if (!/^(0|[1-9][0-9]*)$/.test(raw))
|
|
10
|
+
throw fail(); return BigInt(raw); }
|
|
11
|
+
function bytes32(value) { const raw = text(value); if (!/^0x[0-9a-fA-F]{64}$/.test(raw))
|
|
12
|
+
throw fail(); return raw; }
|
|
13
|
+
function uuid(value) { const raw = text(value); if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(raw))
|
|
14
|
+
throw fail(); return raw; }
|
|
15
|
+
function nullableText(value) { return value === null ? null : text(value); }
|
|
16
|
+
function consent(result) {
|
|
17
|
+
const { mandate, approval } = result, m = approval.termsTypedData.message;
|
|
18
|
+
if (mandate.kind !== "per_use" || mandate.protocol !== "contract_mandate_v1" ||
|
|
19
|
+
(mandate.chainId !== 8453 && mandate.chainId !== 84532) || (mandate.asset !== "USDC" && mandate.asset !== "EURC") || m.kind !== "1")
|
|
20
|
+
throw fail();
|
|
21
|
+
const terms = { mandateId: bytes32(m.mandateId), payer: getAddress(text(m.payer)), seller: getAddress(text(m.seller)),
|
|
22
|
+
treasury: getAddress(text(m.treasury)), lifetimeCap: uint(m.lifetimeCap), perChargeCap: uint(m.perChargeCap), feeBps: uint(m.feeBps),
|
|
23
|
+
kind: 1n, amount: uint(m.amount), interval: uint(m.interval), validAfter: uint(m.validAfter), validBefore: uint(m.validBefore),
|
|
24
|
+
expectedOutstanding: uint(m.expectedOutstanding), permitNonce: uint(m.permitNonce), permitDeadline: uint(m.permitDeadline) };
|
|
25
|
+
const deployment = { chainId: mandate.chainId, version: "1", executor: getAddress(result.spender),
|
|
26
|
+
token: GENESISPAY_ASSET_DEPLOYMENTS[mandate.chainId === 8453 ? "live" : "test"][mandate.asset].tokenAddress };
|
|
27
|
+
if (hashTypedData(approval.termsTypedData) !== hashTypedData(buildMandateTermsTypedData(deployment, terms)) ||
|
|
28
|
+
mandateTermsStructHash(deployment, terms).toLowerCase() !== approval.termsHash.toLowerCase() ||
|
|
29
|
+
terms.payer !== getAddress(mandate.payerWallet) || terms.seller !== getAddress(mandate.destinationWallet) ||
|
|
30
|
+
terms.lifetimeCap !== uint(mandate.allowanceMinor) || terms.perChargeCap !== uint(mandate.capPerChargeMinor))
|
|
31
|
+
throw fail();
|
|
32
|
+
return { terms, deployment };
|
|
33
|
+
}
|
|
34
|
+
/** Closed wire parsing compares the server payload with an independently built EIP-712 message. */
|
|
35
|
+
function parseCharge(body, expected) {
|
|
36
|
+
try {
|
|
37
|
+
const row = asRecord(asRecord(body)?.charge), rawTyped = asRecord(row?.chargeTypedData), message = asRecord(rawTyped?.message);
|
|
38
|
+
if (!row || !rawTyped || !message || row.protocol !== "contract_mandate_v1" || row.mandateId !== expected.mandateId ||
|
|
39
|
+
row.amountMinor !== expected.amountMinor || row.feeMinor !== expected.feeMinor || row.resourceUrl !== expected.resourceUrl ||
|
|
40
|
+
row.description !== expected.description || expected.id && row.id !== expected.id)
|
|
41
|
+
throw fail();
|
|
42
|
+
const typed = expected.typed(bytes32(message.chargeId), uint(message.deadline));
|
|
43
|
+
const types = asRecord(rawTyped.types), domain = asRecord(rawTyped.domain);
|
|
44
|
+
if (!types || !domain || rawTyped.primaryType !== "MandateCharge" ||
|
|
45
|
+
hashTypedData({ domain, types: types, primaryType: "MandateCharge", message }) !== hashTypedData(typed))
|
|
46
|
+
throw fail();
|
|
47
|
+
const status = row.status, authorityStatus = row.authorityStatus;
|
|
48
|
+
if (status !== "pending" && status !== "settled" && status !== "failed" ||
|
|
49
|
+
authorityStatus !== "proposed" && authorityStatus !== "submitted" && authorityStatus !== "confirmed" && authorityStatus !== "closed" ||
|
|
50
|
+
(status === "settled") !== (authorityStatus === "confirmed") || status === "pending" && authorityStatus === "closed")
|
|
51
|
+
throw fail();
|
|
52
|
+
const txHash = row.txHash === null ? null : bytes32(row.txHash);
|
|
53
|
+
if ((status === "settled") !== (txHash !== null))
|
|
54
|
+
throw fail();
|
|
55
|
+
return { id: uuid(row.id), mandateId: uuid(row.mandateId), protocol: "contract_mandate_v1", status, authorityStatus,
|
|
56
|
+
operationId: uuid(row.operationId), amountMinor: expected.amountMinor, feeMinor: expected.feeMinor, txHash,
|
|
57
|
+
resourceUrl: nullableText(row.resourceUrl), description: nullableText(row.description), chargeTypedData: typed };
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
throw fail();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export async function proposeContractUsage(request, input) {
|
|
64
|
+
const { terms, deployment } = consent(input.mandate), gross = uint(input.amountMinor);
|
|
65
|
+
if (gross === 0n || gross > terms.perChargeCap || !/^[A-Za-z0-9][A-Za-z0-9._:-]{7,199}$/.test(input.idempotencyKey))
|
|
66
|
+
throw fail();
|
|
67
|
+
const mandateId = uuid(input.mandate.mandate.id), path = `/api/v1/mandates/${mandateId}/charges/propose`;
|
|
68
|
+
const body = await request({ method: "POST", path, operation: "POST /api/v1/mandates/:id/charges/propose", action: "propose a contract charge",
|
|
69
|
+
headers: { "Idempotency-Key": input.idempotencyKey }, body: { protocol: "contract_mandate_v1", amountMinor: input.amountMinor,
|
|
70
|
+
resourceUrl: input.resourceUrl, description: input.description } });
|
|
71
|
+
return parseCharge(body, { mandateId, amountMinor: input.amountMinor, feeMinor: (gross * terms.feeBps / 10000n).toString(),
|
|
72
|
+
resourceUrl: input.resourceUrl ?? null, description: input.description?.trim() ?? null,
|
|
73
|
+
typed: (chargeId, deadline) => buildMandateChargeTypedData(deployment, terms, { chargeId, gross, deadline }) });
|
|
74
|
+
}
|
|
75
|
+
async function retainedCharge(request, proposal, signature) {
|
|
76
|
+
const path = `/api/v1/mandates/${uuid(proposal.mandateId)}/charges/${uuid(proposal.id)}${signature ? "/submit" : ""}`;
|
|
77
|
+
const body = await request({ method: signature ? "POST" : "GET", path, operation: `${signature ? "POST" : "GET"} /api/v1/mandates/:id/charges/:chargeId${signature ? "/submit" : ""}`,
|
|
78
|
+
action: signature ? "submit a signed contract charge" : "retrieve a contract charge",
|
|
79
|
+
...(signature ? { body: { protocol: "contract_mandate_v1", signature } } : {}) });
|
|
80
|
+
return parseCharge(body, { ...proposal, typed: (identity, deadline) => {
|
|
81
|
+
if (identity.toLowerCase() !== proposal.chargeTypedData.message.chargeId.toLowerCase() || deadline !== proposal.chargeTypedData.message.deadline)
|
|
82
|
+
throw fail();
|
|
83
|
+
return proposal.chargeTypedData;
|
|
84
|
+
} });
|
|
85
|
+
}
|
|
86
|
+
export function submitContractUsage(request, proposal, signature) {
|
|
87
|
+
if (!/^0x[0-9a-fA-F]{130}$/.test(signature))
|
|
88
|
+
throw fail();
|
|
89
|
+
return retainedCharge(request, proposal, signature);
|
|
90
|
+
}
|
|
91
|
+
export function getContractUsage(request, proposal) { return retainedCharge(request, proposal); }
|
|
92
|
+
//# sourceMappingURL=contract-usage.js.map
|