aether-agent-sdk 3.1.2 → 3.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.
package/README.md CHANGED
@@ -46,6 +46,7 @@ Aether is a production-ready SDK for building autonomous agent-to-agent systems
46
46
  ### Agent Framework
47
47
 
48
48
  - **SettlementAgent**: Executes x402 payments and settlement on-chain
49
+ - **PayGateClient**: Client for purchasing x402-protected content from PayGate
49
50
  - **x402 Facilitator**: Payment verification and USDC transfers
50
51
  - **Protocol Support**: A2A and AP2 protocol implementations
51
52
 
@@ -8,6 +8,7 @@
8
8
  export * from './agents';
9
9
  export * from './facilitator';
10
10
  export * from './marketplace';
11
+ export * from './paygate';
11
12
  export * from './utils';
12
13
  /**
13
14
  * SDK Version
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,cAAc,UAAU,CAAA;AAGxB,cAAc,eAAe,CAAA;AAG7B,cAAc,eAAe,CAAA;AAG7B,cAAc,SAAS,CAAA;AAEvB;;GAEG;AACH,eAAO,MAAM,OAAO,QAAc,CAAA;AAElC;;GAEG;AACH,eAAO,MAAM,QAAQ,QAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,cAAc,UAAU,CAAA;AAGxB,cAAc,eAAe,CAAA;AAG7B,cAAc,eAAe,CAAA;AAG7B,cAAc,WAAW,CAAA;AAGzB,cAAc,SAAS,CAAA;AAEvB;;GAEG;AACH,eAAO,MAAM,OAAO,QAAc,CAAA;AAElC;;GAEG;AACH,eAAO,MAAM,QAAQ,QAAW,CAAA"}
package/dist/src/index.js CHANGED
@@ -43,6 +43,8 @@ __exportStar(require("./agents"), exports);
43
43
  __exportStar(require("./facilitator"), exports);
44
44
  // Marketplace
45
45
  __exportStar(require("./marketplace"), exports);
46
+ // PayGate
47
+ __exportStar(require("./paygate"), exports);
46
48
  // Utils
47
49
  __exportStar(require("./utils"), exports);
48
50
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;AAEH,gDAAuB;AAEvB,SAAS,sBAAsB;IAC7B,IAAI,CAAC;QACH,kDAAkD;QAClD,MAAM,GAAG,GAAG,OAAO,CAAC,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAA;QACxE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAc,EAAE,OAAO,EAAE,GAAG,CAAC,OAAiB,EAAE,CAAA;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;IACzD,CAAC;AACH,CAAC;AAED,MAAM,GAAG,GAAG,sBAAsB,EAAE,CAAA;AAEpC,SAAS;AACT,2CAAwB;AAExB,cAAc;AACd,gDAA6B;AAE7B,cAAc;AACd,gDAA6B;AAE7B,QAAQ;AACR,0CAAuB;AAEvB;;GAEG;AACU,QAAA,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;AAElC;;GAEG;AACU,QAAA,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;AAEH,gDAAuB;AAEvB,SAAS,sBAAsB;IAC7B,IAAI,CAAC;QACH,kDAAkD;QAClD,MAAM,GAAG,GAAG,OAAO,CAAC,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAA;QACxE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAc,EAAE,OAAO,EAAE,GAAG,CAAC,OAAiB,EAAE,CAAA;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;IACzD,CAAC;AACH,CAAC;AAED,MAAM,GAAG,GAAG,sBAAsB,EAAE,CAAA;AAEpC,SAAS;AACT,2CAAwB;AAExB,cAAc;AACd,gDAA6B;AAE7B,cAAc;AACd,gDAA6B;AAE7B,UAAU;AACV,4CAAyB;AAEzB,QAAQ;AACR,0CAAuB;AAEvB;;GAEG;AACU,QAAA,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;AAElC;;GAEG;AACU,QAAA,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAA"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * PayGate Client
3
+ * Client for interacting with PayGate x402 payment protocol
4
+ */
5
+ import { Keypair } from '@solana/web3.js';
6
+ import { PayGateClientConfig, PaymentCurrency, Product, PaymentRequirements, PricingResponse, VerifyResponse, PurchaseOptions, PurchaseResult, ContentResult, PurchaseHistoryResponse } from './types';
7
+ /**
8
+ * Error class for PayGate-specific errors
9
+ */
10
+ export declare class PayGateError extends Error {
11
+ readonly statusCode: number | undefined;
12
+ readonly code: string | undefined;
13
+ constructor(message: string, statusCode?: number, code?: string);
14
+ }
15
+ /**
16
+ * PayGate client for purchasing and retrieving x402-protected content
17
+ */
18
+ export declare class PayGateClient {
19
+ private baseUrl;
20
+ private wallet;
21
+ private defaultCurrency;
22
+ private timeout;
23
+ private http;
24
+ private settlementAgent;
25
+ private logger;
26
+ constructor(config: PayGateClientConfig);
27
+ /**
28
+ * Initialize the client with a wallet for signing payments
29
+ * @param wallet Optional wallet keypair (loads from env if not provided)
30
+ */
31
+ init(wallet?: Keypair): Promise<void>;
32
+ /**
33
+ * Fetch product information
34
+ * @param productId The product ID
35
+ * @returns Product information
36
+ */
37
+ fetchProduct(productId: string): Promise<Product>;
38
+ /**
39
+ * Get full payment requirements from x402 402 response
40
+ * @param productId The product ID
41
+ * @returns Payment requirements
42
+ */
43
+ getPaymentRequirements(productId: string): Promise<PaymentRequirements>;
44
+ /**
45
+ * Get pricing options for a product (USDC/ATHR)
46
+ * @param productId The product ID
47
+ * @returns Pricing options
48
+ */
49
+ getPricing(productId: string): Promise<PricingResponse>;
50
+ /**
51
+ * Verify payment details before purchase
52
+ * @param productId The product ID
53
+ * @param amount The payment amount
54
+ * @param currency The payment currency
55
+ * @returns Verification result
56
+ */
57
+ verify(productId: string, amount: string, currency?: PaymentCurrency): Promise<VerifyResponse>;
58
+ /**
59
+ * Purchase a product using the x402 flow
60
+ * @param productId The product ID
61
+ * @param options Purchase options
62
+ * @returns Purchase result with transaction hash and delivery URL
63
+ */
64
+ purchase(productId: string, options?: PurchaseOptions): Promise<PurchaseResult>;
65
+ /**
66
+ * Get content for a purchased product
67
+ * @param productId The product ID
68
+ * @returns Content delivery result
69
+ */
70
+ getContent(productId: string): Promise<ContentResult>;
71
+ /**
72
+ * Get purchase history for the current wallet
73
+ * @returns Purchase history
74
+ */
75
+ getPurchaseHistory(): Promise<PurchaseHistoryResponse>;
76
+ /**
77
+ * Check if the current wallet has already purchased a product
78
+ * @param productId The product ID
79
+ * @returns True if already purchased
80
+ */
81
+ hasPurchased(productId: string): Promise<boolean>;
82
+ /**
83
+ * Get the current wallet public key
84
+ * @returns Wallet public key as base58 string, or undefined if not initialized
85
+ */
86
+ getWalletAddress(): string | undefined;
87
+ /**
88
+ * Handle and log errors consistently
89
+ */
90
+ private handleError;
91
+ }
92
+ //# sourceMappingURL=PayGateClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PayGateClient.d.ts","sourceRoot":"","sources":["../../../src/paygate/PayGateClient.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAKzC,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,OAAO,EACP,mBAAmB,EAEnB,eAAe,EACf,cAAc,EAEd,eAAe,EACf,cAAc,EACd,aAAa,EAEb,uBAAuB,EACxB,MAAM,SAAS,CAAA;AAEhB;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9C,SAAgB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;gBAE5B,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAMhE;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,MAAM,CAAgC;gBAElC,MAAM,EAAE,mBAAmB;IAiBvC;;;OAGG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B3C;;;;OAIG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkCvD;;;;OAIG;IACG,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA8B7E;;;;OAIG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAc7D;;;;;;OAMG;IACG,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,eAAsC,GAC/C,OAAO,CAAC,cAAc,CAAC;IA6B1B;;;;;OAKG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC;IA6EzF;;;;OAIG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA6B3D;;;OAGG;IACG,kBAAkB,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAmB5D;;;;OAIG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqBvD;;;OAGG;IACH,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAItC;;OAEG;IACH,OAAO,CAAC,WAAW;CAepB"}
@@ -0,0 +1,396 @@
1
+ "use strict";
2
+ /**
3
+ * PayGate Client
4
+ * Client for interacting with PayGate x402 payment protocol
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.PayGateClient = exports.PayGateError = void 0;
41
+ const axios_1 = __importStar(require("axios"));
42
+ const SettlementAgent_1 = require("../agents/SettlementAgent");
43
+ const wallet_1 = require("../utils/wallet");
44
+ const logger_1 = require("../utils/logger");
45
+ /**
46
+ * Error class for PayGate-specific errors
47
+ */
48
+ class PayGateError extends Error {
49
+ statusCode;
50
+ code;
51
+ constructor(message, statusCode, code) {
52
+ super(message);
53
+ this.name = 'PayGateError';
54
+ this.statusCode = statusCode;
55
+ this.code = code;
56
+ }
57
+ }
58
+ exports.PayGateError = PayGateError;
59
+ /**
60
+ * PayGate client for purchasing and retrieving x402-protected content
61
+ */
62
+ class PayGateClient {
63
+ baseUrl;
64
+ wallet;
65
+ defaultCurrency;
66
+ timeout;
67
+ http;
68
+ settlementAgent;
69
+ logger = (0, logger_1.createLogger)('PayGateClient');
70
+ constructor(config) {
71
+ this.baseUrl = config.baseUrl.replace(/\/$/, '');
72
+ this.wallet = config.wallet;
73
+ this.defaultCurrency = config.defaultCurrency || 'USDC';
74
+ this.timeout = config.timeout || 30000;
75
+ this.http = axios_1.default.create({
76
+ baseURL: this.baseUrl,
77
+ timeout: this.timeout,
78
+ headers: {
79
+ 'Content-Type': 'application/json'
80
+ }
81
+ });
82
+ this.logger.info(`PayGateClient initialized for ${this.baseUrl}`);
83
+ }
84
+ /**
85
+ * Initialize the client with a wallet for signing payments
86
+ * @param wallet Optional wallet keypair (loads from env if not provided)
87
+ */
88
+ async init(wallet) {
89
+ try {
90
+ if (wallet) {
91
+ this.wallet = wallet;
92
+ this.logger.info(`Initialized with provided wallet: ${wallet.publicKey.toBase58()}`);
93
+ }
94
+ else if (!this.wallet) {
95
+ const { keypair } = (0, wallet_1.loadKeypairFromEnv)();
96
+ if (keypair) {
97
+ this.wallet = keypair;
98
+ this.logger.info(`Initialized with wallet from env: ${keypair.publicKey.toBase58()}`);
99
+ }
100
+ else {
101
+ this.logger.warn('No wallet configured. Purchase functionality will be unavailable.');
102
+ }
103
+ }
104
+ if (this.wallet) {
105
+ this.settlementAgent = new SettlementAgent_1.SettlementAgent();
106
+ await this.settlementAgent.init(this.wallet);
107
+ this.logger.info('SettlementAgent initialized');
108
+ }
109
+ this.logger.info('PayGateClient ready');
110
+ }
111
+ catch (error) {
112
+ this.logger.error('Failed to initialize PayGateClient', error);
113
+ throw new PayGateError(`Initialization failed: ${error.message}`);
114
+ }
115
+ }
116
+ /**
117
+ * Fetch product information
118
+ * @param productId The product ID
119
+ * @returns Product information
120
+ */
121
+ async fetchProduct(productId) {
122
+ try {
123
+ this.logger.info(`Fetching product: ${productId}`);
124
+ const response = await this.http.get(`/pay/${productId}`, {
125
+ validateStatus: (status) => status === 200 || status === 402
126
+ });
127
+ if (response.status === 402) {
128
+ const data = response.data;
129
+ if (data.accepts && data.accepts.length > 0) {
130
+ const req = data.accepts[0];
131
+ if (req) {
132
+ return {
133
+ id: req.productId || productId,
134
+ title: req.description || productId,
135
+ description: req.description || '',
136
+ type: 'content_link',
137
+ price: req.amount,
138
+ currency: req.currency,
139
+ network: req.network,
140
+ status: 'active'
141
+ };
142
+ }
143
+ }
144
+ }
145
+ return response.data;
146
+ }
147
+ catch (error) {
148
+ this.handleError('fetchProduct', error);
149
+ throw error;
150
+ }
151
+ }
152
+ /**
153
+ * Get full payment requirements from x402 402 response
154
+ * @param productId The product ID
155
+ * @returns Payment requirements
156
+ */
157
+ async getPaymentRequirements(productId) {
158
+ try {
159
+ this.logger.info(`Getting payment requirements for: ${productId}`);
160
+ const response = await this.http.get(`/pay/${productId}`, {
161
+ validateStatus: (status) => status === 402
162
+ });
163
+ if (response.status !== 402) {
164
+ throw new PayGateError('Expected 402 Payment Required response', response.status);
165
+ }
166
+ const data = response.data;
167
+ if (!data.accepts || data.accepts.length === 0) {
168
+ throw new PayGateError('No payment requirements in response');
169
+ }
170
+ const requirements = data.accepts[0];
171
+ if (!requirements) {
172
+ throw new PayGateError('No payment requirements in response');
173
+ }
174
+ this.logger.info(`Payment requirements received for ${productId}`);
175
+ return requirements;
176
+ }
177
+ catch (error) {
178
+ this.handleError('getPaymentRequirements', error);
179
+ throw error;
180
+ }
181
+ }
182
+ /**
183
+ * Get pricing options for a product (USDC/ATHR)
184
+ * @param productId The product ID
185
+ * @returns Pricing options
186
+ */
187
+ async getPricing(productId) {
188
+ try {
189
+ this.logger.info(`Getting pricing for: ${productId}`);
190
+ const response = await this.http.get(`/x402/pricing/${productId}`);
191
+ this.logger.info(`Pricing received for ${productId}`);
192
+ return response.data;
193
+ }
194
+ catch (error) {
195
+ this.handleError('getPricing', error);
196
+ throw error;
197
+ }
198
+ }
199
+ /**
200
+ * Verify payment details before purchase
201
+ * @param productId The product ID
202
+ * @param amount The payment amount
203
+ * @param currency The payment currency
204
+ * @returns Verification result
205
+ */
206
+ async verify(productId, amount, currency = this.defaultCurrency) {
207
+ try {
208
+ if (!this.wallet) {
209
+ throw new PayGateError('Wallet not initialized. Call init() first.');
210
+ }
211
+ this.logger.info(`Verifying payment: ${amount} ${currency} for ${productId}`);
212
+ const response = await this.http.post('/x402/verify', {
213
+ productId,
214
+ amount,
215
+ currency,
216
+ payerWallet: this.wallet.publicKey.toBase58()
217
+ });
218
+ const result = response.data;
219
+ if (result.isValid) {
220
+ this.logger.info('Payment verification successful');
221
+ }
222
+ else {
223
+ this.logger.warn(`Payment verification failed: ${result.invalidReason}`);
224
+ }
225
+ return result;
226
+ }
227
+ catch (error) {
228
+ this.handleError('verify', error);
229
+ throw error;
230
+ }
231
+ }
232
+ /**
233
+ * Purchase a product using the x402 flow
234
+ * @param productId The product ID
235
+ * @param options Purchase options
236
+ * @returns Purchase result with transaction hash and delivery URL
237
+ */
238
+ async purchase(productId, options = {}) {
239
+ try {
240
+ if (!this.wallet) {
241
+ throw new PayGateError('Wallet not initialized. Call init() first.');
242
+ }
243
+ if (!this.settlementAgent) {
244
+ throw new PayGateError('SettlementAgent not initialized. Call init() first.');
245
+ }
246
+ const currency = options.currency || this.defaultCurrency;
247
+ this.logger.info(`Starting purchase flow for ${productId} with ${currency}`);
248
+ // Step 1: Get payment requirements
249
+ this.logger.info('Step 1: Getting payment requirements');
250
+ const requirements = await this.getPaymentRequirements(productId);
251
+ // Get pricing for selected currency if different from requirements
252
+ let amount = requirements.amount;
253
+ let tokenMint = requirements.tokenMint;
254
+ if (currency !== requirements.currency) {
255
+ const pricing = await this.getPricing(productId);
256
+ const option = pricing.options.find((o) => o.currency === currency);
257
+ if (option) {
258
+ amount = option.amount;
259
+ tokenMint = option.tokenMint;
260
+ }
261
+ }
262
+ if (options.amount !== undefined) {
263
+ amount = (options.amount * 1_000_000).toString();
264
+ }
265
+ // Step 2: Verify payment
266
+ this.logger.info('Step 2: Verifying payment');
267
+ const verification = await this.verify(productId, amount, currency);
268
+ if (!verification.isValid) {
269
+ throw new PayGateError(`Payment verification failed: ${verification.invalidReason}`);
270
+ }
271
+ // Step 3: Create signed payment via SettlementAgent
272
+ this.logger.info('Step 3: Creating signed payment');
273
+ const paymentToken = currency.toLowerCase();
274
+ const amountDecimal = Number(amount) / 1_000_000;
275
+ const paymentHeader = await this.settlementAgent.createSignedPayment(requirements.recipient, amountDecimal, { token: paymentToken });
276
+ // Step 4: Settle payment
277
+ this.logger.info('Step 4: Settling payment');
278
+ const settleResponse = await this.http.post('/x402/settle', {
279
+ paymentHeader,
280
+ productId
281
+ });
282
+ const settle = settleResponse.data;
283
+ if (!settle.success) {
284
+ throw new PayGateError(`Settlement failed: ${settle.error}`);
285
+ }
286
+ this.logger.info(`Purchase successful! TX: ${settle.txHash}`);
287
+ return {
288
+ transactionHash: settle.txHash,
289
+ productId,
290
+ amount,
291
+ currency,
292
+ deliveryUrl: settle.deliveryUrl
293
+ };
294
+ }
295
+ catch (error) {
296
+ this.handleError('purchase', error);
297
+ throw error;
298
+ }
299
+ }
300
+ /**
301
+ * Get content for a purchased product
302
+ * @param productId The product ID
303
+ * @returns Content delivery result
304
+ */
305
+ async getContent(productId) {
306
+ try {
307
+ if (!this.wallet) {
308
+ throw new PayGateError('Wallet not initialized. Call init() first.');
309
+ }
310
+ this.logger.info(`Getting content for: ${productId}`);
311
+ const response = await this.http.get(`/deliver/${productId}`, {
312
+ headers: {
313
+ 'X-Wallet-Address': this.wallet.publicKey.toBase58()
314
+ }
315
+ });
316
+ const delivery = response.data;
317
+ this.logger.info(`Content retrieved for ${productId}`);
318
+ return {
319
+ product: delivery.product,
320
+ downloadUrl: delivery.downloadUrl,
321
+ accessToken: delivery.accessToken,
322
+ purchaseDate: delivery.purchaseDate
323
+ };
324
+ }
325
+ catch (error) {
326
+ this.handleError('getContent', error);
327
+ throw error;
328
+ }
329
+ }
330
+ /**
331
+ * Get purchase history for the current wallet
332
+ * @returns Purchase history
333
+ */
334
+ async getPurchaseHistory() {
335
+ try {
336
+ if (!this.wallet) {
337
+ throw new PayGateError('Wallet not initialized. Call init() first.');
338
+ }
339
+ const walletAddress = this.wallet.publicKey.toBase58();
340
+ this.logger.info(`Getting purchase history for: ${walletAddress}`);
341
+ const response = await this.http.get(`/deliver/wallet/${walletAddress}`);
342
+ this.logger.info('Purchase history retrieved');
343
+ return response.data;
344
+ }
345
+ catch (error) {
346
+ this.handleError('getPurchaseHistory', error);
347
+ throw error;
348
+ }
349
+ }
350
+ /**
351
+ * Check if the current wallet has already purchased a product
352
+ * @param productId The product ID
353
+ * @returns True if already purchased
354
+ */
355
+ async hasPurchased(productId) {
356
+ try {
357
+ if (!this.wallet) {
358
+ return false;
359
+ }
360
+ this.logger.info(`Checking purchase status for: ${productId}`);
361
+ const history = await this.getPurchaseHistory();
362
+ const purchased = history.purchases.some((p) => p.productId === productId && p.status === 'completed');
363
+ this.logger.info(`Product ${productId} purchased: ${purchased}`);
364
+ return purchased;
365
+ }
366
+ catch (error) {
367
+ this.logger.warn('Error checking purchase status', error);
368
+ return false;
369
+ }
370
+ }
371
+ /**
372
+ * Get the current wallet public key
373
+ * @returns Wallet public key as base58 string, or undefined if not initialized
374
+ */
375
+ getWalletAddress() {
376
+ return this.wallet?.publicKey.toBase58();
377
+ }
378
+ /**
379
+ * Handle and log errors consistently
380
+ */
381
+ handleError(method, error) {
382
+ if (error instanceof PayGateError) {
383
+ this.logger.error(`${method} failed: ${error.message}`);
384
+ return;
385
+ }
386
+ if (error instanceof axios_1.AxiosError) {
387
+ const status = error.response?.status;
388
+ const message = error.response?.data?.error || error.message;
389
+ this.logger.error(`${method} failed: HTTP ${status} - ${message}`);
390
+ throw new PayGateError(message, status);
391
+ }
392
+ this.logger.error(`${method} failed: ${error.message}`);
393
+ }
394
+ }
395
+ exports.PayGateClient = PayGateClient;
396
+ //# sourceMappingURL=PayGateClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PayGateClient.js","sourceRoot":"","sources":["../../../src/paygate/PayGateClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * PayGate Module
3
+ * Client for interacting with PayGate x402 payment protocol
4
+ */
5
+ export { PayGateClient, PayGateError } from './PayGateClient';
6
+ export type { PayGateClientConfig, PaymentCurrency, ProductType, Product, PaymentRequirements, X402Response, PricingOption, PricingResponse, VerifyRequest, VerifyResponse, SettleRequest, SettleResponse, PurchaseOptions, PurchaseResult, ContentResult, DeliveryResponse, PurchaseHistoryEntry, PurchaseHistoryResponse } from './types';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/paygate/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE7D,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,OAAO,EACP,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,SAAS,CAAA"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * PayGate Module
4
+ * Client for interacting with PayGate x402 payment protocol
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.PayGateError = exports.PayGateClient = void 0;
8
+ var PayGateClient_1 = require("./PayGateClient");
9
+ Object.defineProperty(exports, "PayGateClient", { enumerable: true, get: function () { return PayGateClient_1.PayGateClient; } });
10
+ Object.defineProperty(exports, "PayGateError", { enumerable: true, get: function () { return PayGateClient_1.PayGateError; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/paygate/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,iDAA6D;AAApD,8GAAA,aAAa,OAAA;AAAE,6GAAA,YAAY,OAAA"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * PayGate Client Types
3
+ * Type definitions for the PayGate x402 payment client
4
+ */
5
+ import { Keypair } from '@solana/web3.js';
6
+ /**
7
+ * Supported payment currencies
8
+ */
9
+ export type PaymentCurrency = 'USDC' | 'ATHR';
10
+ /**
11
+ * Product types available on PayGate
12
+ */
13
+ export type ProductType = 'content_link' | 'api_proxy' | 'feature_unlock' | 'iot_endpoint';
14
+ /**
15
+ * PayGate client configuration
16
+ */
17
+ export interface PayGateClientConfig {
18
+ /** Base URL of the PayGate server */
19
+ baseUrl: string;
20
+ /** Optional wallet keypair for signing payments */
21
+ wallet?: Keypair;
22
+ /** Default currency for purchases (defaults to USDC) */
23
+ defaultCurrency?: PaymentCurrency;
24
+ /** Request timeout in milliseconds (defaults to 30000) */
25
+ timeout?: number;
26
+ }
27
+ /**
28
+ * Product information returned from PayGate
29
+ */
30
+ export interface Product {
31
+ id: string;
32
+ title: string;
33
+ description: string;
34
+ type: ProductType;
35
+ price: string;
36
+ currency: string;
37
+ network: string;
38
+ status: string;
39
+ }
40
+ /**
41
+ * Payment requirements from x402 402 response
42
+ */
43
+ export interface PaymentRequirements {
44
+ scheme: string;
45
+ network: string;
46
+ recipient: string;
47
+ amount: string;
48
+ currency: string;
49
+ tokenMint: string;
50
+ productId: string;
51
+ maxTimeoutSeconds?: number;
52
+ resource?: string;
53
+ description?: string;
54
+ }
55
+ /**
56
+ * Full x402 payment response (402 status)
57
+ */
58
+ export interface X402Response {
59
+ status: 402;
60
+ accepts: PaymentRequirements[];
61
+ error?: string;
62
+ }
63
+ /**
64
+ * Pricing option for a product
65
+ */
66
+ export interface PricingOption {
67
+ currency: PaymentCurrency;
68
+ amount: string;
69
+ tokenMint: string;
70
+ discount?: number;
71
+ }
72
+ /**
73
+ * Pricing response from PayGate
74
+ */
75
+ export interface PricingResponse {
76
+ productId: string;
77
+ options: PricingOption[];
78
+ }
79
+ /**
80
+ * Verification request payload
81
+ */
82
+ export interface VerifyRequest {
83
+ productId: string;
84
+ amount: string;
85
+ currency: PaymentCurrency;
86
+ payerWallet: string;
87
+ }
88
+ /**
89
+ * Verification response from PayGate
90
+ */
91
+ export interface VerifyResponse {
92
+ isValid: boolean;
93
+ invalidReason?: string;
94
+ requirements?: PaymentRequirements;
95
+ }
96
+ /**
97
+ * Settlement request payload
98
+ */
99
+ export interface SettleRequest {
100
+ paymentHeader: string;
101
+ productId: string;
102
+ }
103
+ /**
104
+ * Settlement response from PayGate
105
+ */
106
+ export interface SettleResponse {
107
+ success: boolean;
108
+ txHash?: string;
109
+ deliveryUrl?: string;
110
+ error?: string;
111
+ }
112
+ /**
113
+ * Purchase options
114
+ */
115
+ export interface PurchaseOptions {
116
+ /** Currency to use for payment */
117
+ currency?: PaymentCurrency;
118
+ /** Custom amount (overrides product price) */
119
+ amount?: number;
120
+ }
121
+ /**
122
+ * Result of a successful purchase
123
+ */
124
+ export interface PurchaseResult {
125
+ transactionHash: string;
126
+ productId: string;
127
+ amount: string;
128
+ currency: string;
129
+ deliveryUrl: string;
130
+ }
131
+ /**
132
+ * Content delivery result
133
+ */
134
+ export interface ContentResult {
135
+ product: {
136
+ id: string;
137
+ title: string;
138
+ type: ProductType;
139
+ };
140
+ downloadUrl: string | null;
141
+ accessToken: string | undefined;
142
+ purchaseDate: string;
143
+ }
144
+ /**
145
+ * Delivery response from PayGate
146
+ */
147
+ export interface DeliveryResponse {
148
+ productId: string;
149
+ product: {
150
+ id: string;
151
+ title: string;
152
+ type: ProductType;
153
+ };
154
+ downloadUrl: string | null;
155
+ accessToken?: string;
156
+ purchaseDate: string;
157
+ expiresAt?: string;
158
+ }
159
+ /**
160
+ * Purchase history entry
161
+ */
162
+ export interface PurchaseHistoryEntry {
163
+ productId: string;
164
+ title: string;
165
+ type: ProductType;
166
+ amount: string;
167
+ currency: string;
168
+ transactionHash: string;
169
+ purchaseDate: string;
170
+ status: 'completed' | 'pending' | 'failed';
171
+ }
172
+ /**
173
+ * Purchase history response
174
+ */
175
+ export interface PurchaseHistoryResponse {
176
+ wallet: string;
177
+ purchases: PurchaseHistoryEntry[];
178
+ total: number;
179
+ }
180
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/paygate/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * PayGate Client Types
4
+ * Type definitions for the PayGate x402 payment client
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/paygate/types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aether-agent-sdk",
3
- "version": "3.1.2",
3
+ "version": "3.2.0",
4
4
  "description": "Autonomous Agent Ecosystem SDK for Solana - A2A Protocol, x402 Payment Standard, and Agent-to-Agent Communication",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
@@ -29,6 +29,11 @@
29
29
  "import": "./dist/src/marketplace/index.js",
30
30
  "require": "./dist/src/marketplace/index.js",
31
31
  "types": "./dist/src/marketplace/index.d.ts"
32
+ },
33
+ "./paygate": {
34
+ "import": "./dist/src/paygate/index.js",
35
+ "require": "./dist/src/paygate/index.js",
36
+ "types": "./dist/src/paygate/index.d.ts"
32
37
  }
33
38
  },
34
39
  "files": [