@agirails/sdk 2.2.0 → 2.2.2

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 (120) hide show
  1. package/dist/ACTPClient.d.ts +200 -0
  2. package/dist/ACTPClient.d.ts.map +1 -1
  3. package/dist/ACTPClient.js +266 -2
  4. package/dist/ACTPClient.js.map +1 -1
  5. package/dist/abi/ACTPKernel.json +16 -0
  6. package/dist/adapters/AdapterRegistry.d.ts +140 -0
  7. package/dist/adapters/AdapterRegistry.d.ts.map +1 -0
  8. package/dist/adapters/AdapterRegistry.js +166 -0
  9. package/dist/adapters/AdapterRegistry.js.map +1 -0
  10. package/dist/adapters/AdapterRouter.d.ts +165 -0
  11. package/dist/adapters/AdapterRouter.d.ts.map +1 -0
  12. package/dist/adapters/AdapterRouter.js +350 -0
  13. package/dist/adapters/AdapterRouter.js.map +1 -0
  14. package/dist/adapters/BaseAdapter.d.ts +17 -0
  15. package/dist/adapters/BaseAdapter.d.ts.map +1 -1
  16. package/dist/adapters/BaseAdapter.js +21 -0
  17. package/dist/adapters/BaseAdapter.js.map +1 -1
  18. package/dist/adapters/BasicAdapter.d.ts +72 -3
  19. package/dist/adapters/BasicAdapter.d.ts.map +1 -1
  20. package/dist/adapters/BasicAdapter.js +170 -2
  21. package/dist/adapters/BasicAdapter.js.map +1 -1
  22. package/dist/adapters/IAdapter.d.ts +230 -0
  23. package/dist/adapters/IAdapter.d.ts.map +1 -0
  24. package/dist/adapters/IAdapter.js +44 -0
  25. package/dist/adapters/IAdapter.js.map +1 -0
  26. package/dist/adapters/StandardAdapter.d.ts +70 -1
  27. package/dist/adapters/StandardAdapter.d.ts.map +1 -1
  28. package/dist/adapters/StandardAdapter.js +184 -0
  29. package/dist/adapters/StandardAdapter.js.map +1 -1
  30. package/dist/adapters/X402Adapter.d.ts +208 -0
  31. package/dist/adapters/X402Adapter.d.ts.map +1 -0
  32. package/dist/adapters/X402Adapter.js +423 -0
  33. package/dist/adapters/X402Adapter.js.map +1 -0
  34. package/dist/adapters/index.d.ts +8 -0
  35. package/dist/adapters/index.d.ts.map +1 -1
  36. package/dist/adapters/index.js +19 -1
  37. package/dist/adapters/index.js.map +1 -1
  38. package/dist/cli/commands/init.d.ts +4 -0
  39. package/dist/cli/commands/init.d.ts.map +1 -1
  40. package/dist/cli/commands/init.js +184 -4
  41. package/dist/cli/commands/init.js.map +1 -1
  42. package/dist/config/networks.js +3 -3
  43. package/dist/config/networks.js.map +1 -1
  44. package/dist/erc8004/ERC8004Bridge.d.ts +155 -0
  45. package/dist/erc8004/ERC8004Bridge.d.ts.map +1 -0
  46. package/dist/erc8004/ERC8004Bridge.js +325 -0
  47. package/dist/erc8004/ERC8004Bridge.js.map +1 -0
  48. package/dist/erc8004/ReputationReporter.d.ts +223 -0
  49. package/dist/erc8004/ReputationReporter.d.ts.map +1 -0
  50. package/dist/erc8004/ReputationReporter.js +266 -0
  51. package/dist/erc8004/ReputationReporter.js.map +1 -0
  52. package/dist/erc8004/index.d.ts +36 -0
  53. package/dist/erc8004/index.d.ts.map +1 -0
  54. package/dist/erc8004/index.js +46 -0
  55. package/dist/erc8004/index.js.map +1 -0
  56. package/dist/index.d.ts +5 -0
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +21 -2
  59. package/dist/index.js.map +1 -1
  60. package/dist/protocol/ACTPKernel.d.ts +1 -1
  61. package/dist/protocol/ACTPKernel.d.ts.map +1 -1
  62. package/dist/protocol/ACTPKernel.js +16 -7
  63. package/dist/protocol/ACTPKernel.js.map +1 -1
  64. package/dist/runtime/BlockchainRuntime.d.ts.map +1 -1
  65. package/dist/runtime/BlockchainRuntime.js +2 -0
  66. package/dist/runtime/BlockchainRuntime.js.map +1 -1
  67. package/dist/runtime/IACTPRuntime.d.ts +6 -0
  68. package/dist/runtime/IACTPRuntime.d.ts.map +1 -1
  69. package/dist/runtime/MockRuntime.d.ts +12 -0
  70. package/dist/runtime/MockRuntime.d.ts.map +1 -1
  71. package/dist/runtime/MockRuntime.js +41 -0
  72. package/dist/runtime/MockRuntime.js.map +1 -1
  73. package/dist/runtime/types/MockState.d.ts +6 -0
  74. package/dist/runtime/types/MockState.d.ts.map +1 -1
  75. package/dist/runtime/types/MockState.js.map +1 -1
  76. package/dist/types/adapter.d.ts +359 -0
  77. package/dist/types/adapter.d.ts.map +1 -0
  78. package/dist/types/adapter.js +115 -0
  79. package/dist/types/adapter.js.map +1 -0
  80. package/dist/types/erc8004.d.ts +184 -0
  81. package/dist/types/erc8004.d.ts.map +1 -0
  82. package/dist/types/erc8004.js +132 -0
  83. package/dist/types/erc8004.js.map +1 -0
  84. package/dist/types/index.d.ts +3 -0
  85. package/dist/types/index.d.ts.map +1 -1
  86. package/dist/types/index.js +3 -0
  87. package/dist/types/index.js.map +1 -1
  88. package/dist/types/transaction.d.ts +12 -0
  89. package/dist/types/transaction.d.ts.map +1 -1
  90. package/dist/types/x402.d.ts +162 -0
  91. package/dist/types/x402.d.ts.map +1 -0
  92. package/dist/types/x402.js +162 -0
  93. package/dist/types/x402.js.map +1 -0
  94. package/package.json +3 -2
  95. package/src/ACTPClient.ts +318 -2
  96. package/src/abi/ACTPKernel.json +16 -0
  97. package/src/adapters/AdapterRegistry.ts +173 -0
  98. package/src/adapters/AdapterRouter.ts +417 -0
  99. package/src/adapters/BaseAdapter.ts +25 -0
  100. package/src/adapters/BasicAdapter.ts +199 -3
  101. package/src/adapters/IAdapter.ts +292 -0
  102. package/src/adapters/StandardAdapter.ts +220 -1
  103. package/src/adapters/X402Adapter.ts +653 -0
  104. package/src/adapters/index.ts +27 -0
  105. package/src/cli/commands/init.ts +208 -3
  106. package/src/config/networks.ts +3 -3
  107. package/src/erc8004/ERC8004Bridge.ts +461 -0
  108. package/src/erc8004/ReputationReporter.ts +472 -0
  109. package/src/erc8004/index.ts +61 -0
  110. package/src/index.ts +43 -0
  111. package/src/protocol/ACTPKernel.ts +26 -7
  112. package/src/runtime/BlockchainRuntime.ts +2 -0
  113. package/src/runtime/IACTPRuntime.ts +6 -0
  114. package/src/runtime/MockRuntime.ts +42 -0
  115. package/src/runtime/types/MockState.ts +7 -0
  116. package/src/types/adapter.ts +296 -0
  117. package/src/types/erc8004.ts +293 -0
  118. package/src/types/index.ts +3 -0
  119. package/src/types/transaction.ts +12 -0
  120. package/src/types/x402.ts +219 -0
@@ -0,0 +1,219 @@
1
+ /**
2
+ * X402 Protocol Types and Constants
3
+ *
4
+ * Defines types for the HTTP 402 Payment Required protocol implementation.
5
+ * X402 enables atomic, instant API payments - NO escrow, NO state machine.
6
+ *
7
+ * Key difference from ACTP:
8
+ * - ACTP: escrow → state machine → disputes → explicit release
9
+ * - x402: atomic payment → instant settlement → done
10
+ *
11
+ * Flow:
12
+ * 1. Client requests protected HTTPS endpoint → gets 402 response
13
+ * 2. Parse X-Payment-* headers (address, amount, network, deadline)
14
+ * 3. Execute atomic USDC transfer to provider (no escrow!)
15
+ * 4. Retry request with tx hash as proof
16
+ * 5. Return response - payment complete, no release needed
17
+ *
18
+ * Use x402 for: Simple API calls, instant delivery, low-value transactions
19
+ * Use ACTP for: Complex services, dispute protection, high-value transactions
20
+ *
21
+ * @module types/x402
22
+ */
23
+
24
+ // ============================================================================
25
+ // X402 Header Constants
26
+ // ============================================================================
27
+
28
+ /**
29
+ * Standard X402 payment headers sent in 402 responses.
30
+ *
31
+ * These headers inform the client how to pay for the requested resource.
32
+ */
33
+ export const X402_HEADERS = {
34
+ /** Indicates payment is required (must be "true") */
35
+ REQUIRED: 'x-payment-required',
36
+ /** Provider's wallet address (0x-prefixed) */
37
+ ADDRESS: 'x-payment-address',
38
+ /** Amount in USDC wei (6 decimals) */
39
+ AMOUNT: 'x-payment-amount',
40
+ /** Network identifier (base-mainnet or base-sepolia) */
41
+ NETWORK: 'x-payment-network',
42
+ /** Token type (currently only USDC) */
43
+ TOKEN: 'x-payment-token',
44
+ /** Unix timestamp deadline for payment */
45
+ DEADLINE: 'x-payment-deadline',
46
+ /** Optional: Dispute window in seconds */
47
+ DISPUTE_WINDOW: 'x-dispute-window',
48
+ /** Optional: Service identifier for tracking */
49
+ SERVICE_ID: 'x-service-id',
50
+ } as const;
51
+
52
+ /**
53
+ * Proof headers sent when retrying with payment.
54
+ *
55
+ * After creating an ACTP transaction, the client includes these
56
+ * headers to prove payment was made.
57
+ */
58
+ export const X402_PROOF_HEADERS = {
59
+ /** ACTP transaction ID (bytes32 hex) */
60
+ TX_ID: 'x-payment-tx-id',
61
+ /** ACTP escrow ID (bytes32 hex) */
62
+ ESCROW_ID: 'x-payment-escrow-id',
63
+ } as const;
64
+
65
+ // ============================================================================
66
+ // X402 Types
67
+ // ============================================================================
68
+
69
+ /** Supported networks for x402 payments */
70
+ export type X402Network = 'base-mainnet' | 'base-sepolia';
71
+
72
+ /** Supported tokens (currently only USDC) */
73
+ export type X402Token = 'USDC';
74
+
75
+ /**
76
+ * Parsed payment headers from HTTP 402 response.
77
+ *
78
+ * Contains all information needed to create an ACTP transaction
79
+ * for the requested resource.
80
+ */
81
+ export interface X402PaymentHeaders {
82
+ /** Whether payment is required (always true for valid 402) */
83
+ required: boolean;
84
+
85
+ /** Provider's wallet address (0x-prefixed, 42 chars) */
86
+ paymentAddress: string;
87
+
88
+ /** Amount in USDC wei (6 decimals, as string) */
89
+ amount: string;
90
+
91
+ /** Target network */
92
+ network: X402Network;
93
+
94
+ /** Token type */
95
+ token: X402Token;
96
+
97
+ /** Unix timestamp deadline for accepting payment */
98
+ deadline: number;
99
+
100
+ /** Optional: Dispute window in seconds */
101
+ disputeWindow?: number;
102
+
103
+ /** Optional: Service identifier for tracking/debugging */
104
+ serviceId?: string;
105
+ }
106
+
107
+ // ============================================================================
108
+ // X402 Error Handling
109
+ // ============================================================================
110
+
111
+ /**
112
+ * Error codes for X402 protocol failures.
113
+ *
114
+ * Used to identify specific error types and enable proper error handling.
115
+ */
116
+ export enum X402ErrorCode {
117
+ /** Response status was not 402 */
118
+ NOT_402_RESPONSE = 'NOT_402_RESPONSE',
119
+
120
+ /** Required X-Payment-* headers are missing */
121
+ MISSING_HEADERS = 'MISSING_HEADERS',
122
+
123
+ /** X-Payment-Amount is invalid (not a number, negative, etc.) */
124
+ INVALID_AMOUNT = 'INVALID_AMOUNT',
125
+
126
+ /** X-Payment-Address is not a valid Ethereum address */
127
+ INVALID_ADDRESS = 'INVALID_ADDRESS',
128
+
129
+ /** X-Payment-Network is not a recognized network */
130
+ INVALID_NETWORK = 'INVALID_NETWORK',
131
+
132
+ /** Server's network doesn't match client's expected network */
133
+ NETWORK_MISMATCH = 'NETWORK_MISMATCH',
134
+
135
+ /** Failed to create ACTP transaction or link escrow */
136
+ PAYMENT_FAILED = 'PAYMENT_FAILED',
137
+
138
+ /** Retry request with proof headers failed */
139
+ RETRY_FAILED = 'RETRY_FAILED',
140
+
141
+ /** X-Payment-Deadline has already passed */
142
+ DEADLINE_PASSED = 'DEADLINE_PASSED',
143
+
144
+ /** HTTPS protocol required but HTTP used */
145
+ INSECURE_PROTOCOL = 'INSECURE_PROTOCOL',
146
+ }
147
+
148
+ /**
149
+ * Custom error for X402 protocol failures.
150
+ *
151
+ * Provides structured error information for debugging and error handling.
152
+ *
153
+ * @example
154
+ * ```typescript
155
+ * try {
156
+ * await x402Adapter.pay({ to: 'https://api.example.com', amount: '10' });
157
+ * } catch (error) {
158
+ * if (error instanceof X402Error) {
159
+ * if (error.code === X402ErrorCode.NETWORK_MISMATCH) {
160
+ * console.error('Wrong network:', error.message);
161
+ * }
162
+ * }
163
+ * }
164
+ * ```
165
+ */
166
+ export class X402Error extends Error {
167
+ public readonly name = 'X402Error';
168
+
169
+ /**
170
+ * Creates a new X402Error.
171
+ *
172
+ * @param message - Human-readable error message
173
+ * @param code - Error code for programmatic handling
174
+ * @param response - Optional HTTP response that triggered the error
175
+ */
176
+ constructor(
177
+ message: string,
178
+ public readonly code: X402ErrorCode,
179
+ public readonly response?: Response
180
+ ) {
181
+ super(message);
182
+
183
+ // Maintains proper stack trace in V8 environments
184
+ if (Error.captureStackTrace) {
185
+ Error.captureStackTrace(this, X402Error);
186
+ }
187
+ }
188
+
189
+ /**
190
+ * Creates a detailed error message with code.
191
+ */
192
+ toString(): string {
193
+ return `X402Error [${this.code}]: ${this.message}`;
194
+ }
195
+ }
196
+
197
+ // ============================================================================
198
+ // Type Guards
199
+ // ============================================================================
200
+
201
+ /**
202
+ * Type guard to check if an error is an X402Error.
203
+ *
204
+ * @param error - Error to check
205
+ * @returns True if error is X402Error
206
+ */
207
+ export function isX402Error(error: unknown): error is X402Error {
208
+ return error instanceof X402Error;
209
+ }
210
+
211
+ /**
212
+ * Validates that a network string is a valid X402Network.
213
+ *
214
+ * @param network - Network string to validate
215
+ * @returns True if valid X402Network
216
+ */
217
+ export function isValidX402Network(network: string): network is X402Network {
218
+ return network === 'base-mainnet' || network === 'base-sepolia';
219
+ }