@w3lib/evm-batch-call 0.4.2 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/README.md +242 -2
- package/dist/fallback.d.ts +5 -0
- package/dist/fallback.d.ts.map +1 -1
- package/dist/fallback.js +7 -0
- package/dist/fallback.js.map +1 -1
- package/dist/liquidity/common.d.ts +72 -0
- package/dist/liquidity/common.d.ts.map +1 -0
- package/dist/liquidity/common.js +271 -0
- package/dist/liquidity/common.js.map +1 -0
- package/dist/liquidity/concentrated.d.ts +19 -0
- package/dist/liquidity/concentrated.d.ts.map +1 -0
- package/dist/liquidity/concentrated.js +106 -0
- package/dist/liquidity/concentrated.js.map +1 -0
- package/dist/liquidity/index.d.ts +42 -0
- package/dist/liquidity/index.d.ts.map +1 -0
- package/dist/liquidity/index.js +143 -0
- package/dist/liquidity/index.js.map +1 -0
- package/dist/liquidity/types.d.ts +182 -0
- package/dist/liquidity/types.d.ts.map +1 -0
- package/dist/liquidity/types.js +2 -0
- package/dist/liquidity/types.js.map +1 -0
- package/dist/liquidity/v2.d.ts +5 -0
- package/dist/liquidity/v2.d.ts.map +1 -0
- package/dist/liquidity/v2.js +342 -0
- package/dist/liquidity/v2.js.map +1 -0
- package/dist/liquidity/v3.d.ts +6 -0
- package/dist/liquidity/v3.d.ts.map +1 -0
- package/dist/liquidity/v3.js +310 -0
- package/dist/liquidity/v3.js.map +1 -0
- package/dist/liquidity/v4.d.ts +5 -0
- package/dist/liquidity/v4.d.ts.map +1 -0
- package/dist/liquidity/v4.js +279 -0
- package/dist/liquidity/v4.js.map +1 -0
- package/dist/lp.d.ts +156 -0
- package/dist/lp.d.ts.map +1 -0
- package/dist/lp.js +510 -0
- package/dist/lp.js.map +1 -0
- package/dist/lpMath.d.ts +80 -0
- package/dist/lpMath.d.ts.map +1 -0
- package/dist/lpMath.js +312 -0
- package/dist/lpMath.js.map +1 -0
- package/dist/lpV4.d.ts +108 -0
- package/dist/lpV4.d.ts.map +1 -0
- package/dist/lpV4.js +283 -0
- package/dist/lpV4.js.map +1 -0
- package/dist/owner.d.ts +1 -1
- package/dist/owner.d.ts.map +1 -1
- package/dist/owner.js +18 -5
- package/dist/owner.js.map +1 -1
- package/dist/scan.d.ts +54 -0
- package/dist/scan.d.ts.map +1 -1
- package/dist/scan.js +124 -92
- package/dist/scan.js.map +1 -1
- package/dist/source.d.ts +2 -0
- package/dist/source.d.ts.map +1 -1
- package/dist/source.js +4 -0
- package/dist/source.js.map +1 -1
- package/dist/subpaths/liquidity.d.ts +24 -0
- package/dist/subpaths/liquidity.d.ts.map +1 -0
- package/dist/subpaths/liquidity.js +21 -0
- package/dist/subpaths/liquidity.js.map +1 -0
- package/dist/subpaths/lp.d.ts +33 -0
- package/dist/subpaths/lp.d.ts.map +1 -0
- package/dist/subpaths/lp.js +47 -0
- package/dist/subpaths/lp.js.map +1 -0
- package/dist/subpaths/write.d.ts +20 -0
- package/dist/subpaths/write.d.ts.map +1 -0
- package/dist/subpaths/write.js +18 -0
- package/dist/subpaths/write.js.map +1 -0
- package/dist/tron.d.ts +2 -0
- package/dist/tron.d.ts.map +1 -1
- package/dist/tron.js +4 -0
- package/dist/tron.js.map +1 -1
- package/dist/write/batch.d.ts +88 -0
- package/dist/write/batch.d.ts.map +1 -0
- package/dist/write/batch.js +231 -0
- package/dist/write/batch.js.map +1 -0
- package/dist/write/collect.d.ts +53 -0
- package/dist/write/collect.d.ts.map +1 -0
- package/dist/write/collect.js +255 -0
- package/dist/write/collect.js.map +1 -0
- package/dist/write/rpc.d.ts +68 -0
- package/dist/write/rpc.d.ts.map +1 -0
- package/dist/write/rpc.js +236 -0
- package/dist/write/rpc.js.map +1 -0
- package/dist/write/send.d.ts +124 -0
- package/dist/write/send.d.ts.map +1 -0
- package/dist/write/send.js +373 -0
- package/dist/write/send.js.map +1 -0
- package/dist/write/signer.d.ts +58 -0
- package/dist/write/signer.d.ts.map +1 -0
- package/dist/write/signer.js +41 -0
- package/dist/write/signer.js.map +1 -0
- package/dist/write/transfer.d.ts +83 -0
- package/dist/write/transfer.d.ts.map +1 -0
- package/dist/write/transfer.js +259 -0
- package/dist/write/transfer.js.map +1 -0
- package/dist/write/tron.d.ts +60 -0
- package/dist/write/tron.d.ts.map +1 -0
- package/dist/write/tron.js +960 -0
- package/dist/write/tron.js.map +1 -0
- package/package.json +26 -5
- package/src/fallback.ts +8 -0
- package/src/liquidity/common.ts +314 -0
- package/src/liquidity/concentrated.ts +121 -0
- package/src/liquidity/index.ts +171 -0
- package/src/liquidity/types.ts +194 -0
- package/src/liquidity/v2.ts +371 -0
- package/src/liquidity/v3.ts +382 -0
- package/src/liquidity/v4.ts +348 -0
- package/src/lp.ts +739 -0
- package/src/lpMath.ts +336 -0
- package/src/lpV4.ts +406 -0
- package/src/owner.ts +19 -6
- package/src/scan.ts +155 -86
- package/src/source.ts +5 -0
- package/src/subpaths/liquidity.ts +52 -0
- package/src/subpaths/lp.ts +90 -0
- package/src/subpaths/write.ts +26 -0
- package/src/tron.ts +5 -0
- package/src/write/batch.ts +302 -0
- package/src/write/collect.ts +312 -0
- package/src/write/rpc.ts +277 -0
- package/src/write/send.ts +490 -0
- package/src/write/signer.ts +90 -0
- package/src/write/transfer.ts +344 -0
- package/src/write/tron.ts +1105 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lpMath.d.ts","sourceRoot":"","sources":["../src/lpMath.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,QAAQ,UAAU,CAAA;AAC/B,eAAO,MAAM,QAAQ,SAAS,CAAA;AA8B9B,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBvD;AAYD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAc3H;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAIzJ;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,MAAM,CAE7G;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAInG;AAED,8CAA8C;AAC9C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtF;AAMD,+FAA+F;AAC/F,eAAO,MAAM,cAAc,cAAc,CAAA;AACzC,eAAO,MAAM,cAAc,qDAAqD,CAAA;AAChF,eAAO,MAAM,WAAW,QAAkB,CAAA;AAI1C,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAOzG;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAKzG;AAED,wDAAwD;AACxD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAWnH;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAK5F;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAK5F;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAahI;AAED,wCAAwC;AACxC,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED,6FAA6F;AAC7F,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAe/D;AAED,kBAAkB;AAClB,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiBhD;AAED,+CAA+C;AAC/C,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAajF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGxG;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAS1G;AAED,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQhE;AAED,wGAAwG;AACxG,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhG;AAED,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAY3E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAUxF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAGvI;AAED,gEAAgE;AAChE,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAGvI"}
|
package/dist/lpMath.js
ADDED
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 集中流动性(Uniswap V3 / V4 及其分叉)的数学:tick ↔ sqrtPrice、按流动性算代币数量、未领取的手续费。
|
|
3
|
+
* 与 Uniswap 合约里的整数算法逐位一致(TickMath、LiquidityAmounts、Position 的手续费计算)。
|
|
4
|
+
*/
|
|
5
|
+
export const MIN_TICK = -887272;
|
|
6
|
+
export const MAX_TICK = 887272;
|
|
7
|
+
const Q96 = 2n ** 96n;
|
|
8
|
+
const Q128 = 2n ** 128n;
|
|
9
|
+
const Q256 = 2n ** 256n;
|
|
10
|
+
const MAX_UINT256 = Q256 - 1n;
|
|
11
|
+
/** TickMath.getSqrtRatioAtTick 里的常数:sqrt(1.0001)^(-2^i) 的 Q128 定点数 */
|
|
12
|
+
const RATIOS = [
|
|
13
|
+
0xfff97272373d413259a46990580e213an,
|
|
14
|
+
0xfff2e50f5f656932ef12357cf3c7fdccn,
|
|
15
|
+
0xffe5caca7e10e4e61c3624eaa0941cd0n,
|
|
16
|
+
0xffcb9843d60f6159c9db58835c926644n,
|
|
17
|
+
0xff973b41fa98c081472e6896dfb254c0n,
|
|
18
|
+
0xff2ea16466c96a3843ec78b326b52861n,
|
|
19
|
+
0xfe5dee046a99a2a811c461f1969c3053n,
|
|
20
|
+
0xfcbe86c7900a88aedcffc83b479aa3a4n,
|
|
21
|
+
0xf987a7253ac413176f2b074cf7815e54n,
|
|
22
|
+
0xf3392b0822b70005940c7a398e4b70f3n,
|
|
23
|
+
0xe7159475a2c29b7443b29c7fa6e889d9n,
|
|
24
|
+
0xd097f3bdfd2022b8845ad8f792aa5825n,
|
|
25
|
+
0xa9f746462d870fdf8a65dc1f90e061e5n,
|
|
26
|
+
0x70d869a156d2a1b890bb3df62baf32f7n,
|
|
27
|
+
0x31be135f97d08fd981231505542fcfa6n,
|
|
28
|
+
0x9aa508b5b7a84e1c677de54f3e99bc9n,
|
|
29
|
+
0x5d6af8dedb81196699c329225ee604n,
|
|
30
|
+
0x2216e584f5fa1ea926041bedfe98n,
|
|
31
|
+
0x48a170391f7dc42444e8fa2n,
|
|
32
|
+
];
|
|
33
|
+
/** TickMath.getSqrtRatioAtTick:tick → sqrt(1.0001^tick) 的 Q64.96 定点数 */
|
|
34
|
+
export function getSqrtRatioAtTick(tick) {
|
|
35
|
+
if (!Number.isInteger(tick) || tick < MIN_TICK || tick > MAX_TICK) {
|
|
36
|
+
throw new RangeError(`tick out of range: ${tick}`);
|
|
37
|
+
}
|
|
38
|
+
const absTick = Math.abs(tick);
|
|
39
|
+
let ratio = absTick & 0x1 ? 0xfffcb933bd6fad37aa2d162d1a594001n : 0x100000000000000000000000000000000n;
|
|
40
|
+
for (let i = 0; i < RATIOS.length; i++) {
|
|
41
|
+
if (absTick & (0x2 << i)) {
|
|
42
|
+
ratio = (ratio * RATIOS[i]) >> 128n;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (tick > 0) {
|
|
46
|
+
ratio = MAX_UINT256 / ratio;
|
|
47
|
+
}
|
|
48
|
+
// Q128.128 → Q64.96,向上取整(与合约一致)
|
|
49
|
+
return (ratio >> 32n) + (ratio % (1n << 32n) === 0n ? 0n : 1n);
|
|
50
|
+
}
|
|
51
|
+
/** SqrtPriceMath.getAmount0Delta(向下取整):区间 [a, b] 内 L 对应的 token0 数量 */
|
|
52
|
+
function amount0Delta(sqrtA, sqrtB, liquidity) {
|
|
53
|
+
return ((liquidity << 96n) * (sqrtB - sqrtA)) / sqrtB / sqrtA;
|
|
54
|
+
}
|
|
55
|
+
/** SqrtPriceMath.getAmount1Delta(向下取整):区间 [a, b] 内 L 对应的 token1 数量 */
|
|
56
|
+
function amount1Delta(sqrtA, sqrtB, liquidity) {
|
|
57
|
+
return (liquidity * (sqrtB - sqrtA)) / Q96;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* LiquidityAmounts.getAmountsForLiquidity:当前价格 sqrtPrice 下,价格区间 [sqrtA, sqrtB] 内流动性 L 对应的两种代币数量
|
|
61
|
+
* (与移除全部流动性时拿到的数量一致,向下取整)
|
|
62
|
+
*/
|
|
63
|
+
export function getAmountsForLiquidity(sqrtPrice, sqrtA, sqrtB, liquidity) {
|
|
64
|
+
if (sqrtA > sqrtB) {
|
|
65
|
+
;
|
|
66
|
+
[sqrtA, sqrtB] = [sqrtB, sqrtA];
|
|
67
|
+
}
|
|
68
|
+
if (liquidity === 0n) {
|
|
69
|
+
return [0n, 0n];
|
|
70
|
+
}
|
|
71
|
+
if (sqrtPrice <= sqrtA) {
|
|
72
|
+
return [amount0Delta(sqrtA, sqrtB, liquidity), 0n];
|
|
73
|
+
}
|
|
74
|
+
if (sqrtPrice < sqrtB) {
|
|
75
|
+
return [amount0Delta(sqrtPrice, sqrtB, liquidity), amount1Delta(sqrtA, sqrtPrice, liquidity)];
|
|
76
|
+
}
|
|
77
|
+
return [0n, amount1Delta(sqrtA, sqrtB, liquidity)];
|
|
78
|
+
}
|
|
79
|
+
const wrap = (x) => ((x % Q256) + Q256) % Q256;
|
|
80
|
+
/**
|
|
81
|
+
* 区间内的累计手续费增长(Tick.getFeeGrowthInside,按 uint256 回绕)。
|
|
82
|
+
* global:池子的 feeGrowthGlobalX128;lowerOutside / upperOutside:两端 tick 的 feeGrowthOutsideX128
|
|
83
|
+
*/
|
|
84
|
+
export function getFeeGrowthInside(tick, tickLower, tickUpper, global, lowerOutside, upperOutside) {
|
|
85
|
+
const below = tick >= tickLower ? lowerOutside : wrap(global - lowerOutside);
|
|
86
|
+
const above = tick < tickUpper ? upperOutside : wrap(global - upperOutside);
|
|
87
|
+
return wrap(global - below - above);
|
|
88
|
+
}
|
|
89
|
+
/** 自上次结算以来新产生的手续费:L × (inside − insideLast) / 2^128(差值按 uint256 回绕,与合约一致) */
|
|
90
|
+
export function getFeesEarned(liquidity, feeGrowthInside, feeGrowthInsideLast) {
|
|
91
|
+
return (liquidity * wrap(feeGrowthInside - feeGrowthInsideLast)) / Q128;
|
|
92
|
+
}
|
|
93
|
+
/** sqrtPriceX96 → token1 / token0 的价格(按精度换算后的人类可读数字,有浮点误差,只用于展示) */
|
|
94
|
+
export function sqrtPriceToPrice(sqrtPriceX96, decimals0, decimals1) {
|
|
95
|
+
// 全程浮点:sqrtPrice 不超过 2^160,转 Number 只丢末尾的位(相对误差约 1e-16);先除 2^96 再平方,价格很小时也不会变成 0
|
|
96
|
+
const ratio = Number(sqrtPriceX96) / 2 ** 96;
|
|
97
|
+
return ratio * ratio * 10 ** (decimals0 - decimals1);
|
|
98
|
+
}
|
|
99
|
+
/** tick → token1 / token0 的价格(按精度换算,只用于展示) */
|
|
100
|
+
export function tickToPrice(tick, decimals0, decimals1) {
|
|
101
|
+
return 1.0001 ** tick * 10 ** (decimals0 - decimals1);
|
|
102
|
+
}
|
|
103
|
+
// ---------------------------------------------------------------------------
|
|
104
|
+
// 添加 / 移除流动性用到的计算
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
/** getSqrtRatioAtTick(MIN_TICK) / getSqrtRatioAtTick(MAX_TICK):池子价格的上下限(价格必须在 [MIN, MAX) 内) */
|
|
107
|
+
export const MIN_SQRT_RATIO = 4295128739n;
|
|
108
|
+
export const MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342n;
|
|
109
|
+
export const MAX_UINT128 = 2n ** 128n - 1n;
|
|
110
|
+
const divUp = (a, b) => (a + b - 1n) / b;
|
|
111
|
+
/** SqrtPriceMath.getAmount0Delta:区间 [a, b] 内 L 对应的 token0,roundUp 时向上取整(添加流动性时池子收取的数量) */
|
|
112
|
+
export function getAmount0Delta(sqrtA, sqrtB, liquidity, roundUp) {
|
|
113
|
+
if (sqrtA > sqrtB) {
|
|
114
|
+
;
|
|
115
|
+
[sqrtA, sqrtB] = [sqrtB, sqrtA];
|
|
116
|
+
}
|
|
117
|
+
const n1 = liquidity << 96n;
|
|
118
|
+
const n2 = sqrtB - sqrtA;
|
|
119
|
+
return roundUp ? divUp(divUp(n1 * n2, sqrtB), sqrtA) : (n1 * n2) / sqrtB / sqrtA;
|
|
120
|
+
}
|
|
121
|
+
/** SqrtPriceMath.getAmount1Delta:区间 [a, b] 内 L 对应的 token1,roundUp 时向上取整 */
|
|
122
|
+
export function getAmount1Delta(sqrtA, sqrtB, liquidity, roundUp) {
|
|
123
|
+
if (sqrtA > sqrtB) {
|
|
124
|
+
;
|
|
125
|
+
[sqrtA, sqrtB] = [sqrtB, sqrtA];
|
|
126
|
+
}
|
|
127
|
+
return roundUp ? divUp(liquidity * (sqrtB - sqrtA), Q96) : (liquidity * (sqrtB - sqrtA)) / Q96;
|
|
128
|
+
}
|
|
129
|
+
/** 添加流动性 L 时池子收取的两种代币数量(向上取整,与池子的 modifyPosition 一致) */
|
|
130
|
+
export function getMintAmounts(sqrtPrice, sqrtA, sqrtB, liquidity) {
|
|
131
|
+
if (sqrtA > sqrtB) {
|
|
132
|
+
;
|
|
133
|
+
[sqrtA, sqrtB] = [sqrtB, sqrtA];
|
|
134
|
+
}
|
|
135
|
+
if (sqrtPrice <= sqrtA) {
|
|
136
|
+
return [getAmount0Delta(sqrtA, sqrtB, liquidity, true), 0n];
|
|
137
|
+
}
|
|
138
|
+
if (sqrtPrice < sqrtB) {
|
|
139
|
+
return [getAmount0Delta(sqrtPrice, sqrtB, liquidity, true), getAmount1Delta(sqrtA, sqrtPrice, liquidity, true)];
|
|
140
|
+
}
|
|
141
|
+
return [0n, getAmount1Delta(sqrtA, sqrtB, liquidity, true)];
|
|
142
|
+
}
|
|
143
|
+
/** LiquidityAmounts.getLiquidityForAmount0:区间 [a, b] 内 amount0 个 token0 对应的流动性(向下取整) */
|
|
144
|
+
export function getLiquidityForAmount0(sqrtA, sqrtB, amount0) {
|
|
145
|
+
if (sqrtA > sqrtB) {
|
|
146
|
+
;
|
|
147
|
+
[sqrtA, sqrtB] = [sqrtB, sqrtA];
|
|
148
|
+
}
|
|
149
|
+
return (amount0 * ((sqrtA * sqrtB) / Q96)) / (sqrtB - sqrtA);
|
|
150
|
+
}
|
|
151
|
+
/** LiquidityAmounts.getLiquidityForAmount1:区间 [a, b] 内 amount1 个 token1 对应的流动性(向下取整) */
|
|
152
|
+
export function getLiquidityForAmount1(sqrtA, sqrtB, amount1) {
|
|
153
|
+
if (sqrtA > sqrtB) {
|
|
154
|
+
;
|
|
155
|
+
[sqrtA, sqrtB] = [sqrtB, sqrtA];
|
|
156
|
+
}
|
|
157
|
+
return (amount1 * Q96) / (sqrtB - sqrtA);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* LiquidityAmounts.getLiquidityForAmounts:最多用 amount0 / amount1 时能添加的流动性(取两边较小的,与 V3 仓位合约一致)。
|
|
161
|
+
* 价格在区间下方只用 token0,上方只用 token1
|
|
162
|
+
*/
|
|
163
|
+
export function getLiquidityForAmounts(sqrtPrice, sqrtA, sqrtB, amount0, amount1) {
|
|
164
|
+
if (sqrtA > sqrtB) {
|
|
165
|
+
;
|
|
166
|
+
[sqrtA, sqrtB] = [sqrtB, sqrtA];
|
|
167
|
+
}
|
|
168
|
+
if (sqrtPrice <= sqrtA) {
|
|
169
|
+
return getLiquidityForAmount0(sqrtA, sqrtB, amount0);
|
|
170
|
+
}
|
|
171
|
+
if (sqrtPrice < sqrtB) {
|
|
172
|
+
const l0 = getLiquidityForAmount0(sqrtPrice, sqrtB, amount0);
|
|
173
|
+
const l1 = getLiquidityForAmount1(sqrtA, sqrtPrice, amount1);
|
|
174
|
+
return l0 < l1 ? l0 : l1;
|
|
175
|
+
}
|
|
176
|
+
return getLiquidityForAmount1(sqrtA, sqrtB, amount1);
|
|
177
|
+
}
|
|
178
|
+
/** 流动性是 uint128:超出时报错(合约里同样会 revert) */
|
|
179
|
+
export function toUint128(liquidity) {
|
|
180
|
+
if (liquidity < 0n || liquidity > MAX_UINT128) {
|
|
181
|
+
throw new RangeError(`liquidity out of uint128 range: ${liquidity}`);
|
|
182
|
+
}
|
|
183
|
+
return liquidity;
|
|
184
|
+
}
|
|
185
|
+
/** TickMath.getTickAtSqrtRatio:满足 getSqrtRatioAtTick(tick) <= sqrtPrice 的最大 tick(精确,二分查找) */
|
|
186
|
+
export function getTickAtSqrtRatio(sqrtPriceX96) {
|
|
187
|
+
if (sqrtPriceX96 < MIN_SQRT_RATIO || sqrtPriceX96 >= MAX_SQRT_RATIO) {
|
|
188
|
+
throw new RangeError(`sqrtPriceX96 out of range: ${sqrtPriceX96}`);
|
|
189
|
+
}
|
|
190
|
+
let lo = MIN_TICK;
|
|
191
|
+
let hi = MAX_TICK;
|
|
192
|
+
while (lo < hi) {
|
|
193
|
+
const mid = Math.floor((lo + hi + 1) / 2);
|
|
194
|
+
if (getSqrtRatioAtTick(mid) <= sqrtPriceX96) {
|
|
195
|
+
lo = mid;
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
hi = mid - 1;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return lo;
|
|
202
|
+
}
|
|
203
|
+
/** 整数平方根(向下取整) */
|
|
204
|
+
export function sqrtBigInt(value) {
|
|
205
|
+
if (value < 0n) {
|
|
206
|
+
throw new RangeError('square root of a negative number');
|
|
207
|
+
}
|
|
208
|
+
if (value < 2n) {
|
|
209
|
+
return value;
|
|
210
|
+
}
|
|
211
|
+
// 牛顿迭代:从不小于平方根的 2^ceil(位数 / 2) 开始单调递减,收敛到向下取整的平方根
|
|
212
|
+
let x = 1n << BigInt((value.toString(2).length + 1) >> 1);
|
|
213
|
+
for (;;) {
|
|
214
|
+
const y = (x + value / x) >> 1n;
|
|
215
|
+
if (y >= x) {
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
x = y;
|
|
219
|
+
}
|
|
220
|
+
return x;
|
|
221
|
+
}
|
|
222
|
+
/** 十进制数('1.5'、'2e-7'、1.5)→ 分子 / 分母,精确,不经过浮点 */
|
|
223
|
+
export function parseDecimal(value) {
|
|
224
|
+
const text = typeof value === 'number' ? (Number.isFinite(value) ? String(value) : '') : value.trim();
|
|
225
|
+
const m = /^\+?(\d*)(?:\.(\d*))?(?:[eE]([+-]?\d+))?$/.exec(text);
|
|
226
|
+
if (!m || (!m[1] && !m[2])) {
|
|
227
|
+
throw new Error(`Invalid number: ${String(value)}`);
|
|
228
|
+
}
|
|
229
|
+
const frac = m[2] ?? '';
|
|
230
|
+
const exp = Number(m[3] ?? 0) - frac.length;
|
|
231
|
+
if (Math.abs(exp) > 400) {
|
|
232
|
+
throw new RangeError(`Number out of range: ${String(value)}`);
|
|
233
|
+
}
|
|
234
|
+
const digits = BigInt(`${m[1] ?? ''}${frac}` || '0');
|
|
235
|
+
return exp >= 0 ? { num: digits * 10n ** BigInt(exp), den: 1n } : { num: digits, den: 10n ** BigInt(-exp) };
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* 价格(token1 / token0,按精度换算后的人类可读数字,如 600 表示 1 个 token0 值 600 个 token1)→ sqrtPriceX96。
|
|
239
|
+
* 精确计算(字符串不经过浮点),结果向下取整;价格必须大于 0
|
|
240
|
+
*/
|
|
241
|
+
export function priceToSqrtPriceX96(price, decimals0, decimals1) {
|
|
242
|
+
const { num, den } = parseDecimal(price);
|
|
243
|
+
return ratioToSqrtPriceX96(num, den, decimals0, decimals1);
|
|
244
|
+
}
|
|
245
|
+
/** 价格(分数 num / den,token1 / token0,按精度换算)→ sqrtPriceX96,向下取整;价格必须大于 0 */
|
|
246
|
+
export function ratioToSqrtPriceX96(num, den, decimals0, decimals1) {
|
|
247
|
+
if (num <= 0n || den <= 0n) {
|
|
248
|
+
throw new RangeError('price must be greater than 0');
|
|
249
|
+
}
|
|
250
|
+
// raw = price × 10^(d1 − d0);sqrtPriceX96 = sqrt(raw × 2^192)
|
|
251
|
+
const scale = decimals1 - decimals0;
|
|
252
|
+
const n = num * (scale > 0 ? 10n ** BigInt(scale) : 1n) * 2n ** 192n;
|
|
253
|
+
const d = den * (scale < 0 ? 10n ** BigInt(-scale) : 1n);
|
|
254
|
+
return sqrtBigInt(n / d);
|
|
255
|
+
}
|
|
256
|
+
/** sqrtPriceX96 → tick(getTickAtSqrtRatio),超出池子价格范围时取 MIN_TICK / MAX_TICK */
|
|
257
|
+
export function clampedTickAtSqrtRatio(sqrtPrice) {
|
|
258
|
+
if (sqrtPrice < MIN_SQRT_RATIO) {
|
|
259
|
+
return MIN_TICK;
|
|
260
|
+
}
|
|
261
|
+
if (sqrtPrice >= MAX_SQRT_RATIO) {
|
|
262
|
+
return MAX_TICK;
|
|
263
|
+
}
|
|
264
|
+
return getTickAtSqrtRatio(sqrtPrice);
|
|
265
|
+
}
|
|
266
|
+
/** 价格(token1 / token0,按精度换算)→ tick:满足 tickToPrice(tick) <= price 的最大 tick,限制在 [MIN_TICK, MAX_TICK] 内 */
|
|
267
|
+
export function priceToTick(price, decimals0, decimals1) {
|
|
268
|
+
return clampedTickAtSqrtRatio(priceToSqrtPriceX96(price, decimals0, decimals1));
|
|
269
|
+
}
|
|
270
|
+
/** 最近的可用 tick(tickSpacing 的整数倍),限制在 [MIN_TICK, MAX_TICK] 内 */
|
|
271
|
+
export function nearestUsableTick(tick, tickSpacing) {
|
|
272
|
+
if (!Number.isInteger(tickSpacing) || tickSpacing <= 0) {
|
|
273
|
+
throw new RangeError(`invalid tickSpacing: ${tickSpacing}`);
|
|
274
|
+
}
|
|
275
|
+
const rounded = Math.round(tick / tickSpacing) * tickSpacing;
|
|
276
|
+
if (rounded < MIN_TICK) {
|
|
277
|
+
return rounded + tickSpacing;
|
|
278
|
+
}
|
|
279
|
+
if (rounded > MAX_TICK) {
|
|
280
|
+
return rounded - tickSpacing;
|
|
281
|
+
}
|
|
282
|
+
return rounded;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* 价格按 slippage 上下浮动后的 sqrtPrice:[sqrtPrice × sqrt(1 − s), sqrtPrice × sqrt(1 + s)],限制在池子允许的价格范围内。
|
|
286
|
+
* slippage 是比例(0.005 = 0.5%),精确到百万分之一
|
|
287
|
+
*/
|
|
288
|
+
export function sqrtPriceBounds(sqrtPriceX96, slippage) {
|
|
289
|
+
if (!(slippage >= 0 && slippage < 1)) {
|
|
290
|
+
throw new RangeError(`slippage must be in [0, 1): ${slippage}`);
|
|
291
|
+
}
|
|
292
|
+
const ppm = BigInt(Math.round(slippage * 1e6));
|
|
293
|
+
const square = sqrtPriceX96 * sqrtPriceX96;
|
|
294
|
+
const lower = sqrtBigInt((square * (1000000n - ppm)) / 1000000n);
|
|
295
|
+
const upper = sqrtBigInt((square * (1000000n + ppm)) / 1000000n);
|
|
296
|
+
const clamp = (x) => (x <= MIN_SQRT_RATIO ? MIN_SQRT_RATIO + 1n : x >= MAX_SQRT_RATIO ? MAX_SQRT_RATIO - 1n : x);
|
|
297
|
+
return [clamp(lower), clamp(upper)];
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* 价格在 slippage 范围内变动时,流动性 L 至少对应多少代币(移除流动性 / V3 添加时的最小数量,向下取整)。
|
|
301
|
+
* token0 随价格上涨而减少,取上限价格时的数量;token1 取下限价格时的
|
|
302
|
+
*/
|
|
303
|
+
export function getMinAmounts(sqrtPriceX96, sqrtA, sqrtB, liquidity, slippage) {
|
|
304
|
+
const [lower, upper] = sqrtPriceBounds(sqrtPriceX96, slippage);
|
|
305
|
+
return [getAmountsForLiquidity(upper, sqrtA, sqrtB, liquidity)[0], getAmountsForLiquidity(lower, sqrtA, sqrtB, liquidity)[1]];
|
|
306
|
+
}
|
|
307
|
+
/** 价格在 slippage 范围内变动时,添加流动性 L 最多需要多少代币(V4 的 amountMax,向上取整) */
|
|
308
|
+
export function getMaxAmounts(sqrtPriceX96, sqrtA, sqrtB, liquidity, slippage) {
|
|
309
|
+
const [lower, upper] = sqrtPriceBounds(sqrtPriceX96, slippage);
|
|
310
|
+
return [getMintAmounts(lower, sqrtA, sqrtB, liquidity)[0], getMintAmounts(upper, sqrtA, sqrtB, liquidity)[1]];
|
|
311
|
+
}
|
|
312
|
+
//# sourceMappingURL=lpMath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lpMath.js","sourceRoot":"","sources":["../src/lpMath.ts"],"names":[],"mappings":"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"}
|
package/dist/lpV4.d.ts
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import type { CallOverrides } from './aggregate.js';
|
|
2
|
+
import type { Provider } from './provider.js';
|
|
3
|
+
import { type LogScanProgress } from './scan.js';
|
|
4
|
+
/** Uniswap V4 用到的 LP 协议字段(与 lp.ts 的 LpProtocol 一致,避免循环引用) */
|
|
5
|
+
interface V4Protocol {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
version: 'v2' | 'v3' | 'v4';
|
|
9
|
+
chainId: number;
|
|
10
|
+
positionManager?: string;
|
|
11
|
+
stateView?: string;
|
|
12
|
+
deployBlock?: number;
|
|
13
|
+
}
|
|
14
|
+
/** V4 扫描进度的存储:默认存在内存里;传自定义存储可以跨页面刷新 / 重启接着扫 */
|
|
15
|
+
export interface LpScanStorage {
|
|
16
|
+
get(key: string): LogScanProgress | undefined | Promise<LogScanProgress | undefined>;
|
|
17
|
+
set(key: string, state: LogScanProgress): void | Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
/** 内存存储:最多保存 1000 组进度,超出淘汰最早的 */
|
|
20
|
+
export declare function memoryLpScanStorage(limit?: number): LpScanStorage;
|
|
21
|
+
/** 基于 getItem / setItem 的存储(如 localStorage):`v4: { scan: { storage: keyValueLpScanStorage(localStorage) } }` */
|
|
22
|
+
export declare function keyValueLpScanStorage(store: {
|
|
23
|
+
getItem(key: string): string | null;
|
|
24
|
+
setItem(key: string, value: string): void;
|
|
25
|
+
}, prefix?: string): LpScanStorage;
|
|
26
|
+
export interface V4ScanOptions {
|
|
27
|
+
/** 进度存储,默认内存(进程 / 页面结束就丢失) */
|
|
28
|
+
storage?: LpScanStorage;
|
|
29
|
+
/**
|
|
30
|
+
* 第一次扫描从哪个区块开始:数字;'deployment' 从仓位合约部署的区块开始(扫全部历史;
|
|
31
|
+
* 自定义协议没有 deployBlock 时等同于 'latest');'latest' 从现在开始(只能发现之后的新仓位)。默认 'deployment'
|
|
32
|
+
*/
|
|
33
|
+
fromBlock?: number | 'deployment' | 'latest';
|
|
34
|
+
/** 单次 getLogs 的最大区块范围,默认 10000(只查仓位合约的事件,节点一般允许较大的范围);节点有上限时自动缩小 */
|
|
35
|
+
blockRange?: number;
|
|
36
|
+
/** 每次调用最多发多少个 getLogs,默认 20 */
|
|
37
|
+
maxRequests?: number;
|
|
38
|
+
/** 每次调用的扫描时间预算(毫秒),默认 5000 */
|
|
39
|
+
timeBudget?: number;
|
|
40
|
+
/** 只扫到最新区块往前这么多个区块,默认 5。不要设为 0:刚出的区块可能被重组,扫到的仓位核对时“不存在”会被从进度里去掉 */
|
|
41
|
+
confirmations?: number;
|
|
42
|
+
/**
|
|
43
|
+
* 每次扫描后的进度:cursor 是已扫到的区块,target 是这次的目标区块,done 表示已扫到最新。
|
|
44
|
+
* 没扫完之前 V4 的结果不完整(从 fromBlock 往后扫,最近铸造的仓位最后才扫到),可以据此提示用户或继续调用
|
|
45
|
+
*/
|
|
46
|
+
onProgress?(progress: V4ScanProgress): void;
|
|
47
|
+
}
|
|
48
|
+
export interface V4ScanProgress {
|
|
49
|
+
chainId: number;
|
|
50
|
+
positionManager: string;
|
|
51
|
+
startBlock: number;
|
|
52
|
+
cursor: number;
|
|
53
|
+
/**
|
|
54
|
+
* 这次的目标区块;没扫(暂停中、拿不到最新区块)时为 null。
|
|
55
|
+
* 触发暂停的那一次照常有 target,同时带 pausedUntil;第一次就拿不到最新区块时 startBlock / cursor 为 -1
|
|
56
|
+
*/
|
|
57
|
+
target: number | null;
|
|
58
|
+
done: boolean;
|
|
59
|
+
/** 节点不开放 getLogs 时暂停到这个时间(毫秒时间戳),之前的调用不再扫描 */
|
|
60
|
+
pausedUntil?: number;
|
|
61
|
+
}
|
|
62
|
+
export interface LpV4Options {
|
|
63
|
+
/** 已知的仓位 tokenId(如应用自己记下的):直接查,不用扫描 */
|
|
64
|
+
tokenIds?: ReadonlyArray<string | number | bigint>;
|
|
65
|
+
/**
|
|
66
|
+
* 扫描仓位合约发给这个地址的 NFT(Transfer 事件)来发现仓位。V4 的仓位合约不能按地址列出 NFT,只能这样找。
|
|
67
|
+
* 需要节点支持 eth_getLogs;扫全部历史在公共节点上很慢(每次调用推进一段,进度可以存起来),建议用自己的节点。默认不扫描
|
|
68
|
+
*/
|
|
69
|
+
scan?: boolean | V4ScanOptions;
|
|
70
|
+
}
|
|
71
|
+
declare const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
72
|
+
/** PositionInfo(uint256):| 200 位 poolId | 24 位 tickUpper | 24 位 tickLower | 8 位 hasSubscriber | */
|
|
73
|
+
export declare function decodePositionInfo(info: bigint): {
|
|
74
|
+
tickLower: number;
|
|
75
|
+
tickUpper: number;
|
|
76
|
+
};
|
|
77
|
+
/** poolId = keccak256(abi.encode(PoolKey)) */
|
|
78
|
+
export declare function poolIdOf(key: {
|
|
79
|
+
currency0: string;
|
|
80
|
+
currency1: string;
|
|
81
|
+
fee: number | bigint;
|
|
82
|
+
tickSpacing: number | bigint;
|
|
83
|
+
hooks: string;
|
|
84
|
+
}): string;
|
|
85
|
+
/** V4 的原始仓位(与 lp.ts 的 RawConcentrated 结构一致) */
|
|
86
|
+
export interface RawV4Position {
|
|
87
|
+
version: 'v4';
|
|
88
|
+
protocol: V4Protocol;
|
|
89
|
+
pool: string;
|
|
90
|
+
tokenId: bigint;
|
|
91
|
+
token0: string;
|
|
92
|
+
token1: string;
|
|
93
|
+
fee: number;
|
|
94
|
+
tickLower: number;
|
|
95
|
+
tickUpper: number;
|
|
96
|
+
tick: number;
|
|
97
|
+
sqrtPriceX96: bigint;
|
|
98
|
+
liquidity: bigint;
|
|
99
|
+
amount0: bigint;
|
|
100
|
+
amount1: bigint;
|
|
101
|
+
fees0: bigint;
|
|
102
|
+
fees1: bigint;
|
|
103
|
+
hooks: string;
|
|
104
|
+
}
|
|
105
|
+
/** 查 Uniswap V4 仓位:先找 tokenId(传入的 + 扫描到的),核对仍归 owner,再批量读池子和仓位状态 */
|
|
106
|
+
export declare function v4Positions(provider: Provider, owner: string, protocols: readonly V4Protocol[], v4: LpV4Options, includeClosed: boolean, maxPositions: number, overrides: CallOverrides): Promise<RawV4Position[]>;
|
|
107
|
+
export { ZERO_ADDRESS as V4_NATIVE_CURRENCY };
|
|
108
|
+
//# sourceMappingURL=lpV4.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lpV4.d.ts","sourceRoot":"","sources":["../src/lpV4.ts"],"names":[],"mappings":"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"}
|