@clawnch/clawncher-sdk 0.1.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 (98) hide show
  1. package/README.md +603 -0
  2. package/dist/abis.d.ts +935 -0
  3. package/dist/abis.d.ts.map +1 -0
  4. package/dist/abis.js +486 -0
  5. package/dist/abis.js.map +1 -0
  6. package/dist/addresses.d.ts +51 -0
  7. package/dist/addresses.d.ts.map +1 -0
  8. package/dist/addresses.js +80 -0
  9. package/dist/addresses.js.map +1 -0
  10. package/dist/api-deployer-types.d.ts +165 -0
  11. package/dist/api-deployer-types.d.ts.map +1 -0
  12. package/dist/api-deployer-types.js +9 -0
  13. package/dist/api-deployer-types.js.map +1 -0
  14. package/dist/api-deployer.d.ts +114 -0
  15. package/dist/api-deployer.d.ts.map +1 -0
  16. package/dist/api-deployer.js +309 -0
  17. package/dist/api-deployer.js.map +1 -0
  18. package/dist/claimer.d.ts +197 -0
  19. package/dist/claimer.d.ts.map +1 -0
  20. package/dist/claimer.js +311 -0
  21. package/dist/claimer.js.map +1 -0
  22. package/dist/deployer.d.ts +229 -0
  23. package/dist/deployer.d.ts.map +1 -0
  24. package/dist/deployer.js +305 -0
  25. package/dist/deployer.js.map +1 -0
  26. package/dist/erc8004-types.d.ts +94 -0
  27. package/dist/erc8004-types.d.ts.map +1 -0
  28. package/dist/erc8004-types.js +8 -0
  29. package/dist/erc8004-types.js.map +1 -0
  30. package/dist/errors.d.ts +62 -0
  31. package/dist/errors.d.ts.map +1 -0
  32. package/dist/errors.js +75 -0
  33. package/dist/errors.js.map +1 -0
  34. package/dist/index.d.ts +204 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +358 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/liquidity-types.d.ts +198 -0
  39. package/dist/liquidity-types.d.ts.map +1 -0
  40. package/dist/liquidity-types.js +8 -0
  41. package/dist/liquidity-types.js.map +1 -0
  42. package/dist/liquidity.d.ts +111 -0
  43. package/dist/liquidity.d.ts.map +1 -0
  44. package/dist/liquidity.js +608 -0
  45. package/dist/liquidity.js.map +1 -0
  46. package/dist/molten-types.d.ts +282 -0
  47. package/dist/molten-types.d.ts.map +1 -0
  48. package/dist/molten-types.js +8 -0
  49. package/dist/molten-types.js.map +1 -0
  50. package/dist/molten.d.ts +336 -0
  51. package/dist/molten.d.ts.map +1 -0
  52. package/dist/molten.js +560 -0
  53. package/dist/molten.js.map +1 -0
  54. package/dist/portfolio.d.ts +129 -0
  55. package/dist/portfolio.d.ts.map +1 -0
  56. package/dist/portfolio.js +218 -0
  57. package/dist/portfolio.js.map +1 -0
  58. package/dist/reader.d.ts +249 -0
  59. package/dist/reader.d.ts.map +1 -0
  60. package/dist/reader.js +488 -0
  61. package/dist/reader.js.map +1 -0
  62. package/dist/swap-types.d.ts +159 -0
  63. package/dist/swap-types.d.ts.map +1 -0
  64. package/dist/swap-types.js +22 -0
  65. package/dist/swap-types.js.map +1 -0
  66. package/dist/swap.d.ts +762 -0
  67. package/dist/swap.d.ts.map +1 -0
  68. package/dist/swap.js +345 -0
  69. package/dist/swap.js.map +1 -0
  70. package/dist/token-verification-data.d.ts +4 -0
  71. package/dist/token-verification-data.d.ts.map +1 -0
  72. package/dist/token-verification-data.js +6 -0
  73. package/dist/token-verification-data.js.map +1 -0
  74. package/dist/types.d.ts +244 -0
  75. package/dist/types.d.ts.map +1 -0
  76. package/dist/types.js +5 -0
  77. package/dist/types.js.map +1 -0
  78. package/dist/uniswap-abis.d.ts +470 -0
  79. package/dist/uniswap-abis.d.ts.map +1 -0
  80. package/dist/uniswap-abis.js +322 -0
  81. package/dist/uniswap-abis.js.map +1 -0
  82. package/dist/uniswap-addresses.d.ts +38 -0
  83. package/dist/uniswap-addresses.d.ts.map +1 -0
  84. package/dist/uniswap-addresses.js +67 -0
  85. package/dist/uniswap-addresses.js.map +1 -0
  86. package/dist/vanity.d.ts +115 -0
  87. package/dist/vanity.d.ts.map +1 -0
  88. package/dist/vanity.js +166 -0
  89. package/dist/vanity.js.map +1 -0
  90. package/dist/verify.d.ts +88 -0
  91. package/dist/verify.d.ts.map +1 -0
  92. package/dist/verify.js +181 -0
  93. package/dist/verify.js.map +1 -0
  94. package/dist/watcher.d.ts +112 -0
  95. package/dist/watcher.d.ts.map +1 -0
  96. package/dist/watcher.js +132 -0
  97. package/dist/watcher.js.map +1 -0
  98. package/package.json +59 -0
package/dist/reader.js ADDED
@@ -0,0 +1,488 @@
1
+ /**
2
+ * ClawnchReader - Read on-chain token data from Clanker's contracts
3
+ *
4
+ * v3: Reads from Clanker's approved infrastructure (same ABI, different addresses).
5
+ * Provides read-only access to token deployment info, vault allocations,
6
+ * fee configurations, and reward info.
7
+ *
8
+ * Used by frontends to display token detail pages and admin functionality.
9
+ */
10
+ import { formatUnits, } from 'viem';
11
+ import { base, baseSepolia } from 'viem/chains';
12
+ import { ClawnchFactoryABI, ClawnchFeeLockerABI, ClawnchLpLockerABI, ClawnchVaultABI, ClawncherVestedDevBuyABI, ClawnchMevModuleABI, ClawnchTokenABI, ERC20ABI, } from './abis.js';
13
+ import { getAddresses } from './addresses.js';
14
+ /**
15
+ * ClawnchReader - Read on-chain token data
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * import { ClawnchReader } from '@clawnch/clawncher-sdk';
20
+ * import { createPublicClient, http } from 'viem';
21
+ * import { baseSepolia } from 'viem/chains';
22
+ *
23
+ * const publicClient = createPublicClient({
24
+ * chain: baseSepolia,
25
+ * transport: http(),
26
+ * });
27
+ *
28
+ * const reader = new ClawnchReader({
29
+ * publicClient,
30
+ * network: 'sepolia',
31
+ * });
32
+ *
33
+ * // Get full token details
34
+ * const details = await reader.getTokenDetails('0x...');
35
+ *
36
+ * // Get vault allocation
37
+ * const vault = await reader.getVaultAllocation('0x...');
38
+ *
39
+ * // Get vested dev buy allocation
40
+ * const vested = await reader.getVestedDevBuyAllocation('0x...');
41
+ * ```
42
+ */
43
+ export class ClawnchReader {
44
+ publicClient;
45
+ network;
46
+ constructor(config) {
47
+ this.publicClient = config.publicClient;
48
+ this.network = config.network;
49
+ }
50
+ /**
51
+ * Get contract addresses for configured network
52
+ */
53
+ getAddresses() {
54
+ return getAddresses(this.network);
55
+ }
56
+ /**
57
+ * Get the chain for the configured network
58
+ */
59
+ getChain() {
60
+ return this.network === 'mainnet' ? base : baseSepolia;
61
+ }
62
+ // =========================================================================
63
+ // Token Info
64
+ // =========================================================================
65
+ /**
66
+ * Get basic ERC20 token info
67
+ */
68
+ async getTokenInfo(token) {
69
+ const [name, symbol, decimals, totalSupply] = await Promise.all([
70
+ this.publicClient.readContract({
71
+ address: token,
72
+ abi: ERC20ABI,
73
+ functionName: 'name',
74
+ }),
75
+ this.publicClient.readContract({
76
+ address: token,
77
+ abi: ERC20ABI,
78
+ functionName: 'symbol',
79
+ }),
80
+ this.publicClient.readContract({
81
+ address: token,
82
+ abi: ERC20ABI,
83
+ functionName: 'decimals',
84
+ }),
85
+ this.publicClient.readContract({
86
+ address: token,
87
+ abi: ERC20ABI,
88
+ functionName: 'totalSupply',
89
+ }),
90
+ ]);
91
+ return { name, symbol, decimals, totalSupply };
92
+ }
93
+ /**
94
+ * Get Clawncher token metadata using allData() single call
95
+ *
96
+ * Returns originalAdmin, admin, imageUrl, metadata, context in one RPC call.
97
+ */
98
+ async getTokenMetadata(token) {
99
+ try {
100
+ // Use allData() for a single RPC call instead of 4 separate calls
101
+ const result = await this.publicClient.readContract({
102
+ address: token,
103
+ abi: ClawnchTokenABI,
104
+ functionName: 'allData',
105
+ });
106
+ const [originalAdmin, admin, image, metadata, context] = result;
107
+ return {
108
+ tokenAdmin: admin,
109
+ originalAdmin,
110
+ image,
111
+ metadata,
112
+ context,
113
+ };
114
+ }
115
+ catch {
116
+ // Fallback to individual calls if allData() is not available
117
+ const [admin, image, metadata, context] = await Promise.all([
118
+ this.publicClient.readContract({
119
+ address: token,
120
+ abi: ClawnchTokenABI,
121
+ functionName: 'admin',
122
+ }),
123
+ this.publicClient.readContract({
124
+ address: token,
125
+ abi: ClawnchTokenABI,
126
+ functionName: 'imageUrl',
127
+ }).catch(() => ''),
128
+ this.publicClient.readContract({
129
+ address: token,
130
+ abi: ClawnchTokenABI,
131
+ functionName: 'metadata',
132
+ }).catch(() => ''),
133
+ this.publicClient.readContract({
134
+ address: token,
135
+ abi: ClawnchTokenABI,
136
+ functionName: 'context',
137
+ }).catch(() => ''),
138
+ ]);
139
+ return {
140
+ tokenAdmin: admin,
141
+ originalAdmin: admin, // fallback: assume same
142
+ image: image,
143
+ metadata: metadata,
144
+ context: context,
145
+ };
146
+ }
147
+ }
148
+ /**
149
+ * Get token deployment info from factory
150
+ */
151
+ async getDeploymentInfo(token) {
152
+ const addresses = this.getAddresses();
153
+ try {
154
+ const info = await this.publicClient.readContract({
155
+ address: addresses.clawnch.factory,
156
+ abi: ClawnchFactoryABI,
157
+ functionName: 'tokenDeploymentInfo',
158
+ args: [token],
159
+ });
160
+ const result = info;
161
+ // If token is zero address, it's not a Clawncher token
162
+ if (result.token === '0x0000000000000000000000000000000000000000') {
163
+ return null;
164
+ }
165
+ return {
166
+ token: result.token,
167
+ hook: result.hook,
168
+ locker: result.locker,
169
+ extensions: result.extensions,
170
+ };
171
+ }
172
+ catch {
173
+ return null;
174
+ }
175
+ }
176
+ // =========================================================================
177
+ // Vault
178
+ // =========================================================================
179
+ /**
180
+ * Get vault allocation for a token
181
+ */
182
+ async getVaultAllocation(token) {
183
+ const addresses = this.getAddresses();
184
+ try {
185
+ const [allocation, amountAvailable] = await Promise.all([
186
+ this.publicClient.readContract({
187
+ address: addresses.clawnch.vault,
188
+ abi: ClawnchVaultABI,
189
+ functionName: 'allocation',
190
+ args: [token],
191
+ }),
192
+ this.publicClient.readContract({
193
+ address: addresses.clawnch.vault,
194
+ abi: ClawnchVaultABI,
195
+ functionName: 'amountAvailableToClaim',
196
+ args: [token],
197
+ }),
198
+ ]);
199
+ const [tokenAddr, amountTotal, amountClaimed, lockupEndTime, vestingEndTime, admin] = allocation;
200
+ // If lockupEndTime is 0, no allocation exists
201
+ if (lockupEndTime === 0n) {
202
+ return null;
203
+ }
204
+ const now = BigInt(Math.floor(Date.now() / 1000));
205
+ const isUnlocked = now >= lockupEndTime;
206
+ const isFullyVested = now >= vestingEndTime;
207
+ let percentVested = 0;
208
+ if (isFullyVested) {
209
+ percentVested = 100;
210
+ }
211
+ else if (isUnlocked && vestingEndTime > lockupEndTime) {
212
+ const elapsed = now - lockupEndTime;
213
+ const vestingDuration = vestingEndTime - lockupEndTime;
214
+ percentVested = Number((elapsed * 100n) / vestingDuration);
215
+ }
216
+ return {
217
+ token: tokenAddr,
218
+ amountTotal,
219
+ amountClaimed,
220
+ lockupEndTime,
221
+ vestingEndTime,
222
+ admin,
223
+ amountAvailable: amountAvailable,
224
+ isUnlocked,
225
+ isFullyVested,
226
+ percentVested,
227
+ };
228
+ }
229
+ catch {
230
+ return null;
231
+ }
232
+ }
233
+ // =========================================================================
234
+ // Vested Dev Buy
235
+ // =========================================================================
236
+ /**
237
+ * Get vested dev buy allocation for a token
238
+ */
239
+ async getVestedDevBuyAllocation(token) {
240
+ const addresses = this.getAddresses();
241
+ // Check if vestedDevBuy is deployed
242
+ if (addresses.clawnch.vestedDevBuy === '0x0000000000000000000000000000000000000000') {
243
+ return null;
244
+ }
245
+ try {
246
+ const [allocation, amountAvailable] = await Promise.all([
247
+ this.publicClient.readContract({
248
+ address: addresses.clawnch.vestedDevBuy,
249
+ abi: ClawncherVestedDevBuyABI,
250
+ functionName: 'allocation',
251
+ args: [token],
252
+ }),
253
+ this.publicClient.readContract({
254
+ address: addresses.clawnch.vestedDevBuy,
255
+ abi: ClawncherVestedDevBuyABI,
256
+ functionName: 'amountAvailableToClaim',
257
+ args: [token],
258
+ }),
259
+ ]);
260
+ const [tokenAddr, amountTotal, amountClaimed, lockupEndTime, vestingEndTime, admin] = allocation;
261
+ // If lockupEndTime is 0, no allocation exists
262
+ if (lockupEndTime === 0n) {
263
+ return null;
264
+ }
265
+ const now = BigInt(Math.floor(Date.now() / 1000));
266
+ const isUnlocked = now >= lockupEndTime;
267
+ const isFullyVested = now >= vestingEndTime;
268
+ let percentVested = 0;
269
+ if (isFullyVested) {
270
+ percentVested = 100;
271
+ }
272
+ else if (isUnlocked && vestingEndTime > lockupEndTime) {
273
+ const elapsed = now - lockupEndTime;
274
+ const vestingDuration = vestingEndTime - lockupEndTime;
275
+ percentVested = Number((elapsed * 100n) / vestingDuration);
276
+ }
277
+ return {
278
+ token: tokenAddr,
279
+ amountTotal,
280
+ amountClaimed,
281
+ lockupEndTime,
282
+ vestingEndTime,
283
+ admin,
284
+ amountAvailable: amountAvailable,
285
+ isUnlocked,
286
+ isFullyVested,
287
+ percentVested,
288
+ };
289
+ }
290
+ catch {
291
+ return null;
292
+ }
293
+ }
294
+ // =========================================================================
295
+ // Rewards
296
+ // =========================================================================
297
+ /**
298
+ * Get token reward info (recipients, positions) from LP locker
299
+ */
300
+ async getTokenRewards(token) {
301
+ const addresses = this.getAddresses();
302
+ try {
303
+ const rewards = await this.publicClient.readContract({
304
+ address: addresses.clawnch.locker,
305
+ abi: ClawnchLpLockerABI,
306
+ functionName: 'tokenRewards',
307
+ args: [token],
308
+ });
309
+ const result = rewards;
310
+ return {
311
+ token: result.token,
312
+ poolKey: result.poolKey,
313
+ positionId: result.positionId,
314
+ numPositions: result.numPositions,
315
+ rewardBps: result.rewardBps,
316
+ rewardAdmins: result.rewardAdmins,
317
+ rewardRecipients: result.rewardRecipients,
318
+ };
319
+ }
320
+ catch {
321
+ return null;
322
+ }
323
+ }
324
+ /**
325
+ * Get available fees for a wallet on a specific token
326
+ */
327
+ async getAvailableFees(wallet, token) {
328
+ const addresses = this.getAddresses();
329
+ try {
330
+ const fees = await this.publicClient.readContract({
331
+ address: addresses.clawnch.feeLocker,
332
+ abi: ClawnchFeeLockerABI,
333
+ functionName: 'availableFees',
334
+ args: [wallet, token],
335
+ });
336
+ return fees;
337
+ }
338
+ catch {
339
+ return 0n;
340
+ }
341
+ }
342
+ /**
343
+ * Get all available fees for a wallet across multiple tokens
344
+ */
345
+ async getWalletFees(wallet, tokens) {
346
+ const addresses = this.getAddresses();
347
+ const results = await Promise.all(tokens.map(async (token) => {
348
+ const [fees, symbol] = await Promise.all([
349
+ this.getAvailableFees(wallet, token),
350
+ this.publicClient.readContract({
351
+ address: token,
352
+ abi: ERC20ABI,
353
+ functionName: 'symbol',
354
+ }).catch(() => 'UNKNOWN'),
355
+ ]);
356
+ return {
357
+ token,
358
+ symbol: symbol,
359
+ availableFees: fees,
360
+ formattedFees: formatUnits(fees, 18),
361
+ };
362
+ }));
363
+ // For WETH total, check available WETH fees
364
+ const wethFees = await this.getAvailableFees(wallet, addresses.infrastructure.weth);
365
+ return {
366
+ wallet,
367
+ tokens: results,
368
+ totalWeth: wethFees,
369
+ formattedTotalWeth: formatUnits(wethFees, 18),
370
+ };
371
+ }
372
+ // =========================================================================
373
+ // MEV Protection
374
+ // =========================================================================
375
+ /**
376
+ * Get MEV protection config for a pool by its poolId (bytes32)
377
+ *
378
+ * Use `getMevConfigForToken()` if you have a token address instead of poolId.
379
+ */
380
+ async getMevConfig(poolId) {
381
+ const addresses = this.getAddresses();
382
+ try {
383
+ const [config, startTime, currentFee] = await Promise.all([
384
+ this.publicClient.readContract({
385
+ address: addresses.clawnch.mevModule,
386
+ abi: ClawnchMevModuleABI,
387
+ functionName: 'feeConfig',
388
+ args: [poolId],
389
+ }),
390
+ this.publicClient.readContract({
391
+ address: addresses.clawnch.mevModule,
392
+ abi: ClawnchMevModuleABI,
393
+ functionName: 'poolStartTime',
394
+ args: [poolId],
395
+ }),
396
+ this.publicClient.readContract({
397
+ address: addresses.clawnch.mevModule,
398
+ abi: ClawnchMevModuleABI,
399
+ functionName: 'getFee',
400
+ args: [poolId],
401
+ }),
402
+ ]);
403
+ const [startingFee, endingFee, secondsToDecay] = config;
404
+ const poolStartTime = startTime;
405
+ // If secondsToDecay is 0, MEV config doesn't exist for this pool
406
+ if (secondsToDecay === 0n) {
407
+ return null;
408
+ }
409
+ const decayEndTime = poolStartTime + secondsToDecay;
410
+ const now = BigInt(Math.floor(Date.now() / 1000));
411
+ return {
412
+ startingFee,
413
+ endingFee,
414
+ secondsToDecay,
415
+ poolStartTime,
416
+ decayEndTime,
417
+ currentFee: currentFee,
418
+ isDecayComplete: now >= decayEndTime,
419
+ };
420
+ }
421
+ catch {
422
+ return null;
423
+ }
424
+ }
425
+ /**
426
+ * Get MEV protection config for a token (resolves poolId via LP locker first)
427
+ */
428
+ async getMevConfigForToken(token) {
429
+ // Get the poolId from token rewards (which has the poolKey)
430
+ const rewards = await this.getTokenRewards(token);
431
+ if (!rewards)
432
+ return null;
433
+ // Compute poolId from poolKey: keccak256(abi.encode(currency0, currency1, fee, tickSpacing, hooks))
434
+ const { encodeAbiParameters, parseAbiParameters, keccak256 } = await import('viem');
435
+ const poolId = keccak256(encodeAbiParameters(parseAbiParameters('address, address, uint24, int24, address'), [
436
+ rewards.poolKey.currency0,
437
+ rewards.poolKey.currency1,
438
+ rewards.poolKey.fee,
439
+ rewards.poolKey.tickSpacing,
440
+ rewards.poolKey.hooks,
441
+ ]));
442
+ return this.getMevConfig(poolId);
443
+ }
444
+ // =========================================================================
445
+ // Full Token Details
446
+ // =========================================================================
447
+ /**
448
+ * Get complete token details for UI display
449
+ *
450
+ * Combines basic token info, deployment info, vault, vested dev buy,
451
+ * reward recipients, and MEV config into a single response.
452
+ */
453
+ async getTokenDetails(token) {
454
+ // First check if this is a Clawncher token
455
+ const deployment = await this.getDeploymentInfo(token);
456
+ if (!deployment) {
457
+ return null;
458
+ }
459
+ // Fetch all data in parallel (except MEV which needs poolId from rewards)
460
+ const [tokenInfo, tokenMetadata, rewards, vault, vestedDevBuy,] = await Promise.all([
461
+ this.getTokenInfo(token),
462
+ this.getTokenMetadata(token),
463
+ this.getTokenRewards(token),
464
+ this.getVaultAllocation(token),
465
+ this.getVestedDevBuyAllocation(token),
466
+ ]);
467
+ // MEV config needs poolId from rewards, so fetch it after
468
+ const mev = await this.getMevConfigForToken(token);
469
+ return {
470
+ address: token,
471
+ ...tokenInfo,
472
+ ...tokenMetadata,
473
+ deployment,
474
+ rewards,
475
+ vault,
476
+ vestedDevBuy,
477
+ mev,
478
+ };
479
+ }
480
+ /**
481
+ * Check if a token was deployed via Clawncher
482
+ */
483
+ async isClawnchToken(token) {
484
+ const deployment = await this.getDeploymentInfo(token);
485
+ return deployment !== null;
486
+ }
487
+ }
488
+ //# sourceMappingURL=reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAIL,WAAW,GACZ,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,EACf,QAAQ,GACT,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,YAAY,EAAoB,MAAM,gBAAgB,CAAC;AAuJhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,OAAO,aAAa;IACf,YAAY,CAAe;IAC3B,OAAO,CAAc;IAE9B,YAAY,MAAoB;QAC9B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;IACzD,CAAC;IAED,4EAA4E;IAC5E,aAAa;IACb,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,KAAc;QAM/B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC9D,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;gBAC7B,OAAO,EAAE,KAAK;gBACd,GAAG,EAAE,QAAQ;gBACb,YAAY,EAAE,MAAM;aACrB,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;gBAC7B,OAAO,EAAE,KAAK;gBACd,GAAG,EAAE,QAAQ;gBACb,YAAY,EAAE,QAAQ;aACvB,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;gBAC7B,OAAO,EAAE,KAAK;gBACd,GAAG,EAAE,QAAQ;gBACb,YAAY,EAAE,UAAU;aACzB,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;gBAC7B,OAAO,EAAE,KAAK;gBACd,GAAG,EAAE,QAAQ;gBACb,YAAY,EAAE,aAAa;aAC5B,CAAC;SACH,CAAC,CAAC;QAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,CAAC,KAAc;QAOnC,IAAI,CAAC;YACH,kEAAkE;YAClE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;gBAClD,OAAO,EAAE,KAAK;gBACd,GAAG,EAAE,eAAe;gBACpB,YAAY,EAAE,SAAS;aACxB,CAAC,CAAC;YAEH,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAoD,CAAC;YAE9G,OAAO;gBACL,UAAU,EAAE,KAAK;gBACjB,aAAa;gBACb,KAAK;gBACL,QAAQ;gBACR,OAAO;aACR,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,6DAA6D;YAC7D,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC1D,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;oBAC7B,OAAO,EAAE,KAAK;oBACd,GAAG,EAAE,eAAe;oBACpB,YAAY,EAAE,OAAO;iBACtB,CAAC;gBACF,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;oBAC7B,OAAO,EAAE,KAAK;oBACd,GAAG,EAAE,eAAe;oBACpB,YAAY,EAAE,UAAU;iBACzB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;oBAC7B,OAAO,EAAE,KAAK;oBACd,GAAG,EAAE,eAAe;oBACpB,YAAY,EAAE,UAAU;iBACzB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;oBAC7B,OAAO,EAAE,KAAK;oBACd,GAAG,EAAE,eAAe;oBACpB,YAAY,EAAE,SAAS;iBACxB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;aACnB,CAAC,CAAC;YAEH,OAAO;gBACL,UAAU,EAAE,KAAgB;gBAC5B,aAAa,EAAE,KAAgB,EAAE,wBAAwB;gBACzD,KAAK,EAAE,KAAe;gBACtB,QAAQ,EAAE,QAAkB;gBAC5B,OAAO,EAAE,OAAiB;aAC3B,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,KAAc;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;gBAChD,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,OAAO;gBAClC,GAAG,EAAE,iBAAiB;gBACtB,YAAY,EAAE,qBAAqB;gBACnC,IAAI,EAAE,CAAC,KAAK,CAAC;aACd,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,IAAiF,CAAC;YAEjG,uDAAuD;YACvD,IAAI,MAAM,CAAC,KAAK,KAAK,4CAA4C,EAAE,CAAC;gBAClE,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,QAAQ;IACR,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAc;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACtD,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;oBAC7B,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK;oBAChC,GAAG,EAAE,eAAe;oBACpB,YAAY,EAAE,YAAY;oBAC1B,IAAI,EAAE,CAAC,KAAK,CAAC;iBACd,CAAC;gBACF,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;oBAC7B,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK;oBAChC,GAAG,EAAE,eAAe;oBACpB,YAAY,EAAE,wBAAwB;oBACtC,IAAI,EAAE,CAAC,KAAK,CAAC;iBACd,CAAC;aACH,CAAC,CAAC;YAEH,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,CAAC,GACjF,UAAgE,CAAC;YAEnE,8CAA8C;YAC9C,IAAI,aAAa,KAAK,EAAE,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,GAAG,IAAI,aAAa,CAAC;YACxC,MAAM,aAAa,GAAG,GAAG,IAAI,cAAc,CAAC;YAE5C,IAAI,aAAa,GAAG,CAAC,CAAC;YACtB,IAAI,aAAa,EAAE,CAAC;gBAClB,aAAa,GAAG,GAAG,CAAC;YACtB,CAAC;iBAAM,IAAI,UAAU,IAAI,cAAc,GAAG,aAAa,EAAE,CAAC;gBACxD,MAAM,OAAO,GAAG,GAAG,GAAG,aAAa,CAAC;gBACpC,MAAM,eAAe,GAAG,cAAc,GAAG,aAAa,CAAC;gBACvD,aAAa,GAAG,MAAM,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;YAC7D,CAAC;YAED,OAAO;gBACL,KAAK,EAAE,SAAS;gBAChB,WAAW;gBACX,aAAa;gBACb,aAAa;gBACb,cAAc;gBACd,KAAK;gBACL,eAAe,EAAE,eAAyB;gBAC1C,UAAU;gBACV,aAAa;gBACb,aAAa;aACd,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,yBAAyB,CAAC,KAAc;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,oCAAoC;QACpC,IAAI,SAAS,CAAC,OAAO,CAAC,YAAY,KAAK,4CAA4C,EAAE,CAAC;YACpF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACtD,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;oBAC7B,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,YAAY;oBACvC,GAAG,EAAE,wBAAwB;oBAC7B,YAAY,EAAE,YAAY;oBAC1B,IAAI,EAAE,CAAC,KAAK,CAAC;iBACd,CAAC;gBACF,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;oBAC7B,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,YAAY;oBACvC,GAAG,EAAE,wBAAwB;oBAC7B,YAAY,EAAE,wBAAwB;oBACtC,IAAI,EAAE,CAAC,KAAK,CAAC;iBACd,CAAC;aACH,CAAC,CAAC;YAEH,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,CAAC,GACjF,UAAgE,CAAC;YAEnE,8CAA8C;YAC9C,IAAI,aAAa,KAAK,EAAE,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,GAAG,IAAI,aAAa,CAAC;YACxC,MAAM,aAAa,GAAG,GAAG,IAAI,cAAc,CAAC;YAE5C,IAAI,aAAa,GAAG,CAAC,CAAC;YACtB,IAAI,aAAa,EAAE,CAAC;gBAClB,aAAa,GAAG,GAAG,CAAC;YACtB,CAAC;iBAAM,IAAI,UAAU,IAAI,cAAc,GAAG,aAAa,EAAE,CAAC;gBACxD,MAAM,OAAO,GAAG,GAAG,GAAG,aAAa,CAAC;gBACpC,MAAM,eAAe,GAAG,cAAc,GAAG,aAAa,CAAC;gBACvD,aAAa,GAAG,MAAM,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;YAC7D,CAAC;YAED,OAAO;gBACL,KAAK,EAAE,SAAS;gBAChB,WAAW;gBACX,aAAa;gBACb,aAAa;gBACb,cAAc;gBACd,KAAK;gBACL,eAAe,EAAE,eAAyB;gBAC1C,UAAU;gBACV,aAAa;gBACb,aAAa;aACd,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,UAAU;IACV,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,KAAc;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;gBACnD,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM;gBACjC,GAAG,EAAE,kBAAkB;gBACvB,YAAY,EAAE,cAAc;gBAC5B,IAAI,EAAE,CAAC,KAAK,CAAC;aACd,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,OAcd,CAAC;YAEF,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;aAC1C,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,MAAe,EAAE,KAAc;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;gBAChD,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS;gBACpC,GAAG,EAAE,mBAAmB;gBACxB,YAAY,EAAE,eAAe;gBAC7B,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;aACtB,CAAC,CAAC;YAEH,OAAO,IAAc,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,MAAe,EAAE,MAAiB;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACzB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACvC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC;gBACpC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;oBAC7B,OAAO,EAAE,KAAK;oBACd,GAAG,EAAE,QAAQ;oBACb,YAAY,EAAE,QAAQ;iBACvB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;aAC1B,CAAC,CAAC;YAEH,OAAO;gBACL,KAAK;gBACL,MAAM,EAAE,MAAgB;gBACxB,aAAa,EAAE,IAAI;gBACnB,aAAa,EAAE,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;aACrC,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAEF,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAEpF,OAAO;YACL,MAAM;YACN,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,QAAQ;YACnB,kBAAkB,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;SAC9C,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,MAAqB;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACxD,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;oBAC7B,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS;oBACpC,GAAG,EAAE,mBAAmB;oBACxB,YAAY,EAAE,WAAW;oBACzB,IAAI,EAAE,CAAC,MAAM,CAAC;iBACf,CAAC;gBACF,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;oBAC7B,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS;oBACpC,GAAG,EAAE,mBAAmB;oBACxB,YAAY,EAAE,eAAe;oBAC7B,IAAI,EAAE,CAAC,MAAM,CAAC;iBACf,CAAC;gBACF,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;oBAC7B,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS;oBACpC,GAAG,EAAE,mBAAmB;oBACxB,YAAY,EAAE,QAAQ;oBACtB,IAAI,EAAE,CAAC,MAAM,CAAC;iBACf,CAAC;aACH,CAAC,CAAC;YAEH,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,MAAkC,CAAC;YACpF,MAAM,aAAa,GAAG,SAAmB,CAAC;YAE1C,iEAAiE;YACjE,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,YAAY,GAAG,aAAa,GAAG,cAAc,CAAC;YACpD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;YAElD,OAAO;gBACL,WAAW;gBACX,SAAS;gBACT,cAAc;gBACd,aAAa;gBACb,YAAY;gBACZ,UAAU,EAAE,UAAoB;gBAChC,eAAe,EAAE,GAAG,IAAI,YAAY;aACrC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAC,KAAc;QACvC,4DAA4D;QAC5D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE1B,oGAAoG;QACpG,MAAM,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QACpF,MAAM,MAAM,GAAG,SAAS,CACtB,mBAAmB,CACjB,kBAAkB,CAAC,0CAA0C,CAAC,EAC9D;YACE,OAAO,CAAC,OAAO,CAAC,SAAS;YACzB,OAAO,CAAC,OAAO,CAAC,SAAS;YACzB,OAAO,CAAC,OAAO,CAAC,GAAG;YACnB,OAAO,CAAC,OAAO,CAAC,WAAW;YAC3B,OAAO,CAAC,OAAO,CAAC,KAAK;SACtB,CACF,CACF,CAAC;QAEF,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,4EAA4E;IAC5E,qBAAqB;IACrB,4EAA4E;IAE5E;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CAAC,KAAc;QAClC,2CAA2C;QAC3C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,0EAA0E;QAC1E,MAAM,CACJ,SAAS,EACT,aAAa,EACb,OAAO,EACP,KAAK,EACL,YAAY,EACb,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAC3B,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;YAC9B,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;SACtC,CAAC,CAAC;QAEH,0DAA0D;QAC1D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAEnD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,GAAG,SAAS;YACZ,GAAG,aAAa;YAChB,UAAU;YACV,OAAO;YACP,KAAK;YACL,YAAY;YACZ,GAAG;SACJ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,KAAc;QACjC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACvD,OAAO,UAAU,KAAK,IAAI,CAAC;IAC7B,CAAC;CACF"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Token Swap Types (0x Swap API v2)
3
+ *
4
+ * Types for the ClawnchSwapper class which wraps the 0x Swap API
5
+ * for server-side / agent token swaps on Base.
6
+ */
7
+ import type { Address, Hash, Hex, TransactionReceipt } from 'viem';
8
+ import type { WalletClient, PublicClient, Chain, Account, Transport } from 'viem';
9
+ import type { NetworkName } from './addresses.js';
10
+ export interface SwapperConfig {
11
+ /** Wallet client for signing and sending transactions */
12
+ wallet: WalletClient<Transport, Chain, Account>;
13
+ /** Public client for reading chain state */
14
+ publicClient: PublicClient;
15
+ /** Network: 'mainnet' (Base) or 'sepolia' (Base Sepolia) */
16
+ network?: NetworkName;
17
+ /** Clawnch API base URL (default: https://clawn.ch) */
18
+ apiBaseUrl?: string;
19
+ }
20
+ export interface SwapParams {
21
+ /** Token to sell (contract address, or NATIVE_TOKEN_ADDRESS for ETH) */
22
+ sellToken: Address;
23
+ /** Token to buy (contract address, or NATIVE_TOKEN_ADDRESS for ETH) */
24
+ buyToken: Address;
25
+ /** Amount to sell in base units (wei for ETH, smallest unit for ERC20) */
26
+ sellAmount: bigint;
27
+ /** Address executing the swap (defaults to wallet address) */
28
+ taker?: Address;
29
+ /** Max slippage in basis points (default: 100 = 1%) */
30
+ slippageBps?: number;
31
+ /** Integrator fee recipient address */
32
+ swapFeeRecipient?: Address;
33
+ /** Integrator fee in basis points (max 1000 = 10%) */
34
+ swapFeeBps?: number;
35
+ /** Token to collect integrator fee in (must be sellToken or buyToken) */
36
+ swapFeeToken?: Address;
37
+ /** Liquidity sources to exclude (e.g. 'Uniswap_V3,SushiSwap') */
38
+ excludedSources?: string;
39
+ }
40
+ export interface SwapRouteFill {
41
+ from: Address;
42
+ to: Address;
43
+ source: string;
44
+ proportionBps: string;
45
+ }
46
+ export interface SwapRoute {
47
+ fills: SwapRouteFill[];
48
+ tokens: Array<{
49
+ address: Address;
50
+ symbol: string;
51
+ }>;
52
+ }
53
+ export interface SwapTokenMetadata {
54
+ buyTaxBps: string;
55
+ sellTaxBps: string;
56
+ }
57
+ export interface SwapAllowanceIssue {
58
+ actual: string;
59
+ spender: Address;
60
+ }
61
+ export interface SwapBalanceIssue {
62
+ token: Address;
63
+ actual: string;
64
+ expected: string;
65
+ }
66
+ export interface SwapIssues {
67
+ allowance?: SwapAllowanceIssue;
68
+ balance?: SwapBalanceIssue;
69
+ simulationIncomplete: boolean;
70
+ invalidSourcesPassed: string[];
71
+ }
72
+ export interface SwapFeeInfo {
73
+ integratorFee: {
74
+ amount: string;
75
+ token: Address;
76
+ type: string;
77
+ } | null;
78
+ zeroExFee: {
79
+ amount: string;
80
+ token: Address;
81
+ type: string;
82
+ } | null;
83
+ gasFee: {
84
+ amount: string;
85
+ token: Address;
86
+ type: string;
87
+ } | null;
88
+ }
89
+ export interface SwapPriceResult {
90
+ /** Amount of buyToken to receive */
91
+ buyAmount: bigint;
92
+ /** Amount of sellToken to sell */
93
+ sellAmount: bigint;
94
+ /** Minimum buy amount after slippage */
95
+ minBuyAmount: bigint;
96
+ /** Estimated gas units */
97
+ gas: bigint;
98
+ /** Gas price in wei */
99
+ gasPrice: bigint;
100
+ /** Total network fee in wei */
101
+ totalNetworkFee: bigint;
102
+ /** Contract to approve for allowance */
103
+ allowanceTarget: Address;
104
+ /** Whether sufficient liquidity exists */
105
+ liquidityAvailable: boolean;
106
+ /** Routing information */
107
+ route: SwapRoute;
108
+ /** Fee breakdown */
109
+ fees: SwapFeeInfo;
110
+ /** Known issues (allowance, balance) */
111
+ issues: SwapIssues;
112
+ /** Token tax metadata */
113
+ tokenMetadata: {
114
+ buyToken: SwapTokenMetadata;
115
+ sellToken: SwapTokenMetadata;
116
+ };
117
+ /** Block number of the quote */
118
+ blockNumber: string;
119
+ /** 0x tracking ID */
120
+ zid: string;
121
+ }
122
+ export interface SwapTransaction {
123
+ to: Address;
124
+ data: Hex;
125
+ gas: bigint;
126
+ gasPrice: bigint;
127
+ value: bigint;
128
+ }
129
+ export interface SwapQuoteResult extends SwapPriceResult {
130
+ /** Ready-to-send transaction data */
131
+ transaction: SwapTransaction;
132
+ }
133
+ export interface SwapResult {
134
+ /** Transaction hash */
135
+ txHash: Hash;
136
+ /** Amount of buyToken received */
137
+ buyAmount: bigint;
138
+ /** Amount of sellToken sold */
139
+ sellAmount: bigint;
140
+ /** Transaction receipt */
141
+ receipt: TransactionReceipt;
142
+ /** Gas used */
143
+ gasUsed: bigint;
144
+ /** Effective gas price */
145
+ effectiveGasPrice: bigint;
146
+ }
147
+ /** 0x representation of native ETH (not an actual contract) */
148
+ export declare const NATIVE_TOKEN_ADDRESS: Address;
149
+ /** WETH on Base mainnet */
150
+ export declare const BASE_WETH: Address;
151
+ /** WETH on Base Sepolia */
152
+ export declare const BASE_SEPOLIA_WETH: Address;
153
+ /** 0x API base URL */
154
+ export declare const ZEROX_API_BASE = "https://api.0x.org";
155
+ /** Base mainnet chain ID */
156
+ export declare const BASE_CHAIN_ID = 8453;
157
+ /** Base Sepolia chain ID */
158
+ export declare const BASE_SEPOLIA_CHAIN_ID = 84532;
159
+ //# sourceMappingURL=swap-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap-types.d.ts","sourceRoot":"","sources":["../src/swap-types.ts"],"names":[],"mappings":"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"}