@pay-skill/sdk 0.1.7 → 0.2.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 (60) hide show
  1. package/README.md +143 -154
  2. package/dist/auth.d.ts +11 -6
  3. package/dist/auth.d.ts.map +1 -1
  4. package/dist/auth.js +19 -7
  5. package/dist/auth.js.map +1 -1
  6. package/dist/errors.d.ts +4 -2
  7. package/dist/errors.d.ts.map +1 -1
  8. package/dist/errors.js +8 -3
  9. package/dist/errors.js.map +1 -1
  10. package/dist/index.d.ts +2 -13
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +1 -6
  13. package/dist/index.js.map +1 -1
  14. package/dist/keychain.d.ts +8 -0
  15. package/dist/keychain.d.ts.map +1 -0
  16. package/dist/keychain.js +17 -0
  17. package/dist/keychain.js.map +1 -0
  18. package/dist/wallet.d.ts +135 -104
  19. package/dist/wallet.d.ts.map +1 -1
  20. package/dist/wallet.js +631 -276
  21. package/dist/wallet.js.map +1 -1
  22. package/jsr.json +13 -13
  23. package/knip.json +5 -5
  24. package/package.json +51 -48
  25. package/src/auth.ts +210 -200
  26. package/src/eip3009.ts +79 -79
  27. package/src/errors.ts +55 -48
  28. package/src/index.ts +24 -51
  29. package/src/keychain.ts +18 -0
  30. package/src/wallet.ts +1111 -445
  31. package/tests/test_auth_rejection.ts +102 -154
  32. package/tests/test_crypto.ts +138 -251
  33. package/tests/test_e2e.ts +99 -158
  34. package/tests/test_errors.ts +44 -36
  35. package/tests/test_ows.ts +153 -0
  36. package/tests/test_wallet.ts +194 -0
  37. package/dist/client.d.ts +0 -94
  38. package/dist/client.d.ts.map +0 -1
  39. package/dist/client.js +0 -443
  40. package/dist/client.js.map +0 -1
  41. package/dist/models.d.ts +0 -78
  42. package/dist/models.d.ts.map +0 -1
  43. package/dist/models.js +0 -2
  44. package/dist/models.js.map +0 -1
  45. package/dist/ows-signer.d.ts +0 -75
  46. package/dist/ows-signer.d.ts.map +0 -1
  47. package/dist/ows-signer.js +0 -130
  48. package/dist/ows-signer.js.map +0 -1
  49. package/dist/signer.d.ts +0 -46
  50. package/dist/signer.d.ts.map +0 -1
  51. package/dist/signer.js +0 -111
  52. package/dist/signer.js.map +0 -1
  53. package/src/client.ts +0 -644
  54. package/src/models.ts +0 -77
  55. package/src/ows-signer.ts +0 -223
  56. package/src/signer.ts +0 -147
  57. package/tests/test_ows_integration.ts +0 -92
  58. package/tests/test_ows_signer.ts +0 -365
  59. package/tests/test_signer.ts +0 -47
  60. package/tests/test_validation.ts +0 -66
package/dist/client.d.ts DELETED
@@ -1,94 +0,0 @@
1
- /**
2
- * PayClient — single entry point for the pay SDK.
3
- */
4
- import type { DirectPaymentResult, DiscoverOptions, DiscoverService, StatusResponse, Tab, WebhookRegistration } from "./models.js";
5
- import type { Signer } from "./signer.js";
6
- export declare const DEFAULT_API_URL = "https://pay-skill.com/api/v1";
7
- export interface PayClientOptions {
8
- apiUrl?: string;
9
- signer?: Signer | "cli" | "raw" | "custom";
10
- signerOptions?: {
11
- command?: string;
12
- key?: string;
13
- address?: string;
14
- callback?: (hash: Uint8Array) => Uint8Array;
15
- };
16
- /** Private key for direct auth signing (alternative to signer). */
17
- privateKey?: string;
18
- /** Chain ID for EIP-712 domain (default: 8453 for Base). */
19
- chainId?: number;
20
- /** Router contract address for EIP-712 domain. */
21
- routerAddress?: string;
22
- }
23
- export declare class PayClient {
24
- private readonly apiUrl;
25
- /** URL path prefix extracted from apiUrl (e.g., "/api/v1"). */
26
- private readonly _basePath;
27
- private readonly signer;
28
- private readonly _privateKey;
29
- private readonly _authConfig;
30
- private readonly _chainId;
31
- private readonly _address;
32
- constructor(options?: PayClientOptions);
33
- private getContracts;
34
- payDirect(to: string, amount: number, options?: {
35
- memo?: string;
36
- }): Promise<DirectPaymentResult>;
37
- openTab(provider: string, amount: number, options: {
38
- maxChargePerCall: number;
39
- }): Promise<Tab>;
40
- closeTab(tabId: string): Promise<Tab>;
41
- topUpTab(tabId: string, amount: number): Promise<Tab>;
42
- listTabs(): Promise<Tab[]>;
43
- getTab(tabId: string): Promise<Tab>;
44
- private static readonly X402_TAB_MULTIPLIER;
45
- request(url: string, options?: {
46
- method?: string;
47
- body?: unknown;
48
- headers?: Record<string, string>;
49
- }): Promise<Response>;
50
- /**
51
- * Parse x402 V2 payment requirements from a 402 response.
52
- *
53
- * Checks PAYMENT-REQUIRED header first (base64-encoded JSON),
54
- * falls back to response body for requirements.
55
- */
56
- private parse402Requirements;
57
- private static extractRequirements;
58
- private handle402;
59
- private settleViaDirect;
60
- private settleViaTab;
61
- getStatus(): Promise<StatusResponse>;
62
- registerWebhook(url: string, options?: {
63
- events?: string[];
64
- secret?: string;
65
- }): Promise<WebhookRegistration>;
66
- listWebhooks(): Promise<WebhookRegistration[]>;
67
- deleteWebhook(webhookId: string): Promise<void>;
68
- /** Create a one-time fund link via the server. Returns the dashboard URL. */
69
- createFundLink(options?: {
70
- messages?: unknown[];
71
- agentName?: string;
72
- }): Promise<string>;
73
- /** Create a one-time withdraw link via the server. Returns the dashboard URL. */
74
- createWithdrawLink(options?: {
75
- messages?: unknown[];
76
- agentName?: string;
77
- }): Promise<string>;
78
- /** Search for discoverable paid API services. Public, no auth required. */
79
- discover(options?: DiscoverOptions): Promise<DiscoverService[]>;
80
- /**
81
- * Prepare and sign a USDC EIP-2612 permit.
82
- *
83
- * 1. Calls GET /api/v1/permit/prepare to get the EIP-712 hash
84
- * 2. Signs the hash with the agent's private key
85
- * 3. Returns {nonce, deadline, v, r, s} for inclusion in payment body
86
- */
87
- private prepareAndSignPermit;
88
- private authHeaders;
89
- private get;
90
- private post;
91
- private del;
92
- private handleResponse;
93
- }
94
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js DELETED
@@ -1,443 +0,0 @@
1
- /**
2
- * PayClient — single entry point for the pay SDK.
3
- */
4
- import { PayNetworkError, PayServerError, PayValidationError, } from "./errors.js";
5
- import { createSigner } from "./signer.js";
6
- import { buildAuthHeaders, buildAuthHeadersWithSigner, } from "./auth.js";
7
- import { sign as viemSign, serializeSignature, privateKeyToAccount } from "viem/accounts";
8
- import { signTransferAuthorization, combinedSignature, } from "./eip3009.js";
9
- const ADDRESS_RE = /^0x[0-9a-fA-F]{40}$/;
10
- const DIRECT_MIN = 1_000_000; // $1.00 USDC
11
- const TAB_MIN = 5_000_000; // $5.00 USDC
12
- export const DEFAULT_API_URL = "https://pay-skill.com/api/v1";
13
- function validateAddress(address, field = "address") {
14
- if (!ADDRESS_RE.test(address)) {
15
- throw new PayValidationError(`Invalid Ethereum address: ${address}`, field);
16
- }
17
- }
18
- function validateAmount(amount, minimum, field = "amount") {
19
- if (amount < minimum) {
20
- const minUsd = minimum / 1_000_000;
21
- throw new PayValidationError(`Amount ${amount} below minimum ($${minUsd.toFixed(2)})`, field);
22
- }
23
- }
24
- export class PayClient {
25
- apiUrl;
26
- /** URL path prefix extracted from apiUrl (e.g., "/api/v1"). */
27
- _basePath;
28
- signer;
29
- _privateKey;
30
- _authConfig;
31
- _chainId;
32
- _address;
33
- constructor(options = {}) {
34
- this.apiUrl = (options.apiUrl ?? DEFAULT_API_URL).replace(/\/+$/, "");
35
- // Extract the URL path to prepend to auth signing paths.
36
- // e.g., "http://host:3001/api/v1" → "/api/v1"
37
- try {
38
- this._basePath = new URL(this.apiUrl).pathname.replace(/\/+$/, "");
39
- }
40
- catch {
41
- this._basePath = "";
42
- }
43
- if (typeof options.signer === "object") {
44
- this.signer = options.signer;
45
- }
46
- else {
47
- this.signer = createSigner(options.signer ?? "cli", {
48
- ...options.signerOptions,
49
- key: options.signerOptions?.key ?? options.privateKey,
50
- });
51
- }
52
- // Private key for direct signing (preferred over Signer for auth)
53
- this._privateKey = options.privateKey
54
- ? (options.privateKey.startsWith("0x")
55
- ? options.privateKey
56
- : "0x" + options.privateKey)
57
- : null;
58
- this._chainId = options.chainId ?? 8453;
59
- this._address = this._privateKey
60
- ? privateKeyToAccount(this._privateKey).address
61
- : (options.signerOptions?.address ?? "");
62
- // Auth config for EIP-712 domain
63
- if (options.chainId && options.routerAddress) {
64
- this._authConfig = {
65
- chainId: options.chainId,
66
- routerAddress: options.routerAddress,
67
- };
68
- }
69
- else {
70
- this._authConfig = null;
71
- }
72
- }
73
- async getContracts() {
74
- return this.get("/contracts");
75
- }
76
- // ── Direct Payment ──────────────────────────────────────────────
77
- async payDirect(to, amount, options = {}) {
78
- validateAddress(to, "to");
79
- validateAmount(amount, DIRECT_MIN);
80
- // Get contract addresses to determine the spender
81
- const contracts = await this.get("/contracts");
82
- const permit = await this.prepareAndSignPermit(amount, contracts.direct);
83
- const data = await this.post("/direct", {
84
- to,
85
- amount,
86
- memo: options.memo ?? "",
87
- permit,
88
- });
89
- return data;
90
- }
91
- // ── Tab Management ──────────────────────────────────────────────
92
- async openTab(provider, amount, options) {
93
- validateAddress(provider, "provider");
94
- validateAmount(amount, TAB_MIN);
95
- if (options.maxChargePerCall <= 0) {
96
- throw new PayValidationError("maxChargePerCall must be positive", "maxChargePerCall");
97
- }
98
- const contracts = await this.get("/contracts");
99
- const permit = await this.prepareAndSignPermit(amount, contracts.tab);
100
- return this.post("/tabs", {
101
- provider,
102
- amount,
103
- max_charge_per_call: options.maxChargePerCall,
104
- permit,
105
- });
106
- }
107
- async closeTab(tabId) {
108
- return this.post(`/tabs/${tabId}/close`, {});
109
- }
110
- async topUpTab(tabId, amount) {
111
- validateAmount(amount, 1, "amount");
112
- const contracts = await this.get("/contracts");
113
- const permit = await this.prepareAndSignPermit(amount, contracts.tab);
114
- return this.post(`/tabs/${tabId}/topup`, { amount, permit });
115
- }
116
- async listTabs() {
117
- return this.get("/tabs");
118
- }
119
- async getTab(tabId) {
120
- return this.get(`/tabs/${tabId}`);
121
- }
122
- // ── x402 ────────────────────────────────────────────────────────
123
- static X402_TAB_MULTIPLIER = 10;
124
- async request(url, options = {}) {
125
- const method = options.method ?? "GET";
126
- const headers = options.headers ?? {};
127
- const bodyStr = options.body ? JSON.stringify(options.body) : undefined;
128
- const resp = await fetch(url, { method, body: bodyStr, headers });
129
- if (resp.status !== 402)
130
- return resp;
131
- return this.handle402(resp, url, method, bodyStr, headers);
132
- }
133
- /**
134
- * Parse x402 V2 payment requirements from a 402 response.
135
- *
136
- * Checks PAYMENT-REQUIRED header first (base64-encoded JSON),
137
- * falls back to response body for requirements.
138
- */
139
- async parse402Requirements(resp) {
140
- // Try PAYMENT-REQUIRED header (base64-encoded JSON)
141
- const prHeader = resp.headers.get("payment-required");
142
- if (prHeader) {
143
- try {
144
- const decoded = JSON.parse(atob(prHeader));
145
- return PayClient.extractRequirements(decoded);
146
- }
147
- catch {
148
- // Fall through to body parsing
149
- }
150
- }
151
- // Fallback: parse from response body
152
- const body = (await resp.json());
153
- const requirements = (body.requirements ?? body);
154
- return PayClient.extractRequirements(requirements);
155
- }
156
- static extractRequirements(obj) {
157
- // x402 v2 format: { accepts: [{ payTo, amount, extra: { settlement } }] }
158
- const accepts = obj.accepts;
159
- if (Array.isArray(accepts) && accepts.length > 0) {
160
- const offer = accepts[0];
161
- const extra = (offer.extra ?? {});
162
- return {
163
- settlement: String(extra.settlement ?? "direct"),
164
- amount: Number(offer.amount ?? 0),
165
- to: String(offer.payTo ?? ""),
166
- accepted: offer,
167
- };
168
- }
169
- // Legacy v1 format
170
- return {
171
- settlement: String(obj.settlement ?? "direct"),
172
- amount: Number(obj.amount ?? 0),
173
- to: String(obj.to ?? ""),
174
- };
175
- }
176
- async handle402(resp, url, method, body, headers) {
177
- const reqs = await this.parse402Requirements(resp);
178
- if (reqs.settlement === "tab") {
179
- return this.settleViaTab(url, method, body, headers, reqs);
180
- }
181
- return this.settleViaDirect(url, method, body, headers, reqs);
182
- }
183
- async settleViaDirect(url, method, body, headers, reqs) {
184
- if (!this._privateKey) {
185
- throw new PayValidationError("privateKey required for x402 direct settlement", "privateKey");
186
- }
187
- const contracts = await this.getContracts();
188
- const auth = await signTransferAuthorization(this._privateKey, reqs.to, reqs.amount, this._chainId, contracts.usdc);
189
- const paymentPayload = {
190
- x402Version: 2,
191
- accepted: reqs.accepted ?? {
192
- scheme: "exact",
193
- network: `eip155:${this._chainId}`,
194
- amount: String(reqs.amount),
195
- payTo: reqs.to,
196
- },
197
- payload: {
198
- signature: combinedSignature(auth),
199
- authorization: {
200
- from: auth.from,
201
- to: auth.to,
202
- value: String(reqs.amount),
203
- validAfter: "0",
204
- validBefore: "0",
205
- nonce: auth.nonce,
206
- },
207
- },
208
- extensions: {},
209
- };
210
- return fetch(url, {
211
- method,
212
- body,
213
- headers: {
214
- ...headers,
215
- "Content-Type": "application/json",
216
- "PAYMENT-SIGNATURE": btoa(JSON.stringify(paymentPayload)),
217
- },
218
- });
219
- }
220
- async settleViaTab(url, method, body, headers, reqs) {
221
- const tabs = await this.listTabs();
222
- let tab = tabs.find((t) => t.provider === reqs.to && t.status === "open");
223
- if (!tab) {
224
- const tabAmount = Math.max(reqs.amount * PayClient.X402_TAB_MULTIPLIER, TAB_MIN);
225
- tab = await this.openTab(reqs.to, tabAmount, {
226
- maxChargePerCall: reqs.amount,
227
- });
228
- }
229
- const chargeData = await this.post(`/tabs/${tab.tabId}/charge`, { amount: reqs.amount });
230
- const paymentPayload = {
231
- x402Version: 2,
232
- accepted: reqs.accepted ?? {
233
- scheme: "exact",
234
- network: `eip155:${this._chainId}`,
235
- amount: String(reqs.amount),
236
- payTo: reqs.to,
237
- },
238
- payload: {
239
- authorization: { from: this._address },
240
- },
241
- extensions: {
242
- pay: {
243
- settlement: "tab",
244
- tabId: tab.tabId,
245
- chargeId: chargeData.charge_id ?? "",
246
- },
247
- },
248
- };
249
- return fetch(url, {
250
- method,
251
- body,
252
- headers: {
253
- ...headers,
254
- "Content-Type": "application/json",
255
- "PAYMENT-SIGNATURE": btoa(JSON.stringify(paymentPayload)),
256
- },
257
- });
258
- }
259
- // ── Wallet ──────────────────────────────────────────────────────
260
- async getStatus() {
261
- const raw = await this.get("/status");
262
- return {
263
- address: raw.wallet,
264
- balance: raw.balance_usdc ? Number(raw.balance_usdc) : 0,
265
- openTabs: [],
266
- };
267
- }
268
- // ── Webhooks ────────────────────────────────────────────────────
269
- async registerWebhook(url, options = {}) {
270
- const payload = { url };
271
- if (options.events)
272
- payload.events = options.events;
273
- if (options.secret)
274
- payload.secret = options.secret;
275
- const raw = await this.post("/webhooks", payload);
276
- return { webhookId: raw.id, url: raw.url, events: raw.events };
277
- }
278
- async listWebhooks() {
279
- const raw = await this.get("/webhooks");
280
- return raw.map(w => ({ webhookId: w.id, url: w.url, events: w.events }));
281
- }
282
- async deleteWebhook(webhookId) {
283
- await this.del(`/webhooks/${webhookId}`);
284
- }
285
- // ── Funding ─────────────────────────────────────────────────────
286
- /** Create a one-time fund link via the server. Returns the dashboard URL. */
287
- async createFundLink(options) {
288
- const data = await this.post("/links/fund", {
289
- messages: options?.messages ?? [],
290
- agent_name: options?.agentName,
291
- });
292
- return data.url;
293
- }
294
- /** Create a one-time withdraw link via the server. Returns the dashboard URL. */
295
- async createWithdrawLink(options) {
296
- const data = await this.post("/links/withdraw", {
297
- messages: options?.messages ?? [],
298
- agent_name: options?.agentName,
299
- });
300
- return data.url;
301
- }
302
- // ── Discovery ──────────────────────────────────────────────────
303
- /** Search for discoverable paid API services. Public, no auth required. */
304
- async discover(options) {
305
- const params = new URLSearchParams();
306
- if (options?.query)
307
- params.set("q", options.query);
308
- if (options?.sort)
309
- params.set("sort", options.sort);
310
- if (options?.category)
311
- params.set("category", options.category);
312
- if (options?.settlement)
313
- params.set("settlement", options.settlement);
314
- const qs = params.toString();
315
- const url = `${this.apiUrl}/discover${qs ? `?${qs}` : ""}`;
316
- const resp = await fetch(url);
317
- if (!resp.ok) {
318
- const body = await resp.text().catch(() => "");
319
- throw new PayServerError(`discover failed: ${body}`, resp.status);
320
- }
321
- const data = (await resp.json());
322
- return data.services;
323
- }
324
- // ── Permit signing ────────────────────────────────────────────
325
- /**
326
- * Prepare and sign a USDC EIP-2612 permit.
327
- *
328
- * 1. Calls GET /api/v1/permit/prepare to get the EIP-712 hash
329
- * 2. Signs the hash with the agent's private key
330
- * 3. Returns {nonce, deadline, v, r, s} for inclusion in payment body
331
- */
332
- async prepareAndSignPermit(amount, spender) {
333
- if (!this._privateKey) {
334
- throw new PayValidationError("privateKey required for permit signing", "privateKey");
335
- }
336
- const prepare = await this.post("/permit/prepare", { amount, spender });
337
- // Sign the hash
338
- const hashHex = prepare.hash;
339
- const raw = await viemSign({ hash: hashHex, privateKey: this._privateKey });
340
- const sigHex = serializeSignature(raw);
341
- // Parse signature into v, r, s
342
- const sigBytes = Buffer.from(sigHex.slice(2), "hex");
343
- const r = "0x" + sigBytes.subarray(0, 32).toString("hex");
344
- const s = "0x" + sigBytes.subarray(32, 64).toString("hex");
345
- const v = sigBytes[64];
346
- return {
347
- nonce: prepare.nonce,
348
- deadline: prepare.deadline,
349
- v,
350
- r,
351
- s,
352
- };
353
- }
354
- // ── Auth headers ──────────────────────────────────────────────
355
- async authHeaders(method, path) {
356
- if (!this._authConfig)
357
- return null;
358
- // Sign only the path portion (no query string) — server verifies against uri.path().
359
- // e.g., basePath="/api/v1" + path="/status" → "/api/v1/status"
360
- const fullPath = this._basePath + path.split("?")[0];
361
- if (this._privateKey) {
362
- return buildAuthHeaders(this._privateKey, method, fullPath, this._authConfig);
363
- }
364
- if (this.signer.address) {
365
- return buildAuthHeadersWithSigner(this.signer, method, fullPath, this._authConfig);
366
- }
367
- return null;
368
- }
369
- // ── HTTP helpers ────────────────────────────────────────────────
370
- async get(path) {
371
- let resp;
372
- try {
373
- const auth = await this.authHeaders("GET", path);
374
- resp = await fetch(`${this.apiUrl}${path}`, {
375
- method: "GET",
376
- headers: {
377
- "Content-Type": "application/json",
378
- ...auth,
379
- },
380
- });
381
- }
382
- catch (e) {
383
- throw new PayNetworkError(String(e));
384
- }
385
- return this.handleResponse(resp);
386
- }
387
- async post(path, payload) {
388
- let resp;
389
- try {
390
- const auth = await this.authHeaders("POST", path);
391
- resp = await fetch(`${this.apiUrl}${path}`, {
392
- method: "POST",
393
- headers: {
394
- "Content-Type": "application/json",
395
- ...auth,
396
- },
397
- body: JSON.stringify(payload),
398
- });
399
- }
400
- catch (e) {
401
- throw new PayNetworkError(String(e));
402
- }
403
- return this.handleResponse(resp);
404
- }
405
- async del(path) {
406
- let resp;
407
- try {
408
- const auth = await this.authHeaders("DELETE", path);
409
- resp = await fetch(`${this.apiUrl}${path}`, {
410
- method: "DELETE",
411
- headers: {
412
- "Content-Type": "application/json",
413
- ...auth,
414
- },
415
- });
416
- }
417
- catch (e) {
418
- throw new PayNetworkError(String(e));
419
- }
420
- if (resp.status >= 400) {
421
- const text = await resp.text();
422
- throw new PayServerError(text, resp.status);
423
- }
424
- }
425
- async handleResponse(resp) {
426
- if (resp.status >= 400) {
427
- let msg;
428
- try {
429
- const body = (await resp.json());
430
- msg = body.error ?? (await resp.text());
431
- }
432
- catch {
433
- msg = await resp.text();
434
- }
435
- throw new PayServerError(msg, resp.status);
436
- }
437
- if (resp.status === 204) {
438
- return undefined;
439
- }
440
- return (await resp.json());
441
- }
442
- }
443
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/models.d.ts DELETED
@@ -1,78 +0,0 @@
1
- /** Tab lifecycle states. */
2
- export type TabStatus = "open" | "closed";
3
- /** Result of a direct payment. */
4
- export interface DirectPaymentResult {
5
- txHash: string;
6
- status: string;
7
- /** Amount in USDC micro-units (6 decimals). */
8
- amount: number;
9
- /** Fee deducted in USDC micro-units. */
10
- fee: number;
11
- }
12
- /** Tab state. */
13
- export interface Tab {
14
- tabId: string;
15
- provider: string;
16
- /** Total locked amount in USDC micro-units. */
17
- amount: number;
18
- /** Remaining balance in USDC micro-units. */
19
- balanceRemaining: number;
20
- /** Total charged so far in USDC micro-units. */
21
- totalCharged: number;
22
- /** Number of charges made. */
23
- chargeCount: number;
24
- /** Max per-charge limit in USDC micro-units. */
25
- maxChargePerCall: number;
26
- /** Total withdrawn so far in USDC micro-units. */
27
- totalWithdrawn: number;
28
- status: TabStatus;
29
- /** Number of charges buffered awaiting batch settlement. */
30
- pendingChargeCount: number;
31
- /** Total amount of pending charges in USDC micro-units. */
32
- pendingChargeTotal: number;
33
- /** balance_remaining minus pending charges — the true available balance. */
34
- effectiveBalance: number;
35
- }
36
- /** Wallet status. */
37
- export interface StatusResponse {
38
- address: string;
39
- /** USDC balance in micro-units. */
40
- balance: number;
41
- openTabs: Tab[];
42
- }
43
- /** Discoverable service from the facilitator catalog. */
44
- export interface DiscoverService {
45
- name: string;
46
- description: string;
47
- /** Public base URL for pay request (e.g. "https://weather.example.com"). */
48
- baseUrl: string;
49
- category: string;
50
- keywords: string[];
51
- routes: {
52
- path: string;
53
- method?: string;
54
- price?: string;
55
- settlement?: string;
56
- free?: boolean;
57
- }[];
58
- /** URL to API documentation (OpenAPI spec, docs page, etc). */
59
- docsUrl?: string;
60
- }
61
- /** Options for discover search. */
62
- export interface DiscoverOptions {
63
- /** Search query (matches keywords and description). */
64
- query?: string;
65
- /** Sort order: "volume" (default), "newest", "price_asc", "price_desc". */
66
- sort?: string;
67
- /** Filter by category. */
68
- category?: string;
69
- /** Filter by settlement mode: "direct" or "tab". */
70
- settlement?: string;
71
- }
72
- /** Registered webhook. */
73
- export interface WebhookRegistration {
74
- webhookId: string;
75
- url: string;
76
- events: string[];
77
- }
78
- //# sourceMappingURL=models.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE1C,kCAAkC;AAClC,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,iBAAiB;AACjB,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,gBAAgB,EAAE,MAAM,CAAC;IACzB,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,4DAA4D;IAC5D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2DAA2D;IAC3D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,4EAA4E;IAC5E,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAqB;AACrB,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,GAAG,EAAE,CAAC;CACjB;AAED,yDAAyD;AACzD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IACjG,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,mCAAmC;AACnC,MAAM,WAAW,eAAe;IAC9B,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,0BAA0B;AAC1B,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB"}
package/dist/models.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=models.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":""}