@mento-protocol/mento-sdk 3.0.0-beta.1 → 3.0.0-beta.10
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 +34 -0
- package/dist/cache/routes.d.ts +13 -0
- package/dist/cache/routes.d.ts.map +1 -0
- package/dist/cache/routes.js +130 -0
- package/dist/cache/routes.js.map +1 -0
- package/dist/cache/tokens.d.ts +67 -0
- package/dist/cache/tokens.d.ts.map +1 -0
- package/dist/cache/tokens.js +379 -0
- package/dist/cache/tokens.js.map +1 -0
- package/dist/core/abis/breakerbox.d.ts +13 -0
- package/dist/core/abis/breakerbox.d.ts.map +1 -0
- package/dist/core/abis/breakerbox.js +8 -0
- package/dist/core/abis/breakerbox.js.map +1 -0
- package/dist/core/abis/erc20.d.ts +7 -0
- package/dist/core/abis/erc20.d.ts.map +1 -1
- package/dist/core/abis/erc20.js +7 -0
- package/dist/core/abis/erc20.js.map +1 -1
- package/dist/core/abis/fpmm.d.ts +126 -0
- package/dist/core/abis/fpmm.d.ts.map +1 -1
- package/dist/core/abis/fpmm.js +10 -0
- package/dist/core/abis/fpmm.js.map +1 -1
- package/dist/core/abis/index.d.ts +2 -0
- package/dist/core/abis/index.d.ts.map +1 -1
- package/dist/core/abis/index.js +2 -0
- package/dist/core/abis/index.js.map +1 -1
- package/dist/core/abis/virtualPool.d.ts +30 -0
- package/dist/core/abis/virtualPool.d.ts.map +1 -1
- package/dist/core/abis/virtualPool.js +5 -1
- package/dist/core/abis/virtualPool.js.map +1 -1
- package/dist/core/constants/aaveConfig.js +2 -2
- package/dist/core/constants/addresses.d.ts.map +1 -1
- package/dist/core/constants/addresses.js +9 -4
- package/dist/core/constants/addresses.js.map +1 -1
- package/dist/core/types/contractAddresses.d.ts +2 -0
- package/dist/core/types/contractAddresses.d.ts.map +1 -1
- package/dist/core/types/index.d.ts +3 -1
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/index.js +3 -1
- package/dist/core/types/index.js.map +1 -1
- package/dist/core/types/pool.d.ts +110 -0
- package/dist/core/types/pool.d.ts.map +1 -1
- package/dist/core/types/provider.d.ts.map +1 -1
- package/dist/core/types/provider.js +0 -1
- package/dist/core/types/provider.js.map +1 -1
- package/dist/core/types/route.d.ts +3 -3
- package/dist/core/types/route.d.ts.map +1 -1
- package/dist/core/types/token.d.ts +13 -3
- package/dist/core/types/token.d.ts.map +1 -1
- package/dist/core/types/tradingLimits.d.ts +91 -0
- package/dist/core/types/tradingLimits.d.ts.map +1 -0
- package/dist/core/types/tradingLimits.js +3 -0
- package/dist/core/types/tradingLimits.js.map +1 -0
- package/dist/core/types/tradingMode.d.ts +24 -0
- package/dist/core/types/tradingMode.d.ts.map +1 -0
- package/dist/core/types/tradingMode.js +31 -0
- package/dist/core/types/tradingMode.js.map +1 -0
- package/dist/core/types/transaction.d.ts +45 -0
- package/dist/core/types/transaction.d.ts.map +1 -0
- package/dist/core/types/transaction.js +3 -0
- package/dist/core/types/transaction.js.map +1 -0
- package/dist/index.d.ts +20 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -10
- package/dist/index.js.map +1 -1
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/pools/PoolService.d.ts +22 -10
- package/dist/services/pools/PoolService.d.ts.map +1 -1
- package/dist/services/pools/PoolService.js +44 -110
- package/dist/services/pools/PoolService.js.map +1 -1
- package/dist/services/pools/poolDetails.d.ts +11 -0
- package/dist/services/pools/poolDetails.d.ts.map +1 -0
- package/dist/services/pools/poolDetails.js +136 -0
- package/dist/services/pools/poolDetails.js.map +1 -0
- package/dist/services/pools/poolDiscovery.d.ts +13 -0
- package/dist/services/pools/poolDiscovery.d.ts.map +1 -0
- package/dist/services/pools/poolDiscovery.js +115 -0
- package/dist/services/pools/poolDiscovery.js.map +1 -0
- package/dist/services/quotes/QuoteService.d.ts +21 -12
- package/dist/services/quotes/QuoteService.d.ts.map +1 -1
- package/dist/services/quotes/QuoteService.js +23 -10
- package/dist/services/quotes/QuoteService.js.map +1 -1
- package/dist/services/routes/RouteService.d.ts +3 -3
- package/dist/services/routes/RouteService.d.ts.map +1 -1
- package/dist/services/routes/RouteService.js +3 -5
- package/dist/services/routes/RouteService.js.map +1 -1
- package/dist/services/swap/SwapService.d.ts +18 -14
- package/dist/services/swap/SwapService.d.ts.map +1 -1
- package/dist/services/swap/SwapService.js +31 -11
- package/dist/services/swap/SwapService.js.map +1 -1
- package/dist/services/tokens/supplyAdjustmentService.d.ts +0 -4
- package/dist/services/tokens/supplyAdjustmentService.d.ts.map +1 -1
- package/dist/services/tokens/supplyAdjustmentService.js +3 -8
- package/dist/services/tokens/supplyAdjustmentService.js.map +1 -1
- package/dist/services/tokens/tokenService.d.ts.map +1 -1
- package/dist/services/tokens/tokenService.js +2 -2
- package/dist/services/tokens/tokenService.js.map +1 -1
- package/dist/services/trading/TradingLimitsService.d.ts +38 -0
- package/dist/services/trading/TradingLimitsService.d.ts.map +1 -0
- package/dist/services/trading/TradingLimitsService.js +157 -0
- package/dist/services/trading/TradingLimitsService.js.map +1 -0
- package/dist/services/trading/TradingService.d.ts +110 -0
- package/dist/services/trading/TradingService.d.ts.map +1 -0
- package/dist/services/trading/TradingService.js +162 -0
- package/dist/services/trading/TradingService.js.map +1 -0
- package/dist/services/trading/index.d.ts +3 -0
- package/dist/services/trading/index.d.ts.map +1 -0
- package/dist/services/trading/index.js +19 -0
- package/dist/services/trading/index.js.map +1 -0
- package/dist/utils/costUtils.js +4 -4
- package/dist/utils/costUtils.js.map +1 -1
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/pathEncoder.d.ts +3 -2
- package/dist/utils/pathEncoder.d.ts.map +1 -1
- package/dist/utils/pathEncoder.js +19 -3
- package/dist/utils/pathEncoder.js.map +1 -1
- package/dist/utils/rateFeed.d.ts +18 -0
- package/dist/utils/rateFeed.d.ts.map +1 -0
- package/dist/utils/rateFeed.js +27 -0
- package/dist/utils/rateFeed.js.map +1 -0
- package/dist/utils/routeUtils.d.ts +53 -53
- package/dist/utils/routeUtils.d.ts.map +1 -1
- package/dist/utils/routeUtils.js +41 -41
- package/dist/utils/routeUtils.js.map +1 -1
- package/dist/utils/routes.d.ts +2 -8
- package/dist/utils/routes.d.ts.map +1 -1
- package/dist/utils/routes.js +5 -46
- package/dist/utils/routes.js.map +1 -1
- package/dist/utils/tokens.d.ts +1 -77
- package/dist/utils/tokens.d.ts.map +1 -1
- package/dist/utils/tokens.js +10 -178
- package/dist/utils/tokens.js.map +1 -1
- package/dist/utils/tradingLimits.d.ts +41 -0
- package/dist/utils/tradingLimits.d.ts.map +1 -0
- package/dist/utils/tradingLimits.js +171 -0
- package/dist/utils/tradingLimits.js.map +1 -0
- package/dist/utils/validation.d.ts +19 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +34 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +1 -1
- package/dist/cache/routes.42220.d.ts +0 -3
- package/dist/cache/routes.42220.d.ts.map +0 -1
- package/dist/cache/routes.42220.js +0 -112
- package/dist/cache/routes.42220.js.map +0 -1
- package/dist/cache/tokens.11142220.d.ts +0 -3
- package/dist/cache/tokens.11142220.d.ts.map +0 -1
- package/dist/cache/tokens.11142220.js +0 -129
- package/dist/cache/tokens.11142220.js.map +0 -1
- package/dist/cache/tokens.42220.d.ts +0 -3
- package/dist/cache/tokens.42220.d.ts.map +0 -1
- package/dist/cache/tokens.42220.js +0 -129
- package/dist/cache/tokens.42220.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PoolService.js","sourceRoot":"","sources":["../../../src/services/pools/PoolService.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"PoolService.js","sourceRoot":"","sources":["../../../src/services/pools/PoolService.ts"],"names":[],"mappings":";;;AAAA,4CAA8D;AAE9D,mDAAmE;AACnE,+CAA6E;AAE7E;;;GAGG;AACH,MAAa,WAAW;IAGtB,YAAoB,YAA0B,EAAU,OAAe;QAAnD,iBAAY,GAAZ,YAAY,CAAc;QAAU,YAAO,GAAP,OAAO,CAAQ;QAF/D,eAAU,GAAkB,IAAI,CAAA;IAEkC,CAAC;IAE3E;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,UAAU,CAAA;QACxB,CAAC;QAED,6DAA6D;QAC7D,2DAA2D;QAC3D,8DAA8D;QAC9D,MAAM,KAAK,GAAW,EAAE,CAAA;QAExB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAA,8BAAc,EAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YACvE,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAA;QAC1B,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAEV,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,IAAA,iCAAiB,EAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YAC7E,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAA;QAC7B,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAEV,0DAA0D;QAC1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,iDAAiD;gBAC/C,+EAA+E,CAClF,CAAA;QACH,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QACvB,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,cAAc,CAAC,QAAgB;QACnC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;QAEnF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,IAAI,GAAG,8DAA8D,CAAC,CAAA;QACnH,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,OAAO,IAAA,kCAAoB,EAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACpE,CAAC;aAAM,CAAC;YACN,OAAO,IAAA,qCAAuB,EAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;CACF;AArFD,kCAqFC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Pool, FPMMPoolDetails, VirtualPoolDetails } from '../../core/types';
|
|
2
|
+
import { PublicClient } from 'viem';
|
|
3
|
+
/**
|
|
4
|
+
* Fetches enriched details for an FPMM pool
|
|
5
|
+
*/
|
|
6
|
+
export declare function fetchFPMMPoolDetails(publicClient: PublicClient, chainId: number, pool: Pool): Promise<FPMMPoolDetails>;
|
|
7
|
+
/**
|
|
8
|
+
* Fetches enriched details for a Virtual pool
|
|
9
|
+
*/
|
|
10
|
+
export declare function fetchVirtualPoolDetails(publicClient: PublicClient, pool: Pool): Promise<VirtualPoolDetails>;
|
|
11
|
+
//# sourceMappingURL=poolDetails.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poolDetails.d.ts","sourceRoot":"","sources":["../../../src/services/pools/poolDetails.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE5E,OAAO,EAAE,YAAY,EAAW,MAAM,MAAM,CAAA;AAE5C;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,eAAe,CAAC,CAyG1B;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA4BjH"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchFPMMPoolDetails = fetchFPMMPoolDetails;
|
|
4
|
+
exports.fetchVirtualPoolDetails = fetchVirtualPoolDetails;
|
|
5
|
+
const constants_1 = require("../../core/constants");
|
|
6
|
+
const abis_1 = require("../../core/abis");
|
|
7
|
+
/**
|
|
8
|
+
* Fetches enriched details for an FPMM pool
|
|
9
|
+
*/
|
|
10
|
+
async function fetchFPMMPoolDetails(publicClient, chainId, pool) {
|
|
11
|
+
const address = pool.poolAddr;
|
|
12
|
+
try {
|
|
13
|
+
// Known liquidity strategy addresses for this chain
|
|
14
|
+
const knownStrategies = getKnownLiquidityStrategies(chainId);
|
|
15
|
+
const [reservesResult, pricesResult, decimals0, decimals1, lpFee, protocolFee, rebalanceIncentive, rebalanceThresholdAbove, rebalanceThresholdBelow, ...strategyResults] = await Promise.all([
|
|
16
|
+
publicClient.readContract({ address, abi: abis_1.FPMM_ABI, functionName: 'getReserves' }),
|
|
17
|
+
publicClient.readContract({ address, abi: abis_1.FPMM_ABI, functionName: 'getPrices' }),
|
|
18
|
+
publicClient.readContract({ address, abi: abis_1.FPMM_ABI, functionName: 'decimals0' }),
|
|
19
|
+
publicClient.readContract({ address, abi: abis_1.FPMM_ABI, functionName: 'decimals1' }),
|
|
20
|
+
publicClient.readContract({ address, abi: abis_1.FPMM_ABI, functionName: 'lpFee' }),
|
|
21
|
+
publicClient.readContract({ address, abi: abis_1.FPMM_ABI, functionName: 'protocolFee' }),
|
|
22
|
+
publicClient.readContract({ address, abi: abis_1.FPMM_ABI, functionName: 'rebalanceIncentive' }),
|
|
23
|
+
publicClient.readContract({ address, abi: abis_1.FPMM_ABI, functionName: 'rebalanceThresholdAbove' }),
|
|
24
|
+
publicClient.readContract({ address, abi: abis_1.FPMM_ABI, functionName: 'rebalanceThresholdBelow' }),
|
|
25
|
+
...knownStrategies.map((strategyAddr) => publicClient.readContract({
|
|
26
|
+
address,
|
|
27
|
+
abi: abis_1.FPMM_ABI,
|
|
28
|
+
functionName: 'liquidityStrategy',
|
|
29
|
+
args: [strategyAddr],
|
|
30
|
+
})),
|
|
31
|
+
]);
|
|
32
|
+
const [reserve0, reserve1, blockTimestampLast] = reservesResult;
|
|
33
|
+
const [oraclePriceNum, oraclePriceDen, reservePriceNum, reservePriceDen, priceDifference, reservePriceAboveOraclePrice,] = pricesResult;
|
|
34
|
+
const lpFeeBps = lpFee;
|
|
35
|
+
const protocolFeeBps = protocolFee;
|
|
36
|
+
const rebalanceIncentiveBps = rebalanceIncentive;
|
|
37
|
+
const thresholdAboveBps = rebalanceThresholdAbove;
|
|
38
|
+
const thresholdBelowBps = rebalanceThresholdBelow;
|
|
39
|
+
// Find the active liquidity strategy (first match wins)
|
|
40
|
+
// Note: this could break at some point in the future if we decide to use
|
|
41
|
+
// more than one stragegy for a pool. For now it is not an issue,
|
|
42
|
+
// if we do forget to change this the impact is low as this function
|
|
43
|
+
// is just for informational purposes.
|
|
44
|
+
const activeIndex = strategyResults.findIndex((result) => result === true);
|
|
45
|
+
const liquidityStrategy = activeIndex >= 0 ? knownStrategies[activeIndex] : null;
|
|
46
|
+
const applicableThreshold = reservePriceAboveOraclePrice ? thresholdAboveBps : thresholdBelowBps;
|
|
47
|
+
const inBand = priceDifference < applicableThreshold;
|
|
48
|
+
return {
|
|
49
|
+
...pool,
|
|
50
|
+
poolType: 'FPMM',
|
|
51
|
+
decimals0: decimals0,
|
|
52
|
+
decimals1: decimals1,
|
|
53
|
+
reserve0,
|
|
54
|
+
reserve1,
|
|
55
|
+
blockTimestampLast,
|
|
56
|
+
pricing: {
|
|
57
|
+
oraclePriceNum,
|
|
58
|
+
oraclePriceDen,
|
|
59
|
+
oraclePrice: Number(oraclePriceNum) / Number(oraclePriceDen),
|
|
60
|
+
reservePriceNum,
|
|
61
|
+
reservePriceDen,
|
|
62
|
+
reservePrice: Number(reservePriceNum) / Number(reservePriceDen),
|
|
63
|
+
priceDifferenceBps: priceDifference,
|
|
64
|
+
priceDifferencePercent: Number(priceDifference) / 100,
|
|
65
|
+
reservePriceAboveOraclePrice,
|
|
66
|
+
},
|
|
67
|
+
fees: {
|
|
68
|
+
lpFeeBps,
|
|
69
|
+
lpFeePercent: Number(lpFeeBps) / 100,
|
|
70
|
+
protocolFeeBps,
|
|
71
|
+
protocolFeePercent: Number(protocolFeeBps) / 100,
|
|
72
|
+
totalFeePercent: (Number(lpFeeBps) + Number(protocolFeeBps)) / 100,
|
|
73
|
+
},
|
|
74
|
+
rebalancing: {
|
|
75
|
+
rebalanceIncentiveBps,
|
|
76
|
+
rebalanceIncentivePercent: Number(rebalanceIncentiveBps) / 100,
|
|
77
|
+
rebalanceThresholdAboveBps: thresholdAboveBps,
|
|
78
|
+
rebalanceThresholdAbovePercent: Number(thresholdAboveBps) / 100,
|
|
79
|
+
rebalanceThresholdBelowBps: thresholdBelowBps,
|
|
80
|
+
rebalanceThresholdBelowPercent: Number(thresholdBelowBps) / 100,
|
|
81
|
+
inBand,
|
|
82
|
+
liquidityStrategy,
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
throw new Error(`Failed to fetch FPMM pool details for ${pool.poolAddr}: ${error.message}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Fetches enriched details for a Virtual pool
|
|
92
|
+
*/
|
|
93
|
+
async function fetchVirtualPoolDetails(publicClient, pool) {
|
|
94
|
+
const address = pool.poolAddr;
|
|
95
|
+
try {
|
|
96
|
+
const [reservesResult, protocolFee, metadataResult] = await Promise.all([
|
|
97
|
+
publicClient.readContract({ address, abi: abis_1.VIRTUAL_POOL_ABI, functionName: 'getReserves' }),
|
|
98
|
+
publicClient.readContract({ address, abi: abis_1.VIRTUAL_POOL_ABI, functionName: 'protocolFee' }),
|
|
99
|
+
publicClient.readContract({ address, abi: abis_1.VIRTUAL_POOL_ABI, functionName: 'metadata' }),
|
|
100
|
+
]);
|
|
101
|
+
const [reserve0, reserve1, blockTimestampLast] = reservesResult;
|
|
102
|
+
const [dec0, dec1] = metadataResult;
|
|
103
|
+
const spreadBps = protocolFee;
|
|
104
|
+
return {
|
|
105
|
+
...pool,
|
|
106
|
+
poolType: 'Virtual',
|
|
107
|
+
decimals0: dec0,
|
|
108
|
+
decimals1: dec1,
|
|
109
|
+
reserve0,
|
|
110
|
+
reserve1,
|
|
111
|
+
blockTimestampLast,
|
|
112
|
+
spreadBps,
|
|
113
|
+
spreadPercent: Number(spreadBps) / 100,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
throw new Error(`Failed to fetch Virtual pool details for ${pool.poolAddr}: ${error.message}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Returns the known liquidity strategy addresses for the given chain.
|
|
122
|
+
*/
|
|
123
|
+
function getKnownLiquidityStrategies(chainId) {
|
|
124
|
+
const strategies = [];
|
|
125
|
+
const chainAddresses = constants_1.addresses[chainId];
|
|
126
|
+
if (!chainAddresses)
|
|
127
|
+
return strategies;
|
|
128
|
+
if (chainAddresses.ReserveLiquidityStrategy) {
|
|
129
|
+
strategies.push(chainAddresses.ReserveLiquidityStrategy);
|
|
130
|
+
}
|
|
131
|
+
if (chainAddresses.CDPLiquidityStrategy) {
|
|
132
|
+
strategies.push(chainAddresses.CDPLiquidityStrategy);
|
|
133
|
+
}
|
|
134
|
+
return strategies;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=poolDetails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poolDetails.js","sourceRoot":"","sources":["../../../src/services/pools/poolDetails.ts"],"names":[],"mappings":";;AAQA,oDA6GC;AAKD,0DA4BC;AAtJD,oDAAyD;AAEzD,0CAA4D;AAG5D;;GAEG;AACI,KAAK,UAAU,oBAAoB,CACxC,YAA0B,EAC1B,OAAe,EACf,IAAU;IAEV,MAAM,OAAO,GAAG,IAAI,CAAC,QAAmB,CAAA;IAExC,IAAI,CAAC;QACH,oDAAoD;QACpD,MAAM,eAAe,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAA;QAE5D,MAAM,CACJ,cAAc,EACd,YAAY,EACZ,SAAS,EACT,SAAS,EACT,KAAK,EACL,WAAW,EACX,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,GAAG,eAAe,CACnB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpB,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,eAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;YAClF,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,eAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;YAChF,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,eAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;YAChF,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,eAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;YAChF,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,eAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;YAC5E,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,eAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;YAClF,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,eAAQ,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC;YACzF,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,eAAQ,EAAE,YAAY,EAAE,yBAAyB,EAAE,CAAC;YAC9F,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,eAAQ,EAAE,YAAY,EAAE,yBAAyB,EAAE,CAAC;YAC9F,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,YAAoB,EAAE,EAAE,CAC9C,YAAY,CAAC,YAAY,CAAC;gBACxB,OAAO;gBACP,GAAG,EAAE,eAAQ;gBACb,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,CAAC,YAAuB,CAAC;aAChC,CAAC,CACH;SACF,CAAC,CAAA;QAEF,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,CAAC,GAAG,cAA0C,CAAA;QAC3F,MAAM,CACJ,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,4BAA4B,EAC7B,GAAG,YAAiE,CAAA;QAErE,MAAM,QAAQ,GAAG,KAAe,CAAA;QAChC,MAAM,cAAc,GAAG,WAAqB,CAAA;QAC5C,MAAM,qBAAqB,GAAG,kBAA4B,CAAA;QAC1D,MAAM,iBAAiB,GAAG,uBAAiC,CAAA;QAC3D,MAAM,iBAAiB,GAAG,uBAAiC,CAAA;QAE3D,wDAAwD;QACxD,yEAAyE;QACzE,uEAAuE;QACvE,0EAA0E;QAC1E,4CAA4C;QAC5C,MAAM,WAAW,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAA;QAC1E,MAAM,iBAAiB,GAAG,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAEhF,MAAM,mBAAmB,GAAG,4BAA4B,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAA;QAChG,MAAM,MAAM,GAAG,eAAe,GAAG,mBAAmB,CAAA;QAEpD,OAAO;YACL,GAAG,IAAI;YACP,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,SAAmB;YAC9B,SAAS,EAAE,SAAmB;YAC9B,QAAQ;YACR,QAAQ;YACR,kBAAkB;YAClB,OAAO,EAAE;gBACP,cAAc;gBACd,cAAc;gBACd,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;gBAC5D,eAAe;gBACf,eAAe;gBACf,YAAY,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC;gBAC/D,kBAAkB,EAAE,eAAe;gBACnC,sBAAsB,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,GAAG;gBACrD,4BAA4B;aAC7B;YACD,IAAI,EAAE;gBACJ,QAAQ;gBACR,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG;gBACpC,cAAc;gBACd,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,GAAG;gBAChD,eAAe,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,GAAG;aACnE;YACD,WAAW,EAAE;gBACX,qBAAqB;gBACrB,yBAAyB,EAAE,MAAM,CAAC,qBAAqB,CAAC,GAAG,GAAG;gBAC9D,0BAA0B,EAAE,iBAAiB;gBAC7C,8BAA8B,EAAE,MAAM,CAAC,iBAAiB,CAAC,GAAG,GAAG;gBAC/D,0BAA0B,EAAE,iBAAiB;gBAC7C,8BAA8B,EAAE,MAAM,CAAC,iBAAiB,CAAC,GAAG,GAAG;gBAC/D,MAAM;gBACN,iBAAiB;aAClB;SACF,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,CAAC,QAAQ,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;IACxG,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,uBAAuB,CAAC,YAA0B,EAAE,IAAU;IAClF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAmB,CAAA;IAExC,IAAI,CAAC;QACH,MAAM,CAAC,cAAc,EAAE,WAAW,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACtE,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,uBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;YAC1F,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,uBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;YAC1F,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,uBAAgB,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;SACxF,CAAC,CAAA;QAEF,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,CAAC,GAAG,cAA0C,CAAA;QAC3F,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,cAAkE,CAAA;QACvF,MAAM,SAAS,GAAG,WAAqB,CAAA;QAEvC,OAAO;YACL,GAAG,IAAI;YACP,QAAQ,EAAE,SAAS;YACnB,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;YACf,QAAQ;YACR,QAAQ;YACR,kBAAkB;YAClB,SAAS;YACT,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG;SACvC,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,CAAC,QAAQ,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3G,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,2BAA2B,CAAC,OAAe;IAClD,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,MAAM,cAAc,GAAG,qBAAS,CAAC,OAAkB,CAAC,CAAA;IACpD,IAAI,CAAC,cAAc;QAAE,OAAO,UAAU,CAAA;IAEtC,IAAI,cAAc,CAAC,wBAAwB,EAAE,CAAC;QAC5C,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAA;IAC1D,CAAC;IACD,IAAI,cAAc,CAAC,oBAAoB,EAAE,CAAC;QACxC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAA;IACtD,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Pool } from '../../core/types';
|
|
2
|
+
import { PublicClient } from 'viem';
|
|
3
|
+
/**
|
|
4
|
+
* Fetches all FPMM pools from the FPMM Factory
|
|
5
|
+
*/
|
|
6
|
+
export declare function fetchFPMMPools(publicClient: PublicClient, chainId: number): Promise<Pool[]>;
|
|
7
|
+
/**
|
|
8
|
+
* Fetches all Virtual pools by discovering them from BiPoolManager exchanges.
|
|
9
|
+
* VirtualPoolFactory doesn't have an enumeration method,
|
|
10
|
+
* so we have to derive pools from BiPoolManager.
|
|
11
|
+
*/
|
|
12
|
+
export declare function fetchVirtualPools(publicClient: PublicClient, chainId: number): Promise<Pool[]>;
|
|
13
|
+
//# sourceMappingURL=poolDiscovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poolDiscovery.d.ts","sourceRoot":"","sources":["../../../src/services/pools/poolDiscovery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAY,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,YAAY,EAAW,MAAM,MAAM,CAAA;AAG5C;;GAEG;AACH,wBAAsB,cAAc,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CA8CjG;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAiEpG"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchFPMMPools = fetchFPMMPools;
|
|
4
|
+
exports.fetchVirtualPools = fetchVirtualPools;
|
|
5
|
+
const constants_1 = require("../../core/constants");
|
|
6
|
+
const types_1 = require("../../core/types");
|
|
7
|
+
const abis_1 = require("../../core/abis");
|
|
8
|
+
const sortUtils_1 = require("../../utils/sortUtils");
|
|
9
|
+
/**
|
|
10
|
+
* Fetches all FPMM pools from the FPMM Factory
|
|
11
|
+
*/
|
|
12
|
+
async function fetchFPMMPools(publicClient, chainId) {
|
|
13
|
+
const fpmmFactoryAddress = (0, constants_1.getContractAddress)(chainId, 'FPMMFactory');
|
|
14
|
+
if (!fpmmFactoryAddress) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
// Get all deployed FPMM pool addresses
|
|
19
|
+
const poolAddresses = (await publicClient.readContract({
|
|
20
|
+
address: fpmmFactoryAddress,
|
|
21
|
+
abi: abis_1.FPMM_FACTORY_ABI,
|
|
22
|
+
functionName: 'deployedFPMMAddresses',
|
|
23
|
+
}));
|
|
24
|
+
if (poolAddresses.length === 0) {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
const poolDataPromises = poolAddresses.map(async (poolAddress) => {
|
|
28
|
+
const [token0, token1] = await Promise.all([
|
|
29
|
+
publicClient.readContract({
|
|
30
|
+
address: poolAddress,
|
|
31
|
+
abi: abis_1.FPMM_ABI,
|
|
32
|
+
functionName: 'token0',
|
|
33
|
+
}),
|
|
34
|
+
publicClient.readContract({
|
|
35
|
+
address: poolAddress,
|
|
36
|
+
abi: abis_1.FPMM_ABI,
|
|
37
|
+
functionName: 'token1',
|
|
38
|
+
}),
|
|
39
|
+
]);
|
|
40
|
+
return {
|
|
41
|
+
factoryAddr: fpmmFactoryAddress,
|
|
42
|
+
poolAddr: poolAddress,
|
|
43
|
+
token0: token0,
|
|
44
|
+
token1: token1,
|
|
45
|
+
poolType: types_1.PoolType.FPMM,
|
|
46
|
+
};
|
|
47
|
+
});
|
|
48
|
+
return await Promise.all(poolDataPromises);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
throw new Error(`Failed to fetch FPMM pools: ${error.message}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Fetches all Virtual pools by discovering them from BiPoolManager exchanges.
|
|
56
|
+
* VirtualPoolFactory doesn't have an enumeration method,
|
|
57
|
+
* so we have to derive pools from BiPoolManager.
|
|
58
|
+
*/
|
|
59
|
+
async function fetchVirtualPools(publicClient, chainId) {
|
|
60
|
+
const virtualPoolFactoryAddress = (0, constants_1.getContractAddress)(chainId, 'VirtualPoolFactory');
|
|
61
|
+
const biPoolManagerAddress = (0, constants_1.getContractAddress)(chainId, 'BiPoolManager');
|
|
62
|
+
if (!virtualPoolFactoryAddress || !biPoolManagerAddress) {
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
// TODO: When the latest virtual pool factory contract is deployed
|
|
67
|
+
// we can simplify this by using VirtualPoolFactory.getAllPools() returns(address[])
|
|
68
|
+
// Get all exchanges from BiPoolManager
|
|
69
|
+
const exchangesData = (await publicClient.readContract({
|
|
70
|
+
address: biPoolManagerAddress,
|
|
71
|
+
abi: abis_1.BIPOOL_MANAGER_ABI,
|
|
72
|
+
functionName: 'getExchanges',
|
|
73
|
+
}));
|
|
74
|
+
if (exchangesData.length === 0) {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
// For each exchange, check if a virtual pool exists, and if so, return the pool address.
|
|
78
|
+
const poolPromises = exchangesData.map(async (exchange) => {
|
|
79
|
+
if (exchange.assets.length !== 2) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
const [token0, token1] = (0, sortUtils_1.sortTokenAddresses)(exchange.assets[0], exchange.assets[1]);
|
|
83
|
+
const poolAddress = (await publicClient.readContract({
|
|
84
|
+
address: virtualPoolFactoryAddress,
|
|
85
|
+
abi: abis_1.VIRTUAL_POOL_FACTORY_ABI,
|
|
86
|
+
functionName: 'getOrPrecomputeProxyAddress',
|
|
87
|
+
args: [token0, token1],
|
|
88
|
+
}));
|
|
89
|
+
const isDeployed = (await publicClient.readContract({
|
|
90
|
+
address: virtualPoolFactoryAddress,
|
|
91
|
+
abi: abis_1.VIRTUAL_POOL_FACTORY_ABI,
|
|
92
|
+
functionName: 'isPool',
|
|
93
|
+
args: [poolAddress],
|
|
94
|
+
}));
|
|
95
|
+
if (!isDeployed) {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
const pool = {
|
|
99
|
+
factoryAddr: virtualPoolFactoryAddress,
|
|
100
|
+
poolAddr: poolAddress,
|
|
101
|
+
token0: token0,
|
|
102
|
+
token1: token1,
|
|
103
|
+
poolType: types_1.PoolType.Virtual,
|
|
104
|
+
exchangeId: exchange.exchangeId,
|
|
105
|
+
};
|
|
106
|
+
return pool;
|
|
107
|
+
});
|
|
108
|
+
const results = await Promise.all(poolPromises);
|
|
109
|
+
return results.filter((pool) => pool !== null);
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
throw new Error(`Failed to fetch Virtual pools: ${error.message}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=poolDiscovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poolDiscovery.js","sourceRoot":"","sources":["../../../src/services/pools/poolDiscovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PublicClient } from 'viem';
|
|
2
2
|
import { RouteService } from '../routes';
|
|
3
3
|
import { Route } from '../../core/types';
|
|
4
4
|
/**
|
|
@@ -13,8 +13,8 @@ export declare class QuoteService {
|
|
|
13
13
|
/**
|
|
14
14
|
* Calculates the expected output amount for a swap between two tokens.
|
|
15
15
|
*
|
|
16
|
-
* @param tokenIn - The address of the input token
|
|
17
|
-
* @param tokenOut - The address of the output token
|
|
16
|
+
* @param tokenIn - The address of the input token (e.g., '0x765DE816845861e75A25fCA122bb6898B8B1282a')
|
|
17
|
+
* @param tokenOut - The address of the output token (e.g., '0x471EcE3750Da237f93B8E339c536989b8978a438')
|
|
18
18
|
* @param amountIn - The amount of input tokens (in wei/smallest unit)
|
|
19
19
|
* @param route - Optional pre-fetched route. If not provided, the optimal route will be found automatically.
|
|
20
20
|
* @returns The expected output amount (in wei/smallest unit)
|
|
@@ -23,19 +23,28 @@ export declare class QuoteService {
|
|
|
23
23
|
*
|
|
24
24
|
* @example
|
|
25
25
|
* ```typescript
|
|
26
|
-
*
|
|
27
|
-
* const
|
|
28
|
-
*
|
|
29
|
-
* //
|
|
30
|
-
*
|
|
31
|
-
*
|
|
26
|
+
* // Calculate output for 100 USDm
|
|
27
|
+
* const amountIn = BigInt(100) * BigInt(10 ** 18) // 100 USDm in wei
|
|
28
|
+
* const expectedOut = await quoteService.getAmountOut(
|
|
29
|
+
* '0x765DE816845861e75A25fCA122bb6898B8B1282a', // USDm
|
|
30
|
+
* '0x471EcE3750Da237f93B8E339c536989b8978a438', // CELO
|
|
31
|
+
* amountIn
|
|
32
|
+
* )
|
|
32
33
|
* console.log(`Expected CELO output: ${expectedOut}`)
|
|
33
34
|
*
|
|
34
35
|
* // Or provide a pre-fetched route for better performance
|
|
35
|
-
* const route = await routeService.findRoute(
|
|
36
|
-
*
|
|
36
|
+
* const route = await routeService.findRoute(
|
|
37
|
+
* '0x765DE816845861e75A25fCA122bb6898B8B1282a',
|
|
38
|
+
* '0x471EcE3750Da237f93B8E339c536989b8978a438'
|
|
39
|
+
* )
|
|
40
|
+
* const expectedOut2 = await quoteService.getAmountOut(
|
|
41
|
+
* '0x765DE816845861e75A25fCA122bb6898B8B1282a',
|
|
42
|
+
* '0x471EcE3750Da237f93B8E339c536989b8978a438',
|
|
43
|
+
* amountIn,
|
|
44
|
+
* route
|
|
45
|
+
* )
|
|
37
46
|
* ```
|
|
38
47
|
*/
|
|
39
|
-
getAmountOut(tokenIn:
|
|
48
|
+
getAmountOut(tokenIn: string, tokenOut: string, amountIn: bigint, route?: Route): Promise<bigint>;
|
|
40
49
|
}
|
|
41
50
|
//# sourceMappingURL=QuoteService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuoteService.d.ts","sourceRoot":"","sources":["../../../src/services/quotes/QuoteService.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"QuoteService.d.ts","sourceRoot":"","sources":["../../../src/services/quotes/QuoteService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,YAAY,EAAE,MAAM,MAAM,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAMxC;;;GAGG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,YAAY;gBAFZ,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,YAAY;IAGpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;CAuBxG"}
|
|
@@ -4,6 +4,7 @@ exports.QuoteService = void 0;
|
|
|
4
4
|
const abis_1 = require("../../core/abis");
|
|
5
5
|
const constants_1 = require("../../core/constants");
|
|
6
6
|
const pathEncoder_1 = require("../../utils/pathEncoder");
|
|
7
|
+
const validation_1 = require("../../utils/validation");
|
|
7
8
|
/**
|
|
8
9
|
* Service for getting swap quotes from the Mento protocol.
|
|
9
10
|
* Calculates expected output amounts for trades without executing them.
|
|
@@ -17,8 +18,8 @@ class QuoteService {
|
|
|
17
18
|
/**
|
|
18
19
|
* Calculates the expected output amount for a swap between two tokens.
|
|
19
20
|
*
|
|
20
|
-
* @param tokenIn - The address of the input token
|
|
21
|
-
* @param tokenOut - The address of the output token
|
|
21
|
+
* @param tokenIn - The address of the input token (e.g., '0x765DE816845861e75A25fCA122bb6898B8B1282a')
|
|
22
|
+
* @param tokenOut - The address of the output token (e.g., '0x471EcE3750Da237f93B8E339c536989b8978a438')
|
|
22
23
|
* @param amountIn - The amount of input tokens (in wei/smallest unit)
|
|
23
24
|
* @param route - Optional pre-fetched route. If not provided, the optimal route will be found automatically.
|
|
24
25
|
* @returns The expected output amount (in wei/smallest unit)
|
|
@@ -27,20 +28,32 @@ class QuoteService {
|
|
|
27
28
|
*
|
|
28
29
|
* @example
|
|
29
30
|
* ```typescript
|
|
30
|
-
*
|
|
31
|
-
* const
|
|
32
|
-
*
|
|
33
|
-
* //
|
|
34
|
-
*
|
|
35
|
-
*
|
|
31
|
+
* // Calculate output for 100 USDm
|
|
32
|
+
* const amountIn = BigInt(100) * BigInt(10 ** 18) // 100 USDm in wei
|
|
33
|
+
* const expectedOut = await quoteService.getAmountOut(
|
|
34
|
+
* '0x765DE816845861e75A25fCA122bb6898B8B1282a', // USDm
|
|
35
|
+
* '0x471EcE3750Da237f93B8E339c536989b8978a438', // CELO
|
|
36
|
+
* amountIn
|
|
37
|
+
* )
|
|
36
38
|
* console.log(`Expected CELO output: ${expectedOut}`)
|
|
37
39
|
*
|
|
38
40
|
* // Or provide a pre-fetched route for better performance
|
|
39
|
-
* const route = await routeService.findRoute(
|
|
40
|
-
*
|
|
41
|
+
* const route = await routeService.findRoute(
|
|
42
|
+
* '0x765DE816845861e75A25fCA122bb6898B8B1282a',
|
|
43
|
+
* '0x471EcE3750Da237f93B8E339c536989b8978a438'
|
|
44
|
+
* )
|
|
45
|
+
* const expectedOut2 = await quoteService.getAmountOut(
|
|
46
|
+
* '0x765DE816845861e75A25fCA122bb6898B8B1282a',
|
|
47
|
+
* '0x471EcE3750Da237f93B8E339c536989b8978a438',
|
|
48
|
+
* amountIn,
|
|
49
|
+
* route
|
|
50
|
+
* )
|
|
41
51
|
* ```
|
|
42
52
|
*/
|
|
43
53
|
async getAmountOut(tokenIn, tokenOut, amountIn, route) {
|
|
54
|
+
// Validate address inputs
|
|
55
|
+
(0, validation_1.validateAddress)(tokenIn, 'tokenIn');
|
|
56
|
+
(0, validation_1.validateAddress)(tokenOut, 'tokenOut');
|
|
44
57
|
// If the consumer does not provide a route then we find the best route.
|
|
45
58
|
if (!route) {
|
|
46
59
|
route = await this.routeService.findRoute(tokenIn, tokenOut);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuoteService.js","sourceRoot":"","sources":["../../../src/services/quotes/QuoteService.ts"],"names":[],"mappings":";;;AAGA,0CAA4C;AAC5C,oDAAkE;AAClE,yDAAyD;
|
|
1
|
+
{"version":3,"file":"QuoteService.js","sourceRoot":"","sources":["../../../src/services/quotes/QuoteService.ts"],"names":[],"mappings":";;;AAGA,0CAA4C;AAC5C,oDAAkE;AAClE,yDAAyD;AACzD,uDAAwD;AAExD;;;GAGG;AACH,MAAa,YAAY;IACvB,YACU,YAA0B,EAC1B,OAAe,EACf,YAA0B;QAF1B,iBAAY,GAAZ,YAAY,CAAc;QAC1B,YAAO,GAAP,OAAO,CAAQ;QACf,iBAAY,GAAZ,YAAY,CAAc;IACjC,CAAC;IAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,QAAgB,EAAE,QAAgB,EAAE,KAAa;QACnF,0BAA0B;QAC1B,IAAA,4BAAe,EAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QACnC,IAAA,4BAAe,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;QAErC,wEAAwE;QACxE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QAC9D,CAAC;QAED,yDAAyD;QACzD,MAAM,YAAY,GAAG,IAAA,6BAAe,EAAC,KAAK,CAAC,IAAI,EAAE,OAAkB,EAAE,QAAmB,CAAC,CAAA;QACzF,MAAM,aAAa,GAAG,IAAA,8BAAkB,EAAC,IAAI,CAAC,OAAkB,EAAE,QAAQ,CAAC,CAAA;QAE3E,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YACpD,OAAO,EAAE,aAA8B;YACvC,GAAG,EAAE,iBAAU;YACf,YAAY,EAAE,eAAe;YAC7B,IAAI,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;SAC/B,CAAC,CAAa,CAAA;QAEf,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACpC,CAAC;CACF;AAjED,oCAiEC"}
|
|
@@ -72,9 +72,9 @@ export declare class RouteService {
|
|
|
72
72
|
*
|
|
73
73
|
* @example
|
|
74
74
|
* ```typescript
|
|
75
|
-
* const
|
|
76
|
-
* const
|
|
77
|
-
* const route = await routeService.findRoute(
|
|
75
|
+
* const USDm = '0x765DE816845861e75A25fCA122bb6898B8B1282a'
|
|
76
|
+
* const BRLm = '0xE4D5...'
|
|
77
|
+
* const route = await routeService.findRoute(USDm, BRLm)
|
|
78
78
|
*
|
|
79
79
|
* if (route.path.length === 1) {
|
|
80
80
|
* console.log('Direct route available')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteService.d.ts","sourceRoot":"","sources":["../../../src/services/routes/RouteService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAGtC,OAAO,EAAE,KAAK,EAAiB,aAAa,
|
|
1
|
+
{"version":3,"file":"RouteService.d.ts","sourceRoot":"","sources":["../../../src/services/routes/RouteService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAGtC,OAAO,EAAE,KAAK,EAAiB,aAAa,EAAc,MAAM,kBAAkB,CAAA;AAGlF,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED;;;;;;;GAOG;AACH,qBAAa,YAAY;IAGX,OAAO,CAAC,YAAY;IAAgB,OAAO,CAAC,OAAO;IAAU,OAAO,CAAC,WAAW;IAF5F,OAAO,CAAC,WAAW,CAAiC;gBAEhC,YAAY,EAAE,YAAY,EAAU,OAAO,EAAE,MAAM,EAAU,WAAW,EAAE,WAAW;IAEzG;;;;;;;;;;;;OAYG;IACG,eAAe,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAuDzC;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,SAAS,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC;IAoBpF;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,CAAC;IAuBlG;;;;OAIG;YACW,mBAAmB;IAoBjC;;;OAGG;YACW,gBAAgB;IAM9B;;;;;;OAMG;YACW,gBAAgB;CAuB/B"}
|
|
@@ -149,9 +149,9 @@ class RouteService {
|
|
|
149
149
|
*
|
|
150
150
|
* @example
|
|
151
151
|
* ```typescript
|
|
152
|
-
* const
|
|
153
|
-
* const
|
|
154
|
-
* const route = await routeService.findRoute(
|
|
152
|
+
* const USDm = '0x765DE816845861e75A25fCA122bb6898B8B1282a'
|
|
153
|
+
* const BRLm = '0xE4D5...'
|
|
154
|
+
* const route = await routeService.findRoute(USDm, BRLm)
|
|
155
155
|
*
|
|
156
156
|
* if (route.path.length === 1) {
|
|
157
157
|
* console.log('Direct route available')
|
|
@@ -219,7 +219,6 @@ class RouteService {
|
|
|
219
219
|
}
|
|
220
220
|
try {
|
|
221
221
|
const symbol = (await this.publicClient.readContract({
|
|
222
|
-
// TODO: Consider using Address type from viem. Keep this consistent across the codebase
|
|
223
222
|
address: address,
|
|
224
223
|
abi: abis_1.ERC20_ABI,
|
|
225
224
|
functionName: 'symbol',
|
|
@@ -231,7 +230,6 @@ class RouteService {
|
|
|
231
230
|
}
|
|
232
231
|
catch {
|
|
233
232
|
// Fallback to address if symbol fetch fails
|
|
234
|
-
console.warn(`Failed to fetch symbol for token ${address}, using address as fallback`);
|
|
235
233
|
this.symbolCache.set(address, address);
|
|
236
234
|
return address;
|
|
237
235
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteService.js","sourceRoot":"","sources":["../../../src/services/routes/RouteService.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"RouteService.js","sourceRoot":"","sources":["../../../src/services/routes/RouteService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PublicClient } from 'viem';
|
|
2
2
|
import { RouteService } from '../routes';
|
|
3
3
|
import { QuoteService } from '../quotes';
|
|
4
4
|
import { Route, CallParams } from '../../core/types';
|
|
@@ -77,8 +77,8 @@ export declare class SwapService {
|
|
|
77
77
|
* Builds a complete swap transaction including approval if needed.
|
|
78
78
|
* This is the recommended method for most use cases.
|
|
79
79
|
*
|
|
80
|
-
* @param tokenIn - The address of the input token
|
|
81
|
-
* @param tokenOut - The address of the output token
|
|
80
|
+
* @param tokenIn - The address of the input token (e.g., '0x765DE816845861e75A25fCA122bb6898B8B1282a')
|
|
81
|
+
* @param tokenOut - The address of the output token (e.g., '0x471EcE3750Da237f93B8E339c536989b8978a438')
|
|
82
82
|
* @param amountIn - The amount of input tokens (in wei/smallest unit)
|
|
83
83
|
* @param recipient - The address to receive the output tokens
|
|
84
84
|
* @param owner - The address that owns the input tokens (needed to check allowance)
|
|
@@ -89,11 +89,11 @@ export declare class SwapService {
|
|
|
89
89
|
* @example
|
|
90
90
|
* ```typescript
|
|
91
91
|
* const { approval, swap } = await mento.swap.buildSwapTransaction(
|
|
92
|
-
*
|
|
93
|
-
* CELO
|
|
92
|
+
* '0x765DE816845861e75A25fCA122bb6898B8B1282a', // USDm
|
|
93
|
+
* '0x471EcE3750Da237f93B8E339c536989b8978a438', // CELO
|
|
94
94
|
* parseUnits('100', 18),
|
|
95
|
-
*
|
|
96
|
-
*
|
|
95
|
+
* '0x742d35Cc6634C0532925a3b844Bc454e4438f44e', // recipient
|
|
96
|
+
* '0x123...', // owner
|
|
97
97
|
* { slippageTolerance: 0.5 }
|
|
98
98
|
* )
|
|
99
99
|
*
|
|
@@ -106,13 +106,13 @@ export declare class SwapService {
|
|
|
106
106
|
* await walletClient.sendTransaction(swap.params)
|
|
107
107
|
* ```
|
|
108
108
|
*/
|
|
109
|
-
buildSwapTransaction(tokenIn:
|
|
109
|
+
buildSwapTransaction(tokenIn: string, tokenOut: string, amountIn: bigint, recipient: string, owner: string, options: SwapOptions, route?: Route): Promise<SwapTransaction>;
|
|
110
110
|
/**
|
|
111
111
|
* Builds swap transaction parameters without executing the transaction.
|
|
112
112
|
* Does NOT check or handle token approval - use buildSwapTransaction for that.
|
|
113
113
|
*
|
|
114
|
-
* @param tokenIn - The address of the input token
|
|
115
|
-
* @param tokenOut - The address of the output token
|
|
114
|
+
* @param tokenIn - The address of the input token (e.g., '0x765DE816845861e75A25fCA122bb6898B8B1282a')
|
|
115
|
+
* @param tokenOut - The address of the output token (e.g., '0x471EcE3750Da237f93B8E339c536989b8978a438')
|
|
116
116
|
* @param amountIn - The amount of input tokens (in wei/smallest unit)
|
|
117
117
|
* @param recipient - The address to receive the output tokens
|
|
118
118
|
* @param options - Swap configuration options (slippage, deadline)
|
|
@@ -122,10 +122,10 @@ export declare class SwapService {
|
|
|
122
122
|
* @example
|
|
123
123
|
* ```typescript
|
|
124
124
|
* const swapDetails = await mento.swap.buildSwapParams(
|
|
125
|
-
*
|
|
126
|
-
* CELO
|
|
125
|
+
* '0x765DE816845861e75A25fCA122bb6898B8B1282a', // USDm
|
|
126
|
+
* '0x471EcE3750Da237f93B8E339c536989b8978a438', // CELO
|
|
127
127
|
* parseUnits('100', 18),
|
|
128
|
-
*
|
|
128
|
+
* '0x742d35Cc6634C0532925a3b844Bc454e4438f44e', // recipient
|
|
129
129
|
* { slippageTolerance: 0.5 }
|
|
130
130
|
* )
|
|
131
131
|
*
|
|
@@ -133,7 +133,7 @@ export declare class SwapService {
|
|
|
133
133
|
* await walletClient.sendTransaction(swapDetails.params)
|
|
134
134
|
* ```
|
|
135
135
|
*/
|
|
136
|
-
buildSwapParams(tokenIn:
|
|
136
|
+
buildSwapParams(tokenIn: string, tokenOut: string, amountIn: bigint, recipient: string, options: SwapOptions, route?: Route): Promise<SwapDetails>;
|
|
137
137
|
/**
|
|
138
138
|
* Builds approval transaction params for the Router to spend tokenIn
|
|
139
139
|
* @private
|
|
@@ -146,6 +146,10 @@ export declare class SwapService {
|
|
|
146
146
|
private getAllowance;
|
|
147
147
|
/**
|
|
148
148
|
* Calculates minimum output amount after applying slippage tolerance
|
|
149
|
+
* @param amountOut - Expected output amount
|
|
150
|
+
* @param slippageTolerance - Slippage tolerance as percentage (e.g., 0.5 for 0.5%)
|
|
151
|
+
* @returns Minimum acceptable output amount
|
|
152
|
+
* @throws Error if slippage tolerance is invalid
|
|
149
153
|
* @private
|
|
150
154
|
*/
|
|
151
155
|
private calculateMinAmountOut;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwapService.d.ts","sourceRoot":"","sources":["../../../src/services/swap/SwapService.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"SwapService.d.ts","sourceRoot":"","sources":["../../../src/services/swap/SwapService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,YAAY,EAAsB,MAAM,MAAM,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAGpD,OAAO,EAAmB,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAGtE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,MAAM,EAAE,UAAU,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,KAAK,CAAA;IACZ;;OAEG;IACH,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAA;IAC3B;;OAEG;IACH,IAAI,EAAE,WAAW,CAAA;CAClB;AAED;;;GAGG;AACH,qBAAa,WAAW;IAEpB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;gBAHZ,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY;IAGpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACG,oBAAoB,CACxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,WAAW,EACpB,KAAK,CAAC,EAAE,KAAK,GACZ,OAAO,CAAC,eAAe,CAAC;IAiB3B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACG,eAAe,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,EACpB,KAAK,CAAC,EAAE,KAAK,GACZ,OAAO,CAAC,WAAW,CAAC;IAoCvB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;;OAGG;YACW,YAAY;IAU1B;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;;OAGG;IACH,OAAO,CAAC,cAAc;CAavB"}
|