@mento-protocol/mento-sdk 2.0.0-beta.2 → 2.0.0-beta.4
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/dist/abis/index.d.ts +4 -3
- package/dist/abis/index.d.ts.map +1 -1
- package/dist/abis/index.js +1 -0
- package/dist/abis/index.js.map +1 -1
- package/dist/abis/uniswapV3.d.ts +4 -0
- package/dist/abis/uniswapV3.d.ts.map +1 -0
- package/dist/abis/uniswapV3.js +15 -0
- package/dist/abis/uniswapV3.js.map +1 -0
- package/dist/adapters/implementations/ethersAdapter.d.ts +0 -1
- package/dist/adapters/implementations/ethersAdapter.d.ts.map +1 -1
- package/dist/adapters/implementations/ethersAdapter.js +0 -3
- package/dist/adapters/implementations/ethersAdapter.js.map +1 -1
- package/dist/adapters/implementations/ethersV5Adapter.d.ts +0 -1
- package/dist/adapters/implementations/ethersV5Adapter.d.ts.map +1 -1
- package/dist/adapters/implementations/ethersV5Adapter.js +0 -3
- package/dist/adapters/implementations/ethersV5Adapter.js.map +1 -1
- package/dist/adapters/implementations/viemAdapter.d.ts +0 -1
- package/dist/adapters/implementations/viemAdapter.d.ts.map +1 -1
- package/dist/adapters/implementations/viemAdapter.js +0 -3
- package/dist/adapters/implementations/viemAdapter.js.map +1 -1
- package/dist/adapters/proxies/ethersAdapterProxy.d.ts +0 -2
- package/dist/adapters/proxies/ethersAdapterProxy.d.ts.map +1 -1
- package/dist/adapters/proxies/ethersAdapterProxy.js +9 -15
- package/dist/adapters/proxies/ethersAdapterProxy.js.map +1 -1
- package/dist/adapters/proxies/ethersV5AdapterProxy.d.ts +0 -2
- package/dist/adapters/proxies/ethersV5AdapterProxy.d.ts.map +1 -1
- package/dist/adapters/proxies/ethersV5AdapterProxy.js +9 -15
- package/dist/adapters/proxies/ethersV5AdapterProxy.js.map +1 -1
- package/dist/adapters/proxies/viemAdapterProxy.d.ts +0 -3
- package/dist/adapters/proxies/viemAdapterProxy.d.ts.map +1 -1
- package/dist/adapters/proxies/viemAdapterProxy.js +9 -15
- package/dist/adapters/proxies/viemAdapterProxy.js.map +1 -1
- package/dist/constants/index.d.ts +2 -0
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +2 -0
- package/dist/constants/index.js.map +1 -1
- package/dist/constants/mentoAddresses.d.ts +4 -0
- package/dist/constants/mentoAddresses.d.ts.map +1 -0
- package/dist/constants/mentoAddresses.js +7 -0
- package/dist/constants/mentoAddresses.js.map +1 -0
- package/dist/constants/protocolAddresses.d.ts +5 -0
- package/dist/constants/protocolAddresses.d.ts.map +1 -0
- package/dist/constants/protocolAddresses.js +8 -0
- package/dist/constants/protocolAddresses.js.map +1 -0
- package/dist/services/collateralAssetService.d.ts.map +1 -1
- package/dist/services/collateralAssetService.js +7 -4
- package/dist/services/collateralAssetService.js.map +1 -1
- package/dist/services/index.d.ts +5 -2
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +3 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/stableTokenService.d.ts +1 -0
- package/dist/services/stableTokenService.d.ts.map +1 -1
- package/dist/services/stableTokenService.js +6 -1
- package/dist/services/stableTokenService.js.map +1 -1
- package/dist/services/supply/ISupplyCalculator.d.ts +4 -0
- package/dist/services/supply/ISupplyCalculator.d.ts.map +1 -0
- package/dist/services/supply/ISupplyCalculator.js +3 -0
- package/dist/services/supply/ISupplyCalculator.js.map +1 -0
- package/dist/services/supply/UniV3SupplyCalculator.d.ts +21 -0
- package/dist/services/supply/UniV3SupplyCalculator.d.ts.map +1 -0
- package/dist/services/supply/UniV3SupplyCalculator.js +233 -0
- package/dist/services/supply/UniV3SupplyCalculator.js.map +1 -0
- package/dist/services/supply/index.d.ts +4 -0
- package/dist/services/supply/index.d.ts.map +1 -0
- package/dist/services/supply/index.js +20 -0
- package/dist/services/supply/index.js.map +1 -0
- package/dist/services/supply/multisigSupplyCalculator.d.ts +9 -0
- package/dist/services/supply/multisigSupplyCalculator.d.ts.map +1 -0
- package/dist/services/supply/multisigSupplyCalculator.js +21 -0
- package/dist/services/supply/multisigSupplyCalculator.js.map +1 -0
- package/dist/services/supplyAdjustmentService.d.ts +12 -0
- package/dist/services/supplyAdjustmentService.d.ts.map +1 -0
- package/dist/services/supplyAdjustmentService.js +35 -0
- package/dist/services/supplyAdjustmentService.js.map +1 -0
- package/dist/services/tokenMetadataService.d.ts +2 -2
- package/dist/services/tokenMetadataService.d.ts.map +1 -1
- package/dist/services/tokenMetadataService.js +0 -1
- package/dist/services/tokenMetadataService.js.map +1 -1
- package/dist/types/exchange.d.ts +1 -7
- package/dist/types/exchange.d.ts.map +1 -1
- package/dist/types/provider.d.ts +0 -1
- package/dist/types/provider.d.ts.map +1 -1
- package/dist/types/token.d.ts +10 -3
- package/dist/types/token.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/services/exchangeService.d.ts +0 -18
- package/dist/services/exchangeService.d.ts.map +0 -1
- package/dist/services/exchangeService.js +0 -78
- package/dist/services/exchangeService.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ISupplyCalculator.js","sourceRoot":"","sources":["../../../src/services/supply/ISupplyCalculator.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ProviderAdapter } from '../../types';
|
|
2
|
+
import { ISupplyCalculator } from './ISupplyCalculator';
|
|
3
|
+
export declare class UniV3SupplyCalculator implements ISupplyCalculator {
|
|
4
|
+
private provider;
|
|
5
|
+
private positionManagerAddress;
|
|
6
|
+
private factoryAddress;
|
|
7
|
+
private governanceAddress;
|
|
8
|
+
private readonly decimalsCache;
|
|
9
|
+
private readonly poolCache;
|
|
10
|
+
constructor(provider: ProviderAdapter, positionManagerAddress: string, factoryAddress: string, governanceAddress: string);
|
|
11
|
+
getAmount(tokenAddress: string): Promise<bigint>;
|
|
12
|
+
private normalizeNumberString;
|
|
13
|
+
private calculatePositionAmount;
|
|
14
|
+
private processPositionBatch;
|
|
15
|
+
private getPositionTokenIds;
|
|
16
|
+
private getPoolAddress;
|
|
17
|
+
private getTokenDecimals;
|
|
18
|
+
private readContract;
|
|
19
|
+
private calculateAmounts;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=UniV3SupplyCalculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UniV3SupplyCalculator.d.ts","sourceRoot":"","sources":["../../../src/services/supply/UniV3SupplyCalculator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAuB,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAOvD,qBAAa,qBAAsB,YAAW,iBAAiB;IAK3D,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,iBAAiB;IAP3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;IAC/D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiC;gBAGjD,QAAQ,EAAE,eAAe,EACzB,sBAAsB,EAAE,MAAM,EAC9B,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,MAAM;IAG7B,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA+CtD,OAAO,CAAC,qBAAqB;YAYf,uBAAuB;YAkCvB,oBAAoB;YAqEpB,mBAAmB;YAoCnB,cAAc;YAqBd,gBAAgB;IAuB9B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,gBAAgB;CAgDzB"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.UniV3SupplyCalculator = void 0;
|
|
7
|
+
const abis_1 = require("../../abis");
|
|
8
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
9
|
+
const utils_1 = require("../../utils");
|
|
10
|
+
const BATCH_SIZE = 5;
|
|
11
|
+
const BATCH_DELAY = 100;
|
|
12
|
+
class UniV3SupplyCalculator {
|
|
13
|
+
constructor(provider, positionManagerAddress, factoryAddress, governanceAddress) {
|
|
14
|
+
this.provider = provider;
|
|
15
|
+
this.positionManagerAddress = positionManagerAddress;
|
|
16
|
+
this.factoryAddress = factoryAddress;
|
|
17
|
+
this.governanceAddress = governanceAddress;
|
|
18
|
+
this.decimalsCache = new Map();
|
|
19
|
+
this.poolCache = new Map();
|
|
20
|
+
}
|
|
21
|
+
async getAmount(tokenAddress) {
|
|
22
|
+
try {
|
|
23
|
+
const positions = await this.getPositionTokenIds();
|
|
24
|
+
if (positions.length === 0)
|
|
25
|
+
return 0n;
|
|
26
|
+
let totalAmount = new bignumber_js_1.default(0);
|
|
27
|
+
// Process positions in batches
|
|
28
|
+
for (let i = 0; i < positions.length; i += BATCH_SIZE) {
|
|
29
|
+
const batchPositions = positions.slice(i, i + BATCH_SIZE);
|
|
30
|
+
const batchAmount = await (0, utils_1.retryOperation)(() => this.processPositionBatch(batchPositions, tokenAddress));
|
|
31
|
+
totalAmount = totalAmount.plus(batchAmount);
|
|
32
|
+
if (i + BATCH_SIZE < positions.length) {
|
|
33
|
+
await new Promise((resolve) => setTimeout(resolve, BATCH_DELAY));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Convert to bigint, considering token decimals
|
|
37
|
+
const decimals = await this.getTokenDecimals(tokenAddress);
|
|
38
|
+
try {
|
|
39
|
+
const rawAmount = totalAmount
|
|
40
|
+
.integerValue(bignumber_js_1.default.ROUND_DOWN)
|
|
41
|
+
.abs() // Take absolute value as signs are handled by adjustment service
|
|
42
|
+
.toString(10);
|
|
43
|
+
// Remove any decimal points and handle scientific notation
|
|
44
|
+
const cleanAmount = this.normalizeNumberString(rawAmount);
|
|
45
|
+
return BigInt(cleanAmount);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.error('Error converting to bigint:', {
|
|
49
|
+
totalAmount: totalAmount.toString(),
|
|
50
|
+
decimals,
|
|
51
|
+
error,
|
|
52
|
+
});
|
|
53
|
+
return 0n;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
console.error('Failed to calculate UniV3 supply:', error);
|
|
58
|
+
return 0n;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
normalizeNumberString(value) {
|
|
62
|
+
if (value.includes('e')) {
|
|
63
|
+
const [mantissa, exponent] = value.split('e');
|
|
64
|
+
const e = parseInt(exponent);
|
|
65
|
+
if (e > 0) {
|
|
66
|
+
return mantissa.replace('.', '') + '0'.repeat(e);
|
|
67
|
+
}
|
|
68
|
+
return '0';
|
|
69
|
+
}
|
|
70
|
+
return value.split('.')[0];
|
|
71
|
+
}
|
|
72
|
+
async calculatePositionAmount(position, slot0, targetToken) {
|
|
73
|
+
const liquidity = new bignumber_js_1.default(position[7].toString());
|
|
74
|
+
const sqrtPriceX96 = new bignumber_js_1.default(slot0[0].toString());
|
|
75
|
+
const Q96 = new bignumber_js_1.default(2).pow(96);
|
|
76
|
+
const sqrtPriceX96Num = sqrtPriceX96.dividedBy(Q96);
|
|
77
|
+
const currentTick = sqrtPriceX96Num.isGreaterThan(0)
|
|
78
|
+
? Math.floor(Math.log(sqrtPriceX96Num.toNumber() ** 2) / Math.log(1.0001))
|
|
79
|
+
: 0;
|
|
80
|
+
const tickLower = Number(position[5]);
|
|
81
|
+
const tickUpper = Number(position[6]);
|
|
82
|
+
const [amount0, amount1] = this.calculateAmounts(liquidity, currentTick, tickLower, tickUpper, sqrtPriceX96Num);
|
|
83
|
+
// Return positive amount if we should add to supply, negative if we should subtract
|
|
84
|
+
const isToken0 = position[2] === targetToken;
|
|
85
|
+
const amount = isToken0 ? amount0 : amount1;
|
|
86
|
+
// If target token is being deposited into the pool, we should subtract from supply
|
|
87
|
+
// This means if the position has liquidity of the target token, it's out of circulation
|
|
88
|
+
return amount;
|
|
89
|
+
}
|
|
90
|
+
async processPositionBatch(positionIds, targetToken) {
|
|
91
|
+
try {
|
|
92
|
+
// Fetch position data
|
|
93
|
+
const positionDataPromises = positionIds.map((id) => this.readContract({
|
|
94
|
+
address: this.positionManagerAddress,
|
|
95
|
+
abi: abis_1.UNIV3_POSITION_MANAGER_ABI,
|
|
96
|
+
functionName: 'positions',
|
|
97
|
+
args: [id],
|
|
98
|
+
}));
|
|
99
|
+
const positionData = (await Promise.all(positionDataPromises));
|
|
100
|
+
// Filter active positions that contain our target token
|
|
101
|
+
const activePositions = positionData.filter((pos) => {
|
|
102
|
+
const liquidity = new bignumber_js_1.default(pos[7].toString());
|
|
103
|
+
return (!liquidity.isZero() &&
|
|
104
|
+
(pos[2] === targetToken || pos[3] === targetToken));
|
|
105
|
+
});
|
|
106
|
+
if (activePositions.length === 0)
|
|
107
|
+
return new bignumber_js_1.default(0);
|
|
108
|
+
// Get pool addresses
|
|
109
|
+
const poolAddresses = await Promise.all(activePositions.map((pos) => this.getPoolAddress(pos[2], pos[3], Number(pos[4]))));
|
|
110
|
+
// Get slot0 data for all pools
|
|
111
|
+
const slot0Data = await Promise.all(poolAddresses.map((poolAddress) => this.readContract({
|
|
112
|
+
address: poolAddress,
|
|
113
|
+
abi: abis_1.UNIV3_POOL_ABI,
|
|
114
|
+
functionName: 'slot0',
|
|
115
|
+
})));
|
|
116
|
+
// Calculate total amount
|
|
117
|
+
let totalAmount = new bignumber_js_1.default(0);
|
|
118
|
+
for (let i = 0; i < activePositions.length; i++) {
|
|
119
|
+
const pos = activePositions[i];
|
|
120
|
+
const slot0 = slot0Data[i];
|
|
121
|
+
const amount = await this.calculatePositionAmount(pos, slot0, targetToken);
|
|
122
|
+
totalAmount = totalAmount.plus(amount);
|
|
123
|
+
}
|
|
124
|
+
return totalAmount;
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
console.error('Failed to process position batch:', error);
|
|
128
|
+
return new bignumber_js_1.default(0);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async getPositionTokenIds() {
|
|
132
|
+
// Get governance balance
|
|
133
|
+
const balance = await this.readContract({
|
|
134
|
+
address: this.positionManagerAddress,
|
|
135
|
+
abi: abis_1.UNIV3_POSITION_MANAGER_ABI,
|
|
136
|
+
functionName: 'balanceOf',
|
|
137
|
+
args: [this.governanceAddress],
|
|
138
|
+
});
|
|
139
|
+
const numPositions = Number(balance);
|
|
140
|
+
if (numPositions === 0)
|
|
141
|
+
return [];
|
|
142
|
+
const tokenIds = [];
|
|
143
|
+
for (let i = 0; i < numPositions; i += BATCH_SIZE) {
|
|
144
|
+
const batchPromises = Array.from({ length: Math.min(BATCH_SIZE, numPositions - i) }, (_, index) => this.readContract({
|
|
145
|
+
address: this.positionManagerAddress,
|
|
146
|
+
abi: abis_1.UNIV3_POSITION_MANAGER_ABI,
|
|
147
|
+
functionName: 'tokenOfOwnerByIndex',
|
|
148
|
+
args: [this.governanceAddress, i + index],
|
|
149
|
+
}).then((id) => Number(id)));
|
|
150
|
+
const batchResults = await Promise.all(batchPromises);
|
|
151
|
+
tokenIds.push(...batchResults);
|
|
152
|
+
if (i + BATCH_SIZE < numPositions) {
|
|
153
|
+
await new Promise((resolve) => setTimeout(resolve, BATCH_DELAY));
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return tokenIds;
|
|
157
|
+
}
|
|
158
|
+
async getPoolAddress(token0, token1, fee) {
|
|
159
|
+
const cacheKey = `${token0}-${token1}-${fee}`;
|
|
160
|
+
if (this.poolCache.has(cacheKey)) {
|
|
161
|
+
return this.poolCache.get(cacheKey);
|
|
162
|
+
}
|
|
163
|
+
const poolAddress = (await this.readContract({
|
|
164
|
+
address: this.factoryAddress,
|
|
165
|
+
abi: abis_1.UNIV3_FACTORY_ABI,
|
|
166
|
+
functionName: 'getPool',
|
|
167
|
+
args: [token0, token1, fee],
|
|
168
|
+
}));
|
|
169
|
+
this.poolCache.set(cacheKey, poolAddress);
|
|
170
|
+
return poolAddress;
|
|
171
|
+
}
|
|
172
|
+
async getTokenDecimals(tokenAddress) {
|
|
173
|
+
if (this.decimalsCache.has(tokenAddress)) {
|
|
174
|
+
return this.decimalsCache.get(tokenAddress);
|
|
175
|
+
}
|
|
176
|
+
try {
|
|
177
|
+
const decimals = (await this.readContract({
|
|
178
|
+
address: tokenAddress,
|
|
179
|
+
abi: abis_1.ERC20_ABI,
|
|
180
|
+
functionName: 'decimals',
|
|
181
|
+
}));
|
|
182
|
+
this.decimalsCache.set(tokenAddress, decimals);
|
|
183
|
+
return decimals;
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
console.warn(`Failed to fetch decimals for ${tokenAddress}, using default:`, error);
|
|
187
|
+
return 18;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
readContract(options) {
|
|
191
|
+
return this.provider.readContract(options);
|
|
192
|
+
}
|
|
193
|
+
calculateAmounts(liquidity, currentTick, tickLower, tickUpper, sqrtPrice) {
|
|
194
|
+
try {
|
|
195
|
+
const sqrtRatioLower = new bignumber_js_1.default(Math.sqrt(1.0001 ** tickLower));
|
|
196
|
+
const sqrtRatioUpper = new bignumber_js_1.default(Math.sqrt(1.0001 ** tickUpper));
|
|
197
|
+
let amount0 = new bignumber_js_1.default(0);
|
|
198
|
+
let amount1 = new bignumber_js_1.default(0);
|
|
199
|
+
if (currentTick < tickLower) {
|
|
200
|
+
const amount0Numerator = sqrtRatioUpper.minus(sqrtRatioLower);
|
|
201
|
+
const amount0Denominator = sqrtRatioUpper.multipliedBy(sqrtRatioLower);
|
|
202
|
+
if (!amount0Denominator.isZero()) {
|
|
203
|
+
amount0 = liquidity.multipliedBy(amount0Numerator.dividedBy(amount0Denominator));
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
else if (currentTick < tickUpper) {
|
|
207
|
+
const amount0Numerator = sqrtRatioUpper.minus(sqrtPrice);
|
|
208
|
+
const amount0Denominator = sqrtPrice.multipliedBy(sqrtRatioUpper);
|
|
209
|
+
if (!amount0Denominator.isZero()) {
|
|
210
|
+
amount0 = liquidity.multipliedBy(amount0Numerator.dividedBy(amount0Denominator));
|
|
211
|
+
}
|
|
212
|
+
amount1 = liquidity.multipliedBy(sqrtPrice.minus(sqrtRatioLower));
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
amount1 = liquidity.multipliedBy(sqrtRatioUpper.minus(sqrtRatioLower));
|
|
216
|
+
}
|
|
217
|
+
return [
|
|
218
|
+
amount0.isFinite()
|
|
219
|
+
? amount0.integerValue(bignumber_js_1.default.ROUND_DOWN)
|
|
220
|
+
: new bignumber_js_1.default(0),
|
|
221
|
+
amount1.isFinite()
|
|
222
|
+
? amount1.integerValue(bignumber_js_1.default.ROUND_DOWN)
|
|
223
|
+
: new bignumber_js_1.default(0),
|
|
224
|
+
];
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
console.error('Error calculating amounts:', error);
|
|
228
|
+
return [new bignumber_js_1.default(0), new bignumber_js_1.default(0)];
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
exports.UniV3SupplyCalculator = UniV3SupplyCalculator;
|
|
233
|
+
//# sourceMappingURL=UniV3SupplyCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UniV3SupplyCalculator.js","sourceRoot":"","sources":["../../../src/services/supply/UniV3SupplyCalculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/supply/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./UniV3SupplyCalculator"), exports);
|
|
18
|
+
__exportStar(require("./multisigSupplyCalculator"), exports);
|
|
19
|
+
__exportStar(require("./ISupplyCalculator"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/supply/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAuC;AACvC,6DAA0C;AAC1C,sDAAmC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ProviderAdapter } from '../../types';
|
|
2
|
+
import { ISupplyCalculator } from './ISupplyCalculator';
|
|
3
|
+
export declare class MultisigSupplyCalculator implements ISupplyCalculator {
|
|
4
|
+
private provider;
|
|
5
|
+
private multisigAddress;
|
|
6
|
+
constructor(provider: ProviderAdapter, multisigAddress: string);
|
|
7
|
+
getAmount(tokenAddress: string): Promise<bigint>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=multisigSupplyCalculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multisigSupplyCalculator.d.ts","sourceRoot":"","sources":["../../../src/services/supply/multisigSupplyCalculator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,qBAAa,wBAAyB,YAAW,iBAAiB;IAE9D,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;gBADf,QAAQ,EAAE,eAAe,EACzB,eAAe,EAAE,MAAM;IAG3B,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAUvD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MultisigSupplyCalculator = void 0;
|
|
4
|
+
const abis_1 = require("../../abis");
|
|
5
|
+
class MultisigSupplyCalculator {
|
|
6
|
+
constructor(provider, multisigAddress) {
|
|
7
|
+
this.provider = provider;
|
|
8
|
+
this.multisigAddress = multisigAddress;
|
|
9
|
+
}
|
|
10
|
+
async getAmount(tokenAddress) {
|
|
11
|
+
const balance = (await this.provider.readContract({
|
|
12
|
+
address: tokenAddress,
|
|
13
|
+
abi: abis_1.ERC20_ABI,
|
|
14
|
+
functionName: 'balanceOf',
|
|
15
|
+
args: [this.multisigAddress],
|
|
16
|
+
}));
|
|
17
|
+
return balance;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.MultisigSupplyCalculator = MultisigSupplyCalculator;
|
|
21
|
+
//# sourceMappingURL=multisigSupplyCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multisigSupplyCalculator.js","sourceRoot":"","sources":["../../../src/services/supply/multisigSupplyCalculator.ts"],"names":[],"mappings":";;;AAAA,qCAAsC;AAItC,MAAa,wBAAwB;IACnC,YACU,QAAyB,EACzB,eAAuB;QADvB,aAAQ,GAAR,QAAQ,CAAiB;QACzB,oBAAe,GAAf,eAAe,CAAQ;IAC9B,CAAC;IAEJ,KAAK,CAAC,SAAS,CAAC,YAAoB;QAClC,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YAChD,OAAO,EAAE,YAAY;YACrB,GAAG,EAAE,gBAAS;YACd,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;SAC7B,CAAC,CAAW,CAAA;QAEb,OAAO,OAAO,CAAA;IAChB,CAAC;CACF;AAhBD,4DAgBC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ProviderAdapter, StableToken } from '../types';
|
|
2
|
+
export declare class SupplyAdjustmentService {
|
|
3
|
+
private config;
|
|
4
|
+
constructor(provider: ProviderAdapter);
|
|
5
|
+
/**
|
|
6
|
+
* Get the adjusted supply of a stable token
|
|
7
|
+
* @param token - The stable token to get the adjusted supply for
|
|
8
|
+
* @returns The adjusted supply
|
|
9
|
+
*/
|
|
10
|
+
getAdjustedSupply(token: StableToken): Promise<string>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=supplyAdjustmentService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supplyAdjustmentService.d.ts","sourceRoot":"","sources":["../../src/services/supplyAdjustmentService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAqB,MAAM,UAAU,CAAA;AAQ1E,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAmB;gBAErB,QAAQ,EAAE,eAAe;IAqBrC;;;;OAIG;IACG,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;CAa7D"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SupplyAdjustmentService = void 0;
|
|
4
|
+
const constants_1 = require("../constants");
|
|
5
|
+
const supply_1 = require("./supply");
|
|
6
|
+
class SupplyAdjustmentService {
|
|
7
|
+
constructor(provider) {
|
|
8
|
+
const uniV3Calculator = new supply_1.UniV3SupplyCalculator(provider, constants_1.PROTOCOL_ADDRESSES.UNIV3_POSITION_MANAGER, constants_1.PROTOCOL_ADDRESSES.UNIV3_FACTORY, constants_1.MENTO_ADDRESSES.PROTOCOL_MULTISIG);
|
|
9
|
+
const multisigCalculator = new supply_1.MultisigSupplyCalculator(provider, constants_1.MENTO_ADDRESSES.PROTOCOL_MULTISIG);
|
|
10
|
+
this.config = {
|
|
11
|
+
[constants_1.STABLE_TOKEN_SYMBOLS.cUSD]: [
|
|
12
|
+
{ calculator: uniV3Calculator },
|
|
13
|
+
{ calculator: multisigCalculator },
|
|
14
|
+
],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get the adjusted supply of a stable token
|
|
19
|
+
* @param token - The stable token to get the adjusted supply for
|
|
20
|
+
* @returns The adjusted supply
|
|
21
|
+
*/
|
|
22
|
+
async getAdjustedSupply(token) {
|
|
23
|
+
const adjustments = this.config[token.symbol];
|
|
24
|
+
if (!adjustments)
|
|
25
|
+
return token.totalSupply;
|
|
26
|
+
let supply = BigInt(token.totalSupply);
|
|
27
|
+
for (const adjustment of adjustments) {
|
|
28
|
+
const amount = await adjustment.calculator.getAmount(token.address);
|
|
29
|
+
supply -= amount;
|
|
30
|
+
}
|
|
31
|
+
return supply.toString();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.SupplyAdjustmentService = SupplyAdjustmentService;
|
|
35
|
+
//# sourceMappingURL=supplyAdjustmentService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supplyAdjustmentService.js","sourceRoot":"","sources":["../../src/services/supplyAdjustmentService.ts"],"names":[],"mappings":";;;AACA,4CAIqB;AACrB,qCAA0E;AAE1E,MAAa,uBAAuB;IAGlC,YAAY,QAAyB;QACnC,MAAM,eAAe,GAAG,IAAI,8BAAqB,CAC/C,QAAQ,EACR,8BAAkB,CAAC,sBAAsB,EACzC,8BAAkB,CAAC,aAAa,EAChC,2BAAe,CAAC,iBAAiB,CAClC,CAAA;QAED,MAAM,kBAAkB,GAAG,IAAI,iCAAwB,CACrD,QAAQ,EACR,2BAAe,CAAC,iBAAiB,CAClC,CAAA;QAED,IAAI,CAAC,MAAM,GAAG;YACZ,CAAC,gCAAoB,CAAC,IAAI,CAAC,EAAE;gBAC3B,EAAE,UAAU,EAAE,eAAe,EAAE;gBAC/B,EAAE,UAAU,EAAE,kBAAkB,EAAE;aACnC;SACF,CAAA;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CAAC,KAAkB;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC7C,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC,WAAW,CAAA;QAE1C,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAEtC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACnE,MAAM,IAAI,MAAM,CAAA;QAClB,CAAC;QAED,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAA;IAC1B,CAAC;CACF;AA1CD,0DA0CC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ProviderAdapter,
|
|
1
|
+
import { ProviderAdapter, BaseToken } from '../types';
|
|
2
2
|
export declare class TokenMetadataService {
|
|
3
3
|
private provider;
|
|
4
4
|
constructor(provider: ProviderAdapter);
|
|
5
|
-
getTokenMetadata(address: string): Promise<
|
|
5
|
+
getTokenMetadata(address: string): Promise<Pick<BaseToken, 'name' | 'symbol' | 'decimals'>>;
|
|
6
6
|
getTotalSupply(address: string): Promise<string>;
|
|
7
7
|
}
|
|
8
8
|
//# sourceMappingURL=tokenMetadataService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenMetadataService.d.ts","sourceRoot":"","sources":["../../src/services/tokenMetadataService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"tokenMetadataService.d.ts","sourceRoot":"","sources":["../../src/services/tokenMetadataService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAIrD,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,eAAe;IAEvC,gBAAgB,CACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAC;IAgCrD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAWvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenMetadataService.js","sourceRoot":"","sources":["../../src/services/tokenMetadataService.ts"],"names":[],"mappings":";;;AACA,kCAAmC;AACnC,oCAAyC;AAEzC,MAAa,oBAAoB;IAC/B,YAAoB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAAG,CAAC;IAEjD,KAAK,CAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"tokenMetadataService.js","sourceRoot":"","sources":["../../src/services/tokenMetadataService.ts"],"names":[],"mappings":";;;AACA,kCAAmC;AACnC,oCAAyC;AAEzC,MAAa,oBAAoB;IAC/B,YAAoB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAAG,CAAC;IAEjD,KAAK,CAAC,gBAAgB,CACpB,OAAe;QAEf,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACjD,IAAA,sBAAc,EAAC,GAAG,EAAE,CAClB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACzB,OAAO;gBACP,GAAG,EAAE,gBAAS;gBACd,YAAY,EAAE,MAAM;aACrB,CAAC,CACH;YACD,IAAA,sBAAc,EAAC,GAAG,EAAE,CAClB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACzB,OAAO;gBACP,GAAG,EAAE,gBAAS;gBACd,YAAY,EAAE,QAAQ;aACvB,CAAC,CACH;YACD,IAAA,sBAAc,EAAC,GAAG,EAAE,CAClB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACzB,OAAO;gBACP,GAAG,EAAE,gBAAS;gBACd,YAAY,EAAE,UAAU;aACzB,CAAC,CACH;SACF,CAAC,CAAA;QAEF,OAAO;YACL,IAAI,EAAE,IAAc;YACpB,MAAM,EAAE,MAAgB;YACxB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;SAC3B,CAAA;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAe;QAClC,MAAM,WAAW,GAAG,MAAM,IAAA,sBAAc,EAAC,GAAG,EAAE,CAC5C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YACzB,OAAO;YACP,GAAG,EAAE,gBAAS;YACd,YAAY,EAAE,aAAa;SAC5B,CAAC,CACH,CAAA;QAED,OAAQ,WAAsB,CAAC,QAAQ,EAAE,CAAA;IAC3C,CAAC;CACF;AAhDD,oDAgDC"}
|
package/dist/types/exchange.d.ts
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
import { IERC20Token } from './token';
|
|
2
|
-
export interface getExchangesResponse {
|
|
3
|
-
providerAddr: string;
|
|
4
|
-
id: string;
|
|
5
|
-
assets: string[];
|
|
6
|
-
}
|
|
7
1
|
export interface Exchange {
|
|
8
2
|
providerAddr: string;
|
|
9
3
|
id: string;
|
|
10
|
-
assets:
|
|
4
|
+
assets: string[];
|
|
11
5
|
}
|
|
12
6
|
//# sourceMappingURL=exchange.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exchange.d.ts","sourceRoot":"","sources":["../../src/types/exchange.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"exchange.d.ts","sourceRoot":"","sources":["../../src/types/exchange.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB"}
|
package/dist/types/provider.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/types/provider.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC/B,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/types/provider.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC/B,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9B"}
|
package/dist/types/token.d.ts
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
import { ISupplyCalculator } from '../services';
|
|
2
|
+
export interface BaseToken {
|
|
2
3
|
name: string;
|
|
3
4
|
symbol: string;
|
|
4
5
|
address: string;
|
|
5
6
|
decimals: number;
|
|
6
7
|
}
|
|
7
|
-
export interface StableToken extends
|
|
8
|
+
export interface StableToken extends BaseToken {
|
|
8
9
|
totalSupply: string;
|
|
9
10
|
fiatTicker: string;
|
|
10
11
|
}
|
|
11
|
-
export type CollateralAsset =
|
|
12
|
+
export type CollateralAsset = BaseToken;
|
|
13
|
+
export interface SupplyAdjustment {
|
|
14
|
+
calculator: ISupplyCalculator;
|
|
15
|
+
}
|
|
16
|
+
export interface TokenSupplyConfig {
|
|
17
|
+
[tokenSymbol: string]: SupplyAdjustment[];
|
|
18
|
+
}
|
|
12
19
|
//# sourceMappingURL=token.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/types/token.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/types/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,eAAe,GAAG,SAAS,CAAA;AAEvC,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,iBAAiB,CAAA;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;CAC1C"}
|
package/package.json
CHANGED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { ProviderAdapter, Exchange } from '../types';
|
|
2
|
-
export declare class ExchangeService {
|
|
3
|
-
private provider;
|
|
4
|
-
private tokenMetadataService;
|
|
5
|
-
constructor(provider: ProviderAdapter);
|
|
6
|
-
/**
|
|
7
|
-
* Returns a list of all the exchanges and their tokens that can be traded on Mento
|
|
8
|
-
*/
|
|
9
|
-
getExchanges(): Promise<Exchange[]>;
|
|
10
|
-
/**
|
|
11
|
-
* Gets the exchange with the given id. If no exchange is found, returns undefined.
|
|
12
|
-
* @param id The exchange id to be retrieved.
|
|
13
|
-
* @returns The exchange with the given id, or undefined if no exchange is found.
|
|
14
|
-
*/
|
|
15
|
-
getExchangeById(id: string): Promise<Exchange | undefined>;
|
|
16
|
-
getExchangeForTokens(token0: string, token1: string): Promise<Exchange | undefined>;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=exchangeService.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exchangeService.d.ts","sourceRoot":"","sources":["../../src/services/exchangeService.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,QAAQ,EAGT,MAAM,UAAU,CAAA;AAejB,qBAAa,eAAe;IAGd,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,oBAAoB,CAAsB;gBAE9B,QAAQ,EAAE,eAAe;IAI7C;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IA0CzC;;;;OAIG;IACG,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAK1D,oBAAoB,CACxB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;CAiBjC"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ExchangeService = void 0;
|
|
4
|
-
const utils_1 = require("../utils");
|
|
5
|
-
const constants_1 = require("../constants");
|
|
6
|
-
const abis_1 = require("../abis");
|
|
7
|
-
const tokenMetadataService_1 = require("./tokenMetadataService");
|
|
8
|
-
// TODO:
|
|
9
|
-
// - async getAmountIn
|
|
10
|
-
// - get amount out
|
|
11
|
-
// - Swap in
|
|
12
|
-
// - Swap out
|
|
13
|
-
// - Increase trading allowancew
|
|
14
|
-
// - getExchangeForTokens
|
|
15
|
-
// - getExchangeById
|
|
16
|
-
// - isTradingEnabled -> Circuit breaker service
|
|
17
|
-
class ExchangeService {
|
|
18
|
-
constructor(provider) {
|
|
19
|
-
this.provider = provider;
|
|
20
|
-
this.tokenMetadataService = new tokenMetadataService_1.TokenMetadataService(provider);
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Returns a list of all the exchanges and their tokens that can be traded on Mento
|
|
24
|
-
*/
|
|
25
|
-
async getExchanges() {
|
|
26
|
-
// The Broker can store references to multiple implementatios of the IExchangeProvider
|
|
27
|
-
// Currently there is only one implementation, the BiPoolManager, which manages pools with
|
|
28
|
-
// two assets. To simplify this logic we only fetch exchanges from the BiPoolManager.
|
|
29
|
-
// If in the future we have more than one implementation we can extend this function to
|
|
30
|
-
// first fetch the known exchange providers, then for each exchange provider fetch the exchanges.
|
|
31
|
-
const exchangeList = [];
|
|
32
|
-
const chainId = await this.provider.getChainId();
|
|
33
|
-
const biPoolManagerAddress = (0, constants_1.getContractAddress)(chainId, constants_1.BIPOOLMANAGER);
|
|
34
|
-
const rawExchanges = (await (0, utils_1.retryOperation)(() => this.provider.readContract({
|
|
35
|
-
address: biPoolManagerAddress,
|
|
36
|
-
abi: abis_1.BIPOOL_MANAGER_ABI,
|
|
37
|
-
functionName: 'getExchanges',
|
|
38
|
-
})));
|
|
39
|
-
const uniqueAddresses = new Set();
|
|
40
|
-
for (const exchange of rawExchanges) {
|
|
41
|
-
exchange.assets.forEach((asset) => uniqueAddresses.add(asset));
|
|
42
|
-
}
|
|
43
|
-
const tokenMetadataMap = {};
|
|
44
|
-
for (const address of uniqueAddresses) {
|
|
45
|
-
const metadata = await this.tokenMetadataService.getTokenMetadata(address);
|
|
46
|
-
tokenMetadataMap[address] = metadata;
|
|
47
|
-
}
|
|
48
|
-
for (const exchange of rawExchanges) {
|
|
49
|
-
exchangeList.push({
|
|
50
|
-
providerAddr: exchange.providerAddr,
|
|
51
|
-
id: exchange.id,
|
|
52
|
-
assets: exchange.assets.map((asset) => tokenMetadataMap[asset]),
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
return exchangeList;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Gets the exchange with the given id. If no exchange is found, returns undefined.
|
|
59
|
-
* @param id The exchange id to be retrieved.
|
|
60
|
-
* @returns The exchange with the given id, or undefined if no exchange is found.
|
|
61
|
-
*/
|
|
62
|
-
async getExchangeById(id) {
|
|
63
|
-
const exchanges = await this.getExchanges();
|
|
64
|
-
return exchanges.find((exchange) => exchange.id === id);
|
|
65
|
-
}
|
|
66
|
-
async getExchangeForTokens(token0, token1) {
|
|
67
|
-
let exchange = undefined;
|
|
68
|
-
if (!(await this.provider.isAddress(token0)) ||
|
|
69
|
-
!(await this.provider.isAddress(token1))) {
|
|
70
|
-
throw new Error('Invalid token address was supplied');
|
|
71
|
-
}
|
|
72
|
-
exchange = (await this.getExchanges()).find((exchange) => exchange.assets.some((asset) => asset.address === token0) &&
|
|
73
|
-
exchange.assets.some((asset) => asset.address === token1));
|
|
74
|
-
return exchange;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
exports.ExchangeService = ExchangeService;
|
|
78
|
-
//# sourceMappingURL=exchangeService.js.map
|