@clawnch/clawncher-sdk 0.2.0 → 0.3.1

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
@@ -319,6 +319,174 @@ import {
319
319
  } from '@clawnch/clawncher-sdk';
320
320
  ```
321
321
 
322
+ ## Uniswap V4 Trading API
323
+
324
+ Execute swaps via the Uniswap Trading API with automatic Permit2 approval handling. Supports all 15 Uniswap chains.
325
+
326
+ ```typescript
327
+ import { UniswapTradingApi } from '@clawnch/clawncher-sdk';
328
+
329
+ const trading = new UniswapTradingApi({
330
+ wallet,
331
+ publicClient,
332
+ chainId: 8453,
333
+ apiKey: process.env.UNISWAP_API_KEY,
334
+ slippageBps: 50, // 0.5%
335
+ });
336
+
337
+ // Full swap: check_approval → quote → swap (handles Permit2 automatically)
338
+ const result = await trading.swap({
339
+ tokenIn: NATIVE_TOKEN_ADDRESS,
340
+ tokenOut: '0xTokenAddress...',
341
+ amount: parseEther('0.01'),
342
+ });
343
+ console.log('Tx:', result.txHash);
344
+
345
+ // Quote only (no execution)
346
+ const quote = await trading.getQuote({
347
+ tokenIn: NATIVE_TOKEN_ADDRESS,
348
+ tokenOut: '0xTokenAddress...',
349
+ amount: parseEther('0.01'),
350
+ });
351
+ console.log('Output:', quote.quoteAmount, 'Impact:', quote.priceImpact);
352
+
353
+ // Generate Uniswap app deep link
354
+ const link = trading.getSwapDeepLink({
355
+ tokenIn: NATIVE_TOKEN_ADDRESS,
356
+ tokenOut: '0xTokenAddress...',
357
+ amount: parseEther('0.1'),
358
+ });
359
+ ```
360
+
361
+ The Trading API uses a 3-step flow: `POST /check_approval` → `POST /quote` → `POST /swap`. The `swap()` method handles all three steps including Permit2 approvals. Sign up for an API key at [hub.uniswap.org](https://hub.uniswap.org).
362
+
363
+ ## On-Chain V4 Quoter
364
+
365
+ Simulate swaps directly against V4 pools without an API key. Includes Clawnch-native pool discovery via the LP locker contract.
366
+
367
+ ```typescript
368
+ import { UniswapQuoter } from '@clawnch/clawncher-sdk';
369
+
370
+ const quoter = new UniswapQuoter({
371
+ publicClient,
372
+ chainId: 8453,
373
+ });
374
+
375
+ // One-call quote for any Clawnch token (auto-discovers pool key from LP locker)
376
+ const quote = await quoter.quoteClawnchToken(
377
+ '0xTokenAddress...',
378
+ parseEther('0.01'),
379
+ 'buy', // 'buy' = ETH→Token, 'sell' = Token→ETH
380
+ );
381
+ console.log('Output:', quote.quotedAmount);
382
+ console.log('Impact:', quote.priceImpact);
383
+ console.log('Hook:', quote.poolKey.hooks); // correct MEV hook, not zero address
384
+
385
+ // Build pool key from LP locker (includes hook address, fee, tick spacing)
386
+ const poolKey = await quoter.buildPoolKeyFromToken('0xTokenAddress...');
387
+
388
+ // Read pool state (sqrtPriceX96, tick, liquidity)
389
+ const state = await quoter.getPoolState(poolKey);
390
+
391
+ // Manual quote with explicit pool key
392
+ const manualQuote = await quoter.quoteExactInput({
393
+ poolKey,
394
+ zeroForOne: true,
395
+ amount: parseEther('0.01'),
396
+ });
397
+
398
+ // Estimate price impact without a full quote
399
+ const impact = await quoter.estimatePriceImpact(poolKey, parseEther('1'));
400
+ ```
401
+
402
+ `buildPoolKeyFromToken()` reads the LP locker via `ClawnchReader.getTokenRewards()` to auto-discover the correct pool key — including the MEV hook address. This is critical because defaulting the hook to the zero address targets the wrong pool for Clawnch tokens.
403
+
404
+ ## Permit2 Client
405
+
406
+ Manage token approvals for Uniswap V4 via the Permit2 contract. Supports both AllowanceTransfer (PositionManager) and SignatureTransfer (UniversalRouter).
407
+
408
+ ```typescript
409
+ import { Permit2Client, PERMIT2_ADDRESS } from '@clawnch/clawncher-sdk';
410
+
411
+ const permit2 = new Permit2Client({
412
+ wallet,
413
+ publicClient,
414
+ chainId: 8453,
415
+ });
416
+
417
+ // Full approval flow: ERC20→Permit2 + Permit2→spender
418
+ const { approvalTxHash, permitTxHash } = await permit2.ensurePermit2Allowance(
419
+ tokenAddress,
420
+ spenderAddress, // e.g. UniversalRouter
421
+ amount,
422
+ );
423
+
424
+ // Two-token approval for LP operations
425
+ await permit2.ensurePermit2AllowancePair(
426
+ token0, token1, positionManagerAddress, amount0, amount1,
427
+ );
428
+
429
+ // Check allowance state
430
+ const allowance = await permit2.getAllowance(tokenAddress, spenderAddress);
431
+ console.log('Amount:', allowance.amount, 'Expires:', allowance.expiration);
432
+
433
+ // Emergency lockdown — revoke all access
434
+ await permit2.lockdown([
435
+ { token: tokenA, spender: routerAddress },
436
+ { token: tokenB, spender: routerAddress },
437
+ ]);
438
+
439
+ // Sign off-chain permits (AllowanceTransfer)
440
+ const signed = await permit2.signPermitSingle({
441
+ token: tokenAddress,
442
+ spender: routerAddress,
443
+ });
444
+
445
+ // Sign off-chain permits (SignatureTransfer — bitmap nonces)
446
+ const nonce = await permit2.findUnusedNonce(0n);
447
+ const transfer = await permit2.signPermitTransferFrom({
448
+ token: tokenAddress,
449
+ amount: parseEther('1'),
450
+ spender: routerAddress,
451
+ nonce,
452
+ });
453
+ ```
454
+
455
+ Permit2 is deployed at `0x000000000022D473030F116dDEE9F6B43aC78BA3` on all chains.
456
+
457
+ ## Multi-Chain Uniswap Registry
458
+
459
+ Address registry for all 15 Uniswap-supported chains.
460
+
461
+ ```typescript
462
+ import {
463
+ getUniswapChain,
464
+ getAllUniswapChains,
465
+ getTradingApiChains,
466
+ getV4Chains,
467
+ chainIdFromSlug,
468
+ FEE_TIERS,
469
+ } from '@clawnch/clawncher-sdk';
470
+
471
+ // Get config for a specific chain
472
+ const base = getUniswapChain(8453);
473
+ console.log(base.v4UniversalRouter, base.weth, base.permit2);
474
+
475
+ // All chains with Trading API support
476
+ const tradingChains = getTradingApiChains(); // 15 chains
477
+
478
+ // All chains with V4 deployed
479
+ const v4Chains = getV4Chains();
480
+
481
+ // Resolve slug to chain ID
482
+ const chainId = chainIdFromSlug('arbitrum'); // 42161
483
+
484
+ // Fee tiers with tick spacing
485
+ FEE_TIERS.forEach(t => console.log(t.label, t.fee, t.tickSpacing));
486
+ ```
487
+
488
+ Supported chains: Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain, Unichain, Avalanche, Celo, Blast, Zora, World Chain, Soneium, zkSync, Monad.
489
+
322
490
  ## Liquidity Management
323
491
 
324
492
  Manage Uniswap V3 and V4 liquidity positions on Base.
@@ -514,6 +682,28 @@ import type {
514
682
  UniswapV4Addresses,
515
683
  UniswapV3Addresses,
516
684
  CommonAddresses,
685
+ // Uniswap Trading API types
686
+ UniswapTradingConfig,
687
+ TradingSwapParams,
688
+ TradingQuote,
689
+ TradingSwapResult,
690
+ ApprovalCheckResult,
691
+ // Uniswap Quoter types
692
+ QuoterConfig,
693
+ PoolKey,
694
+ QuoteParams,
695
+ QuoteResult,
696
+ PoolState,
697
+ // Permit2 types
698
+ Permit2Config,
699
+ Permit2Allowance,
700
+ PermitSingleParams,
701
+ PermitBatchParams,
702
+ SignedPermitSingle,
703
+ SignedPermitBatch,
704
+ // Multi-chain registry types
705
+ UniswapChainConfig,
706
+ FeeTier,
517
707
  // Verified agent launch types
518
708
  ClawnchApiDeployer,
519
709
  ApiDeployerConfig,
package/dist/errors.d.ts CHANGED
@@ -21,6 +21,7 @@ export declare enum ClawnchErrorCode {
21
21
  CLAIM_FAILED = "CLAIM_FAILED",
22
22
  NO_FEES_AVAILABLE = "NO_FEES_AVAILABLE",
23
23
  FEATURE_NOT_AVAILABLE = "FEATURE_NOT_AVAILABLE",
24
+ INVALID_CHAIN = "INVALID_CHAIN",
24
25
  RPC_ERROR = "RPC_ERROR",
25
26
  TIMEOUT = "TIMEOUT"
26
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,oBAAY,gBAAgB;IAE1B,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IAGnC,qBAAqB,0BAA0B;IAC/C,4BAA4B,iCAAiC;IAG7D,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,kBAAkB,uBAAuB;IAGzC,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;IAGvC,qBAAqB,0BAA0B;IAG/C,SAAS,cAAc;IACvB,OAAO,YAAY;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aAIzB,IAAI,EAAE,gBAAgB;aAEtB,KAAK,CAAC,EAAE,KAAK;IAL/B,QAAQ,CAAC,IAAI,wBAAwB;gBAGnB,IAAI,EAAE,gBAAgB,EACtC,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,EAAE,KAAK,YAAA;CAIhC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,kBAAkB,CAEtE;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,UAAU,GAAE,MAAU,EACtB,WAAW,GAAE,MAAa,GACzB,OAAO,CAAC,CAAC,CAAC,CAgCZ"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,oBAAY,gBAAgB;IAE1B,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IAGnC,qBAAqB,0BAA0B;IAC/C,4BAA4B,iCAAiC;IAG7D,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,kBAAkB,uBAAuB;IAGzC,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;IAGvC,qBAAqB,0BAA0B;IAG/C,aAAa,kBAAkB;IAG/B,SAAS,cAAc;IACvB,OAAO,YAAY;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aAIzB,IAAI,EAAE,gBAAgB;aAEtB,KAAK,CAAC,EAAE,KAAK;IAL/B,QAAQ,CAAC,IAAI,wBAAwB;gBAGnB,IAAI,EAAE,gBAAgB,EACtC,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,EAAE,KAAK,YAAA;CAIhC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,kBAAkB,CAEtE;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,UAAU,GAAE,MAAU,EACtB,WAAW,GAAE,MAAa,GACzB,OAAO,CAAC,CAAC,CAAC,CAiCZ"}
package/dist/errors.js CHANGED
@@ -27,6 +27,8 @@ export var ClawnchErrorCode;
27
27
  ClawnchErrorCode["NO_FEES_AVAILABLE"] = "NO_FEES_AVAILABLE";
28
28
  // Feature not available
29
29
  ClawnchErrorCode["FEATURE_NOT_AVAILABLE"] = "FEATURE_NOT_AVAILABLE";
30
+ // Chain errors
31
+ ClawnchErrorCode["INVALID_CHAIN"] = "INVALID_CHAIN";
30
32
  // Network errors
31
33
  ClawnchErrorCode["RPC_ERROR"] = "RPC_ERROR";
32
34
  ClawnchErrorCode["TIMEOUT"] = "TIMEOUT";
@@ -104,6 +106,7 @@ export async function withRetry(fn, maxRetries = 2, baseDelayMs = 1000) {
104
106
  ClawnchErrorCode.WALLET_NOT_CONFIGURED,
105
107
  ClawnchErrorCode.PUBLIC_CLIENT_NOT_CONFIGURED,
106
108
  ClawnchErrorCode.FEATURE_NOT_AVAILABLE,
109
+ ClawnchErrorCode.INVALID_CHAIN,
107
110
  ClawnchErrorCode.INSUFFICIENT_FUNDS,
108
111
  ];
109
112
  if (nonRetryable.includes(err.code))
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,gBA0BX;AA1BD,WAAY,gBAAgB;IAC1B,oBAAoB;IACpB,+CAA2B,CAAA;IAC3B,iDAA6B,CAAA;IAC7B,qDAAiC,CAAA;IACjC,uDAAmC,CAAA;IAEnC,uBAAuB;IACvB,mEAA+C,CAAA;IAC/C,iFAA6D,CAAA;IAE7D,oBAAoB;IACpB,mDAA+B,CAAA;IAC/B,+CAA2B,CAAA;IAC3B,6DAAyC,CAAA;IAEzC,kBAAkB;IAClB,iDAA6B,CAAA;IAC7B,2DAAuC,CAAA;IAEvC,wBAAwB;IACxB,mEAA+C,CAAA;IAE/C,iBAAiB;IACjB,2CAAuB,CAAA;IACvB,uCAAmB,CAAA;AACrB,CAAC,EA1BW,gBAAgB,KAAhB,gBAAgB,QA0B3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAIzB;IAEA;IALT,IAAI,GAAG,oBAAoB,CAAC;IAErC,YACkB,IAAsB,EACtC,OAAe,EACC,KAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAkB;QAEtB,UAAK,GAAL,KAAK,CAAQ;IAG/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,OAAO,GAAG,YAAY,kBAAkB,CAAC;AAC3C,CAAC;AAED,4EAA4E;AAC5E,gBAAgB;AAChB,4EAA4E;AAE5E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,EAAoB,EACpB,aAAqB,CAAC,EACtB,cAAsB,IAAI;IAE1B,IAAI,SAAkB,CAAC;IACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,GAAG,GAAG,CAAC;YAEhB,sCAAsC;YACtC,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;gBACtC,MAAM,YAAY,GAAuB;oBACvC,gBAAgB,CAAC,WAAW;oBAC5B,gBAAgB,CAAC,YAAY;oBAC7B,gBAAgB,CAAC,cAAc;oBAC/B,gBAAgB,CAAC,eAAe;oBAChC,gBAAgB,CAAC,qBAAqB;oBACtC,gBAAgB,CAAC,4BAA4B;oBAC7C,gBAAgB,CAAC,qBAAqB;oBACtC,gBAAgB,CAAC,kBAAkB;iBACpC,CAAC;gBACF,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,MAAM,GAAG,CAAC;YACjD,CAAC;YAED,yCAAyC;YACzC,IAAI,OAAO,KAAK,UAAU;gBAAE,MAAM;YAElC,uCAAuC;YACvC,MAAM,KAAK,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,MAAM,SAAS,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,gBA6BX;AA7BD,WAAY,gBAAgB;IAC1B,oBAAoB;IACpB,+CAA2B,CAAA;IAC3B,iDAA6B,CAAA;IAC7B,qDAAiC,CAAA;IACjC,uDAAmC,CAAA;IAEnC,uBAAuB;IACvB,mEAA+C,CAAA;IAC/C,iFAA6D,CAAA;IAE7D,oBAAoB;IACpB,mDAA+B,CAAA;IAC/B,+CAA2B,CAAA;IAC3B,6DAAyC,CAAA;IAEzC,kBAAkB;IAClB,iDAA6B,CAAA;IAC7B,2DAAuC,CAAA;IAEvC,wBAAwB;IACxB,mEAA+C,CAAA;IAE/C,eAAe;IACf,mDAA+B,CAAA;IAE/B,iBAAiB;IACjB,2CAAuB,CAAA;IACvB,uCAAmB,CAAA;AACrB,CAAC,EA7BW,gBAAgB,KAAhB,gBAAgB,QA6B3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAIzB;IAEA;IALT,IAAI,GAAG,oBAAoB,CAAC;IAErC,YACkB,IAAsB,EACtC,OAAe,EACC,KAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAkB;QAEtB,UAAK,GAAL,KAAK,CAAQ;IAG/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,OAAO,GAAG,YAAY,kBAAkB,CAAC;AAC3C,CAAC;AAED,4EAA4E;AAC5E,gBAAgB;AAChB,4EAA4E;AAE5E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,EAAoB,EACpB,aAAqB,CAAC,EACtB,cAAsB,IAAI;IAE1B,IAAI,SAAkB,CAAC;IACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,GAAG,GAAG,CAAC;YAEhB,sCAAsC;YACtC,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;gBACtC,MAAM,YAAY,GAAuB;oBACvC,gBAAgB,CAAC,WAAW;oBAC5B,gBAAgB,CAAC,YAAY;oBAC7B,gBAAgB,CAAC,cAAc;oBAC/B,gBAAgB,CAAC,eAAe;oBAChC,gBAAgB,CAAC,qBAAqB;oBACtC,gBAAgB,CAAC,4BAA4B;oBAC7C,gBAAgB,CAAC,qBAAqB;oBACtC,gBAAgB,CAAC,aAAa;oBAC9B,gBAAgB,CAAC,kBAAkB;iBACpC,CAAC;gBACF,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,MAAM,GAAG,CAAC;YACjD,CAAC;YAED,yCAAyC;YACzC,IAAI,OAAO,KAAK,UAAU;gBAAE,MAAM;YAElC,uCAAuC;YACvC,MAAM,KAAK,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,MAAM,SAAS,CAAC;AAClB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -54,6 +54,10 @@ export * from './liquidity.js';
54
54
  export * from './liquidity-types.js';
55
55
  export * from './uniswap-addresses.js';
56
56
  export * from './uniswap-abis.js';
57
+ export * from './uniswap-chains.js';
58
+ export * from './uniswap-trading.js';
59
+ export * from './uniswap-quoter.js';
60
+ export * from './permit2.js';
57
61
  export * from './api-deployer.js';
58
62
  export * from './api-deployer-types.js';
59
63
  export * from './price.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -59,6 +59,14 @@ export * from './liquidity.js';
59
59
  export * from './liquidity-types.js';
60
60
  export * from './uniswap-addresses.js';
61
61
  export * from './uniswap-abis.js';
62
+ // Multi-chain Uniswap registry (15+ chains)
63
+ export * from './uniswap-chains.js';
64
+ // Uniswap Trading API (swap via Uniswap's hosted API)
65
+ export * from './uniswap-trading.js';
66
+ // V4 Quoter (on-chain swap simulation + price impact)
67
+ export * from './uniswap-quoter.js';
68
+ // Permit2 (EIP-712 signature-based token approvals)
69
+ export * from './permit2.js';
62
70
  // Verified agent launches (via Clawnch API)
63
71
  export * from './api-deployer.js';
64
72
  export * from './api-deployer-types.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -26,13 +26,17 @@
26
26
  * ```
27
27
  */
28
28
  import { type Address, type Hex, type Hash } from 'viem';
29
+ import { Permit2Client } from './permit2.js';
29
30
  import type { LiquidityConfig, V4PoolKey, V4PoolState, V4MintParams, V3MintParams, V3AddLiquidityParams, V3RemoveLiquidityParams, V3CollectFeesParams, PositionInfo, MintResult, ModifyLiquidityResult, CollectFeesResult } from './liquidity-types.js';
30
31
  export type { LiquidityConfig, V4PoolKey, V4PoolState, V4MintParams, V4AddLiquidityParams, V4RemoveLiquidityParams, V4CollectFeesParams, V3MintParams, V3AddLiquidityParams, V3RemoveLiquidityParams, V3CollectFeesParams, PositionInfo, MintResult, ModifyLiquidityResult, CollectFeesResult, } from './liquidity-types.js';
31
32
  export declare class ClawnchLiquidity {
32
33
  private readonly wallet;
33
34
  private readonly publicClient;
34
35
  private readonly network;
36
+ private _permit2;
35
37
  constructor(config: LiquidityConfig);
38
+ /** Lazy-initialized Permit2 client for V4 approval flows */
39
+ get permit2(): Permit2Client;
36
40
  private getChain;
37
41
  private getWalletAddress;
38
42
  /**
@@ -48,17 +52,19 @@ export declare class ClawnchLiquidity {
48
52
  */
49
53
  v4GetPosition(tokenId: bigint): Promise<PositionInfo>;
50
54
  /**
51
- * Mint a new V4 liquidity position
55
+ * Mint a new V4 liquidity position using the @uniswap/v4-sdk.
52
56
  *
53
- * Note: For full V4 SDK integration (Pool/Position math, calldata encoding),
54
- * the @uniswap/v4-sdk package is required. This method provides a lower-level
55
- * interface using direct contract calls for environments where the Uniswap SDK
56
- * may not be available.
57
+ * Creates a Position object from the desired amounts, computes the
58
+ * encoded calldata via V4PositionManager.addCallParameters(), and
59
+ * executes it through the PositionManager contract.
57
60
  *
58
- * For production use, consider using the Uniswap V4 SDK's
59
- * V4PositionManager.addCallParameters() for proper slippage calculation.
61
+ * Handles token approvals to the PositionManager before minting.
60
62
  */
61
- v4MintPosition(_params: V4MintParams): Promise<MintResult>;
63
+ v4MintPosition(params: V4MintParams): Promise<MintResult>;
64
+ /**
65
+ * Helper: get ERC20 token decimals
66
+ */
67
+ private getTokenDecimals;
62
68
  /**
63
69
  * Execute a V4 PositionManager multicall with pre-built calldata
64
70
  *
@@ -1 +1 @@
1
- {"version":3,"file":"liquidity.d.ts","sourceRoot":"","sources":["../src/liquidity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,IAAI,EAKV,MAAM,MAAM,CAAC;AAKd,OAAO,KAAK,EACV,eAAe,EACf,SAAS,EACT,WAAW,EACX,YAAY,EAIZ,YAAY,EACZ,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,eAAe,EACf,SAAS,EACT,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AA4B9B,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAC/D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;gBAEzC,MAAM,EAAE,eAAe;IAmBnC,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;YACW,cAAc;IA8B5B;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IA8C9D;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA+E3D;;;;;;;;;;OAUG;IACG,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAYhE;;;;;;;;;;OAUG;IACG,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC;IA4BpG;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA8B3D;;OAEG;IACG,uBAAuB,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAsCxE;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IA6E/D;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA2DnG;;;;;OAKG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA8GzG;;;;OAIG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA8ClG;;OAEG;IACG,oBAAoB,CACxB,YAAY,EAAE,OAAO,EACrB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,YAAY,EAAE,CAAC;CAQ3B"}
1
+ {"version":3,"file":"liquidity.d.ts","sourceRoot":"","sources":["../src/liquidity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,IAAI,EAKV,MAAM,MAAM,CAAC;AAKd,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EACV,eAAe,EACf,SAAS,EACT,WAAW,EACX,YAAY,EAIZ,YAAY,EACZ,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,eAAe,EACf,SAAS,EACT,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AA4B9B,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAC/D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAA8B;gBAElC,MAAM,EAAE,eAAe;IAmBnC,4DAA4D;IAC5D,IAAI,OAAO,IAAI,aAAa,CAS3B;IAED,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;YACW,cAAc;IA8B5B;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IA8C9D;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA+E3D;;;;;;;;OAQG;IACG,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAkK/D;;OAEG;YACW,gBAAgB;IAa9B;;;;;;;;;;OAUG;IACG,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC;IA4BpG;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA8B3D;;OAEG;IACG,uBAAuB,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAsCxE;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IA6E/D;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA2DnG;;;;;OAKG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA8GzG;;;;OAIG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA8ClG;;OAEG;IACG,oBAAoB,CACxB,YAAY,EAAE,OAAO,EACrB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,YAAY,EAAE,CAAC;CAQ3B"}
package/dist/liquidity.js CHANGED
@@ -28,8 +28,9 @@
28
28
  import { erc20Abi, maxUint256, maxUint128, encodeFunctionData, } from 'viem';
29
29
  import { base, baseSepolia } from 'viem/chains';
30
30
  import { ClawnchErrorCode, ClawnchDeployError } from './errors.js';
31
- import { getUniswapV4Addresses, getUniswapV3Addresses } from './uniswap-addresses.js';
31
+ import { getUniswapV4Addresses, getUniswapV3Addresses, getCommonAddresses } from './uniswap-addresses.js';
32
32
  import { StateViewABI, V4PositionManagerABI, V3NonfungiblePositionManagerABI } from './uniswap-abis.js';
33
+ import { Permit2Client } from './permit2.js';
33
34
  // ============================================================================
34
35
  // Constants
35
36
  // ============================================================================
@@ -54,6 +55,7 @@ export class ClawnchLiquidity {
54
55
  wallet;
55
56
  publicClient;
56
57
  network;
58
+ _permit2 = null;
57
59
  constructor(config) {
58
60
  if (!config.wallet) {
59
61
  throw new ClawnchDeployError(ClawnchErrorCode.WALLET_NOT_CONFIGURED, 'Wallet client is required for ClawnchLiquidity');
@@ -65,6 +67,17 @@ export class ClawnchLiquidity {
65
67
  this.publicClient = config.publicClient;
66
68
  this.network = config.network ?? 'mainnet';
67
69
  }
70
+ /** Lazy-initialized Permit2 client for V4 approval flows */
71
+ get permit2() {
72
+ if (!this._permit2) {
73
+ this._permit2 = new Permit2Client({
74
+ wallet: this.wallet,
75
+ publicClient: this.publicClient,
76
+ chainId: this.getChain().id,
77
+ });
78
+ }
79
+ return this._permit2;
80
+ }
68
81
  getChain() {
69
82
  return this.network === 'mainnet' ? base : baseSepolia;
70
83
  }
@@ -207,23 +220,144 @@ export class ClawnchLiquidity {
207
220
  // V4: Mint Position
208
221
  // ==========================================================================
209
222
  /**
210
- * Mint a new V4 liquidity position
223
+ * Mint a new V4 liquidity position using the @uniswap/v4-sdk.
211
224
  *
212
- * Note: For full V4 SDK integration (Pool/Position math, calldata encoding),
213
- * the @uniswap/v4-sdk package is required. This method provides a lower-level
214
- * interface using direct contract calls for environments where the Uniswap SDK
215
- * may not be available.
225
+ * Creates a Position object from the desired amounts, computes the
226
+ * encoded calldata via V4PositionManager.addCallParameters(), and
227
+ * executes it through the PositionManager contract.
216
228
  *
217
- * For production use, consider using the Uniswap V4 SDK's
218
- * V4PositionManager.addCallParameters() for proper slippage calculation.
229
+ * Handles token approvals to the PositionManager before minting.
219
230
  */
220
- async v4MintPosition(_params) {
221
- // V4 minting requires the @uniswap/v4-sdk for proper action encoding.
222
- // Throw immediately — do NOT run approval transactions first, as that
223
- // would waste gas on on-chain approvals before hitting this error.
224
- throw new ClawnchDeployError(ClawnchErrorCode.FEATURE_NOT_AVAILABLE, 'V4 minting requires @uniswap/v4-sdk for proper action encoding. ' +
225
- 'Install it and use V4PositionManager.addCallParameters() to generate calldata, ' +
226
- 'then pass it to v4ExecuteMulticall().');
231
+ async v4MintPosition(params) {
232
+ const v4 = getUniswapV4Addresses(this.network);
233
+ const common = getCommonAddresses(this.network);
234
+ const recipient = params.recipient ?? this.getWalletAddress();
235
+ const hookAddress = params.hookAddress ?? ZERO_ADDRESS;
236
+ // Dynamically import the V4 SDK (heavy dependency, loaded lazily)
237
+ let v4Sdk;
238
+ let sdkCore;
239
+ try {
240
+ v4Sdk = await import('@uniswap/v4-sdk');
241
+ sdkCore = await import('@uniswap/sdk-core');
242
+ }
243
+ catch {
244
+ throw new ClawnchDeployError(ClawnchErrorCode.FEATURE_NOT_AVAILABLE, 'V4 minting requires @uniswap/v4-sdk and @uniswap/sdk-core. ' +
245
+ 'Install them: npm install @uniswap/v4-sdk @uniswap/sdk-core');
246
+ }
247
+ // Build Currency objects for the SDK
248
+ const chainId = this.getChain().id;
249
+ const isToken0Native = params.token0.toLowerCase() === ZERO_ADDRESS.toLowerCase();
250
+ const isToken1Native = params.token1.toLowerCase() === ZERO_ADDRESS.toLowerCase();
251
+ const isToken0Weth = params.token0.toLowerCase() === common.weth.toLowerCase();
252
+ const isToken1Weth = params.token1.toLowerCase() === common.weth.toLowerCase();
253
+ // For the SDK, we need Token objects. WETH is treated as a Token, not native.
254
+ const currency0 = new sdkCore.Token(chainId, params.token0, 18);
255
+ const currency1 = new sdkCore.Token(chainId, params.token1, 18);
256
+ // We need to fetch token decimals for non-WETH tokens
257
+ const [decimals0, decimals1] = await Promise.all([
258
+ isToken0Native ? Promise.resolve(18) : this.getTokenDecimals(params.token0),
259
+ isToken1Native ? Promise.resolve(18) : this.getTokenDecimals(params.token1),
260
+ ]);
261
+ const token0 = new sdkCore.Token(chainId, params.token0, decimals0);
262
+ const token1 = new sdkCore.Token(chainId, params.token1, decimals1);
263
+ // Read current pool state to construct Pool object
264
+ const poolState = await this.v4GetPoolState({
265
+ currency0: params.token0,
266
+ currency1: params.token1,
267
+ fee: params.fee,
268
+ tickSpacing: params.tickSpacing,
269
+ hooks: hookAddress,
270
+ });
271
+ if (poolState.sqrtPriceX96 === 0n) {
272
+ throw new ClawnchDeployError(ClawnchErrorCode.DEPLOY_FAILED, 'Pool does not exist or has no liquidity. Initialize the pool first.');
273
+ }
274
+ // Construct the SDK Pool object
275
+ const pool = new v4Sdk.Pool(token0, token1, params.fee, params.tickSpacing, hookAddress, poolState.sqrtPriceX96.toString(), poolState.liquidity.toString(), poolState.tick);
276
+ // Construct Position from amounts
277
+ const position = v4Sdk.Position.fromAmounts({
278
+ pool,
279
+ tickLower: params.tickLower,
280
+ tickUpper: params.tickUpper,
281
+ amount0: params.amount0Desired.toString(),
282
+ amount1: params.amount1Desired.toString(),
283
+ useFullPrecision: true,
284
+ });
285
+ // Compute slippage-adjusted parameters
286
+ const slippageBps = params.slippageBps ?? DEFAULT_SLIPPAGE_BPS;
287
+ const slippageTolerance = new sdkCore.Percent(slippageBps, 10000);
288
+ const deadline = getDeadline(params.deadline);
289
+ // Build calldata using V4PositionManager
290
+ const useNative = params.useNativeEth && (isToken0Weth || isToken1Weth)
291
+ ? sdkCore.Ether.onChain(chainId)
292
+ : undefined;
293
+ const { calldata, value } = v4Sdk.V4PositionManager.addCallParameters(position, {
294
+ slippageTolerance,
295
+ deadline: deadline.toString(),
296
+ recipient,
297
+ useNative,
298
+ });
299
+ // Approve tokens via Permit2 for the V4 PositionManager.
300
+ // V4 uses Permit2-based approvals: ERC20→Permit2 (one-time), then
301
+ // Permit2→PositionManager (allowance grant).
302
+ const tokensToApprove = [];
303
+ if (!isToken0Native && !(params.useNativeEth && isToken0Weth)) {
304
+ tokensToApprove.push(params.token0);
305
+ }
306
+ if (!isToken1Native && !(params.useNativeEth && isToken1Weth)) {
307
+ tokensToApprove.push(params.token1);
308
+ }
309
+ if (tokensToApprove.length === 2) {
310
+ await this.permit2.ensurePermit2AllowancePair(tokensToApprove[0], tokensToApprove[1], v4.positionManager, params.amount0Desired, params.amount1Desired);
311
+ }
312
+ else if (tokensToApprove.length === 1) {
313
+ const amount = tokensToApprove[0].toLowerCase() === params.token0.toLowerCase()
314
+ ? params.amount0Desired
315
+ : params.amount1Desired;
316
+ await this.permit2.ensurePermit2Allowance(tokensToApprove[0], v4.positionManager, amount);
317
+ }
318
+ // Execute the multicall
319
+ const ethValue = BigInt(value);
320
+ const { txHash, receipt } = await this.v4ExecuteMulticall(calldata, ethValue);
321
+ // Parse mint event from receipt to get tokenId and amounts
322
+ // PositionManager emits Transfer(address,address,uint256) for the NFT mint
323
+ let tokenId = 0n;
324
+ let amount0 = params.amount0Desired;
325
+ let amount1 = params.amount1Desired;
326
+ let liquidityMinted = BigInt(position.liquidity.toString());
327
+ // Try to parse Transfer event (ERC721: topic[0]=Transfer, topic[1]=from, topic[2]=to, topic[3]=tokenId)
328
+ const transferTopic = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
329
+ for (const log of receipt.logs) {
330
+ if (log.address.toLowerCase() === v4.positionManager.toLowerCase() &&
331
+ log.topics[0] === transferTopic &&
332
+ log.topics.length === 4) {
333
+ tokenId = BigInt(log.topics[3] || '0');
334
+ break;
335
+ }
336
+ }
337
+ return {
338
+ txHash,
339
+ tokenId,
340
+ amount0,
341
+ amount1,
342
+ liquidity: liquidityMinted,
343
+ receipt,
344
+ };
345
+ }
346
+ /**
347
+ * Helper: get ERC20 token decimals
348
+ */
349
+ async getTokenDecimals(token) {
350
+ try {
351
+ const decimals = await this.publicClient.readContract({
352
+ address: token,
353
+ abi: erc20Abi,
354
+ functionName: 'decimals',
355
+ });
356
+ return decimals;
357
+ }
358
+ catch {
359
+ return 18; // default assumption
360
+ }
227
361
  }
228
362
  /**
229
363
  * Execute a V4 PositionManager multicall with pre-built calldata