@steerprotocol/sdk 1.19.15 → 1.19.17

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 (153) hide show
  1. package/README.md +281 -11
  2. package/dist/cjs/base/VaultClient.js +95 -1
  3. package/dist/cjs/base/VaultClient.js.map +1 -1
  4. package/dist/cjs/base/vault/single-asset/calculateLimitPrice.js +231 -0
  5. package/dist/cjs/base/vault/single-asset/calculateLimitPrice.js.map +1 -0
  6. package/dist/cjs/base/vault/single-asset/calculateSwapAmount.js +68 -0
  7. package/dist/cjs/base/vault/single-asset/calculateSwapAmount.js.map +1 -0
  8. package/dist/cjs/base/vault/single-asset/estimateLpTokens.js +355 -0
  9. package/dist/cjs/base/vault/single-asset/estimateLpTokens.js.map +1 -0
  10. package/dist/cjs/base/vault/single-asset/index.js +109 -0
  11. package/dist/cjs/base/vault/single-asset/index.js.map +1 -0
  12. package/dist/cjs/base/vault/single-asset/simulateSwap.js +317 -0
  13. package/dist/cjs/base/vault/single-asset/simulateSwap.js.map +1 -0
  14. package/dist/cjs/base/vault/single-asset/singleAssetDeposit.js +327 -0
  15. package/dist/cjs/base/vault/single-asset/singleAssetDeposit.js.map +1 -0
  16. package/dist/cjs/base/vault/single-asset/types.js +15 -0
  17. package/dist/cjs/base/vault/single-asset/types.js.map +1 -0
  18. package/dist/cjs/base/vault/utils.js +229 -18
  19. package/dist/cjs/base/vault/utils.js.map +1 -1
  20. package/dist/cjs/const/abis/index.js +3 -0
  21. package/dist/cjs/const/abis/index.js.map +1 -1
  22. package/dist/cjs/const/abis/quoter.js +1584 -0
  23. package/dist/cjs/const/abis/quoter.js.map +1 -0
  24. package/dist/cjs/const/abis/singleTokenDeposit.js +925 -0
  25. package/dist/cjs/const/abis/singleTokenDeposit.js.map +1 -0
  26. package/dist/cjs/const/amm/configs/protocols/machinex.js +3 -0
  27. package/dist/cjs/const/amm/configs/protocols/machinex.js.map +1 -1
  28. package/dist/cjs/const/amm/configs/protocols/quickswap.js +3 -0
  29. package/dist/cjs/const/amm/configs/protocols/quickswap.js.map +1 -1
  30. package/dist/cjs/const/amm/configs/protocols/retro.js +3 -0
  31. package/dist/cjs/const/amm/configs/protocols/retro.js.map +1 -1
  32. package/dist/cjs/const/amm/configs/protocols/sushi.js +3 -0
  33. package/dist/cjs/const/amm/configs/protocols/sushi.js.map +1 -1
  34. package/dist/cjs/const/amm/configs/protocols/uniswap.js +15 -0
  35. package/dist/cjs/const/amm/configs/protocols/uniswap.js.map +1 -1
  36. package/dist/cjs/const/amm/utils/contracts.js +6 -0
  37. package/dist/cjs/const/amm/utils/contracts.js.map +1 -1
  38. package/dist/cjs/const/deployments/abis.js +277 -0
  39. package/dist/cjs/const/deployments/abis.js.map +1 -1
  40. package/dist/cjs/const/deployments/peaq.js +8 -0
  41. package/dist/cjs/const/deployments/peaq.js.map +1 -1
  42. package/dist/cjs/const/deployments/polygon.js +8 -0
  43. package/dist/cjs/const/deployments/polygon.js.map +1 -1
  44. package/dist/cjs/const/index.js +6 -5
  45. package/dist/cjs/const/index.js.map +1 -1
  46. package/dist/cjs/const/network.js +9 -0
  47. package/dist/cjs/const/network.js.map +1 -1
  48. package/dist/cjs/const/protocol.js +18 -1
  49. package/dist/cjs/const/protocol.js.map +1 -1
  50. package/dist/cjs/const/quoter.js +425 -0
  51. package/dist/cjs/const/quoter.js.map +1 -0
  52. package/dist/cjs/index.js +1 -0
  53. package/dist/cjs/index.js.map +1 -1
  54. package/dist/esm/base/VaultClient.js +81 -1
  55. package/dist/esm/base/VaultClient.js.map +1 -1
  56. package/dist/esm/base/vault/single-asset/calculateLimitPrice.js +224 -0
  57. package/dist/esm/base/vault/single-asset/calculateLimitPrice.js.map +1 -0
  58. package/dist/esm/base/vault/single-asset/calculateSwapAmount.js +65 -0
  59. package/dist/esm/base/vault/single-asset/calculateSwapAmount.js.map +1 -0
  60. package/dist/esm/base/vault/single-asset/estimateLpTokens.js +350 -0
  61. package/dist/esm/base/vault/single-asset/estimateLpTokens.js.map +1 -0
  62. package/dist/esm/base/vault/single-asset/index.js +83 -0
  63. package/dist/esm/base/vault/single-asset/index.js.map +1 -0
  64. package/dist/esm/base/vault/single-asset/simulateSwap.js +311 -0
  65. package/dist/esm/base/vault/single-asset/simulateSwap.js.map +1 -0
  66. package/dist/esm/base/vault/single-asset/singleAssetDeposit.js +323 -0
  67. package/dist/esm/base/vault/single-asset/singleAssetDeposit.js.map +1 -0
  68. package/dist/esm/base/vault/single-asset/types.js +12 -0
  69. package/dist/esm/base/vault/single-asset/types.js.map +1 -0
  70. package/dist/esm/base/vault/utils.js +226 -18
  71. package/dist/esm/base/vault/utils.js.map +1 -1
  72. package/dist/esm/const/abis/index.js +3 -0
  73. package/dist/esm/const/abis/index.js.map +1 -1
  74. package/dist/esm/const/abis/quoter.js +1581 -0
  75. package/dist/esm/const/abis/quoter.js.map +1 -0
  76. package/dist/esm/const/abis/singleTokenDeposit.js +922 -0
  77. package/dist/esm/const/abis/singleTokenDeposit.js.map +1 -0
  78. package/dist/esm/const/amm/configs/protocols/machinex.js +3 -0
  79. package/dist/esm/const/amm/configs/protocols/machinex.js.map +1 -1
  80. package/dist/esm/const/amm/configs/protocols/quickswap.js +3 -0
  81. package/dist/esm/const/amm/configs/protocols/quickswap.js.map +1 -1
  82. package/dist/esm/const/amm/configs/protocols/retro.js +3 -0
  83. package/dist/esm/const/amm/configs/protocols/retro.js.map +1 -1
  84. package/dist/esm/const/amm/configs/protocols/sushi.js +3 -0
  85. package/dist/esm/const/amm/configs/protocols/sushi.js.map +1 -1
  86. package/dist/esm/const/amm/configs/protocols/uniswap.js +15 -0
  87. package/dist/esm/const/amm/configs/protocols/uniswap.js.map +1 -1
  88. package/dist/esm/const/amm/utils/contracts.js +5 -0
  89. package/dist/esm/const/amm/utils/contracts.js.map +1 -1
  90. package/dist/esm/const/deployments/abis.js +277 -0
  91. package/dist/esm/const/deployments/abis.js.map +1 -1
  92. package/dist/esm/const/deployments/peaq.js +8 -0
  93. package/dist/esm/const/deployments/peaq.js.map +1 -1
  94. package/dist/esm/const/deployments/polygon.js +8 -0
  95. package/dist/esm/const/deployments/polygon.js.map +1 -1
  96. package/dist/esm/const/index.js +6 -5
  97. package/dist/esm/const/index.js.map +1 -1
  98. package/dist/esm/const/network.js +7 -0
  99. package/dist/esm/const/network.js.map +1 -1
  100. package/dist/esm/const/protocol.js +16 -0
  101. package/dist/esm/const/protocol.js.map +1 -1
  102. package/dist/esm/const/quoter.js +414 -0
  103. package/dist/esm/const/quoter.js.map +1 -0
  104. package/dist/esm/index.js +1 -0
  105. package/dist/esm/index.js.map +1 -1
  106. package/dist/types/base/VaultClient.d.ts +136 -4
  107. package/dist/types/base/VaultClient.d.ts.map +1 -1
  108. package/dist/types/base/vault/single-asset/calculateLimitPrice.d.ts +59 -0
  109. package/dist/types/base/vault/single-asset/calculateLimitPrice.d.ts.map +1 -0
  110. package/dist/types/base/vault/single-asset/calculateSwapAmount.d.ts +30 -0
  111. package/dist/types/base/vault/single-asset/calculateSwapAmount.d.ts.map +1 -0
  112. package/dist/types/base/vault/single-asset/estimateLpTokens.d.ts +61 -0
  113. package/dist/types/base/vault/single-asset/estimateLpTokens.d.ts.map +1 -0
  114. package/dist/types/base/vault/single-asset/index.d.ts +80 -0
  115. package/dist/types/base/vault/single-asset/index.d.ts.map +1 -0
  116. package/dist/types/base/vault/single-asset/simulateSwap.d.ts +119 -0
  117. package/dist/types/base/vault/single-asset/simulateSwap.d.ts.map +1 -0
  118. package/dist/types/base/vault/single-asset/singleAssetDeposit.d.ts +141 -0
  119. package/dist/types/base/vault/single-asset/singleAssetDeposit.d.ts.map +1 -0
  120. package/dist/types/base/vault/single-asset/types.d.ts +169 -0
  121. package/dist/types/base/vault/single-asset/types.d.ts.map +1 -0
  122. package/dist/types/base/vault/utils.d.ts +95 -0
  123. package/dist/types/base/vault/utils.d.ts.map +1 -1
  124. package/dist/types/const/abis/index.d.ts +3 -0
  125. package/dist/types/const/abis/index.d.ts.map +1 -1
  126. package/dist/types/const/abis/quoter.d.ts +432 -0
  127. package/dist/types/const/abis/quoter.d.ts.map +1 -0
  128. package/dist/types/const/abis/singleTokenDeposit.d.ts +47 -0
  129. package/dist/types/const/abis/singleTokenDeposit.d.ts.map +1 -0
  130. package/dist/types/const/amm/configs/protocols/machinex.d.ts.map +1 -1
  131. package/dist/types/const/amm/configs/protocols/quickswap.d.ts.map +1 -1
  132. package/dist/types/const/amm/configs/protocols/retro.d.ts.map +1 -1
  133. package/dist/types/const/amm/configs/protocols/sushi.d.ts.map +1 -1
  134. package/dist/types/const/amm/configs/protocols/uniswap.d.ts.map +1 -1
  135. package/dist/types/const/amm/utils/contracts.d.ts +2 -0
  136. package/dist/types/const/amm/utils/contracts.d.ts.map +1 -1
  137. package/dist/types/const/deployments/abis.d.ts +215 -0
  138. package/dist/types/const/deployments/abis.d.ts.map +1 -1
  139. package/dist/types/const/deployments/peaq.d.ts.map +1 -1
  140. package/dist/types/const/deployments/polygon.d.ts.map +1 -1
  141. package/dist/types/const/index.d.ts +6 -5
  142. package/dist/types/const/index.d.ts.map +1 -1
  143. package/dist/types/const/network.d.ts +4 -0
  144. package/dist/types/const/network.d.ts.map +1 -1
  145. package/dist/types/const/protocol.d.ts +2 -0
  146. package/dist/types/const/protocol.d.ts.map +1 -1
  147. package/dist/types/const/quoter.d.ts +456 -0
  148. package/dist/types/const/quoter.d.ts.map +1 -0
  149. package/dist/types/index.d.ts +1 -0
  150. package/dist/types/index.d.ts.map +1 -1
  151. package/dist/types/types.d.ts +3 -0
  152. package/dist/types/types.d.ts.map +1 -1
  153. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"estimateLpTokens.js","sourceRoot":"","sources":["../../../../../src/base/vault/single-asset/estimateLpTokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.SingleAssetDepositClient = exports.getVaultReserves = exports.estimateLpTokens = exports.validateSwapParams = exports.determineSwapDirection = exports.simulateSwap = exports.getPoolSlot0 = exports.calculateLimitPrice = exports.calculateSwapAmount = void 0;
18
+ // Export all types
19
+ __exportStar(require("./types"), exports);
20
+ // Export individual functions for separate testing and usage
21
+ var calculateSwapAmount_1 = require("./calculateSwapAmount");
22
+ Object.defineProperty(exports, "calculateSwapAmount", { enumerable: true, get: function () { return calculateSwapAmount_1.calculateSwapAmount; } });
23
+ var calculateLimitPrice_1 = require("./calculateLimitPrice");
24
+ Object.defineProperty(exports, "calculateLimitPrice", { enumerable: true, get: function () { return calculateLimitPrice_1.calculateLimitPrice; } });
25
+ Object.defineProperty(exports, "getPoolSlot0", { enumerable: true, get: function () { return calculateLimitPrice_1.getPoolSlot0; } });
26
+ var simulateSwap_1 = require("./simulateSwap");
27
+ Object.defineProperty(exports, "simulateSwap", { enumerable: true, get: function () { return simulateSwap_1.simulateSwap; } });
28
+ Object.defineProperty(exports, "determineSwapDirection", { enumerable: true, get: function () { return simulateSwap_1.determineSwapDirection; } });
29
+ Object.defineProperty(exports, "validateSwapParams", { enumerable: true, get: function () { return simulateSwap_1.validateSwapParams; } });
30
+ var estimateLpTokens_1 = require("./estimateLpTokens");
31
+ Object.defineProperty(exports, "estimateLpTokens", { enumerable: true, get: function () { return estimateLpTokens_1.estimateLpTokens; } });
32
+ Object.defineProperty(exports, "getVaultReserves", { enumerable: true, get: function () { return estimateLpTokens_1.getVaultReserves; } });
33
+ // Export the main client
34
+ var singleAssetDeposit_1 = require("./singleAssetDeposit");
35
+ Object.defineProperty(exports, "SingleAssetDepositClient", { enumerable: true, get: function () { return singleAssetDeposit_1.SingleAssetDepositClient; } });
36
+ /**
37
+ * @fileoverview Single-Asset Deposit Module
38
+ *
39
+ * This module provides comprehensive functionality for single-asset deposits into liquidity vaults.
40
+ * The process allows users to deposit only one token (token0 or token1), while the contract
41
+ * internally performs a swap to balance the token pair before depositing into the vault.
42
+ *
43
+ * ## Architecture
44
+ *
45
+ * The single-asset deposit process is broken down into separate, testable functions:
46
+ *
47
+ * 1. **calculateSwapAmount** - Determines how much of the input token needs to be swapped
48
+ * 2. **calculateLimitPrice** - Calculates slippage protection limits for the internal swap
49
+ * 3. **simulateSwap** - Simulates the swap to preview expected output amounts
50
+ * 4. **estimateLpTokens** - Estimates the final LP tokens that will be received
51
+ * 5. **SingleAssetDepositClient** - Main orchestrator that combines all steps
52
+ *
53
+ * ## Supported AMM Types
54
+ *
55
+ * Currently supports:
56
+ * - UniswapV3 (fully implemented)
57
+ * - Algebra variants (planned for future implementation)
58
+ *
59
+ * ## Example Usage
60
+ *
61
+ * ```typescript
62
+ * import { SingleAssetDepositClient, AMMType } from '@steerprotocol/sdk';
63
+ * import { parseEther } from 'viem';
64
+ *
65
+ * // Initialize the client
66
+ * const client = new SingleAssetDepositClient(publicClient, walletClient);
67
+ *
68
+ * // Preview the deposit
69
+ * const preview = await client.previewDeposit({
70
+ * assets: parseEther('100'),
71
+ * receiver: userAddress,
72
+ * vault: vaultAddress,
73
+ * isToken0: true,
74
+ * depositSlippagePercent: 5n,
75
+ * swapSlippageBP: 500,
76
+ * ammType: AMMType.UniswapV3,
77
+ * singleAssetDepositContract: contractAddress
78
+ * }, poolAddress);
79
+ *
80
+ * if (preview.success) {
81
+ * console.log('Expected LP tokens:', preview.data.lpEstimation.lpTokens);
82
+ *
83
+ * // Execute the deposit
84
+ * const result = await client.deposit(params);
85
+ * if (result.success) {
86
+ * console.log('Transaction hash:', result.data);
87
+ * }
88
+ * }
89
+ * ```
90
+ *
91
+ * ## Testing Individual Functions
92
+ *
93
+ * Each function can be tested separately:
94
+ *
95
+ * ```typescript
96
+ * import { calculateSwapAmount, AMMType } from '@steerprotocol/sdk';
97
+ *
98
+ * // Test swap amount calculation
99
+ * const result = await calculateSwapAmount(publicClient, {
100
+ * depositAmount: parseEther('100'),
101
+ * isToken0: true,
102
+ * vault: vaultAddress,
103
+ * pool: poolAddress,
104
+ * ammType: AMMType.UniswapV3,
105
+ * singleAssetDepositContract: contractAddress
106
+ * });
107
+ * ```
108
+ */
109
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/base/vault/single-asset/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mBAAmB;AACnB,0CAAwB;AAExB,6DAA6D;AAC7D,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,6DAA0E;AAAjE,0HAAA,mBAAmB,OAAA;AAAE,mHAAA,YAAY,OAAA;AAC1C,+CAA0F;AAAjF,4GAAA,YAAY,OAAA;AAAE,sHAAA,sBAAsB,OAAA;AAAE,kHAAA,kBAAkB,OAAA;AACjE,uDAAwE;AAA/D,oHAAA,gBAAgB,OAAA;AAAE,oHAAA,gBAAgB,OAAA;AAE3C,yBAAyB;AACzB,2DAAgE;AAAvD,8HAAA,wBAAwB,OAAA;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwEG"}
@@ -0,0 +1,317 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.simulateSwap = simulateSwap;
4
+ exports.determineSwapDirection = determineSwapDirection;
5
+ exports.validateSwapParams = validateSwapParams;
6
+ exports.simulateSwapWithSlippage = simulateSwapWithSlippage;
7
+ const viem_1 = require("viem");
8
+ const const_1 = require("../../../const");
9
+ const quoter_1 = require("../../../const/quoter");
10
+ const utils_1 = require("../utils");
11
+ const calculateLimitPrice_1 = require("./calculateLimitPrice");
12
+ const types_1 = require("./types");
13
+ /**
14
+ * Simulates a swap to get the expected output amounts without executing the swap
15
+ * Uses Uniswap V3 Quoter contract for accurate simulation
16
+ *
17
+ * @param publicClient - Viem public client for blockchain reads
18
+ * @param params - Parameters for swap simulation
19
+ * @param chainId - Chain ID to get the appropriate Quoter address
20
+ * @returns Promise resolving to the simulated swap results
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const result = await simulateSwap(publicClient, {
25
+ * pool: '0x...',
26
+ * recipient: '0x...',
27
+ * zeroForOne: true,
28
+ * amountSpecified: parseEther('10'),
29
+ * sqrtPriceLimitX96: limitPrice,
30
+ * ammType: AMMType.UniswapV3,
31
+ * tokenIn: '0x...',
32
+ * tokenOut: '0x...',
33
+ * fee: 3000
34
+ * }, 137); // Polygon chain ID
35
+ *
36
+ * if (result.success) {
37
+ * console.log('Amount out:', result.data.amountOut);
38
+ * }
39
+ * ```
40
+ */
41
+ async function simulateSwap(publicClient, params, chainId) {
42
+ try {
43
+ // For now, only handle UniswapV3 - other AMMs can be added later
44
+ // Get the appropriate Quoter contract address
45
+ const networkConfig = (0, const_1.getNetworkByChainId)(chainId);
46
+ if (!networkConfig) {
47
+ throw Error('Network config not found');
48
+ }
49
+ const protocol = (0, const_1.getProtcolTypeByAmmType)(params.ammType);
50
+ const quoterFactory = new quoter_1.QuoterV2Factory(networkConfig);
51
+ const quoterABI = quoterFactory.getQuoterAbi(protocol);
52
+ const quoteParams = quoterFactory.getQuoteParams(protocol, {
53
+ tokenIn: params.tokenIn,
54
+ tokenOut: params.tokenOut,
55
+ fee: params.fee,
56
+ tickSpacing: params.tickSpacing,
57
+ amountIn: params.amountSpecified,
58
+ sqrtPriceLimitX96: params.sqrtPriceLimitX96,
59
+ limitSqrtPrice: params.sqrtPriceLimitX96,
60
+ });
61
+ const quoterAddress = quoterFactory.getQuoterV2Address(protocol);
62
+ // Use Quoter's quoteExactInputSingle for simulation
63
+ const result = await publicClient.call({
64
+ to: quoterAddress,
65
+ data: (0, viem_1.encodeFunctionData)({
66
+ abi: quoterABI,
67
+ functionName: 'quoteExactInputSingle',
68
+ //@ts-expect-error Parameters are dynamic in nature and very based on abi types
69
+ args: [{
70
+ ...quoteParams
71
+ }]
72
+ })
73
+ });
74
+ if (!result.data) {
75
+ throw new Error('No data returned from quoter simulation');
76
+ }
77
+ // Decode the result - Quoter returns a tuple: [amountOut, sqrtPriceX96After, initializedTicksCrossed, gasEstimate]
78
+ const [amountOut, sqrtPriceX96After] = (0, viem_1.decodeFunctionResult)({
79
+ abi: quoterABI,
80
+ functionName: 'quoteExactInputSingle',
81
+ data: result.data
82
+ });
83
+ // Convert to the expected SwapSimulationResponse format
84
+ // For exact input swaps, we know the input amount and get the output amount
85
+ let amount0, amount1;
86
+ if (params.zeroForOne) {
87
+ // Swapping token0 for token1
88
+ amount0 = -params.amountSpecified; // negative because we're giving token0
89
+ amount1 = amountOut; // positive because we're receiving token1
90
+ }
91
+ else {
92
+ // Swapping token1 for token0
93
+ amount0 = amountOut; // positive because we're receiving token0
94
+ amount1 = -params.amountSpecified; // negative because we're giving token1
95
+ }
96
+ return {
97
+ data: {
98
+ amount0,
99
+ amount1,
100
+ sqrtPriceX96After
101
+ },
102
+ status: 200,
103
+ success: true
104
+ };
105
+ }
106
+ catch (error) {
107
+ return {
108
+ data: null,
109
+ status: 500,
110
+ success: false,
111
+ error: error instanceof Error ? error.message : 'Failed to simulate swap'
112
+ };
113
+ }
114
+ }
115
+ /**
116
+ * Determines the swap direction based on the token being deposited
117
+ *
118
+ * @param isToken0 - true if depositing token0, false if token1
119
+ * @returns true if swapping token0 → token1, false otherwise
120
+ */
121
+ function determineSwapDirection(isToken0) {
122
+ // If depositing token0, we need to swap some token0 to token1
123
+ // If depositing token1, we need to swap some token1 to token0
124
+ return isToken0;
125
+ }
126
+ /**
127
+ * Validates swap simulation parameters
128
+ *
129
+ * @param params - Parameters to validate
130
+ * @throws Error if parameters are invalid
131
+ */
132
+ function validateSwapParams(params) {
133
+ if (!params.pool || params.pool === '0x0000000000000000000000000000000000000000') {
134
+ throw new Error('Invalid pool address');
135
+ }
136
+ if (!params.recipient || params.recipient === '0x0000000000000000000000000000000000000000') {
137
+ throw new Error('Invalid recipient address');
138
+ }
139
+ if (params.amountSpecified <= 0n) {
140
+ throw new Error('Amount specified must be greater than 0');
141
+ }
142
+ if (params.sqrtPriceLimitX96 <= 0n) {
143
+ throw new Error('Sqrt price limit must be greater than 0');
144
+ }
145
+ if (!params.tokenIn || params.tokenIn === '0x0000000000000000000000000000000000000000') {
146
+ throw new Error('Invalid tokenIn address');
147
+ }
148
+ if (!params.tokenOut || params.tokenOut === '0x0000000000000000000000000000000000000000') {
149
+ throw new Error('Invalid tokenOut address');
150
+ }
151
+ if (params.fee <= 0) {
152
+ throw new Error('Pool fee must be greater than 0');
153
+ }
154
+ }
155
+ /**
156
+ * Simulates a swap with slippage analysis by first getting current pool state,
157
+ * then simulating the swap and calculating price impact
158
+ *
159
+ * @param publicClient - Viem public client for blockchain reads
160
+ * @param params - Parameters for swap simulation with slippage analysis
161
+ * @param chainId - Chain ID to get the appropriate Quoter address
162
+ * @returns Promise resolving to swap results with slippage analysis
163
+ *
164
+ * @example
165
+ * ```typescript
166
+ * const result = await simulateSwapWithSlippage(publicClient, {
167
+ * poolAddress: '0x...',
168
+ * recipient: '0x...',
169
+ * zeroForOne: true,
170
+ * amountSpecified: parseEther('10'),
171
+ * sqrtPriceLimitX96: limitPrice,
172
+ * ammType: AMMType.UniswapV3,
173
+ * tokenIn: '0x...',
174
+ * tokenOut: '0x...',
175
+ * fee: 3000
176
+ * }, 137); // Polygon chain ID
177
+ *
178
+ * if (result.success) {
179
+ * console.log('Price slippage:', result.data.priceSlippagePercent, '%');
180
+ * console.log('Current price:', result.data.currentPrice);
181
+ * console.log('Price after swap:', result.data.priceAfter);
182
+ * }
183
+ * ```
184
+ */
185
+ async function simulateSwapWithSlippage(publicClient, params, chainId) {
186
+ try {
187
+ // Validate params
188
+ validateSwapWithSlippageParams(params);
189
+ // Step 1: Get current pool state from slot0
190
+ const slot0Result = await (0, calculateLimitPrice_1.getPoolSlot0)(publicClient, params.poolAddress, params.ammType);
191
+ if (!slot0Result.data) {
192
+ throw new Error('Failed to get pool slot0 data');
193
+ }
194
+ // Decode slot0 result
195
+ const currentSlot0 = {
196
+ sqrtPriceX96: (0, utils_1.getPoolPrice)(slot0Result.data, {
197
+ isAlgebraPool: params.ammType === types_1.AMMType.Algebra,
198
+ isAlgebraIntegralPool: params.ammType === types_1.AMMType.AlgebraIntegral,
199
+ isPoolSharkPool: false // PoolShark not defined in AMMType enum
200
+ }) || BigInt(0),
201
+ tick: slot0Result.data.tick,
202
+ observationIndex: slot0Result.data.observationIndex,
203
+ observationCardinality: slot0Result.data.observationCardinality,
204
+ observationCardinalityNext: slot0Result.data.observationCardinalityNext,
205
+ feeProtocol: slot0Result.data.feeProtocol,
206
+ unlocked: slot0Result.data.unlocked
207
+ };
208
+ const tickSpacing = await publicClient.readContract({
209
+ abi: [{
210
+ "inputs": [],
211
+ "name": "tickSpacing",
212
+ "outputs": [
213
+ {
214
+ "internalType": "int24",
215
+ "name": "",
216
+ "type": "int24"
217
+ }
218
+ ],
219
+ "stateMutability": "view",
220
+ "type": "function"
221
+ },],
222
+ functionName: 'tickSpacing',
223
+ address: params.poolAddress,
224
+ });
225
+ // Step 2: Simulate the swap using existing function
226
+ const swapParams = {
227
+ pool: params.poolAddress,
228
+ recipient: params.recipient,
229
+ zeroForOne: params.zeroForOne,
230
+ amountSpecified: params.amountSpecified,
231
+ sqrtPriceLimitX96: params.sqrtPriceLimitX96,
232
+ ammType: params.ammType,
233
+ tokenIn: params.tokenIn,
234
+ tokenOut: params.tokenOut,
235
+ fee: params.fee,
236
+ tickSpacing: tickSpacing,
237
+ quoterAddress: params.quoterAddress
238
+ };
239
+ const swapResult = await simulateSwap(publicClient, swapParams, chainId);
240
+ if (!swapResult.success || !swapResult.data) {
241
+ throw new Error(swapResult.error || 'Swap simulation failed');
242
+ }
243
+ // Step 3: Calculate price slippage
244
+ const currentPrice = (0, calculateLimitPrice_1.getQuoteFromSqrtRatioX96)((0, calculateLimitPrice_1.bigintToDecimal)(currentSlot0.sqrtPriceX96), (0, calculateLimitPrice_1.bigintToDecimal)(10n ** 18n), params.tokenIn, params.tokenOut);
245
+ const priceAfter = (0, calculateLimitPrice_1.getQuoteFromSqrtRatioX96)((0, calculateLimitPrice_1.bigintToDecimal)(swapResult.data.sqrtPriceX96After), (0, calculateLimitPrice_1.bigintToDecimal)(10n ** 18n), params.tokenIn, params.tokenOut);
246
+ // Calculate slippage percentage
247
+ // Positive slippage means unfavorable price movement
248
+ const priceSlippagePercent = calculatePriceSlippage(currentPrice, priceAfter, params.zeroForOne);
249
+ return {
250
+ data: {
251
+ currentSlot0,
252
+ swapSimulation: swapResult.data,
253
+ priceSlippagePercent: priceSlippagePercent.toFixed(5),
254
+ currentPrice: (0, calculateLimitPrice_1.decimalToBigint)(currentPrice),
255
+ priceAfter: (0, calculateLimitPrice_1.decimalToBigint)(priceAfter)
256
+ },
257
+ status: 200,
258
+ success: true
259
+ };
260
+ }
261
+ catch (error) {
262
+ return {
263
+ data: null,
264
+ status: 500,
265
+ success: false,
266
+ error: error instanceof Error ? error.message : 'Failed to simulate swap with slippage'
267
+ };
268
+ }
269
+ }
270
+ /**
271
+ * Calculates price slippage percentage using Decimal.js
272
+ *
273
+ * @param priceBefore - Price before the swap (Decimal)
274
+ * @param priceAfter - Price after the swap (Decimal)
275
+ * @param zeroForOne - Swap direction (true if token0 → token1)
276
+ * @returns Slippage percentage (positive means unfavorable movement)
277
+ */
278
+ function calculatePriceSlippage(priceBefore, priceAfter, zeroForOne) {
279
+ if (priceBefore.isZero()) {
280
+ throw new Error('Price before cannot be zero');
281
+ }
282
+ const priceChange = priceAfter.minus(priceBefore).dividedBy(priceBefore).times(100);
283
+ // For zeroForOne swaps (selling token0), favorable movement is price going down
284
+ // For oneForZero swaps (selling token1), favorable movement is price going up
285
+ // We return positive values for unfavorable movement (slippage)
286
+ return zeroForOne ? priceChange : priceChange.negated();
287
+ }
288
+ /**
289
+ * Validates swap with slippage parameters
290
+ *
291
+ * @param params - Parameters to validate
292
+ * @throws Error if parameters are invalid
293
+ */
294
+ function validateSwapWithSlippageParams(params) {
295
+ if (!params.poolAddress || params.poolAddress === '0x0000000000000000000000000000000000000000') {
296
+ throw new Error('Invalid pool address');
297
+ }
298
+ if (!params.recipient || params.recipient === '0x0000000000000000000000000000000000000000') {
299
+ throw new Error('Invalid recipient address');
300
+ }
301
+ if (params.amountSpecified <= 0n) {
302
+ throw new Error('Amount specified must be greater than 0');
303
+ }
304
+ if (params.sqrtPriceLimitX96 <= 0n) {
305
+ throw new Error('Sqrt price limit must be greater than 0');
306
+ }
307
+ if (!params.tokenIn || params.tokenIn === '0x0000000000000000000000000000000000000000') {
308
+ throw new Error('Invalid tokenIn address');
309
+ }
310
+ if (!params.tokenOut || params.tokenOut === '0x0000000000000000000000000000000000000000') {
311
+ throw new Error('Invalid tokenOut address');
312
+ }
313
+ if (params.fee <= 0) {
314
+ throw new Error('Pool fee must be greater than 0');
315
+ }
316
+ }
317
+ //# sourceMappingURL=simulateSwap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulateSwap.js","sourceRoot":"","sources":["../../../../../src/base/vault/single-asset/simulateSwap.ts"],"names":[],"mappings":"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"}