@nradko/metric-omm-sdk-v1 0.0.16
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 +111 -0
- package/dist/abis/MetricOmmPool.d.ts +784 -0
- package/dist/abis/MetricOmmPool.d.ts.map +1 -0
- package/dist/abis/MetricOmmPool.js +1008 -0
- package/dist/abis/MetricOmmPool.js.map +1 -0
- package/dist/abis/MetricOmmPoolFactory.d.ts +1365 -0
- package/dist/abis/MetricOmmPoolFactory.d.ts.map +1 -0
- package/dist/abis/MetricOmmPoolFactory.js +1754 -0
- package/dist/abis/MetricOmmPoolFactory.js.map +1 -0
- package/dist/abis/MetricOmmPoolLiquidityAdder.d.ts +308 -0
- package/dist/abis/MetricOmmPoolLiquidityAdder.d.ts.map +1 -0
- package/dist/abis/MetricOmmPoolLiquidityAdder.js +401 -0
- package/dist/abis/MetricOmmPoolLiquidityAdder.js.map +1 -0
- package/dist/abis/MetricOmmPoolStateView.d.ts +538 -0
- package/dist/abis/MetricOmmPoolStateView.d.ts.map +1 -0
- package/dist/abis/MetricOmmPoolStateView.js +717 -0
- package/dist/abis/MetricOmmPoolStateView.js.map +1 -0
- package/dist/abis/MetricOmmPoolSwapper.d.ts +557 -0
- package/dist/abis/MetricOmmPoolSwapper.d.ts.map +1 -0
- package/dist/abis/MetricOmmPoolSwapper.js +723 -0
- package/dist/abis/MetricOmmPoolSwapper.js.map +1 -0
- package/dist/abis/Multicall3.d.ts +333 -0
- package/dist/abis/Multicall3.d.ts.map +1 -0
- package/dist/abis/Multicall3.js +441 -0
- package/dist/abis/Multicall3.js.map +1 -0
- package/dist/abis/PriceProvider.d.ts +142 -0
- package/dist/abis/PriceProvider.d.ts.map +1 -0
- package/dist/abis/PriceProvider.js +184 -0
- package/dist/abis/PriceProvider.js.map +1 -0
- package/dist/abis/PriceProviderUi.d.ts +433 -0
- package/dist/abis/PriceProviderUi.d.ts.map +1 -0
- package/dist/abis/PriceProviderUi.js +318 -0
- package/dist/abis/PriceProviderUi.js.map +1 -0
- package/dist/abis/index.d.ts +11 -0
- package/dist/abis/index.d.ts.map +1 -0
- package/dist/abis/index.js +11 -0
- package/dist/abis/index.js.map +1 -0
- package/dist/addresses.d.ts +52 -0
- package/dist/addresses.d.ts.map +1 -0
- package/dist/addresses.js +58 -0
- package/dist/addresses.js.map +1 -0
- package/dist/constants.d.ts +20 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +26 -0
- package/dist/constants.js.map +1 -0
- package/dist/factory/collectFees.d.ts +41 -0
- package/dist/factory/collectFees.d.ts.map +1 -0
- package/dist/factory/collectFees.js +120 -0
- package/dist/factory/collectFees.js.map +1 -0
- package/dist/factory/index.d.ts +5 -0
- package/dist/factory/index.d.ts.map +1 -0
- package/dist/factory/index.js +5 -0
- package/dist/factory/index.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/pool/create.d.ts +80 -0
- package/dist/pool/create.d.ts.map +1 -0
- package/dist/pool/create.js +80 -0
- package/dist/pool/create.js.map +1 -0
- package/dist/pool/index.d.ts +7 -0
- package/dist/pool/index.d.ts.map +1 -0
- package/dist/pool/index.js +10 -0
- package/dist/pool/index.js.map +1 -0
- package/dist/pool/liquidity.d.ts +165 -0
- package/dist/pool/liquidity.d.ts.map +1 -0
- package/dist/pool/liquidity.js +508 -0
- package/dist/pool/liquidity.js.map +1 -0
- package/dist/pool/read.d.ts +22 -0
- package/dist/pool/read.d.ts.map +1 -0
- package/dist/pool/read.js +88 -0
- package/dist/pool/read.js.map +1 -0
- package/dist/router/index.d.ts +5 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +5 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/swap.d.ts +117 -0
- package/dist/router/swap.d.ts.map +1 -0
- package/dist/router/swap.js +298 -0
- package/dist/router/swap.js.map +1 -0
- package/dist/stateView/index.d.ts +5 -0
- package/dist/stateView/index.d.ts.map +1 -0
- package/dist/stateView/index.js +5 -0
- package/dist/stateView/index.js.map +1 -0
- package/dist/stateView/read.d.ts +80 -0
- package/dist/stateView/read.d.ts.map +1 -0
- package/dist/stateView/read.js +249 -0
- package/dist/stateView/read.js.map +1 -0
- package/dist/types.d.ts +134 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/binData.d.ts +65 -0
- package/dist/utils/binData.d.ts.map +1 -0
- package/dist/utils/binData.js +109 -0
- package/dist/utils/binData.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +10 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/liquidityMath.d.ts +10 -0
- package/dist/utils/liquidityMath.d.ts.map +1 -0
- package/dist/utils/liquidityMath.js +31 -0
- package/dist/utils/liquidityMath.js.map +1 -0
- package/dist/utils/price.d.ts +13 -0
- package/dist/utils/price.d.ts.map +1 -0
- package/dist/utils/price.js +21 -0
- package/dist/utils/price.js.map +1 -0
- package/package.json +74 -0
- package/src/abis/MetricOmmPool.ts +1007 -0
- package/src/abis/MetricOmmPoolFactory.ts +1753 -0
- package/src/abis/MetricOmmPoolLiquidityAdder.ts +400 -0
- package/src/abis/MetricOmmPoolStateView.ts +716 -0
- package/src/abis/MetricOmmPoolSwapper.ts +722 -0
- package/src/abis/Multicall3.ts +440 -0
- package/src/abis/PriceProvider.ts +183 -0
- package/src/abis/PriceProviderUi.ts +317 -0
- package/src/abis/index.ts +11 -0
- package/src/addresses.ts +100 -0
- package/src/constants.ts +35 -0
- package/src/factory/collectFees.ts +197 -0
- package/src/factory/index.ts +12 -0
- package/src/index.ts +157 -0
- package/src/pool/create.ts +158 -0
- package/src/pool/index.ts +47 -0
- package/src/pool/liquidity.ts +839 -0
- package/src/pool/read.ts +131 -0
- package/src/router/index.ts +27 -0
- package/src/router/swap.ts +507 -0
- package/src/stateView/index.ts +18 -0
- package/src/stateView/read.ts +355 -0
- package/src/types.ts +162 -0
- package/src/utils/binData.ts +127 -0
- package/src/utils/index.ts +26 -0
- package/src/utils/liquidityMath.ts +47 -0
- package/src/utils/price.ts +23 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MetricAMM SDK - Factory Fee Collection
|
|
3
|
+
*/
|
|
4
|
+
import { erc20Abi, zeroAddress, } from "viem";
|
|
5
|
+
import { POOL_FACTORY_ABI } from "../constants.js";
|
|
6
|
+
/**
|
|
7
|
+
* Read balances for the provided asset list on the factory.
|
|
8
|
+
* For ERC20 assets this uses multicall(balanceOf(factory)).
|
|
9
|
+
* For native ETH (zero address), this uses getBalance(factory).
|
|
10
|
+
*/
|
|
11
|
+
export async function getFactoryAssetBalances(publicClient, factoryAddress, assets) {
|
|
12
|
+
const uniqueAssets = dedupeAssets(assets);
|
|
13
|
+
const nativeAsset = zeroAddress.toLowerCase();
|
|
14
|
+
const erc20Assets = uniqueAssets.filter((asset) => asset.toLowerCase() !== nativeAsset);
|
|
15
|
+
const erc20Balances = new Map();
|
|
16
|
+
if (erc20Assets.length > 0) {
|
|
17
|
+
const results = await publicClient.multicall({
|
|
18
|
+
contracts: erc20Assets.map((asset) => ({
|
|
19
|
+
address: asset,
|
|
20
|
+
abi: erc20Abi,
|
|
21
|
+
functionName: "balanceOf",
|
|
22
|
+
args: [factoryAddress],
|
|
23
|
+
})),
|
|
24
|
+
allowFailure: true,
|
|
25
|
+
});
|
|
26
|
+
const failedAssets = [];
|
|
27
|
+
results.forEach((result, index) => {
|
|
28
|
+
const asset = erc20Assets[index];
|
|
29
|
+
if (result.status === "success") {
|
|
30
|
+
erc20Balances.set(asset.toLowerCase(), result.result);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
failedAssets.push(asset);
|
|
34
|
+
});
|
|
35
|
+
if (failedAssets.length > 0) {
|
|
36
|
+
throw new Error(`Failed to read ERC20 balances for: ${failedAssets.join(", ")}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const nativeIncluded = uniqueAssets.some((asset) => asset.toLowerCase() === nativeAsset);
|
|
40
|
+
const nativeBalance = nativeIncluded
|
|
41
|
+
? await publicClient.getBalance({ address: factoryAddress })
|
|
42
|
+
: undefined;
|
|
43
|
+
return uniqueAssets.map((asset) => {
|
|
44
|
+
const isNative = asset.toLowerCase() === nativeAsset;
|
|
45
|
+
return {
|
|
46
|
+
asset,
|
|
47
|
+
isNative,
|
|
48
|
+
amount: isNative ? (nativeBalance ?? 0n) : (erc20Balances.get(asset.toLowerCase()) ?? 0n),
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Collect all non-zero balances for the provided assets from the factory,
|
|
54
|
+
* sending each asset in a separate transaction.
|
|
55
|
+
*/
|
|
56
|
+
export async function collectFactoryFees(params) {
|
|
57
|
+
const { publicClient, walletClient, factoryAddress, target, assets, account, awaitReceipts = true, } = params;
|
|
58
|
+
const balances = await getFactoryAssetBalances(publicClient, factoryAddress, assets);
|
|
59
|
+
const toCollect = balances.filter((item) => item.amount > 0n);
|
|
60
|
+
const collected = [];
|
|
61
|
+
for (const item of toCollect) {
|
|
62
|
+
if (item.isNative) {
|
|
63
|
+
const { request } = await publicClient.simulateContract({
|
|
64
|
+
address: factoryAddress,
|
|
65
|
+
abi: POOL_FACTORY_ABI,
|
|
66
|
+
functionName: "collectETH",
|
|
67
|
+
args: [target, item.amount],
|
|
68
|
+
account,
|
|
69
|
+
});
|
|
70
|
+
const hash = await walletClient.writeContract(request);
|
|
71
|
+
const tx = {
|
|
72
|
+
asset: item.asset,
|
|
73
|
+
amount: item.amount,
|
|
74
|
+
isNative: true,
|
|
75
|
+
hash,
|
|
76
|
+
};
|
|
77
|
+
if (awaitReceipts) {
|
|
78
|
+
tx.receipt = await publicClient.waitForTransactionReceipt({ hash });
|
|
79
|
+
}
|
|
80
|
+
collected.push(tx);
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
const { request } = await publicClient.simulateContract({
|
|
84
|
+
address: factoryAddress,
|
|
85
|
+
abi: POOL_FACTORY_ABI,
|
|
86
|
+
functionName: "collectTokens",
|
|
87
|
+
args: [item.asset, target, item.amount],
|
|
88
|
+
account,
|
|
89
|
+
});
|
|
90
|
+
const hash = await walletClient.writeContract(request);
|
|
91
|
+
const tx = {
|
|
92
|
+
asset: item.asset,
|
|
93
|
+
amount: item.amount,
|
|
94
|
+
isNative: false,
|
|
95
|
+
hash,
|
|
96
|
+
};
|
|
97
|
+
if (awaitReceipts) {
|
|
98
|
+
tx.receipt = await publicClient.waitForTransactionReceipt({ hash });
|
|
99
|
+
}
|
|
100
|
+
collected.push(tx);
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
balances,
|
|
104
|
+
collected,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function dedupeAssets(assets) {
|
|
108
|
+
const deduped = [];
|
|
109
|
+
const seen = new Set();
|
|
110
|
+
for (const asset of assets) {
|
|
111
|
+
const key = asset.toLowerCase();
|
|
112
|
+
if (seen.has(key)) {
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
seen.add(key);
|
|
116
|
+
deduped.push(asset);
|
|
117
|
+
}
|
|
118
|
+
return deduped;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=collectFees.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectFees.js","sourceRoot":"","sources":["../../src/factory/collectFees.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MetricAMM SDK - Factory Functions
|
|
3
|
+
*/
|
|
4
|
+
export { getFactoryAssetBalances, collectFactoryFees, type FactoryAssetBalance, type CollectFactoryFeesParams, type CollectedFactoryFeeTx, type CollectFactoryFeesResult, } from "./collectFees.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,GAC9B,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GAKnB,MAAM,kBAAkB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MetricAMM SDK (v1 contracts: Swapper, LiquidityAdder, add/removeLiquidity).
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
export type { LiquidityDelta, PoolLiquidityDelta, BinData, PoolImmutables, PoolState, BinState, BinStateExternal, BinStatesExternal, BinStatesScaled, Slot0, Slot1, FeeConfig, PositionBinSharesResult, CalculateUniformLiquidityParams, LiquidityBinValueInput as AnyLiquidityBinInput, CalculateAnyLiquidityParams, PreparedLiquidityDistribution, CalculatedLiquidityDistribution, } from "./types.js";
|
|
7
|
+
export { Q64, MAX_UINT128, MAX_INT128, MAX_UINT104, MAX_INT104 } from "./constants.js";
|
|
8
|
+
export { ChainId, ADDRESSES, getAddresses, getAddressesOrThrow, isChainSupported, getSupportedChainIds, isChainDeployed, type ChainAddresses, type DeployedChainId, } from "./addresses.js";
|
|
9
|
+
export { MetricOmmPoolAbi, MetricOmmPoolStateViewAbi, MetricOmmPoolSwapperAbi, MetricOmmPoolLiquidityAdderAbi, MetricOmmPoolFactoryAbi, } from "./abis/index.js";
|
|
10
|
+
export { packBinData, packBins5, packBinDataArray, unpackBinData, createBins, createUniformBins, priceToQ64, q64ToPrice, } from "./utils/index.js";
|
|
11
|
+
export { createPool, prepareFactoryCreatePoolParams, encodeCreatePoolCalldata, preparePoolBinData, type CreatePoolFactoryParams, type CreatePoolParams, getPoolImmutables, getPoolState, getBinState, getPositionBinShares, } from "./pool/index.js";
|
|
12
|
+
export { getSlot0, getSlot1, getBinStateExternal, getBinStatesExternal, getBinStatesScaled, getBinTotalShares, getPositionBinSharesFromStateView, toPositionBinKey, getPositionBinSharesRange, getFeeConfig, getPriceProvider, getLastTradeTimestamp, } from "./stateView/index.js";
|
|
13
|
+
export { buildModifyLiquidityArgsForAddition, buildModifyLiquidityArgsForUniformAddition, buildModifyLiquidityArgsForUniformAdditionWithTotalTokenAmount, buildModifyLiquidityArgsForPercentageRemoval, buildModifyLiquidityArgsForRemoval, buildAddLiquidityExactSharesParamsFromBinTargets, buildRemoveLiquidityPoolDelta, additionPlanToPoolLiquidityDelta, removalPlanToPoolLiquidityDelta, scaleWeightedPoolDeltasToFitCaps, encodeAddLiquidityExactSharesSelfCalldata, encodeAddLiquidityExactSharesWithOwnerCalldata, encodeAddLiquidityWeightedSelfCalldata, encodeAddLiquidityWeightedWithOwnerCalldata, encodeRemoveLiquidityCalldata, getPositionShares, getPositionSharesForBins, NO_SLIPPAGE_LIMIT, type ModifyLiquidityArgs, type BuildModifyLiquidityArgsBase, type BuildModifyLiquidityArgsForAdditionParams, type BuildModifyLiquidityArgsForUniformAdditionParams, type BuildModifyLiquidityArgsForUniformAdditionWithTotalTokenAmountParams, type BuildModifyLiquidityArgsForPercentageRemovalParams, type BuildModifyLiquidityArgsForRemovalParams, type RemoveLiquidityParams, type BinRemovalSpec, } from "./pool/liquidity.js";
|
|
14
|
+
export { buildArgsForSwapExactInput, buildArgsAndExpectedAmountsForSwapExactInput, quoteExpectedAmountsForSwapExactInput, buildArgsForSwapExactOutput, buildArgsAndExpectedAmountsForSwapExactOutput, quoteExpectedAmountsForSwapExactOutput, prepareSwapExactInputCalldata, prepareSwapExactOutputCalldata, prepareSwapExactInputNativeForTokensCalldata, type PreparedSwapTransaction, type BuildSwapExactInputParams, type QuoteExpectedAmountsForSwapExactInputParams, type BuildSwapExactOutputParams, type QuoteExpectedAmountsForSwapExactOutputParams, type SwapExactInputParams, type SwapExactOutputParams, type SwapExactInputArgs, type SwapExactOutputArgs, } from "./router/index.js";
|
|
15
|
+
export { getFactoryAssetBalances, collectFactoryFees, type FactoryAssetBalance, type CollectFactoryFeesParams, type CollectedFactoryFeeTx, type CollectFactoryFeesResult, } from "./factory/index.js";
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,OAAO,EACP,cAAc,EACd,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,KAAK,EACL,KAAK,EACL,SAAS,EACT,uBAAuB,EACvB,+BAA+B,EAC/B,sBAAsB,IAAI,oBAAoB,EAC9C,2BAA2B,EAC3B,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGvF,OAAO,EACL,OAAO,EACP,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,uBAAuB,EACvB,8BAA8B,EAC9B,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,UAAU,GACX,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,UAAU,EACV,8BAA8B,EAC9B,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,iCAAiC,EACjC,gBAAgB,EAChB,yBAAyB,EACzB,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,mCAAmC,EACnC,0CAA0C,EAC1C,8DAA8D,EAC9D,4CAA4C,EAC5C,kCAAkC,EAClC,gDAAgD,EAChD,6BAA6B,EAC7B,gCAAgC,EAChC,+BAA+B,EAC/B,gCAAgC,EAChC,yCAAyC,EACzC,8CAA8C,EAC9C,sCAAsC,EACtC,2CAA2C,EAC3C,6BAA6B,EAC7B,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EACjC,KAAK,yCAAyC,EAC9C,KAAK,gDAAgD,EACrD,KAAK,oEAAoE,EACzE,KAAK,kDAAkD,EACvD,KAAK,wCAAwC,EAC7C,KAAK,qBAAqB,EAC1B,KAAK,cAAc,GACpB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,0BAA0B,EAC1B,4CAA4C,EAC5C,qCAAqC,EACrC,2BAA2B,EAC3B,6CAA6C,EAC7C,sCAAsC,EACtC,6BAA6B,EAC7B,8BAA8B,EAC9B,4CAA4C,EAC5C,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,2CAA2C,EAChD,KAAK,0BAA0B,EAC/B,KAAK,4CAA4C,EACjD,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,GAC9B,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MetricAMM SDK (v1 contracts: Swapper, LiquidityAdder, add/removeLiquidity).
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
// ============ Constants ============
|
|
7
|
+
export { Q64, MAX_UINT128, MAX_INT128, MAX_UINT104, MAX_INT104 } from "./constants.js";
|
|
8
|
+
// ============ Addresses ============
|
|
9
|
+
export { ChainId, ADDRESSES, getAddresses, getAddressesOrThrow, isChainSupported, getSupportedChainIds, isChainDeployed, } from "./addresses.js";
|
|
10
|
+
// ============ ABIs ============
|
|
11
|
+
export { MetricOmmPoolAbi, MetricOmmPoolStateViewAbi, MetricOmmPoolSwapperAbi, MetricOmmPoolLiquidityAdderAbi, MetricOmmPoolFactoryAbi, } from "./abis/index.js";
|
|
12
|
+
// ============ Utils ============
|
|
13
|
+
export { packBinData, packBins5, packBinDataArray, unpackBinData, createBins, createUniformBins, priceToQ64, q64ToPrice, } from "./utils/index.js";
|
|
14
|
+
// ============ Pool Functions ============
|
|
15
|
+
export { createPool, prepareFactoryCreatePoolParams, encodeCreatePoolCalldata, preparePoolBinData, getPoolImmutables, getPoolState, getBinState, getPositionBinShares, } from "./pool/index.js";
|
|
16
|
+
// ============ StateView Functions ============
|
|
17
|
+
export { getSlot0, getSlot1, getBinStateExternal, getBinStatesExternal, getBinStatesScaled, getBinTotalShares, getPositionBinSharesFromStateView, toPositionBinKey, getPositionBinSharesRange, getFeeConfig, getPriceProvider, getLastTradeTimestamp, } from "./stateView/index.js";
|
|
18
|
+
// ============ Liquidity Functions ============
|
|
19
|
+
export { buildModifyLiquidityArgsForAddition, buildModifyLiquidityArgsForUniformAddition, buildModifyLiquidityArgsForUniformAdditionWithTotalTokenAmount, buildModifyLiquidityArgsForPercentageRemoval, buildModifyLiquidityArgsForRemoval, buildAddLiquidityExactSharesParamsFromBinTargets, buildRemoveLiquidityPoolDelta, additionPlanToPoolLiquidityDelta, removalPlanToPoolLiquidityDelta, scaleWeightedPoolDeltasToFitCaps, encodeAddLiquidityExactSharesSelfCalldata, encodeAddLiquidityExactSharesWithOwnerCalldata, encodeAddLiquidityWeightedSelfCalldata, encodeAddLiquidityWeightedWithOwnerCalldata, encodeRemoveLiquidityCalldata, getPositionShares, getPositionSharesForBins, NO_SLIPPAGE_LIMIT, } from "./pool/liquidity.js";
|
|
20
|
+
// ============ Swapper Functions ============
|
|
21
|
+
export { buildArgsForSwapExactInput, buildArgsAndExpectedAmountsForSwapExactInput, quoteExpectedAmountsForSwapExactInput, buildArgsForSwapExactOutput, buildArgsAndExpectedAmountsForSwapExactOutput, quoteExpectedAmountsForSwapExactOutput, prepareSwapExactInputCalldata, prepareSwapExactOutputCalldata, prepareSwapExactInputNativeForTokensCalldata, } from "./router/index.js";
|
|
22
|
+
// ============ Factory Functions ============
|
|
23
|
+
export { getFactoryAssetBalances, collectFactoryFees, } from "./factory/index.js";
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwBH,sCAAsC;AACtC,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEvF,sCAAsC;AACtC,OAAO,EACL,OAAO,EACP,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,GAGhB,MAAM,gBAAgB,CAAC;AAExB,iCAAiC;AACjC,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,uBAAuB,EACvB,8BAA8B,EAC9B,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,kCAAkC;AAClC,OAAO,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,UAAU,GACX,MAAM,kBAAkB,CAAC;AAE1B,2CAA2C;AAC3C,OAAO,EACL,UAAU,EACV,8BAA8B,EAC9B,wBAAwB,EACxB,kBAAkB,EAGlB,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAEzB,gDAAgD;AAChD,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,iCAAiC,EACjC,gBAAgB,EAChB,yBAAyB,EACzB,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,gDAAgD;AAChD,OAAO,EACL,mCAAmC,EACnC,0CAA0C,EAC1C,8DAA8D,EAC9D,4CAA4C,EAC5C,kCAAkC,EAClC,gDAAgD,EAChD,6BAA6B,EAC7B,gCAAgC,EAChC,+BAA+B,EAC/B,gCAAgC,EAChC,yCAAyC,EACzC,8CAA8C,EAC9C,sCAAsC,EACtC,2CAA2C,EAC3C,6BAA6B,EAC7B,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,GAUlB,MAAM,qBAAqB,CAAC;AAE7B,8CAA8C;AAC9C,OAAO,EACL,0BAA0B,EAC1B,4CAA4C,EAC5C,qCAAqC,EACrC,2BAA2B,EAC3B,6CAA6C,EAC7C,sCAAsC,EACtC,6BAA6B,EAC7B,8BAA8B,EAC9B,4CAA4C,GAU7C,MAAM,mBAAmB,CAAC;AAE3B,8CAA8C;AAC9C,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GAKnB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MetricAMM SDK - Pool creation (v1 factory `PoolParameters`).
|
|
3
|
+
*/
|
|
4
|
+
import type { Address, PublicClient, WalletClient, Hex } from "viem";
|
|
5
|
+
/**
|
|
6
|
+
* Parameters for creating a new pool via the v1 factory.
|
|
7
|
+
*/
|
|
8
|
+
export interface CreatePoolFactoryParams {
|
|
9
|
+
token0: Address;
|
|
10
|
+
token1: Address;
|
|
11
|
+
priceProvider: Address;
|
|
12
|
+
admin: Address;
|
|
13
|
+
/** Defaults to zero address (no allowlist). */
|
|
14
|
+
depositAllowlistProvider?: Address;
|
|
15
|
+
/** Defaults to zero address (no allowlist). */
|
|
16
|
+
swapAllowlistProvider?: Address;
|
|
17
|
+
/** Defaults to 0. */
|
|
18
|
+
priceProviderTimelock?: bigint;
|
|
19
|
+
nonNegativeBins: bigint[];
|
|
20
|
+
negativeBins: bigint[];
|
|
21
|
+
initialScaledToken0PerShareE18: bigint;
|
|
22
|
+
initialScaledToken1PerShareE18: bigint;
|
|
23
|
+
minimalMintableLiquidity: bigint;
|
|
24
|
+
reportSwapToPriceProvider: boolean;
|
|
25
|
+
/** Admin spread fee in E6 units (same convention as on-chain pool fees). */
|
|
26
|
+
adminSpreadFeeE6: number;
|
|
27
|
+
/** Admin notional fee in E8 units. */
|
|
28
|
+
adminNotionalFeeE8: number;
|
|
29
|
+
adminFeeDestination: Address;
|
|
30
|
+
/** Distance from oracle price to bin anchor, in pool E6 units (same scaling as v0 helper). */
|
|
31
|
+
curBinDistFromProvidedPricePercent: number;
|
|
32
|
+
salt?: Hex;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @deprecated Use CreatePoolFactoryParams instead
|
|
36
|
+
*/
|
|
37
|
+
export interface CreatePoolParams {
|
|
38
|
+
token0: Address;
|
|
39
|
+
token1: Address;
|
|
40
|
+
priceProvider: Address;
|
|
41
|
+
numBins: number;
|
|
42
|
+
binLengthE6: number;
|
|
43
|
+
baseFeeE6: number;
|
|
44
|
+
protocolFeeE6: number;
|
|
45
|
+
maxDriftE8: bigint;
|
|
46
|
+
maxDriftDecayPerSecondE8: bigint;
|
|
47
|
+
}
|
|
48
|
+
export declare function prepareFactoryCreatePoolParams(params: CreatePoolFactoryParams): {
|
|
49
|
+
token0: `0x${string}`;
|
|
50
|
+
token1: `0x${string}`;
|
|
51
|
+
priceProvider: `0x${string}`;
|
|
52
|
+
depositAllowlistProvider: `0x${string}`;
|
|
53
|
+
swapAllowlistProvider: `0x${string}`;
|
|
54
|
+
priceProviderTimelock: bigint;
|
|
55
|
+
admin: `0x${string}`;
|
|
56
|
+
initialAmount0PerShareE18: bigint;
|
|
57
|
+
initialAmount1PerShareE18: bigint;
|
|
58
|
+
minimalMintableLiquidity: bigint;
|
|
59
|
+
reportSwapToPriceProvider: boolean;
|
|
60
|
+
adminSpreadFeeE6: number;
|
|
61
|
+
adminNotionalFeeE8: number;
|
|
62
|
+
adminFeeDestination: `0x${string}`;
|
|
63
|
+
curBinDistFromProvidedPriceE6: number;
|
|
64
|
+
nonNegativeBinDataArray: bigint[];
|
|
65
|
+
negativeBinDataArray: bigint[];
|
|
66
|
+
salt: `0x${string}`;
|
|
67
|
+
};
|
|
68
|
+
export declare function createPool(publicClient: PublicClient, walletClient: WalletClient, factoryAddress: Address, params: CreatePoolFactoryParams, account: Address): Promise<{
|
|
69
|
+
hash: Hex;
|
|
70
|
+
poolAddress?: Address;
|
|
71
|
+
}>;
|
|
72
|
+
export declare function encodeCreatePoolCalldata(params: CreatePoolFactoryParams): Hex;
|
|
73
|
+
/**
|
|
74
|
+
* @deprecated Use prepareFactoryCreatePoolParams instead
|
|
75
|
+
*/
|
|
76
|
+
export declare function preparePoolBinData(params: CreatePoolParams): {
|
|
77
|
+
positiveBinData: bigint[];
|
|
78
|
+
negativeBinData: bigint[];
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/pool/create.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAOrE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,+CAA+C;IAC/C,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,+CAA+C;IAC/C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qBAAqB;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,8BAA8B,EAAE,MAAM,CAAC;IACvC,8BAA8B,EAAE,MAAM,CAAC;IACvC,wBAAwB,EAAE,MAAM,CAAC;IACjC,yBAAyB,EAAE,OAAO,CAAC;IACnC,4EAA4E;IAC5E,gBAAgB,EAAE,MAAM,CAAC;IACzB,sCAAsC;IACtC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,8FAA8F;IAC9F,kCAAkC,EAAE,MAAM,CAAC;IAC3C,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,uBAAuB;;;;;;;;;;;;;;;;;;;EAgC7E;AAED,wBAAsB,UAAU,CAC9B,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,OAAO,EACvB,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAkB/C;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,uBAAuB,GAAG,GAAG,CAS7E;AAgBD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG;IAC5D,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CAUA"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MetricAMM SDK - Pool creation (v1 factory `PoolParameters`).
|
|
3
|
+
*/
|
|
4
|
+
import { encodeFunctionData, zeroAddress } from "viem";
|
|
5
|
+
import { POOL_FACTORY_ABI } from "../constants.js";
|
|
6
|
+
import { createUniformBins } from "../utils/binData.js";
|
|
7
|
+
export function prepareFactoryCreatePoolParams(params) {
|
|
8
|
+
const curBinDistFromProvidedPriceE6 = Math.round(params.curBinDistFromProvidedPricePercent * 10_000);
|
|
9
|
+
if (curBinDistFromProvidedPriceE6 < -(2 ** 23) || curBinDistFromProvidedPriceE6 > 2 ** 23 - 1) {
|
|
10
|
+
throw new Error("curBinDistFromProvidedPricePercent maps to int24 out of range");
|
|
11
|
+
}
|
|
12
|
+
const salt = params.salt ??
|
|
13
|
+
`0x${[...Array(64)].map(() => Math.floor(Math.random() * 16).toString(16)).join("")}`;
|
|
14
|
+
return {
|
|
15
|
+
token0: params.token0,
|
|
16
|
+
token1: params.token1,
|
|
17
|
+
priceProvider: params.priceProvider,
|
|
18
|
+
depositAllowlistProvider: params.depositAllowlistProvider ?? zeroAddress,
|
|
19
|
+
swapAllowlistProvider: params.swapAllowlistProvider ?? zeroAddress,
|
|
20
|
+
priceProviderTimelock: params.priceProviderTimelock ?? 0n,
|
|
21
|
+
admin: params.admin,
|
|
22
|
+
initialAmount0PerShareE18: params.initialScaledToken0PerShareE18,
|
|
23
|
+
initialAmount1PerShareE18: params.initialScaledToken1PerShareE18,
|
|
24
|
+
minimalMintableLiquidity: params.minimalMintableLiquidity,
|
|
25
|
+
reportSwapToPriceProvider: params.reportSwapToPriceProvider,
|
|
26
|
+
adminSpreadFeeE6: params.adminSpreadFeeE6,
|
|
27
|
+
adminNotionalFeeE8: params.adminNotionalFeeE8,
|
|
28
|
+
adminFeeDestination: params.adminFeeDestination,
|
|
29
|
+
curBinDistFromProvidedPriceE6: curBinDistFromProvidedPriceE6,
|
|
30
|
+
nonNegativeBinDataArray: params.nonNegativeBins,
|
|
31
|
+
negativeBinDataArray: params.negativeBins,
|
|
32
|
+
salt,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export async function createPool(publicClient, walletClient, factoryAddress, params, account) {
|
|
36
|
+
const factoryParams = prepareFactoryCreatePoolParams(params);
|
|
37
|
+
const args = buildCreatePoolArgs(factoryParams);
|
|
38
|
+
const { request, result } = await publicClient.simulateContract({
|
|
39
|
+
address: factoryAddress,
|
|
40
|
+
abi: POOL_FACTORY_ABI,
|
|
41
|
+
functionName: "createPool",
|
|
42
|
+
args,
|
|
43
|
+
account,
|
|
44
|
+
});
|
|
45
|
+
const hash = await walletClient.writeContract(request);
|
|
46
|
+
return {
|
|
47
|
+
hash,
|
|
48
|
+
poolAddress: result,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export function encodeCreatePoolCalldata(params) {
|
|
52
|
+
const factoryParams = prepareFactoryCreatePoolParams(params);
|
|
53
|
+
const args = buildCreatePoolArgs(factoryParams);
|
|
54
|
+
return encodeFunctionData({
|
|
55
|
+
abi: POOL_FACTORY_ABI,
|
|
56
|
+
functionName: "createPool",
|
|
57
|
+
args,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function buildCreatePoolArgs(factoryParams) {
|
|
61
|
+
const createPoolAbi = POOL_FACTORY_ABI.find((item) => item?.type === "function" && item?.name === "createPool");
|
|
62
|
+
const inputCount = createPoolAbi?.inputs?.length ?? 1;
|
|
63
|
+
if (inputCount === 1) {
|
|
64
|
+
return [factoryParams];
|
|
65
|
+
}
|
|
66
|
+
throw new Error("Unsupported createPool ABI shape");
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* @deprecated Use prepareFactoryCreatePoolParams instead
|
|
70
|
+
*/
|
|
71
|
+
export function preparePoolBinData(params) {
|
|
72
|
+
const halfBins = Math.floor(params.numBins / 2);
|
|
73
|
+
const positiveBinData = createUniformBins(halfBins, params.binLengthE6);
|
|
74
|
+
const negativeBinData = createUniformBins(halfBins, params.binLengthE6);
|
|
75
|
+
return {
|
|
76
|
+
positiveBinData,
|
|
77
|
+
negativeBinData,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/pool/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MetricAMM SDK - Pool Functions
|
|
3
|
+
*/
|
|
4
|
+
export { createPool, prepareFactoryCreatePoolParams, encodeCreatePoolCalldata, preparePoolBinData, type CreatePoolFactoryParams, type CreatePoolParams, } from "./create.js";
|
|
5
|
+
export { getPoolImmutables, getPoolState, getBinState, getPositionBinShares } from "./read.js";
|
|
6
|
+
export { buildModifyLiquidityArgsForAddition, buildModifyLiquidityArgsForUniformAddition, buildModifyLiquidityArgsForUniformAdditionWithTotalTokenAmount, buildModifyLiquidityArgsForPercentageRemoval, buildModifyLiquidityArgsForRemoval, buildAddLiquidityExactSharesParamsFromBinTargets, buildRemoveLiquidityPoolDelta, additionPlanToPoolLiquidityDelta, removalPlanToPoolLiquidityDelta, scaleWeightedPoolDeltasToFitCaps, encodeAddLiquidityExactSharesSelfCalldata, encodeAddLiquidityExactSharesWithOwnerCalldata, encodeAddLiquidityWeightedSelfCalldata, encodeAddLiquidityWeightedWithOwnerCalldata, encodeRemoveLiquidityCalldata, getPositionShares, getPositionSharesForBins, NO_SLIPPAGE_LIMIT, type ModifyLiquidityArgs, type BuildModifyLiquidityArgsBase, type BuildModifyLiquidityArgsForAdditionParams, type BuildModifyLiquidityArgsForUniformAdditionParams, type BuildModifyLiquidityArgsForUniformAdditionWithTotalTokenAmountParams, type BuildModifyLiquidityArgsForPercentageRemovalParams, type BuildModifyLiquidityArgsForRemovalParams, type RemoveLiquidityParams, type BinRemovalSpec, } from "./liquidity.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,UAAU,EACV,8BAA8B,EAC9B,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,GACtB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAG/F,OAAO,EACL,mCAAmC,EACnC,0CAA0C,EAC1C,8DAA8D,EAC9D,4CAA4C,EAC5C,kCAAkC,EAClC,gDAAgD,EAChD,6BAA6B,EAC7B,gCAAgC,EAChC,+BAA+B,EAC/B,gCAAgC,EAChC,yCAAyC,EACzC,8CAA8C,EAC9C,sCAAsC,EACtC,2CAA2C,EAC3C,6BAA6B,EAC7B,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EACjC,KAAK,yCAAyC,EAC9C,KAAK,gDAAgD,EACrD,KAAK,oEAAoE,EACzE,KAAK,kDAAkD,EACvD,KAAK,wCAAwC,EAC7C,KAAK,qBAAqB,EAC1B,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MetricAMM SDK - Pool Functions
|
|
3
|
+
*/
|
|
4
|
+
// Pool creation
|
|
5
|
+
export { createPool, prepareFactoryCreatePoolParams, encodeCreatePoolCalldata, preparePoolBinData, } from "./create.js";
|
|
6
|
+
// Pool read functions
|
|
7
|
+
export { getPoolImmutables, getPoolState, getBinState, getPositionBinShares } from "./read.js";
|
|
8
|
+
// Liquidity calculations and position operations
|
|
9
|
+
export { buildModifyLiquidityArgsForAddition, buildModifyLiquidityArgsForUniformAddition, buildModifyLiquidityArgsForUniformAdditionWithTotalTokenAmount, buildModifyLiquidityArgsForPercentageRemoval, buildModifyLiquidityArgsForRemoval, buildAddLiquidityExactSharesParamsFromBinTargets, buildRemoveLiquidityPoolDelta, additionPlanToPoolLiquidityDelta, removalPlanToPoolLiquidityDelta, scaleWeightedPoolDeltasToFitCaps, encodeAddLiquidityExactSharesSelfCalldata, encodeAddLiquidityExactSharesWithOwnerCalldata, encodeAddLiquidityWeightedSelfCalldata, encodeAddLiquidityWeightedWithOwnerCalldata, encodeRemoveLiquidityCalldata, getPositionShares, getPositionSharesForBins, NO_SLIPPAGE_LIMIT, } from "./liquidity.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gBAAgB;AAChB,OAAO,EACL,UAAU,EACV,8BAA8B,EAC9B,wBAAwB,EACxB,kBAAkB,GAGnB,MAAM,aAAa,CAAC;AAErB,sBAAsB;AACtB,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAE/F,iDAAiD;AACjD,OAAO,EACL,mCAAmC,EACnC,0CAA0C,EAC1C,8DAA8D,EAC9D,4CAA4C,EAC5C,kCAAkC,EAClC,gDAAgD,EAChD,6BAA6B,EAC7B,gCAAgC,EAChC,+BAA+B,EAC/B,gCAAgC,EAChC,yCAAyC,EACzC,8CAA8C,EAC9C,sCAAsC,EACtC,2CAA2C,EAC3C,6BAA6B,EAC7B,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,GAUlB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MetricAMM SDK - Liquidity
|
|
3
|
+
* Unified liquidity calculations and position operations.
|
|
4
|
+
*/
|
|
5
|
+
import type { Address, PublicClient, Hex } from "viem";
|
|
6
|
+
import type { LiquidityDelta, LiquidityBinValueInput, PoolLiquidityDelta } from "../types.js";
|
|
7
|
+
import { getPositionBinSharesRange, getPositionBinSharesForBins } from "../stateView/read.js";
|
|
8
|
+
import { convertToken0ToToken1, convertToken1ToToken0 } from "../utils/liquidityMath.js";
|
|
9
|
+
export { convertToken0ToToken1, convertToken1ToToken0 };
|
|
10
|
+
export declare const getPositionShares: typeof getPositionBinSharesRange;
|
|
11
|
+
export declare const getPositionSharesForBins: typeof getPositionBinSharesForBins;
|
|
12
|
+
export interface RemoveLiquidityParams {
|
|
13
|
+
percentageToRemove: number;
|
|
14
|
+
bins?: number[];
|
|
15
|
+
lowerBin?: number;
|
|
16
|
+
upperBin?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface BinRemovalSpec {
|
|
19
|
+
bin: number;
|
|
20
|
+
percentageToRemove?: number;
|
|
21
|
+
sharesToRemove?: bigint;
|
|
22
|
+
}
|
|
23
|
+
export declare const NO_SLIPPAGE_LIMIT: bigint;
|
|
24
|
+
export type ModifyLiquidityArgs = readonly [bigint, LiquidityDelta[], bigint, bigint];
|
|
25
|
+
export interface BuildModifyLiquidityArgsBase {
|
|
26
|
+
publicClient: PublicClient;
|
|
27
|
+
/** Factory that deployed the pool (used to read `poolImmutables`). */
|
|
28
|
+
factoryAddress: Address;
|
|
29
|
+
stateViewAddress: Address;
|
|
30
|
+
poolAddress: Address;
|
|
31
|
+
specAmountBufferPercent?: number;
|
|
32
|
+
}
|
|
33
|
+
export interface BuildModifyLiquidityArgsForAdditionParams extends BuildModifyLiquidityArgsBase {
|
|
34
|
+
bins: LiquidityBinValueInput[];
|
|
35
|
+
currentPrice: number;
|
|
36
|
+
salt?: bigint;
|
|
37
|
+
}
|
|
38
|
+
export interface BuildModifyLiquidityArgsForUniformAdditionParams extends BuildModifyLiquidityArgsBase {
|
|
39
|
+
amountInTokensPerBin: bigint;
|
|
40
|
+
amountIsInToken0: boolean;
|
|
41
|
+
currentPrice: number;
|
|
42
|
+
lowerBin: number;
|
|
43
|
+
upperBin: number;
|
|
44
|
+
salt?: bigint;
|
|
45
|
+
}
|
|
46
|
+
export interface BuildModifyLiquidityArgsForUniformAdditionWithTotalTokenAmountParams extends BuildModifyLiquidityArgsBase {
|
|
47
|
+
bins: number[];
|
|
48
|
+
weights?: number[];
|
|
49
|
+
totalValueToAddInToken: bigint;
|
|
50
|
+
totalValueInToken0: boolean;
|
|
51
|
+
currentPriceX64: bigint;
|
|
52
|
+
salt?: bigint;
|
|
53
|
+
}
|
|
54
|
+
export interface BuildModifyLiquidityArgsForPercentageRemovalParams extends BuildModifyLiquidityArgsBase {
|
|
55
|
+
owner: Address;
|
|
56
|
+
salt: bigint;
|
|
57
|
+
percentageToRemove: number;
|
|
58
|
+
bins?: number[];
|
|
59
|
+
lowerBin?: number;
|
|
60
|
+
upperBin?: number;
|
|
61
|
+
}
|
|
62
|
+
export interface BuildModifyLiquidityArgsForRemovalParams extends BuildModifyLiquidityArgsBase {
|
|
63
|
+
owner: Address;
|
|
64
|
+
salt: bigint;
|
|
65
|
+
specs: BinRemovalSpec[];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Prepare uniform liquidity distribution across a bin range.
|
|
69
|
+
*/
|
|
70
|
+
export declare function buildModifyLiquidityArgsForUniformAddition({ publicClient, factoryAddress, stateViewAddress, poolAddress, amountInTokensPerBin, amountIsInToken0, currentPrice, lowerBin, upperBin, salt, specAmountBufferPercent, }: BuildModifyLiquidityArgsForUniformAdditionParams): Promise<ModifyLiquidityArgs>;
|
|
71
|
+
/**
|
|
72
|
+
* Prepare uniform liquidity across arbitrary bins from a TOTAL value budget.
|
|
73
|
+
*
|
|
74
|
+
* Algorithm:
|
|
75
|
+
* 1. Calibrate by assigning weighted 1e18 targets per bin with zero buffer.
|
|
76
|
+
* 2. Compute linear scale so selected specAmount token matches totalValueToAddInToken.
|
|
77
|
+
* 3. Rebuild with scaled per-bin value and caller-provided specAmountBufferPercent.
|
|
78
|
+
*/
|
|
79
|
+
export declare function buildModifyLiquidityArgsForUniformAdditionWithTotalTokenAmount({ publicClient, factoryAddress, stateViewAddress, poolAddress, bins, weights, totalValueToAddInToken, totalValueInToken0, currentPriceX64, salt, specAmountBufferPercent, }: BuildModifyLiquidityArgsForUniformAdditionWithTotalTokenAmountParams): Promise<ModifyLiquidityArgs>;
|
|
80
|
+
/**
|
|
81
|
+
* Prepare per-bin liquidity distribution from arbitrary per-bin amounts.
|
|
82
|
+
*
|
|
83
|
+
* Each input entry defines a single bin and a value expressed in token0 or token1.
|
|
84
|
+
* The function computes `deltaShares` for every bin and totals `specAmount0/specAmount1`
|
|
85
|
+
* needed to execute `modifyLiquidity` safely.
|
|
86
|
+
*
|
|
87
|
+
* ## Algorithm Overview
|
|
88
|
+
*
|
|
89
|
+
* This is the core distribution engine used by both:
|
|
90
|
+
* - direct per-bin plans (computeModifyLiquidityForAddition)
|
|
91
|
+
* - uniform plans via adapter (computeModifyLiquidityForUniformAddition)
|
|
92
|
+
*
|
|
93
|
+
* ## Steps
|
|
94
|
+
*
|
|
95
|
+
* 1. Validate inputs, price, bin range, and reject duplicate bins.
|
|
96
|
+
* 2. Convert each bin target into both token0/token1 amounts using current price.
|
|
97
|
+
* 3. Fetch slot0 and bin states, then classify each bin as below/current/above.
|
|
98
|
+
* 4. Compute shares to add using ceiling division to avoid under-provisioning:
|
|
99
|
+
* - Existing bins: proportional to current scaled balances and total shares.
|
|
100
|
+
* - Empty bins: derived from initial scaled per-share constants.
|
|
101
|
+
* 5. Convert scaled amounts back to external token amounts and accumulate
|
|
102
|
+
* `specAmount0/specAmount1` with overflow checks.
|
|
103
|
+
*/
|
|
104
|
+
export declare function buildModifyLiquidityArgsForAddition({ publicClient, factoryAddress, stateViewAddress, poolAddress, bins, currentPrice, salt, specAmountBufferPercent, }: BuildModifyLiquidityArgsForAdditionParams): Promise<ModifyLiquidityArgs>;
|
|
105
|
+
export declare function buildModifyLiquidityArgsForRemoval(params: BuildModifyLiquidityArgsForRemovalParams): Promise<ModifyLiquidityArgs>;
|
|
106
|
+
export declare function buildModifyLiquidityArgsForPercentageRemoval({ publicClient, factoryAddress, stateViewAddress, poolAddress, owner, salt, percentageToRemove, bins, lowerBin, upperBin, specAmountBufferPercent, }: BuildModifyLiquidityArgsForPercentageRemovalParams): Promise<ModifyLiquidityArgs>;
|
|
107
|
+
export declare function additionPlanToPoolLiquidityDelta(deltas: readonly LiquidityDelta[]): PoolLiquidityDelta;
|
|
108
|
+
export declare function removalPlanToPoolLiquidityDelta(deltas: readonly LiquidityDelta[]): PoolLiquidityDelta;
|
|
109
|
+
/**
|
|
110
|
+
* Matches `MetricOmmPoolLiquidityAdder._scaleWeightsToShares`: given probe token needs from a weighted
|
|
111
|
+
* probe with the same weight vector, scale integer shares so neither token exceeds the caller caps.
|
|
112
|
+
*/
|
|
113
|
+
export declare function scaleWeightedPoolDeltasToFitCaps(params: {
|
|
114
|
+
weights: PoolLiquidityDelta;
|
|
115
|
+
probeNeed0: bigint;
|
|
116
|
+
probeNeed1: bigint;
|
|
117
|
+
maxAmountToken0: bigint;
|
|
118
|
+
maxAmountToken1: bigint;
|
|
119
|
+
}): PoolLiquidityDelta;
|
|
120
|
+
export declare function buildAddLiquidityExactSharesParamsFromBinTargets(params: BuildModifyLiquidityArgsForAdditionParams): Promise<{
|
|
121
|
+
salt: bigint;
|
|
122
|
+
poolLiquidityDelta: PoolLiquidityDelta;
|
|
123
|
+
maxAmountToken0: bigint;
|
|
124
|
+
maxAmountToken1: bigint;
|
|
125
|
+
}>;
|
|
126
|
+
export declare function encodeAddLiquidityExactSharesSelfCalldata(params: {
|
|
127
|
+
pool: Address;
|
|
128
|
+
salt: bigint;
|
|
129
|
+
deltas: PoolLiquidityDelta;
|
|
130
|
+
maxAmountToken0: bigint;
|
|
131
|
+
maxAmountToken1: bigint;
|
|
132
|
+
}): Hex;
|
|
133
|
+
export declare function encodeAddLiquidityExactSharesWithOwnerCalldata(params: {
|
|
134
|
+
pool: Address;
|
|
135
|
+
owner: Address;
|
|
136
|
+
salt: bigint;
|
|
137
|
+
deltas: PoolLiquidityDelta;
|
|
138
|
+
maxAmountToken0: bigint;
|
|
139
|
+
maxAmountToken1: bigint;
|
|
140
|
+
}): Hex;
|
|
141
|
+
export declare function encodeAddLiquidityWeightedSelfCalldata(params: {
|
|
142
|
+
pool: Address;
|
|
143
|
+
salt: bigint;
|
|
144
|
+
weightDeltas: PoolLiquidityDelta;
|
|
145
|
+
maxAmountToken0: bigint;
|
|
146
|
+
maxAmountToken1: bigint;
|
|
147
|
+
}): Hex;
|
|
148
|
+
export declare function encodeAddLiquidityWeightedWithOwnerCalldata(params: {
|
|
149
|
+
pool: Address;
|
|
150
|
+
owner: Address;
|
|
151
|
+
salt: bigint;
|
|
152
|
+
weightDeltas: PoolLiquidityDelta;
|
|
153
|
+
maxAmountToken0: bigint;
|
|
154
|
+
maxAmountToken1: bigint;
|
|
155
|
+
}): Hex;
|
|
156
|
+
export declare function encodeRemoveLiquidityCalldata(params: {
|
|
157
|
+
owner: Address;
|
|
158
|
+
salt: bigint;
|
|
159
|
+
deltas: PoolLiquidityDelta;
|
|
160
|
+
}): Hex;
|
|
161
|
+
export declare function buildRemoveLiquidityPoolDelta(params: BuildModifyLiquidityArgsForRemovalParams): Promise<{
|
|
162
|
+
salt: bigint;
|
|
163
|
+
poolLiquidityDelta: PoolLiquidityDelta;
|
|
164
|
+
}>;
|
|
165
|
+
//# sourceMappingURL=liquidity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"liquidity.d.ts","sourceRoot":"","sources":["../../src/pool/liquidity.ts"],"names":[],"mappings":"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"}
|