@resvary/sdk 0.5.0-alpha.3 → 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.
Files changed (39) hide show
  1. package/LICENSE +13 -13
  2. package/README.md +17 -17
  3. package/dist/client/buyer.d.ts +29 -0
  4. package/dist/client/buyer.d.ts.map +1 -1
  5. package/dist/client/buyer.js +113 -31
  6. package/dist/client/buyer.js.map +1 -1
  7. package/dist/client/index.d.ts +1 -1
  8. package/dist/client/index.d.ts.map +1 -1
  9. package/dist/client/index.js +1 -1
  10. package/dist/client/index.js.map +1 -1
  11. package/dist/credits/ledger.d.ts +2 -0
  12. package/dist/credits/ledger.d.ts.map +1 -1
  13. package/dist/credits/ledger.js +28 -15
  14. package/dist/credits/ledger.js.map +1 -1
  15. package/dist/funding/arc-worker.d.ts +1 -0
  16. package/dist/funding/arc-worker.d.ts.map +1 -1
  17. package/dist/funding/arc-worker.js +3 -0
  18. package/dist/funding/arc-worker.js.map +1 -1
  19. package/dist/funding/arc.d.ts +6 -1
  20. package/dist/funding/arc.d.ts.map +1 -1
  21. package/dist/funding/arc.js +36 -10
  22. package/dist/funding/arc.js.map +1 -1
  23. package/dist/index.d.ts +1 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +1 -1
  26. package/dist/index.js.map +1 -1
  27. package/dist/middleware/paywall.d.ts +1 -4
  28. package/dist/middleware/paywall.d.ts.map +1 -1
  29. package/dist/middleware/paywall.js +4 -37
  30. package/dist/middleware/paywall.js.map +1 -1
  31. package/dist/receipts/proof.d.ts +4 -1
  32. package/dist/receipts/proof.d.ts.map +1 -1
  33. package/dist/receipts/proof.js +24 -5
  34. package/dist/receipts/proof.js.map +1 -1
  35. package/dist/receipts/watcher.d.ts +3 -0
  36. package/dist/receipts/watcher.d.ts.map +1 -1
  37. package/dist/receipts/watcher.js +10 -2
  38. package/dist/receipts/watcher.js.map +1 -1
  39. package/package.json +119 -116
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` remain compatible. `UsageMeter` and `createBillingPlan` are deprecated for new balance systems.
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.
@@ -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;;;;;;;;;;;;;;;;;;;;;GAqBG;AAcH,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;CACjC;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;gBAEtC,MAAM,EAAE,iBAAiB;IAMrC,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,WAAW;CA0D1B"}
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"}
@@ -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
- // Sign the payment
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 signPayment(requirements) {
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: String(BigInt(Math.ceil(parseFloat(requirements.maxAmountRequired) * 10 ** USDC_DECIMALS))),
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
- const signature = await this.account.signTypedData({
131
- domain: {
132
- name: 'USD Coin',
133
- version: '2',
134
- chainId: BigInt(this.chainId),
135
- verifyingContract: ARC_TESTNET.usdcAddress,
136
- },
137
- types: {
138
- TransferWithAuthorization: [
139
- { name: 'from', type: 'address' },
140
- { name: 'to', type: 'address' },
141
- { name: 'value', type: 'uint256' },
142
- { name: 'validAfter', type: 'uint256' },
143
- { name: 'validBefore', type: 'uint256' },
144
- { name: 'nonce', type: 'bytes32' },
145
- ],
146
- },
147
- primaryType: 'TransferWithAuthorization',
148
- message: {
149
- from: authorization.from,
150
- to: authorization.to,
151
- value: BigInt(authorization.value),
152
- validAfter: BigInt(authorization.validAfter),
153
- validBefore: BigInt(authorization.validBefore),
154
- nonce: authorization.nonce,
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',
@@ -1 +1 @@
1
- {"version":3,"file":"buyer.js","sourceRoot":"","sources":["../../src/client/buyer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buyer.js","sourceRoot":"","sources":["../../src/client/buyer.ts"],"names":[],"mappings":"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"}
@@ -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,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC"}
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"}
@@ -1,2 +1,2 @@
1
- export { BuyerClient } from './buyer.js';
1
+ export { BuyerClient, } from './buyer.js';
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA6C,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,GAKZ,MAAM,YAAY,CAAC"}
@@ -171,5 +171,7 @@ export declare class CreditLedger {
171
171
  private requireReservation;
172
172
  private requireAccountById;
173
173
  private requireUsageReceipt;
174
+ private forCurrentProject;
175
+ private forCurrentProjectList;
174
176
  }
175
177
  //# sourceMappingURL=ledger.d.ts.map
@@ -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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"}
@@ -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: input.id ?? createId('fund'),
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
- return customerId
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
- return customerId
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) {