@envarai/envarpay 0.1.0-alpha.3 → 0.2.0-alpha.10

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 (72) hide show
  1. package/README.md +57 -145
  2. package/dist/commerce/alerts.d.ts +37 -0
  3. package/dist/commerce/alerts.js +127 -0
  4. package/dist/commerce/buyer-store.d.ts +101 -0
  5. package/dist/commerce/buyer-store.js +168 -0
  6. package/dist/commerce/buyer.d.ts +138 -0
  7. package/dist/commerce/buyer.js +775 -0
  8. package/dist/commerce/card.d.ts +5 -0
  9. package/dist/commerce/card.js +29 -0
  10. package/dist/commerce/chain.d.ts +24 -0
  11. package/dist/commerce/chain.js +146 -0
  12. package/dist/commerce/cli.d.ts +2 -0
  13. package/dist/commerce/cli.js +318 -0
  14. package/dist/commerce/client-runtime.d.ts +8 -0
  15. package/dist/commerce/client-runtime.js +7 -0
  16. package/dist/commerce/config.d.ts +11 -0
  17. package/dist/commerce/config.js +200 -0
  18. package/dist/commerce/envar-runtime.d.ts +47 -0
  19. package/dist/commerce/envar-runtime.js +276 -0
  20. package/dist/commerce/envar.d.ts +126 -0
  21. package/dist/commerce/envar.js +647 -0
  22. package/dist/commerce/http.d.ts +2 -0
  23. package/dist/commerce/http.js +34 -0
  24. package/dist/commerce/index.d.ts +5 -0
  25. package/dist/commerce/index.js +5 -0
  26. package/dist/commerce/management.d.ts +14 -0
  27. package/dist/commerce/management.js +140 -0
  28. package/dist/commerce/mpp-client.d.ts +70 -0
  29. package/dist/commerce/mpp-client.js +29 -0
  30. package/dist/commerce/mpp-runtime.d.ts +4 -0
  31. package/dist/commerce/mpp-runtime.js +4 -0
  32. package/dist/commerce/mpp.d.ts +53 -0
  33. package/dist/commerce/mpp.js +163 -0
  34. package/dist/commerce/native-skills.d.ts +27 -0
  35. package/dist/commerce/native-skills.js +176 -0
  36. package/dist/commerce/operations.d.ts +22 -0
  37. package/dist/commerce/operations.js +39 -0
  38. package/dist/commerce/peer-proxy.d.ts +44 -0
  39. package/dist/commerce/peer-proxy.js +673 -0
  40. package/dist/commerce/pricing.d.ts +12 -0
  41. package/dist/commerce/pricing.js +60 -0
  42. package/dist/commerce/runtime.d.ts +10 -0
  43. package/dist/commerce/runtime.js +10 -0
  44. package/dist/commerce/server.d.ts +61 -0
  45. package/dist/commerce/server.js +516 -0
  46. package/dist/commerce/setup.d.ts +18 -0
  47. package/dist/commerce/setup.js +344 -0
  48. package/dist/commerce/skill-gate.d.ts +54 -0
  49. package/dist/commerce/skill-gate.js +153 -0
  50. package/dist/commerce/store.d.ts +88 -0
  51. package/dist/commerce/store.js +473 -0
  52. package/dist/commerce/stripe-issuer.d.ts +41 -0
  53. package/dist/commerce/stripe-issuer.js +351 -0
  54. package/dist/commerce/stripe-provider.d.ts +11 -0
  55. package/dist/commerce/stripe-provider.js +132 -0
  56. package/dist/commerce/types.d.ts +138 -0
  57. package/dist/commerce/types.js +8 -0
  58. package/dist/commerce/upstream.d.ts +6 -0
  59. package/dist/commerce/upstream.js +103 -0
  60. package/dist/commerce/vault.d.ts +8 -0
  61. package/dist/commerce/vault.js +55 -0
  62. package/dist/commerce/x402.d.ts +38 -0
  63. package/dist/commerce/x402.js +181 -0
  64. package/examples/buyer-policy.json +18 -0
  65. package/examples/envar-integration-policy.json +18 -0
  66. package/examples/hermes-setup-probe.py +105 -0
  67. package/examples/native-skill-runner.py +197 -0
  68. package/examples/seller.json +52 -0
  69. package/package.json +75 -10
  70. package/schemas/buyer-policy.schema.json +253 -0
  71. package/schemas/envarpay.config.schema.json +383 -0
  72. package/schemas/quote.schema.json +91 -0
@@ -0,0 +1,138 @@
1
+ import type { ClientEvmSigner } from '@x402/evm';
2
+ import type { PaymentPayload, PaymentRequirements, SettleResponse } from '@x402/core/types';
3
+ import { type BuyerPolicy, type Input, type StandardA2APeer } from './types.js';
4
+ import { CredentialVault } from './vault.js';
5
+ import { BuyerStore, type BuyerQuote } from './buyer-store.js';
6
+ import { type MppAuthenticationAction, type MppBuyerOptions, type MppReceipt } from './mpp-client.js';
7
+ export interface BuyerPreviewInput {
8
+ cardUrl: string;
9
+ messageId: string;
10
+ input: Input;
11
+ offerId: string;
12
+ }
13
+ export interface BuyerConfirmInput {
14
+ previewId: string;
15
+ quoteToken: string;
16
+ messageId: string;
17
+ }
18
+ export interface BuyerAuthentication {
19
+ purchaseId: string;
20
+ action: MppAuthenticationAction | null;
21
+ }
22
+ export interface CommerceBuyerOptions {
23
+ policy: BuyerPolicy;
24
+ store: BuyerStore;
25
+ vault?: CredentialVault;
26
+ signer?: ClientEvmSigner;
27
+ mpp?: MppBuyerOptions;
28
+ peerTokens: Readonly<Record<string, string>>;
29
+ /** Override sibling /a2a only when the local wallet owner explicitly allows it. */
30
+ peerEndpoints?: Readonly<Record<string, string>>;
31
+ verifyReceipt?: (receipt: SettleResponse, payload: PaymentPayload, requirements: PaymentRequirements) => Promise<boolean>;
32
+ checkpoint?: (requirements: PaymentRequirements) => Promise<string>;
33
+ proveExpiredUnused?: (payload: PaymentPayload, requirements: PaymentRequirements) => Promise<boolean>;
34
+ findOriginalReceipt?: (payload: PaymentPayload, requirements: PaymentRequirements, fromBlock: string) => Promise<SettleResponse | undefined>;
35
+ fetchImpl?: typeof fetch;
36
+ }
37
+ export interface BuyerSnapshot {
38
+ id: string;
39
+ quoteToken: string;
40
+ messageId: string;
41
+ payer: string;
42
+ state: string;
43
+ quote: BuyerQuote;
44
+ paymentState: string;
45
+ executionState: string;
46
+ task?: Record<string, unknown>;
47
+ result?: unknown;
48
+ errorCode?: string;
49
+ continuation?: {
50
+ messageId: string;
51
+ state: 'pending' | 'unknown' | 'resolved';
52
+ input: Input;
53
+ };
54
+ receipt?: SettleResponse | MppReceipt;
55
+ nonce?: string;
56
+ createdAt: string;
57
+ updatedAt: string;
58
+ }
59
+ /** Independent x402 wallet; payment and execution state are deliberately separate. */
60
+ export declare class CommerceBuyer {
61
+ private readonly options;
62
+ readonly policy: BuyerPolicy;
63
+ private readonly fetchImpl;
64
+ private readonly active;
65
+ private timer?;
66
+ private readonly previews;
67
+ constructor(options: CommerceBuyerOptions);
68
+ /** Background observation only; never signs, replays credentials or changes reservations. */
69
+ start(intervalMs?: number): void;
70
+ stop(): Promise<void>;
71
+ policySnapshot(): {
72
+ capabilities: ("free" | "x402" | "mpp")[];
73
+ state: string;
74
+ payer: string | undefined;
75
+ budgets: {
76
+ reserved: string;
77
+ spent: string;
78
+ currency: string;
79
+ maxTotal: string;
80
+ period: "cumulative";
81
+ }[];
82
+ policyVersion: 1;
83
+ paymentsEnabled: boolean;
84
+ approval: "per_purchase" | "within_preapproved_limits";
85
+ peers: (StandardA2APeer | {
86
+ id: string;
87
+ cardUrl: string;
88
+ mode?: "envarpay";
89
+ protocol: "x402" | "mpp";
90
+ currency: string;
91
+ recipient: string;
92
+ maxPerPurchase: string;
93
+ } | {
94
+ id: string;
95
+ cardUrl: string;
96
+ mode?: "envarpay";
97
+ protocol: "free";
98
+ currency: null;
99
+ recipient: null;
100
+ maxPerPurchase: "0";
101
+ })[];
102
+ };
103
+ private peer;
104
+ private endpoint;
105
+ private scopedFetch;
106
+ private record;
107
+ private snapshot;
108
+ get(caller: string, id: string): BuyerSnapshot;
109
+ preview(caller: string, input: BuyerPreviewInput): Promise<BuyerSnapshot>;
110
+ private prepare;
111
+ private prepareStandard;
112
+ private prepareFree;
113
+ private replayFree;
114
+ private prepareMpp;
115
+ private mppCredential;
116
+ private purchaseMpp;
117
+ private savedMpp;
118
+ private verifyMpp;
119
+ private replayMpp;
120
+ private recoverMpp;
121
+ /** Owner-only provider read. No replay, token creation, reservation or payment transition. */
122
+ authentication(caller: string, id: string): Promise<BuyerAuthentication>;
123
+ private assertCurrentPolicy;
124
+ confirm(caller: string, input: BuyerConfirmInput): Promise<BuyerSnapshot>;
125
+ private exclusive;
126
+ private purchase;
127
+ private saved;
128
+ private verify;
129
+ private task;
130
+ private replay;
131
+ private client;
132
+ private observe;
133
+ continue(caller: string, id: string, input: {
134
+ messageId: string;
135
+ input: Input;
136
+ }): Promise<BuyerSnapshot>;
137
+ recover(caller: string, id: string): Promise<BuyerSnapshot>;
138
+ }