@ael-protocol/sdk 0.1.0 → 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 (49) hide show
  1. package/dist/abi/market.d.ts +394 -0
  2. package/dist/abi/market.d.ts.map +1 -0
  3. package/dist/abi/market.js +264 -0
  4. package/dist/abi/market.js.map +1 -0
  5. package/dist/agent-wallet.d.ts +79 -0
  6. package/dist/agent-wallet.d.ts.map +1 -0
  7. package/dist/agent-wallet.js +483 -0
  8. package/dist/agent-wallet.js.map +1 -0
  9. package/dist/hub.d.ts +125 -0
  10. package/dist/hub.d.ts.map +1 -0
  11. package/dist/hub.js +237 -0
  12. package/dist/hub.js.map +1 -0
  13. package/dist/index.d.ts +21 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +39 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/market.d.ts +73 -0
  18. package/dist/market.d.ts.map +1 -0
  19. package/dist/market.js +388 -0
  20. package/dist/market.js.map +1 -0
  21. package/dist/marketplace.d.ts +137 -0
  22. package/dist/marketplace.d.ts.map +1 -0
  23. package/dist/marketplace.js +479 -0
  24. package/dist/marketplace.js.map +1 -0
  25. package/dist/networks.d.ts +66 -0
  26. package/dist/networks.d.ts.map +1 -0
  27. package/dist/networks.js +106 -0
  28. package/dist/networks.js.map +1 -0
  29. package/dist/parser.d.ts +39 -0
  30. package/dist/parser.d.ts.map +1 -0
  31. package/dist/parser.js +134 -0
  32. package/dist/parser.js.map +1 -0
  33. package/dist/strategies/dca.d.ts +39 -0
  34. package/dist/strategies/dca.d.ts.map +1 -0
  35. package/dist/strategies/dca.js +124 -0
  36. package/dist/strategies/dca.js.map +1 -0
  37. package/dist/strategies/grid.d.ts +54 -0
  38. package/dist/strategies/grid.d.ts.map +1 -0
  39. package/dist/strategies/grid.js +161 -0
  40. package/dist/strategies/grid.js.map +1 -0
  41. package/dist/strategies/stop-loss.d.ts +55 -0
  42. package/dist/strategies/stop-loss.d.ts.map +1 -0
  43. package/dist/strategies/stop-loss.js +152 -0
  44. package/dist/strategies/stop-loss.js.map +1 -0
  45. package/dist/strategy.d.ts +72 -0
  46. package/dist/strategy.d.ts.map +1 -0
  47. package/dist/strategy.js +78 -0
  48. package/dist/strategy.js.map +1 -0
  49. package/package.json +1 -1
package/dist/market.js ADDED
@@ -0,0 +1,388 @@
1
+ "use strict";
2
+ /**
3
+ * MarketFeed - Real-time market data from Uniswap V3
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MarketFeed = void 0;
7
+ const viem_1 = require("viem");
8
+ const networks_1 = require("./networks");
9
+ // Uniswap V3 Pool ABI (partial)
10
+ const POOL_ABI = [
11
+ {
12
+ type: 'function',
13
+ name: 'slot0',
14
+ inputs: [],
15
+ outputs: [
16
+ { name: 'sqrtPriceX96', type: 'uint160' },
17
+ { name: 'tick', type: 'int24' },
18
+ { name: 'observationIndex', type: 'uint16' },
19
+ { name: 'observationCardinality', type: 'uint16' },
20
+ { name: 'observationCardinalityNext', type: 'uint16' },
21
+ { name: 'feeProtocol', type: 'uint8' },
22
+ { name: 'unlocked', type: 'bool' },
23
+ ],
24
+ stateMutability: 'view',
25
+ },
26
+ {
27
+ type: 'function',
28
+ name: 'liquidity',
29
+ inputs: [],
30
+ outputs: [{ type: 'uint128' }],
31
+ stateMutability: 'view',
32
+ },
33
+ {
34
+ type: 'function',
35
+ name: 'fee',
36
+ inputs: [],
37
+ outputs: [{ type: 'uint24' }],
38
+ stateMutability: 'view',
39
+ },
40
+ {
41
+ type: 'function',
42
+ name: 'token0',
43
+ inputs: [],
44
+ outputs: [{ type: 'address' }],
45
+ stateMutability: 'view',
46
+ },
47
+ {
48
+ type: 'function',
49
+ name: 'token1',
50
+ inputs: [],
51
+ outputs: [{ type: 'address' }],
52
+ stateMutability: 'view',
53
+ },
54
+ {
55
+ type: 'function',
56
+ name: 'observe',
57
+ inputs: [{ name: 'secondsAgos', type: 'uint32[]' }],
58
+ outputs: [
59
+ { name: 'tickCumulatives', type: 'int56[]' },
60
+ { name: 'secondsPerLiquidityCumulativeX128s', type: 'uint160[]' },
61
+ ],
62
+ stateMutability: 'view',
63
+ },
64
+ ];
65
+ const FACTORY_ABI = [
66
+ {
67
+ type: 'function',
68
+ name: 'getPool',
69
+ inputs: [
70
+ { name: 'tokenA', type: 'address' },
71
+ { name: 'tokenB', type: 'address' },
72
+ { name: 'fee', type: 'uint24' },
73
+ ],
74
+ outputs: [{ type: 'address' }],
75
+ stateMutability: 'view',
76
+ },
77
+ ];
78
+ const FEE_TIERS = [500, 3000, 10000];
79
+ class MarketFeed {
80
+ publicClient;
81
+ network;
82
+ watches = new Map();
83
+ poolCache = new Map();
84
+ constructor(config = {}) {
85
+ this.network = (0, networks_1.getNetwork)(config.network || 'base');
86
+ const rpcUrl = config.rpcUrl || this.network.rpcUrl;
87
+ // Use type assertion to handle chain-specific type differences (e.g., Base L2 transaction types)
88
+ this.publicClient = (0, viem_1.createPublicClient)({
89
+ chain: this.network.chain,
90
+ transport: (0, viem_1.http)(rpcUrl),
91
+ });
92
+ }
93
+ /**
94
+ * Get current price for a trading pair
95
+ */
96
+ async price(pair) {
97
+ const { token0, token1 } = this.parsePair(pair);
98
+ const pool = await this.findBestPool(token0, token1);
99
+ if (!pool) {
100
+ throw new Error(`No pool found for ${pair}`);
101
+ }
102
+ const slot0 = await this.publicClient.readContract({
103
+ address: pool,
104
+ abi: POOL_ABI,
105
+ functionName: 'slot0',
106
+ });
107
+ const sqrtPriceX96 = slot0[0];
108
+ const price = this.sqrtPriceX96ToPrice(sqrtPriceX96, token0, token1);
109
+ return {
110
+ price,
111
+ timestamp: Math.floor(Date.now() / 1000),
112
+ };
113
+ }
114
+ /**
115
+ * Get prices for multiple pairs
116
+ */
117
+ async prices(pairs) {
118
+ const results = {};
119
+ await Promise.all(pairs.map(async (pair) => {
120
+ try {
121
+ results[pair] = await this.price(pair);
122
+ }
123
+ catch (error) {
124
+ console.error(`Failed to get price for ${pair}:`, error);
125
+ }
126
+ }));
127
+ return results;
128
+ }
129
+ /**
130
+ * Get TWAP (Time-Weighted Average Price)
131
+ */
132
+ async twap(pair, options) {
133
+ const periodSeconds = this.parsePeriod(options.period);
134
+ const { token0, token1 } = this.parsePair(pair);
135
+ const pool = await this.findBestPool(token0, token1);
136
+ if (!pool) {
137
+ throw new Error(`No pool found for ${pair}`);
138
+ }
139
+ try {
140
+ const result = await this.publicClient.readContract({
141
+ address: pool,
142
+ abi: POOL_ABI,
143
+ functionName: 'observe',
144
+ args: [[periodSeconds, 0]],
145
+ });
146
+ const tickCumulatives = result[0];
147
+ const tickDiff = tickCumulatives[1] - tickCumulatives[0];
148
+ const avgTick = Number(tickDiff) / periodSeconds;
149
+ // Convert tick to price
150
+ const price = this.tickToPrice(avgTick, token0, token1);
151
+ return {
152
+ price,
153
+ period: periodSeconds,
154
+ timestamp: Math.floor(Date.now() / 1000),
155
+ };
156
+ }
157
+ catch (error) {
158
+ // Fallback to spot price if TWAP not available
159
+ const spotPrice = await this.price(pair);
160
+ return {
161
+ price: spotPrice.price,
162
+ period: 0,
163
+ timestamp: spotPrice.timestamp,
164
+ };
165
+ }
166
+ }
167
+ /**
168
+ * Get pool information
169
+ */
170
+ async pool(pair) {
171
+ const { token0, token1 } = this.parsePair(pair);
172
+ const poolAddress = await this.findBestPool(token0, token1);
173
+ if (!poolAddress) {
174
+ throw new Error(`No pool found for ${pair}`);
175
+ }
176
+ const [slot0, liquidity, fee, poolToken0, poolToken1] = await Promise.all([
177
+ this.publicClient.readContract({
178
+ address: poolAddress,
179
+ abi: POOL_ABI,
180
+ functionName: 'slot0',
181
+ }),
182
+ this.publicClient.readContract({
183
+ address: poolAddress,
184
+ abi: POOL_ABI,
185
+ functionName: 'liquidity',
186
+ }),
187
+ this.publicClient.readContract({
188
+ address: poolAddress,
189
+ abi: POOL_ABI,
190
+ functionName: 'fee',
191
+ }),
192
+ this.publicClient.readContract({
193
+ address: poolAddress,
194
+ abi: POOL_ABI,
195
+ functionName: 'token0',
196
+ }),
197
+ this.publicClient.readContract({
198
+ address: poolAddress,
199
+ abi: POOL_ABI,
200
+ functionName: 'token1',
201
+ }),
202
+ ]);
203
+ return {
204
+ address: poolAddress,
205
+ token0: poolToken0,
206
+ token1: poolToken1,
207
+ fee,
208
+ sqrtPriceX96: slot0[0],
209
+ tick: slot0[1],
210
+ liquidity,
211
+ };
212
+ }
213
+ /**
214
+ * Watch price updates
215
+ */
216
+ watch(pair, options, callback) {
217
+ const intervalMs = (options.interval || 10) * 1000;
218
+ const key = pair.toUpperCase();
219
+ let entry = this.watches.get(key);
220
+ if (!entry) {
221
+ // Create new watch
222
+ const interval = setInterval(async () => {
223
+ try {
224
+ const priceData = await this.price(pair);
225
+ const watchEntry = this.watches.get(key);
226
+ if (watchEntry) {
227
+ for (const cb of watchEntry.callbacks) {
228
+ try {
229
+ cb(priceData);
230
+ }
231
+ catch (e) {
232
+ console.error('Callback error:', e);
233
+ }
234
+ }
235
+ }
236
+ }
237
+ catch (error) {
238
+ console.error(`Watch error for ${pair}:`, error);
239
+ }
240
+ }, intervalMs);
241
+ entry = {
242
+ pair: key,
243
+ interval,
244
+ callbacks: new Set(),
245
+ };
246
+ this.watches.set(key, entry);
247
+ }
248
+ entry.callbacks.add(callback);
249
+ }
250
+ /**
251
+ * Stop watching a pair
252
+ */
253
+ unwatch(pair, callback) {
254
+ const key = pair.toUpperCase();
255
+ const entry = this.watches.get(key);
256
+ if (!entry)
257
+ return;
258
+ if (callback) {
259
+ entry.callbacks.delete(callback);
260
+ if (entry.callbacks.size === 0) {
261
+ clearInterval(entry.interval);
262
+ this.watches.delete(key);
263
+ }
264
+ }
265
+ else {
266
+ // Remove all watchers
267
+ clearInterval(entry.interval);
268
+ this.watches.delete(key);
269
+ }
270
+ }
271
+ /**
272
+ * Stop all watchers
273
+ */
274
+ unwatchAll() {
275
+ for (const [key, entry] of this.watches) {
276
+ clearInterval(entry.interval);
277
+ }
278
+ this.watches.clear();
279
+ }
280
+ // ============ Private Methods ============
281
+ parsePair(pair) {
282
+ const match = pair.match(/^(\w+)\/(\w+)$/i) || pair.match(/^(\w+)-(\w+)$/i);
283
+ if (!match) {
284
+ throw new Error(`Invalid pair format: ${pair}. Use "ETH/USDC" or "ETH-USDC"`);
285
+ }
286
+ const symbol0 = match[1].toUpperCase();
287
+ const symbol1 = match[2].toUpperCase();
288
+ // Use WETH for ETH
289
+ const token0 = symbol0 === 'ETH'
290
+ ? this.network.tokens.WETH
291
+ : (0, networks_1.resolveToken)(symbol0, this.network);
292
+ const token1 = symbol1 === 'ETH'
293
+ ? this.network.tokens.WETH
294
+ : (0, networks_1.resolveToken)(symbol1, this.network);
295
+ return { token0, token1 };
296
+ }
297
+ async findBestPool(token0, token1) {
298
+ // Check cache
299
+ const cacheKey = `${token0}-${token1}`;
300
+ const cached = this.poolCache.get(cacheKey);
301
+ if (cached)
302
+ return cached;
303
+ let bestPool = null;
304
+ let bestLiquidity = 0n;
305
+ for (const fee of FEE_TIERS) {
306
+ try {
307
+ const pool = await this.publicClient.readContract({
308
+ address: this.network.uniswap.factory,
309
+ abi: FACTORY_ABI,
310
+ functionName: 'getPool',
311
+ args: [token0, token1, fee],
312
+ });
313
+ if (pool && pool !== '0x0000000000000000000000000000000000000000') {
314
+ const liquidity = await this.publicClient.readContract({
315
+ address: pool,
316
+ abi: POOL_ABI,
317
+ functionName: 'liquidity',
318
+ });
319
+ if (liquidity > bestLiquidity) {
320
+ bestLiquidity = liquidity;
321
+ bestPool = pool;
322
+ }
323
+ }
324
+ }
325
+ catch {
326
+ continue;
327
+ }
328
+ }
329
+ if (bestPool) {
330
+ this.poolCache.set(cacheKey, bestPool);
331
+ }
332
+ return bestPool;
333
+ }
334
+ sqrtPriceX96ToPrice(sqrtPriceX96, token0, token1) {
335
+ // price = (sqrtPriceX96 / 2^96)^2
336
+ // For precision, we use BigInt arithmetic and scale before converting to Number
337
+ const Q192 = 2n ** 192n;
338
+ const PRECISION = 10n ** 18n;
339
+ // sqrtPriceX96^2 / 2^192 gives us price of token1 in terms of token0
340
+ // Scale up by PRECISION first to maintain precision, then convert to Number
341
+ const numerator = sqrtPriceX96 * sqrtPriceX96;
342
+ const scaledPrice = (numerator * PRECISION) / Q192;
343
+ const priceRatio = Number(scaledPrice) / 1e18;
344
+ // Adjust for decimals using getTokenDecimals
345
+ const decimal0 = (0, networks_1.getTokenDecimals)(token0);
346
+ const decimal1 = (0, networks_1.getTokenDecimals)(token1);
347
+ const decimalAdjustment = 10 ** (decimal0 - decimal1);
348
+ let price = priceRatio * decimalAdjustment;
349
+ // If token0 is the quote token (USDC), invert
350
+ if (token0 === this.network.tokens.USDC) {
351
+ price = 1 / price;
352
+ }
353
+ return price;
354
+ }
355
+ tickToPrice(tick, token0, token1) {
356
+ // price = 1.0001^tick
357
+ const price = Math.pow(1.0001, tick);
358
+ // Adjust for decimals using getTokenDecimals
359
+ const decimal0 = (0, networks_1.getTokenDecimals)(token0);
360
+ const decimal1 = (0, networks_1.getTokenDecimals)(token1);
361
+ const decimalAdjustment = 10 ** (decimal0 - decimal1);
362
+ let adjustedPrice = price * decimalAdjustment;
363
+ // If token0 is the quote token (USDC), invert
364
+ if (token0 === this.network.tokens.USDC) {
365
+ adjustedPrice = 1 / adjustedPrice;
366
+ }
367
+ return adjustedPrice;
368
+ }
369
+ parsePeriod(period) {
370
+ if (typeof period === 'number')
371
+ return period;
372
+ const match = period.match(/^(\d+)\s*(s|m|h|d)?$/i);
373
+ if (!match) {
374
+ throw new Error(`Invalid period format: ${period}. Use "1h", "30m", "3600s", or seconds number.`);
375
+ }
376
+ const value = parseInt(match[1]);
377
+ const unit = (match[2] || 's').toLowerCase();
378
+ switch (unit) {
379
+ case 's': return value;
380
+ case 'm': return value * 60;
381
+ case 'h': return value * 3600;
382
+ case 'd': return value * 86400;
383
+ default: return value;
384
+ }
385
+ }
386
+ }
387
+ exports.MarketFeed = MarketFeed;
388
+ //# sourceMappingURL=market.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market.js","sourceRoot":"","sources":["../src/market.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * AgentMarket - Agent Service Marketplace SDK
3
+ */
4
+ import { type Address, type Hex } from 'viem';
5
+ import { type NetworkConfig } from './networks';
6
+ import { OrderStatus } from './abi/market';
7
+ export interface AgentMarketConfig {
8
+ privateKey: Hex;
9
+ network?: string;
10
+ rpcUrl?: string;
11
+ }
12
+ export interface RegisterServiceParams {
13
+ type: string;
14
+ description: string;
15
+ price: string;
16
+ }
17
+ export interface ServiceInfo {
18
+ serviceId: Hex;
19
+ provider: Address;
20
+ type: string;
21
+ description: string;
22
+ paymentToken: Address;
23
+ paymentTokenSymbol: string;
24
+ price: string;
25
+ priceRaw: bigint;
26
+ active: boolean;
27
+ completedCount: number;
28
+ disputeCount: number;
29
+ createdAt: number;
30
+ }
31
+ export interface OrderInfo {
32
+ orderId: Hex;
33
+ serviceId: Hex;
34
+ buyer: Address;
35
+ provider: Address;
36
+ paymentToken: Address;
37
+ amount: string;
38
+ amountRaw: bigint;
39
+ createdAt: number;
40
+ deliveredAt: number;
41
+ deadline: number;
42
+ status: OrderStatus;
43
+ statusName: string;
44
+ deliveryHash: Hex;
45
+ disputeReason: string;
46
+ }
47
+ export interface DeliverParams {
48
+ result: string;
49
+ hash?: Hex;
50
+ }
51
+ export interface ListServicesParams {
52
+ type?: string;
53
+ provider?: Address;
54
+ limit?: number;
55
+ }
56
+ /**
57
+ * Parse price string like '0.001 ETH' or '1 USDC' into token address and amount
58
+ */
59
+ export declare function parsePrice(priceStr: string, network: NetworkConfig): {
60
+ token: Address;
61
+ amount: bigint;
62
+ decimals: number;
63
+ };
64
+ export declare class AgentMarket {
65
+ readonly address: Address;
66
+ private readonly publicClient;
67
+ private readonly walletClient;
68
+ private readonly network;
69
+ constructor(config: AgentMarketConfig);
70
+ /**
71
+ * Register a new service
72
+ */
73
+ registerService(params: RegisterServiceParams): Promise<Hex>;
74
+ /**
75
+ * Update service metadata and price
76
+ */
77
+ updateService(serviceId: Hex, description: string, price: string): Promise<void>;
78
+ /**
79
+ * Deactivate a service
80
+ */
81
+ deactivateService(serviceId: Hex): Promise<void>;
82
+ /**
83
+ * Activate a service
84
+ */
85
+ activateService(serviceId: Hex): Promise<void>;
86
+ /**
87
+ * Deliver an order (Provider calls this)
88
+ */
89
+ deliver(orderId: Hex, params: DeliverParams): Promise<void>;
90
+ /**
91
+ * Claim payment after confirmation window expires (Provider calls this)
92
+ */
93
+ claim(orderId: Hex): Promise<void>;
94
+ /**
95
+ * Buy a service (create order)
96
+ */
97
+ buy(serviceId: Hex): Promise<OrderInfo>;
98
+ /**
99
+ * Confirm order receipt (Buyer calls this)
100
+ */
101
+ confirm(orderId: Hex): Promise<void>;
102
+ /**
103
+ * Dispute an order (Buyer calls this)
104
+ */
105
+ dispute(orderId: Hex, reason: string): Promise<void>;
106
+ /**
107
+ * Cancel order before delivery (Buyer calls this)
108
+ */
109
+ cancel(orderId: Hex): Promise<void>;
110
+ /**
111
+ * Get service info by ID
112
+ */
113
+ getService(serviceId: Hex): Promise<ServiceInfo | null>;
114
+ /**
115
+ * Get order info by ID
116
+ */
117
+ getOrder(orderId: Hex): Promise<OrderInfo>;
118
+ /**
119
+ * List services (query events)
120
+ */
121
+ listServices(params?: ListServicesParams): Promise<ServiceInfo[]>;
122
+ /**
123
+ * Get my services (as provider)
124
+ */
125
+ myServices(): Promise<ServiceInfo[]>;
126
+ /**
127
+ * Get my orders (as buyer or provider)
128
+ */
129
+ myOrders(role?: 'buyer' | 'provider'): Promise<OrderInfo[]>;
130
+ /**
131
+ * Get confirmation window duration
132
+ */
133
+ getConfirmationWindow(): Promise<number>;
134
+ private ensureApproval;
135
+ }
136
+ export { OrderStatus } from './abi/market';
137
+ //# sourceMappingURL=marketplace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../src/marketplace.ts"],"names":[],"mappings":"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"}