@resvary/sdk 0.5.0 → 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.
- package/LICENSE +13 -13
- package/README.md +17 -17
- package/dist/client/buyer.d.ts +29 -0
- package/dist/client/buyer.d.ts.map +1 -1
- package/dist/client/buyer.js +113 -31
- package/dist/client/buyer.js.map +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/credits/ledger.d.ts +2 -0
- package/dist/credits/ledger.d.ts.map +1 -1
- package/dist/credits/ledger.js +28 -15
- package/dist/credits/ledger.js.map +1 -1
- package/dist/funding/arc-worker.d.ts +1 -0
- package/dist/funding/arc-worker.d.ts.map +1 -1
- package/dist/funding/arc-worker.js +3 -0
- package/dist/funding/arc-worker.js.map +1 -1
- package/dist/funding/arc.d.ts +6 -1
- package/dist/funding/arc.d.ts.map +1 -1
- package/dist/funding/arc.js +36 -10
- package/dist/funding/arc.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/middleware/paywall.d.ts +1 -4
- package/dist/middleware/paywall.d.ts.map +1 -1
- package/dist/middleware/paywall.js +4 -37
- package/dist/middleware/paywall.js.map +1 -1
- package/dist/receipts/proof.d.ts +4 -1
- package/dist/receipts/proof.d.ts.map +1 -1
- package/dist/receipts/proof.js +24 -5
- package/dist/receipts/proof.js.map +1 -1
- package/dist/receipts/watcher.d.ts +3 -0
- package/dist/receipts/watcher.d.ts.map +1 -1
- package/dist/receipts/watcher.js +10 -2
- package/dist/receipts/watcher.js.map +1 -1
- package/package.json +119 -115
package/LICENSE
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
Copyright 2025-2026 horn111
|
|
2
|
-
|
|
3
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
you may not use this file except in compliance with the License.
|
|
5
|
-
You may obtain a copy of the License at
|
|
6
|
-
|
|
7
|
-
https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
|
|
9
|
-
Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
See the License for the specific language governing permissions and
|
|
13
|
-
limitations under the License.
|
|
1
|
+
Copyright 2025-2026 horn111
|
|
2
|
+
|
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License.
|
|
5
|
+
You may obtain a copy of the License at
|
|
6
|
+
|
|
7
|
+
https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
|
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
See the License for the specific language governing permissions and
|
|
13
|
+
limitations under the License.
|
package/README.md
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
# @resvary/sdk
|
|
2
|
-
|
|
3
|
-
Open-source prepaid credits and usage billing for AI products.
|
|
4
|
-
|
|
5
|
-
Primary imports:
|
|
6
|
-
|
|
7
|
-
```typescript
|
|
8
|
-
import { CreditLedger } from '@resvary/sdk/credits';
|
|
9
|
-
import { createMeterDefinition, createPriceVersion, rateUsage } from '@resvary/sdk/pricing';
|
|
10
|
-
import { ArcCreditFunding } from '@resvary/sdk/funding/arc';
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
The SDK provides USD credit accounts, manual grants, reserve/commit/release, immutable usage receipts, idempotency, a transactional outbox, and signed credit webhooks. It has no database or AI provider dependency.
|
|
14
|
-
|
|
15
|
-
Legacy stablecoin payment imports under `/receipts`, `/middleware`, `/client`, and `/gateway`
|
|
16
|
-
|
|
17
|
-
See the repository README and `docs/` for the complete quickstart and security model.
|
|
1
|
+
# @resvary/sdk
|
|
2
|
+
|
|
3
|
+
Open-source prepaid credits and usage billing for AI products.
|
|
4
|
+
|
|
5
|
+
Primary imports:
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { CreditLedger } from '@resvary/sdk/credits';
|
|
9
|
+
import { createMeterDefinition, createPriceVersion, rateUsage } from '@resvary/sdk/pricing';
|
|
10
|
+
import { ArcCreditFunding } from '@resvary/sdk/funding/arc';
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The SDK provides USD credit accounts, manual grants, reserve/commit/release, immutable usage receipts, idempotency, a transactional outbox, and signed credit webhooks. It has no database or AI provider dependency.
|
|
14
|
+
|
|
15
|
+
Legacy stablecoin payment imports remain under `/receipts`, `/middleware`, `/client`, and `/gateway`. Legacy paywall middleware requires a trusted `verifyPayment` callback and fails closed without one. `BuyerClient` also fails closed on `402` unless the caller configures per-request and total spend limits plus a recipient allowlist. `UsageMeter` and `createBillingPlan` are deprecated for new balance systems.
|
|
16
|
+
|
|
17
|
+
See the repository README and `docs/` for the complete quickstart and security model.
|
package/dist/client/buyer.d.ts
CHANGED
|
@@ -14,12 +14,18 @@
|
|
|
14
14
|
* const buyer = new BuyerClient({
|
|
15
15
|
* privateKey: '0x...',
|
|
16
16
|
* rpcUrl: 'https://rpc.testnet.arc.network',
|
|
17
|
+
* paymentPolicy: {
|
|
18
|
+
* maxAmount: '0.10',
|
|
19
|
+
* maxTotalAmount: '1.00',
|
|
20
|
+
* allowedPayTo: ['0x1111111111111111111111111111111111111111'],
|
|
21
|
+
* },
|
|
17
22
|
* });
|
|
18
23
|
*
|
|
19
24
|
* const response = await buyer.request('https://api.example.com/premium/data');
|
|
20
25
|
* console.log(response.data);
|
|
21
26
|
* ```
|
|
22
27
|
*/
|
|
28
|
+
import type { PaymentRequirements } from '../types.js';
|
|
23
29
|
/** Configuration for the BuyerClient */
|
|
24
30
|
export interface BuyerClientConfig {
|
|
25
31
|
/** Buyer's private key (hex string with 0x prefix) */
|
|
@@ -32,6 +38,26 @@ export interface BuyerClientConfig {
|
|
|
32
38
|
maxRetries?: number;
|
|
33
39
|
/** Custom fetch implementation */
|
|
34
40
|
fetch?: typeof globalThis.fetch;
|
|
41
|
+
/** Required fail-closed policy for automatic payment signatures. */
|
|
42
|
+
paymentPolicy?: BuyerPaymentPolicy;
|
|
43
|
+
}
|
|
44
|
+
export interface BuyerPaymentProposal {
|
|
45
|
+
readonly url: string;
|
|
46
|
+
readonly origin: string;
|
|
47
|
+
readonly requirements: Readonly<PaymentRequirements>;
|
|
48
|
+
readonly amountUnits: bigint;
|
|
49
|
+
}
|
|
50
|
+
export interface BuyerPaymentPolicy {
|
|
51
|
+
/** Maximum amount signed for one request, in human-readable USDC. */
|
|
52
|
+
maxAmount: string;
|
|
53
|
+
/** Maximum amount signed by this client instance, in human-readable USDC. */
|
|
54
|
+
maxTotalAmount: string;
|
|
55
|
+
/** Exact recipient allowlist. */
|
|
56
|
+
allowedPayTo: readonly `0x${string}`[];
|
|
57
|
+
/** Allowed final response origins. Defaults to the requested URL origin. */
|
|
58
|
+
allowedOrigins?: readonly string[];
|
|
59
|
+
/** Optional application approval hook called with normalized terms before signing. */
|
|
60
|
+
approve?: (proposal: BuyerPaymentProposal) => boolean | Promise<boolean>;
|
|
35
61
|
}
|
|
36
62
|
/** Response from a paid request */
|
|
37
63
|
export interface PaidResponse<T = unknown> {
|
|
@@ -58,6 +84,8 @@ export declare class BuyerClient {
|
|
|
58
84
|
private readonly account;
|
|
59
85
|
private readonly chainId;
|
|
60
86
|
private readonly fetchFn;
|
|
87
|
+
private readonly paymentPolicy?;
|
|
88
|
+
private signedAmountUnits;
|
|
61
89
|
constructor(config: BuyerClientConfig);
|
|
62
90
|
/** Get the buyer's wallet address */
|
|
63
91
|
get address(): `0x${string}`;
|
|
@@ -77,6 +105,7 @@ export declare class BuyerClient {
|
|
|
77
105
|
/**
|
|
78
106
|
* Sign a payment authorization using EIP-3009.
|
|
79
107
|
*/
|
|
108
|
+
private authorizePayment;
|
|
80
109
|
private signPayment;
|
|
81
110
|
}
|
|
82
111
|
//# sourceMappingURL=buyer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buyer.d.ts","sourceRoot":"","sources":["../../src/client/buyer.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"buyer.d.ts","sourceRoot":"","sources":["../../src/client/buyer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAkB,MAAM,aAAa,CAAC;AAWvE,wCAAwC;AACxC,MAAM,WAAW,iBAAiB;IAChC,sDAAsD;IACtD,UAAU,EAAE,KAAK,MAAM,EAAE,CAAC;IAC1B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,oEAAoE;IACpE,aAAa,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACrD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,cAAc,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,YAAY,EAAE,SAAS,KAAK,MAAM,EAAE,EAAE,CAAC;IACvC,4EAA4E;IAC5E,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,sFAAsF;IACtF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAED,mCAAmC;AACnC,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,oBAAoB;IACpB,IAAI,EAAE,CAAC,CAAC;IACR,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,4CAA4C;IAC5C,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;;;;GAKG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAqB;IACpD,OAAO,CAAC,iBAAiB,CAAM;gBAEnB,MAAM,EAAE,iBAAiB;IAUrC,qCAAqC;IACrC,IAAI,OAAO,IAAI,KAAK,MAAM,EAAE,CAE3B;IAED;;;;;;;OAOG;IACG,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAkDrF;;OAEG;YACW,wBAAwB;IAmBtC;;OAEG;YACW,gBAAgB;YAyEhB,WAAW;CAiE1B"}
|
package/dist/client/buyer.js
CHANGED
|
@@ -14,13 +14,20 @@
|
|
|
14
14
|
* const buyer = new BuyerClient({
|
|
15
15
|
* privateKey: '0x...',
|
|
16
16
|
* rpcUrl: 'https://rpc.testnet.arc.network',
|
|
17
|
+
* paymentPolicy: {
|
|
18
|
+
* maxAmount: '0.10',
|
|
19
|
+
* maxTotalAmount: '1.00',
|
|
20
|
+
* allowedPayTo: ['0x1111111111111111111111111111111111111111'],
|
|
21
|
+
* },
|
|
17
22
|
* });
|
|
18
23
|
*
|
|
19
24
|
* const response = await buyer.request('https://api.example.com/premium/data');
|
|
20
25
|
* console.log(response.data);
|
|
21
26
|
* ```
|
|
22
27
|
*/
|
|
28
|
+
import { getAddress } from 'viem';
|
|
23
29
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
30
|
+
import { toStablecoinUnits } from '../receipts/amount.js';
|
|
24
31
|
import { ARC_TESTNET, DEFAULTS, HTTP_402, USDC_DECIMALS, X402_HEADER, PAYMENT_REQUIRED_HEADER, } from '../constants.js';
|
|
25
32
|
/**
|
|
26
33
|
* Client for consuming x402-paywalled APIs.
|
|
@@ -32,10 +39,16 @@ export class BuyerClient {
|
|
|
32
39
|
account;
|
|
33
40
|
chainId;
|
|
34
41
|
fetchFn;
|
|
42
|
+
paymentPolicy;
|
|
43
|
+
signedAmountUnits = 0n;
|
|
35
44
|
constructor(config) {
|
|
36
45
|
this.account = privateKeyToAccount(config.privateKey);
|
|
37
46
|
this.chainId = config.chainId ?? ARC_TESTNET.chainId;
|
|
38
47
|
this.fetchFn = config.fetch ?? globalThis.fetch;
|
|
48
|
+
this.paymentPolicy = config.paymentPolicy;
|
|
49
|
+
if (this.chainId !== ARC_TESTNET.chainId) {
|
|
50
|
+
throw new Error('BuyerClient currently supports Arc Testnet only');
|
|
51
|
+
}
|
|
39
52
|
}
|
|
40
53
|
/** Get the buyer's wallet address */
|
|
41
54
|
get address() {
|
|
@@ -66,8 +79,8 @@ export class BuyerClient {
|
|
|
66
79
|
if (!requirements) {
|
|
67
80
|
throw new Error('Received 402 but could not parse payment requirements');
|
|
68
81
|
}
|
|
69
|
-
|
|
70
|
-
const paymentPayload = await this.signPayment(requirements);
|
|
82
|
+
const proposal = await this.authorizePayment(url, initialResponse, requirements);
|
|
83
|
+
const paymentPayload = await this.signPayment(proposal.requirements, proposal.amountUnits);
|
|
71
84
|
// Encode payment as base64
|
|
72
85
|
const encodedPayment = Buffer.from(JSON.stringify(paymentPayload)).toString('base64');
|
|
73
86
|
// Retry with payment header
|
|
@@ -112,13 +125,75 @@ export class BuyerClient {
|
|
|
112
125
|
/**
|
|
113
126
|
* Sign a payment authorization using EIP-3009.
|
|
114
127
|
*/
|
|
115
|
-
async
|
|
128
|
+
async authorizePayment(requestedUrl, response, requirements) {
|
|
129
|
+
const policy = this.paymentPolicy;
|
|
130
|
+
if (!policy) {
|
|
131
|
+
throw new Error('BuyerClient paymentPolicy is required before signing a 402 payment');
|
|
132
|
+
}
|
|
133
|
+
if (requirements.x402Version !== DEFAULTS.x402Version ||
|
|
134
|
+
requirements.scheme !== DEFAULTS.scheme ||
|
|
135
|
+
requirements.network !== DEFAULTS.network) {
|
|
136
|
+
throw new Error('Payment requirements do not match the supported x402 Arc Testnet profile');
|
|
137
|
+
}
|
|
138
|
+
if (requirements.expiry !== undefined) {
|
|
139
|
+
if (!Number.isSafeInteger(requirements.expiry) || requirements.expiry <= Date.now() / 1000) {
|
|
140
|
+
throw new Error('Payment requirements are expired or contain an invalid expiry');
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
let payTo;
|
|
144
|
+
try {
|
|
145
|
+
payTo = getAddress(requirements.payTo);
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
throw new Error('Payment requirements contain an invalid recipient');
|
|
149
|
+
}
|
|
150
|
+
const allowedPayTo = policy.allowedPayTo.map((address) => getAddress(address));
|
|
151
|
+
if (allowedPayTo.length === 0 || !allowedPayTo.includes(payTo)) {
|
|
152
|
+
throw new Error(`Payment recipient is not allowed: ${payTo}`);
|
|
153
|
+
}
|
|
154
|
+
const finalUrl = new URL(response.url || requestedUrl);
|
|
155
|
+
const requestedOrigin = new URL(requestedUrl).origin;
|
|
156
|
+
const allowedOrigins = (policy.allowedOrigins ?? [requestedOrigin]).map((origin) => new URL(origin).origin);
|
|
157
|
+
if (!allowedOrigins.includes(finalUrl.origin)) {
|
|
158
|
+
throw new Error(`Payment response origin is not allowed: ${finalUrl.origin}`);
|
|
159
|
+
}
|
|
160
|
+
const amountUnits = toStablecoinUnits(requirements.maxAmountRequired, USDC_DECIMALS);
|
|
161
|
+
if (amountUnits <= 0n)
|
|
162
|
+
throw new Error('Payment amount must be positive');
|
|
163
|
+
const maxAmountUnits = toStablecoinUnits(policy.maxAmount, USDC_DECIMALS);
|
|
164
|
+
const maxTotalAmountUnits = toStablecoinUnits(policy.maxTotalAmount, USDC_DECIMALS);
|
|
165
|
+
if (amountUnits > maxAmountUnits) {
|
|
166
|
+
throw new Error('Payment amount exceeds the per-request policy limit');
|
|
167
|
+
}
|
|
168
|
+
if (this.signedAmountUnits + amountUnits > maxTotalAmountUnits) {
|
|
169
|
+
throw new Error('Payment amount exceeds the client total policy limit');
|
|
170
|
+
}
|
|
171
|
+
const normalizedRequirements = Object.freeze({ ...requirements, payTo });
|
|
172
|
+
const proposal = Object.freeze({
|
|
173
|
+
url: finalUrl.toString(),
|
|
174
|
+
origin: finalUrl.origin,
|
|
175
|
+
requirements: normalizedRequirements,
|
|
176
|
+
amountUnits,
|
|
177
|
+
});
|
|
178
|
+
this.signedAmountUnits += amountUnits;
|
|
179
|
+
try {
|
|
180
|
+
if (policy.approve && !(await policy.approve(proposal))) {
|
|
181
|
+
throw new Error('Payment was denied by the application approval policy');
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
this.signedAmountUnits -= amountUnits;
|
|
186
|
+
throw error;
|
|
187
|
+
}
|
|
188
|
+
return proposal;
|
|
189
|
+
}
|
|
190
|
+
async signPayment(requirements, amountUnits) {
|
|
116
191
|
const now = Math.floor(Date.now() / 1000);
|
|
117
192
|
const nonce = `0x${Buffer.from(crypto.getRandomValues(new Uint8Array(32))).toString('hex')}`;
|
|
118
193
|
const authorization = {
|
|
119
194
|
from: this.account.address,
|
|
120
195
|
to: requirements.payTo,
|
|
121
|
-
value:
|
|
196
|
+
value: amountUnits.toString(),
|
|
122
197
|
validAfter: String(now - 60), // Valid from 1 minute ago (clock skew buffer)
|
|
123
198
|
validBefore: String(now + DEFAULTS.paymentValiditySeconds),
|
|
124
199
|
nonce,
|
|
@@ -127,33 +202,40 @@ export class BuyerClient {
|
|
|
127
202
|
if (!this.account.signTypedData) {
|
|
128
203
|
throw new Error('Account does not support signTypedData');
|
|
129
204
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
205
|
+
let signature;
|
|
206
|
+
try {
|
|
207
|
+
signature = await this.account.signTypedData({
|
|
208
|
+
domain: {
|
|
209
|
+
name: 'USD Coin',
|
|
210
|
+
version: '2',
|
|
211
|
+
chainId: BigInt(this.chainId),
|
|
212
|
+
verifyingContract: ARC_TESTNET.usdcAddress,
|
|
213
|
+
},
|
|
214
|
+
types: {
|
|
215
|
+
TransferWithAuthorization: [
|
|
216
|
+
{ name: 'from', type: 'address' },
|
|
217
|
+
{ name: 'to', type: 'address' },
|
|
218
|
+
{ name: 'value', type: 'uint256' },
|
|
219
|
+
{ name: 'validAfter', type: 'uint256' },
|
|
220
|
+
{ name: 'validBefore', type: 'uint256' },
|
|
221
|
+
{ name: 'nonce', type: 'bytes32' },
|
|
222
|
+
],
|
|
223
|
+
},
|
|
224
|
+
primaryType: 'TransferWithAuthorization',
|
|
225
|
+
message: {
|
|
226
|
+
from: authorization.from,
|
|
227
|
+
to: authorization.to,
|
|
228
|
+
value: BigInt(authorization.value),
|
|
229
|
+
validAfter: BigInt(authorization.validAfter),
|
|
230
|
+
validBefore: BigInt(authorization.validBefore),
|
|
231
|
+
nonce: authorization.nonce,
|
|
232
|
+
},
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
this.signedAmountUnits -= amountUnits;
|
|
237
|
+
throw error;
|
|
238
|
+
}
|
|
157
239
|
return {
|
|
158
240
|
x402Version: DEFAULTS.x402Version,
|
|
159
241
|
scheme: requirements.scheme ?? 'exact',
|
package/dist/client/buyer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buyer.js","sourceRoot":"","sources":["../../src/client/buyer.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"buyer.js","sourceRoot":"","sources":["../../src/client/buyer.ts"],"names":[],"mappings":"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"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { BuyerClient, type BuyerClientConfig, type PaidResponse } from './buyer.js';
|
|
1
|
+
export { BuyerClient, type BuyerClientConfig, type BuyerPaymentPolicy, type BuyerPaymentProposal, type PaidResponse, } from './buyer.js';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC"}
|
package/dist/client/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { BuyerClient } from './buyer.js';
|
|
1
|
+
export { BuyerClient, } from './buyer.js';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,GAKZ,MAAM,YAAY,CAAC"}
|
package/dist/credits/ledger.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/credits/ledger.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/credits/ledger.ts"],"names":[],"mappings":"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"}
|
package/dist/credits/ledger.js
CHANGED
|
@@ -120,8 +120,13 @@ export class CreditLedger {
|
|
|
120
120
|
return this.store.transaction((tx) => this.idempotent(tx, 'create_funding_intent', input.idempotencyKey, input, async () => {
|
|
121
121
|
const now = this.now();
|
|
122
122
|
const account = await this.ensureAccountInTransaction(tx, input.customerId, input.metadata);
|
|
123
|
+
const intentId = input.id ?? createId('fund');
|
|
124
|
+
const existing = await tx.getFundingIntent(intentId);
|
|
125
|
+
if (existing) {
|
|
126
|
+
throw new InvalidCreditStateError(`Funding intent id already exists: ${intentId}`);
|
|
127
|
+
}
|
|
123
128
|
const intent = {
|
|
124
|
-
id:
|
|
129
|
+
id: intentId,
|
|
125
130
|
projectId: this.projectId,
|
|
126
131
|
customerId: account.customerId,
|
|
127
132
|
accountId: account.id,
|
|
@@ -479,33 +484,35 @@ export class CreditLedger {
|
|
|
479
484
|
throw new CreditNotFoundError('Credit account', customerId);
|
|
480
485
|
return account;
|
|
481
486
|
}
|
|
482
|
-
getReservation(id) {
|
|
483
|
-
return this.store.getReservation(id);
|
|
487
|
+
async getReservation(id) {
|
|
488
|
+
return this.forCurrentProject(await this.store.getReservation(id));
|
|
484
489
|
}
|
|
485
|
-
getUsageReceipt(id) {
|
|
486
|
-
return this.store.getUsageReceipt(id);
|
|
490
|
+
async getUsageReceipt(id) {
|
|
491
|
+
return this.forCurrentProject(await this.store.getUsageReceipt(id));
|
|
487
492
|
}
|
|
488
|
-
getFundingIntent(id) {
|
|
489
|
-
return this.store.getFundingIntent(id);
|
|
493
|
+
async getFundingIntent(id) {
|
|
494
|
+
return this.forCurrentProject(await this.store.getFundingIntent(id));
|
|
490
495
|
}
|
|
491
496
|
listFundingIntents() {
|
|
492
497
|
return this.store.listFundingIntents(this.projectId);
|
|
493
498
|
}
|
|
494
|
-
getFundingTransaction(id) {
|
|
495
|
-
return this.store.getFundingTransaction(id);
|
|
499
|
+
async getFundingTransaction(id) {
|
|
500
|
+
return this.forCurrentProject(await this.store.getFundingTransaction(id));
|
|
496
501
|
}
|
|
497
|
-
listFundingTransactions(fundingIntentId) {
|
|
498
|
-
return this.store.listFundingTransactions(fundingIntentId);
|
|
502
|
+
async listFundingTransactions(fundingIntentId) {
|
|
503
|
+
return this.forCurrentProjectList(await this.store.listFundingTransactions(fundingIntentId));
|
|
499
504
|
}
|
|
500
|
-
listUsageReceipts(customerId) {
|
|
501
|
-
|
|
505
|
+
async listUsageReceipts(customerId) {
|
|
506
|
+
const values = customerId
|
|
502
507
|
? this.getBalance(customerId).then((account) => this.store.listUsageReceipts(account.id))
|
|
503
508
|
: this.store.listUsageReceipts();
|
|
509
|
+
return this.forCurrentProjectList(await values);
|
|
504
510
|
}
|
|
505
|
-
listLedgerEntries(customerId) {
|
|
506
|
-
|
|
511
|
+
async listLedgerEntries(customerId) {
|
|
512
|
+
const values = customerId
|
|
507
513
|
? this.getBalance(customerId).then((account) => this.store.listLedgerEntries(account.id))
|
|
508
514
|
: this.store.listLedgerEntries();
|
|
515
|
+
return this.forCurrentProjectList(await values);
|
|
509
516
|
}
|
|
510
517
|
listOutboxEvents(filter = {}) {
|
|
511
518
|
return this.store.listOutboxEvents({ ...filter, projectId: this.projectId });
|
|
@@ -659,6 +666,12 @@ export class CreditLedger {
|
|
|
659
666
|
throw new CreditNotFoundError('Usage receipt', id);
|
|
660
667
|
return value;
|
|
661
668
|
}
|
|
669
|
+
forCurrentProject(value) {
|
|
670
|
+
return value?.projectId === this.projectId ? value : undefined;
|
|
671
|
+
}
|
|
672
|
+
forCurrentProjectList(values) {
|
|
673
|
+
return values.filter((value) => value.projectId === this.projectId);
|
|
674
|
+
}
|
|
662
675
|
}
|
|
663
676
|
function withBalances(account, posted, reserved, updatedAt) {
|
|
664
677
|
if (posted < 0n || reserved < 0n || reserved > posted) {
|