@strkfarm/sdk 1.1.48 → 1.1.50

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.
@@ -53816,12 +53816,21 @@ ${JSON.stringify(data, null, 2)}`;
53816
53816
  * @param amount Can be negative too, which would mean to get exact amount out
53817
53817
  * @returns
53818
53818
  */
53819
- async getQuote(fromToken, toToken, amount) {
53819
+ async getQuote(fromToken, toToken, amount, retry = 0) {
53820
53820
  let _fromToken = amount.gt(0) ? fromToken : toToken;
53821
53821
  let _toToken = amount.gt(0) ? toToken : fromToken;
53822
- const quote = await axios_default.get(this.ENDPOINT.replace("{{AMOUNT}}", amount.toWei()).replace("{{TOKEN_FROM_ADDRESS}}", _fromToken).replace("{{TOKEN_TO_ADDRESS}}", _toToken));
53823
- console.log(`Ekubo quote from ${_fromToken} to ${_toToken} for ${amount.toString()}: ${JSON.stringify(quote.data)}`);
53824
- return quote.data;
53822
+ try {
53823
+ const quote = await axios_default.get(this.ENDPOINT.replace("{{AMOUNT}}", amount.toWei()).replace("{{TOKEN_FROM_ADDRESS}}", _fromToken).replace("{{TOKEN_TO_ADDRESS}}", _toToken));
53824
+ console.log(`Ekubo quote from ${_fromToken} to ${_toToken} for ${amount.toString()}: ${JSON.stringify(quote.data)}`);
53825
+ return quote.data;
53826
+ } catch (error2) {
53827
+ console.error(error2.message, "dassf", error2.data);
53828
+ if (retry < 10) {
53829
+ await new Promise((resolve) => setTimeout(resolve, (retry + 1) * 5e3));
53830
+ return await this.getQuote(fromToken, toToken, amount, retry + 1);
53831
+ }
53832
+ throw error2;
53833
+ }
53825
53834
  }
53826
53835
  /**
53827
53836
  * Formats Ekubo response for Vesu multiple use
@@ -79672,13 +79681,27 @@ spurious results.`);
79672
79681
  const tvlBefore = await this._getTVL(blockBefore);
79673
79682
  const supplyBefore = await this.totalSupply(blockBefore);
79674
79683
  const priceBefore = await this.getCurrentPrice(blockBefore);
79675
- const tvlInToken0Now = tvlNow.amount0.multipliedBy(priceNow.price).plus(tvlNow.amount1);
79676
- const tvlPerShareNow = tvlInToken0Now.multipliedBy(1e18).dividedBy(adjustedSupplyNow.toString());
79677
- const tvlInToken0Bf = tvlBefore.amount0.multipliedBy(priceBefore.price).plus(tvlBefore.amount1);
79678
- const tvlPerShareBf = tvlInToken0Bf.multipliedBy(1e18).dividedBy(supplyBefore.toString());
79684
+ const poolKey = await this.getPoolKey(blockBefore);
79685
+ logger2.verbose(`priceBefore: ${priceBefore.price.toString()}`);
79686
+ logger2.verbose(`priceNow: ${priceNow.price.toString()}`);
79687
+ logger2.verbose(`tvlBefore: ${JSON.stringify(tvlBefore)}`);
79688
+ logger2.verbose(`tvlNow: ${JSON.stringify(tvlNow)}`);
79689
+ const isQuoteTokenToken0 = this.metadata.additionalInfo.quoteAsset.address.eq(poolKey.token0);
79690
+ logger2.verbose(`isQuoteTokenToken0: ${isQuoteTokenToken0}`);
79691
+ let tvlBeforeInBaseAsset = Web3Number.fromWei(0, this.metadata.additionalInfo.quoteAsset.decimals);
79692
+ let tvlNowInBaseAsset = Web3Number.fromWei(0, this.metadata.additionalInfo.quoteAsset.decimals);
79693
+ if (!isQuoteTokenToken0) {
79694
+ tvlNowInBaseAsset = tvlNow.amount0.multipliedBy(priceNow.price).plus(tvlNow.amount1);
79695
+ tvlBeforeInBaseAsset = tvlBefore.amount0.multipliedBy(priceBefore.price).plus(tvlBefore.amount1);
79696
+ } else {
79697
+ tvlNowInBaseAsset = tvlNow.amount1.multipliedBy(1 / priceNow.price).plus(tvlNow.amount0);
79698
+ tvlBeforeInBaseAsset = tvlBefore.amount1.multipliedBy(1 / priceBefore.price).plus(tvlBefore.amount0);
79699
+ }
79700
+ const tvlPerShareNow = tvlNowInBaseAsset.multipliedBy(1e18).dividedBy(adjustedSupplyNow.toString());
79701
+ const tvlPerShareBf = tvlBeforeInBaseAsset.multipliedBy(1e18).dividedBy(supplyBefore.toString());
79679
79702
  const timeDiffSeconds = blockNowTime - blockBeforeInfo.timestamp;
79680
- logger2.verbose(`tvlInToken0Now: ${tvlInToken0Now.toString()}`);
79681
- logger2.verbose(`tvlInToken0Bf: ${tvlInToken0Bf.toString()}`);
79703
+ logger2.verbose(`tvlNowInBaseAsset: ${tvlNowInBaseAsset.toString()}`);
79704
+ logger2.verbose(`tvlBeforeInBaseAsset: ${tvlBeforeInBaseAsset.toString()}`);
79682
79705
  logger2.verbose(`tvlPerShareNow: ${tvlPerShareNow.toString()}`);
79683
79706
  logger2.verbose(`tvlPerShareBf: ${tvlPerShareBf.toString()}`);
79684
79707
  logger2.verbose(`Price before: ${priceBefore.price.toString()}`);
@@ -2208,12 +2208,21 @@ var EkuboQuoter = class {
2208
2208
  * @param amount Can be negative too, which would mean to get exact amount out
2209
2209
  * @returns
2210
2210
  */
2211
- async getQuote(fromToken, toToken, amount) {
2211
+ async getQuote(fromToken, toToken, amount, retry = 0) {
2212
2212
  let _fromToken = amount.gt(0) ? fromToken : toToken;
2213
2213
  let _toToken = amount.gt(0) ? toToken : fromToken;
2214
- const quote = await axios5.get(this.ENDPOINT.replace("{{AMOUNT}}", amount.toWei()).replace("{{TOKEN_FROM_ADDRESS}}", _fromToken).replace("{{TOKEN_TO_ADDRESS}}", _toToken));
2215
- console.log(`Ekubo quote from ${_fromToken} to ${_toToken} for ${amount.toString()}: ${JSON.stringify(quote.data)}`);
2216
- return quote.data;
2214
+ try {
2215
+ const quote = await axios5.get(this.ENDPOINT.replace("{{AMOUNT}}", amount.toWei()).replace("{{TOKEN_FROM_ADDRESS}}", _fromToken).replace("{{TOKEN_TO_ADDRESS}}", _toToken));
2216
+ console.log(`Ekubo quote from ${_fromToken} to ${_toToken} for ${amount.toString()}: ${JSON.stringify(quote.data)}`);
2217
+ return quote.data;
2218
+ } catch (error) {
2219
+ console.error(error.message, "dassf", error.data);
2220
+ if (retry < 10) {
2221
+ await new Promise((resolve) => setTimeout(resolve, (retry + 1) * 5e3));
2222
+ return await this.getQuote(fromToken, toToken, amount, retry + 1);
2223
+ }
2224
+ throw error;
2225
+ }
2217
2226
  }
2218
2227
  /**
2219
2228
  * Formats Ekubo response for Vesu multiple use
@@ -15749,13 +15758,27 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15749
15758
  const tvlBefore = await this._getTVL(blockBefore);
15750
15759
  const supplyBefore = await this.totalSupply(blockBefore);
15751
15760
  const priceBefore = await this.getCurrentPrice(blockBefore);
15752
- const tvlInToken0Now = tvlNow.amount0.multipliedBy(priceNow.price).plus(tvlNow.amount1);
15753
- const tvlPerShareNow = tvlInToken0Now.multipliedBy(1e18).dividedBy(adjustedSupplyNow.toString());
15754
- const tvlInToken0Bf = tvlBefore.amount0.multipliedBy(priceBefore.price).plus(tvlBefore.amount1);
15755
- const tvlPerShareBf = tvlInToken0Bf.multipliedBy(1e18).dividedBy(supplyBefore.toString());
15761
+ const poolKey = await this.getPoolKey(blockBefore);
15762
+ logger.verbose(`priceBefore: ${priceBefore.price.toString()}`);
15763
+ logger.verbose(`priceNow: ${priceNow.price.toString()}`);
15764
+ logger.verbose(`tvlBefore: ${JSON.stringify(tvlBefore)}`);
15765
+ logger.verbose(`tvlNow: ${JSON.stringify(tvlNow)}`);
15766
+ const isQuoteTokenToken0 = this.metadata.additionalInfo.quoteAsset.address.eq(poolKey.token0);
15767
+ logger.verbose(`isQuoteTokenToken0: ${isQuoteTokenToken0}`);
15768
+ let tvlBeforeInBaseAsset = Web3Number.fromWei(0, this.metadata.additionalInfo.quoteAsset.decimals);
15769
+ let tvlNowInBaseAsset = Web3Number.fromWei(0, this.metadata.additionalInfo.quoteAsset.decimals);
15770
+ if (!isQuoteTokenToken0) {
15771
+ tvlNowInBaseAsset = tvlNow.amount0.multipliedBy(priceNow.price).plus(tvlNow.amount1);
15772
+ tvlBeforeInBaseAsset = tvlBefore.amount0.multipliedBy(priceBefore.price).plus(tvlBefore.amount1);
15773
+ } else {
15774
+ tvlNowInBaseAsset = tvlNow.amount1.multipliedBy(1 / priceNow.price).plus(tvlNow.amount0);
15775
+ tvlBeforeInBaseAsset = tvlBefore.amount1.multipliedBy(1 / priceBefore.price).plus(tvlBefore.amount0);
15776
+ }
15777
+ const tvlPerShareNow = tvlNowInBaseAsset.multipliedBy(1e18).dividedBy(adjustedSupplyNow.toString());
15778
+ const tvlPerShareBf = tvlBeforeInBaseAsset.multipliedBy(1e18).dividedBy(supplyBefore.toString());
15756
15779
  const timeDiffSeconds = blockNowTime - blockBeforeInfo.timestamp;
15757
- logger.verbose(`tvlInToken0Now: ${tvlInToken0Now.toString()}`);
15758
- logger.verbose(`tvlInToken0Bf: ${tvlInToken0Bf.toString()}`);
15780
+ logger.verbose(`tvlNowInBaseAsset: ${tvlNowInBaseAsset.toString()}`);
15781
+ logger.verbose(`tvlBeforeInBaseAsset: ${tvlBeforeInBaseAsset.toString()}`);
15759
15782
  logger.verbose(`tvlPerShareNow: ${tvlPerShareNow.toString()}`);
15760
15783
  logger.verbose(`tvlPerShareBf: ${tvlPerShareBf.toString()}`);
15761
15784
  logger.verbose(`Price before: ${priceBefore.price.toString()}`);
package/dist/index.d.ts CHANGED
@@ -1544,7 +1544,7 @@ declare class EkuboQuoter {
1544
1544
  * @param amount Can be negative too, which would mean to get exact amount out
1545
1545
  * @returns
1546
1546
  */
1547
- getQuote(fromToken: string, toToken: string, amount: Web3Number): Promise<EkuboQuote>;
1547
+ getQuote(fromToken: string, toToken: string, amount: Web3Number, retry?: number): Promise<EkuboQuote>;
1548
1548
  /**
1549
1549
  * Formats Ekubo response for Vesu multiple use
1550
1550
  * @param quote
package/dist/index.js CHANGED
@@ -2363,12 +2363,21 @@ var EkuboQuoter = class {
2363
2363
  * @param amount Can be negative too, which would mean to get exact amount out
2364
2364
  * @returns
2365
2365
  */
2366
- async getQuote(fromToken, toToken, amount) {
2366
+ async getQuote(fromToken, toToken, amount, retry = 0) {
2367
2367
  let _fromToken = amount.gt(0) ? fromToken : toToken;
2368
2368
  let _toToken = amount.gt(0) ? toToken : fromToken;
2369
- const quote = await import_axios5.default.get(this.ENDPOINT.replace("{{AMOUNT}}", amount.toWei()).replace("{{TOKEN_FROM_ADDRESS}}", _fromToken).replace("{{TOKEN_TO_ADDRESS}}", _toToken));
2370
- console.log(`Ekubo quote from ${_fromToken} to ${_toToken} for ${amount.toString()}: ${JSON.stringify(quote.data)}`);
2371
- return quote.data;
2369
+ try {
2370
+ const quote = await import_axios5.default.get(this.ENDPOINT.replace("{{AMOUNT}}", amount.toWei()).replace("{{TOKEN_FROM_ADDRESS}}", _fromToken).replace("{{TOKEN_TO_ADDRESS}}", _toToken));
2371
+ console.log(`Ekubo quote from ${_fromToken} to ${_toToken} for ${amount.toString()}: ${JSON.stringify(quote.data)}`);
2372
+ return quote.data;
2373
+ } catch (error) {
2374
+ console.error(error.message, "dassf", error.data);
2375
+ if (retry < 10) {
2376
+ await new Promise((resolve) => setTimeout(resolve, (retry + 1) * 5e3));
2377
+ return await this.getQuote(fromToken, toToken, amount, retry + 1);
2378
+ }
2379
+ throw error;
2380
+ }
2372
2381
  }
2373
2382
  /**
2374
2383
  * Formats Ekubo response for Vesu multiple use
@@ -15749,13 +15758,27 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15749
15758
  const tvlBefore = await this._getTVL(blockBefore);
15750
15759
  const supplyBefore = await this.totalSupply(blockBefore);
15751
15760
  const priceBefore = await this.getCurrentPrice(blockBefore);
15752
- const tvlInToken0Now = tvlNow.amount0.multipliedBy(priceNow.price).plus(tvlNow.amount1);
15753
- const tvlPerShareNow = tvlInToken0Now.multipliedBy(1e18).dividedBy(adjustedSupplyNow.toString());
15754
- const tvlInToken0Bf = tvlBefore.amount0.multipliedBy(priceBefore.price).plus(tvlBefore.amount1);
15755
- const tvlPerShareBf = tvlInToken0Bf.multipliedBy(1e18).dividedBy(supplyBefore.toString());
15761
+ const poolKey = await this.getPoolKey(blockBefore);
15762
+ logger.verbose(`priceBefore: ${priceBefore.price.toString()}`);
15763
+ logger.verbose(`priceNow: ${priceNow.price.toString()}`);
15764
+ logger.verbose(`tvlBefore: ${JSON.stringify(tvlBefore)}`);
15765
+ logger.verbose(`tvlNow: ${JSON.stringify(tvlNow)}`);
15766
+ const isQuoteTokenToken0 = this.metadata.additionalInfo.quoteAsset.address.eq(poolKey.token0);
15767
+ logger.verbose(`isQuoteTokenToken0: ${isQuoteTokenToken0}`);
15768
+ let tvlBeforeInBaseAsset = Web3Number.fromWei(0, this.metadata.additionalInfo.quoteAsset.decimals);
15769
+ let tvlNowInBaseAsset = Web3Number.fromWei(0, this.metadata.additionalInfo.quoteAsset.decimals);
15770
+ if (!isQuoteTokenToken0) {
15771
+ tvlNowInBaseAsset = tvlNow.amount0.multipliedBy(priceNow.price).plus(tvlNow.amount1);
15772
+ tvlBeforeInBaseAsset = tvlBefore.amount0.multipliedBy(priceBefore.price).plus(tvlBefore.amount1);
15773
+ } else {
15774
+ tvlNowInBaseAsset = tvlNow.amount1.multipliedBy(1 / priceNow.price).plus(tvlNow.amount0);
15775
+ tvlBeforeInBaseAsset = tvlBefore.amount1.multipliedBy(1 / priceBefore.price).plus(tvlBefore.amount0);
15776
+ }
15777
+ const tvlPerShareNow = tvlNowInBaseAsset.multipliedBy(1e18).dividedBy(adjustedSupplyNow.toString());
15778
+ const tvlPerShareBf = tvlBeforeInBaseAsset.multipliedBy(1e18).dividedBy(supplyBefore.toString());
15756
15779
  const timeDiffSeconds = blockNowTime - blockBeforeInfo.timestamp;
15757
- logger.verbose(`tvlInToken0Now: ${tvlInToken0Now.toString()}`);
15758
- logger.verbose(`tvlInToken0Bf: ${tvlInToken0Bf.toString()}`);
15780
+ logger.verbose(`tvlNowInBaseAsset: ${tvlNowInBaseAsset.toString()}`);
15781
+ logger.verbose(`tvlBeforeInBaseAsset: ${tvlBeforeInBaseAsset.toString()}`);
15759
15782
  logger.verbose(`tvlPerShareNow: ${tvlPerShareNow.toString()}`);
15760
15783
  logger.verbose(`tvlPerShareBf: ${tvlPerShareBf.toString()}`);
15761
15784
  logger.verbose(`Price before: ${priceBefore.price.toString()}`);
package/dist/index.mjs CHANGED
@@ -2257,12 +2257,21 @@ var EkuboQuoter = class {
2257
2257
  * @param amount Can be negative too, which would mean to get exact amount out
2258
2258
  * @returns
2259
2259
  */
2260
- async getQuote(fromToken, toToken, amount) {
2260
+ async getQuote(fromToken, toToken, amount, retry = 0) {
2261
2261
  let _fromToken = amount.gt(0) ? fromToken : toToken;
2262
2262
  let _toToken = amount.gt(0) ? toToken : fromToken;
2263
- const quote = await axios5.get(this.ENDPOINT.replace("{{AMOUNT}}", amount.toWei()).replace("{{TOKEN_FROM_ADDRESS}}", _fromToken).replace("{{TOKEN_TO_ADDRESS}}", _toToken));
2264
- console.log(`Ekubo quote from ${_fromToken} to ${_toToken} for ${amount.toString()}: ${JSON.stringify(quote.data)}`);
2265
- return quote.data;
2263
+ try {
2264
+ const quote = await axios5.get(this.ENDPOINT.replace("{{AMOUNT}}", amount.toWei()).replace("{{TOKEN_FROM_ADDRESS}}", _fromToken).replace("{{TOKEN_TO_ADDRESS}}", _toToken));
2265
+ console.log(`Ekubo quote from ${_fromToken} to ${_toToken} for ${amount.toString()}: ${JSON.stringify(quote.data)}`);
2266
+ return quote.data;
2267
+ } catch (error) {
2268
+ console.error(error.message, "dassf", error.data);
2269
+ if (retry < 10) {
2270
+ await new Promise((resolve) => setTimeout(resolve, (retry + 1) * 5e3));
2271
+ return await this.getQuote(fromToken, toToken, amount, retry + 1);
2272
+ }
2273
+ throw error;
2274
+ }
2266
2275
  }
2267
2276
  /**
2268
2277
  * Formats Ekubo response for Vesu multiple use
@@ -15647,13 +15656,27 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15647
15656
  const tvlBefore = await this._getTVL(blockBefore);
15648
15657
  const supplyBefore = await this.totalSupply(blockBefore);
15649
15658
  const priceBefore = await this.getCurrentPrice(blockBefore);
15650
- const tvlInToken0Now = tvlNow.amount0.multipliedBy(priceNow.price).plus(tvlNow.amount1);
15651
- const tvlPerShareNow = tvlInToken0Now.multipliedBy(1e18).dividedBy(adjustedSupplyNow.toString());
15652
- const tvlInToken0Bf = tvlBefore.amount0.multipliedBy(priceBefore.price).plus(tvlBefore.amount1);
15653
- const tvlPerShareBf = tvlInToken0Bf.multipliedBy(1e18).dividedBy(supplyBefore.toString());
15659
+ const poolKey = await this.getPoolKey(blockBefore);
15660
+ logger.verbose(`priceBefore: ${priceBefore.price.toString()}`);
15661
+ logger.verbose(`priceNow: ${priceNow.price.toString()}`);
15662
+ logger.verbose(`tvlBefore: ${JSON.stringify(tvlBefore)}`);
15663
+ logger.verbose(`tvlNow: ${JSON.stringify(tvlNow)}`);
15664
+ const isQuoteTokenToken0 = this.metadata.additionalInfo.quoteAsset.address.eq(poolKey.token0);
15665
+ logger.verbose(`isQuoteTokenToken0: ${isQuoteTokenToken0}`);
15666
+ let tvlBeforeInBaseAsset = Web3Number.fromWei(0, this.metadata.additionalInfo.quoteAsset.decimals);
15667
+ let tvlNowInBaseAsset = Web3Number.fromWei(0, this.metadata.additionalInfo.quoteAsset.decimals);
15668
+ if (!isQuoteTokenToken0) {
15669
+ tvlNowInBaseAsset = tvlNow.amount0.multipliedBy(priceNow.price).plus(tvlNow.amount1);
15670
+ tvlBeforeInBaseAsset = tvlBefore.amount0.multipliedBy(priceBefore.price).plus(tvlBefore.amount1);
15671
+ } else {
15672
+ tvlNowInBaseAsset = tvlNow.amount1.multipliedBy(1 / priceNow.price).plus(tvlNow.amount0);
15673
+ tvlBeforeInBaseAsset = tvlBefore.amount1.multipliedBy(1 / priceBefore.price).plus(tvlBefore.amount0);
15674
+ }
15675
+ const tvlPerShareNow = tvlNowInBaseAsset.multipliedBy(1e18).dividedBy(adjustedSupplyNow.toString());
15676
+ const tvlPerShareBf = tvlBeforeInBaseAsset.multipliedBy(1e18).dividedBy(supplyBefore.toString());
15654
15677
  const timeDiffSeconds = blockNowTime - blockBeforeInfo.timestamp;
15655
- logger.verbose(`tvlInToken0Now: ${tvlInToken0Now.toString()}`);
15656
- logger.verbose(`tvlInToken0Bf: ${tvlInToken0Bf.toString()}`);
15678
+ logger.verbose(`tvlNowInBaseAsset: ${tvlNowInBaseAsset.toString()}`);
15679
+ logger.verbose(`tvlBeforeInBaseAsset: ${tvlBeforeInBaseAsset.toString()}`);
15657
15680
  logger.verbose(`tvlPerShareNow: ${tvlPerShareNow.toString()}`);
15658
15681
  logger.verbose(`tvlPerShareBf: ${tvlPerShareBf.toString()}`);
15659
15682
  logger.verbose(`Price before: ${priceBefore.price.toString()}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strkfarm/sdk",
3
- "version": "1.1.48",
3
+ "version": "1.1.50",
4
4
  "description": "STRKFarm TS SDK (Meant for our internal use, but feel free to use it)",
5
5
  "typings": "dist/index.d.ts",
6
6
  "types": "dist/index.d.ts",
@@ -39,13 +39,22 @@ export class EkuboQuoter {
39
39
  * @param amount Can be negative too, which would mean to get exact amount out
40
40
  * @returns
41
41
  */
42
- async getQuote(fromToken: string, toToken: string, amount: Web3Number): Promise<EkuboQuote> {
42
+ async getQuote(fromToken: string, toToken: string, amount: Web3Number, retry = 0): Promise<EkuboQuote> {
43
43
  let _fromToken = amount.gt(0) ? fromToken : toToken;
44
44
  let _toToken = amount.gt(0) ? toToken : fromToken;
45
45
 
46
- const quote = await axios.get(this.ENDPOINT.replace("{{AMOUNT}}", amount.toWei()).replace("{{TOKEN_FROM_ADDRESS}}", _fromToken).replace("{{TOKEN_TO_ADDRESS}}", _toToken));
47
- console.log(`Ekubo quote from ${_fromToken} to ${_toToken} for ${amount.toString()}: ${JSON.stringify(quote.data)}`);
48
- return quote.data as EkuboQuote;
46
+ try {
47
+ const quote = await axios.get(this.ENDPOINT.replace("{{AMOUNT}}", amount.toWei()).replace("{{TOKEN_FROM_ADDRESS}}", _fromToken).replace("{{TOKEN_TO_ADDRESS}}", _toToken));
48
+ console.log(`Ekubo quote from ${_fromToken} to ${_toToken} for ${amount.toString()}: ${JSON.stringify(quote.data)}`);
49
+ return quote.data as EkuboQuote;
50
+ } catch (error: any) {
51
+ console.error(error.message, 'dassf', error.data);
52
+ if (retry < 10) {
53
+ await new Promise((resolve) => setTimeout(resolve, (retry + 1) * 5000));
54
+ return await this.getQuote(fromToken, toToken, amount, retry + 1);
55
+ }
56
+ throw error;
57
+ }
49
58
  }
50
59
 
51
60
  /**
@@ -416,22 +416,41 @@ export class EkuboCLVault extends BaseStrategy<
416
416
  const tvlBefore = await this._getTVL(blockBefore);
417
417
  const supplyBefore = await this.totalSupply(blockBefore);
418
418
  const priceBefore = await this.getCurrentPrice(blockBefore);
419
-
420
- const tvlInToken0Now = (tvlNow.amount0
421
- .multipliedBy(priceNow.price))
422
- .plus(tvlNow.amount1);
423
- const tvlPerShareNow = tvlInToken0Now
419
+ const poolKey = await this.getPoolKey(blockBefore);
420
+ logger.verbose(`priceBefore: ${priceBefore.price.toString()}`);
421
+ logger.verbose(`priceNow: ${priceNow.price.toString()}`);
422
+ logger.verbose(`tvlBefore: ${JSON.stringify(tvlBefore)}`);
423
+ logger.verbose(`tvlNow: ${JSON.stringify(tvlNow)}`);
424
+
425
+ const isQuoteTokenToken0 = this.metadata.additionalInfo.quoteAsset.address.eq(poolKey.token0);
426
+ logger.verbose(`isQuoteTokenToken0: ${isQuoteTokenToken0}`);
427
+ let tvlBeforeInBaseAsset = Web3Number.fromWei(0, this.metadata.additionalInfo.quoteAsset.decimals);
428
+ let tvlNowInBaseAsset = Web3Number.fromWei(0, this.metadata.additionalInfo.quoteAsset.decimals);
429
+ if (!isQuoteTokenToken0) {
430
+ tvlNowInBaseAsset = (tvlNow.amount0
431
+ .multipliedBy(priceNow.price))
432
+ .plus(tvlNow.amount1);
433
+ tvlBeforeInBaseAsset = (tvlBefore.amount0
434
+ .multipliedBy(priceBefore.price))
435
+ .plus(tvlBefore.amount1);
436
+ } else {
437
+ tvlNowInBaseAsset = (tvlNow.amount1
438
+ .multipliedBy(1 / priceNow.price))
439
+ .plus(tvlNow.amount0);
440
+ tvlBeforeInBaseAsset = (tvlBefore.amount1
441
+ .multipliedBy(1 / priceBefore.price))
442
+ .plus(tvlBefore.amount0);
443
+ }
444
+ const tvlPerShareNow = tvlNowInBaseAsset
424
445
  .multipliedBy(1e18)
425
446
  .dividedBy(adjustedSupplyNow.toString());
426
- const tvlInToken0Bf = (tvlBefore.amount0
427
- .multipliedBy(priceBefore.price))
428
- .plus(tvlBefore.amount1);
429
- const tvlPerShareBf = tvlInToken0Bf
447
+
448
+ const tvlPerShareBf = tvlBeforeInBaseAsset
430
449
  .multipliedBy(1e18)
431
450
  .dividedBy(supplyBefore.toString());
432
451
  const timeDiffSeconds = blockNowTime - blockBeforeInfo.timestamp;
433
- logger.verbose(`tvlInToken0Now: ${tvlInToken0Now.toString()}`);
434
- logger.verbose(`tvlInToken0Bf: ${tvlInToken0Bf.toString()}`);
452
+ logger.verbose(`tvlNowInBaseAsset: ${tvlNowInBaseAsset.toString()}`);
453
+ logger.verbose(`tvlBeforeInBaseAsset: ${tvlBeforeInBaseAsset.toString()}`);
435
454
  logger.verbose(`tvlPerShareNow: ${tvlPerShareNow.toString()}`);
436
455
  logger.verbose(`tvlPerShareBf: ${tvlPerShareBf.toString()}`);
437
456
  logger.verbose(`Price before: ${priceBefore.price.toString()}`);