@strkfarm/sdk 1.0.27 → 1.0.29

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/cli.js CHANGED
@@ -29,7 +29,7 @@ var import_inquirer = __toESM(require("inquirer"));
29
29
 
30
30
  // src/utils/store.ts
31
31
  var import_fs = __toESM(require("fs"));
32
- var import_starknet9 = require("starknet");
32
+ var import_starknet10 = require("starknet");
33
33
  var crypto2 = __toESM(require("crypto"));
34
34
 
35
35
  // src/utils/encrypt.ts
@@ -101,19 +101,19 @@ var _Web3Number = class extends import_bignumber.default {
101
101
  return this.mul(10 ** this.decimals).toFixed(0);
102
102
  }
103
103
  multipliedBy(value) {
104
- let _value = Number(value).toFixed(this.maxToFixedDecimals());
104
+ const _value = this.getStandardString(value);
105
105
  return this.construct(this.mul(_value).toString(), this.decimals);
106
106
  }
107
107
  dividedBy(value) {
108
- let _value = Number(value).toFixed(this.maxToFixedDecimals());
108
+ const _value = this.getStandardString(value);
109
109
  return this.construct(this.div(_value).toString(), this.decimals);
110
110
  }
111
111
  plus(value) {
112
- const _value = Number(value).toFixed(this.maxToFixedDecimals());
112
+ const _value = this.getStandardString(value);
113
113
  return this.construct(this.add(_value).toString(), this.decimals);
114
114
  }
115
115
  minus(n, base) {
116
- const _value = Number(n).toFixed(this.maxToFixedDecimals());
116
+ const _value = this.getStandardString(n);
117
117
  return this.construct(super.minus(_value, base).toString(), this.decimals);
118
118
  }
119
119
  construct(value, decimals) {
@@ -129,11 +129,17 @@ var _Web3Number = class extends import_bignumber.default {
129
129
  return this.toString();
130
130
  }
131
131
  maxToFixedDecimals() {
132
- return Math.min(this.decimals, 13);
132
+ return Math.min(this.decimals, 18);
133
+ }
134
+ getStandardString(value) {
135
+ if (typeof value == "string") {
136
+ return value;
137
+ }
138
+ return value.toFixed(this.maxToFixedDecimals());
133
139
  }
134
140
  };
135
- import_bignumber.default.config({ DECIMAL_PLACES: 18 });
136
- _Web3Number.config({ DECIMAL_PLACES: 18 });
141
+ import_bignumber.default.config({ DECIMAL_PLACES: 18, ROUNDING_MODE: import_bignumber.default.ROUND_DOWN });
142
+ _Web3Number.config({ DECIMAL_PLACES: 18, ROUNDING_MODE: import_bignumber.default.ROUND_DOWN });
137
143
 
138
144
  // src/dataTypes/bignumber.node.ts
139
145
  var Web3Number = class _Web3Number2 extends _Web3Number {
@@ -205,42 +211,48 @@ var defaultTokens = [{
205
211
  logo: "https://assets.coingecko.com/coins/images/26433/small/starknet.png",
206
212
  address: ContractAddr.from("0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d"),
207
213
  decimals: 18,
208
- coingeckId: "starknet"
214
+ coingeckId: "starknet",
215
+ displayDecimals: 2
209
216
  }, {
210
217
  name: "xSTRK",
211
218
  symbol: "xSTRK",
212
219
  logo: "https://dashboard.endur.fi/endur-fi.svg",
213
220
  address: ContractAddr.from("0x028d709c875c0ceac3dce7065bec5328186dc89fe254527084d1689910954b0a"),
214
221
  decimals: 18,
215
- coingeckId: void 0
222
+ coingeckId: void 0,
223
+ displayDecimals: 2
216
224
  }, {
217
225
  name: "ETH",
218
226
  symbol: "ETH",
219
227
  logo: "https://opbnb.bscscan.com/token/images/ether.svg",
220
228
  address: ContractAddr.from("0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7"),
221
229
  decimals: 18,
222
- coingeckId: void 0
230
+ coingeckId: void 0,
231
+ displayDecimals: 4
223
232
  }, {
224
233
  name: "USDC",
225
234
  symbol: "USDC",
226
235
  logo: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png",
227
236
  address: ContractAddr.from("0x53c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8"),
228
237
  decimals: 6,
229
- coingeckId: void 0
238
+ coingeckId: void 0,
239
+ displayDecimals: 2
230
240
  }, {
231
241
  name: "USDT",
232
242
  symbol: "USDT",
233
243
  logo: "https://assets.coingecko.com/coins/images/325/small/Tether.png",
234
244
  address: ContractAddr.from("0x68f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8"),
235
245
  decimals: 6,
236
- coingeckId: void 0
246
+ coingeckId: void 0,
247
+ displayDecimals: 2
237
248
  }, {
238
249
  name: "WBTC",
239
250
  symbol: "WBTC",
240
251
  logo: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599/logo.png",
241
252
  address: ContractAddr.from("0x3fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac"),
242
253
  decimals: 8,
243
- coingeckId: void 0
254
+ coingeckId: void 0,
255
+ displayDecimals: 6
244
256
  }];
245
257
  var tokens = defaultTokens;
246
258
  var Global = class _Global {
@@ -272,7 +284,8 @@ var Global = class _Global {
272
284
  address: ContractAddr.from(token.address),
273
285
  decimals: token.decimals,
274
286
  logo: token.logoUri,
275
- coingeckId: token.extensions.coingeckoId
287
+ coingeckId: token.extensions.coingeckoId,
288
+ displayDecimals: 2
276
289
  });
277
290
  });
278
291
  console.log(tokens);
@@ -362,7 +375,8 @@ var _ZkLend = class _ZkLend extends ILending {
362
375
  logo: "",
363
376
  decimals: pool.token.decimals,
364
377
  borrowFactor: Web3Number2.fromWei(pool.borrow_factor.value, pool.borrow_factor.decimals),
365
- collareralFactor
378
+ collareralFactor,
379
+ displayDecimals: 2
366
380
  };
367
381
  this.tokens.push(token);
368
382
  });
@@ -604,32 +618,42 @@ var VesuRebalanceStrategies = [{
604
618
  }];
605
619
 
606
620
  // src/strategies/ekubo-cl-vault.ts
621
+ var import_starknet9 = require("starknet");
622
+
623
+ // src/modules/harvests.ts
607
624
  var import_starknet8 = require("starknet");
608
- var _description2 = "Automatically rebalances liquidity near current price to maximize yield while reducing the necessity to manually rebalance positions frequently. Fees earn and Defi spring rewards are automatically re-invested.";
625
+
626
+ // src/strategies/ekubo-cl-vault.ts
627
+ var _description2 = "Deploys your {{POOL_NAME}} into an Ekubo liquidity pool, automatically rebalancing positions around the current price to optimize yield and reduce the need for manual adjustments. Trading fees and DeFi Spring rewards are automatically compounded back into the strategy. In return, you receive an ERC-20 token representing your share of the strategy. The APY is calculated based on 7-day historical performance.";
609
628
  var _protocol2 = { name: "Ekubo", logo: "https://app.ekubo.org/favicon.ico" };
610
629
  var _riskFactor2 = [
611
630
  { type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25 },
612
631
  { type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value: 1, weight: 75 }
613
632
  ];
633
+ var AUDIT_URL2 = "https://assets.strkfarm.com/strkfarm/audit_report_vesu_and_ekubo_strats.pdf";
614
634
  var EkuboCLVaultStrategies = [{
615
635
  name: "Ekubo xSTRK/STRK",
616
- description: _description2,
636
+ description: _description2.replace("{{POOL_NAME}}", "xSTRK/STRK"),
617
637
  address: ContractAddr.from("0x01f083b98674bc21effee29ef443a00c7b9a500fd92cf30341a3da12c73f2324"),
618
638
  type: "Other",
619
- depositTokens: [Global.getDefaultTokens().find((t) => t.symbol === "STRK"), Global.getDefaultTokens().find((t) => t.symbol === "xSTRK")],
639
+ // must be same order as poolKey token0 and token1
640
+ depositTokens: [Global.getDefaultTokens().find((t) => t.symbol === "xSTRK"), Global.getDefaultTokens().find((t) => t.symbol === "STRK")],
620
641
  protocols: [_protocol2],
642
+ auditUrl: AUDIT_URL2,
621
643
  maxTVL: Web3Number.fromWei("0", 18),
622
644
  risk: {
623
645
  riskFactor: _riskFactor2,
624
646
  netRisk: _riskFactor2.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor2.reduce((acc, curr) => acc + curr.weight, 0),
625
647
  notARisks: getNoRiskTags(_riskFactor2)
626
648
  },
649
+ apyMethodology: "APY based on 7-day historical performance, including fees and rewards.",
627
650
  additionalInfo: {
628
651
  newBounds: {
629
652
  lower: -1,
630
653
  upper: 1
631
654
  },
632
- lstContract: ContractAddr.from("0x028d709c875c0ceac3dce7065bec5328186dc89fe254527084d1689910954b0a")
655
+ lstContract: ContractAddr.from("0x028d709c875c0ceac3dce7065bec5328186dc89fe254527084d1689910954b0a"),
656
+ feeBps: 1e3
633
657
  }
634
658
  }];
635
659
 
@@ -672,7 +696,7 @@ var Store = class _Store {
672
696
  logger.warn(`This not stored anywhere, please you backup this password for future use`);
673
697
  logger.warn(`\u26A0\uFE0F=========================================\u26A0\uFE0F`);
674
698
  }
675
- getAccount(accountKey, txVersion = import_starknet9.constants.TRANSACTION_VERSION.V2) {
699
+ getAccount(accountKey, txVersion = import_starknet10.constants.TRANSACTION_VERSION.V2) {
676
700
  const accounts = this.loadAccounts();
677
701
  logger.verbose(`nAccounts loaded for network: ${Object.keys(accounts).length}`);
678
702
  const data = accounts[accountKey];
@@ -681,7 +705,7 @@ var Store = class _Store {
681
705
  }
682
706
  logger.verbose(`Account loaded: ${accountKey} from network: ${this.config.network}`);
683
707
  logger.verbose(`Address: ${data.address}`);
684
- const acc = new import_starknet9.Account(this.config.provider, data.address, data.pk, void 0, txVersion);
708
+ const acc = new import_starknet10.Account(this.config.provider, data.address, data.pk, void 0, txVersion);
685
709
  return acc;
686
710
  }
687
711
  addAccount(accountKey, address, pk) {
@@ -745,11 +769,11 @@ var Store = class _Store {
745
769
 
746
770
  // src/cli.ts
747
771
  var import_chalk = __toESM(require("chalk"));
748
- var import_starknet10 = require("starknet");
772
+ var import_starknet11 = require("starknet");
749
773
  var program = new import_commander.Command();
750
774
  var getConfig = (network) => {
751
775
  return {
752
- provider: new import_starknet10.RpcProvider({
776
+ provider: new import_starknet11.RpcProvider({
753
777
  nodeUrl: "https://starknet-mainnet.public.blastapi.io"
754
778
  }),
755
779
  network,
package/dist/cli.mjs CHANGED
@@ -6,7 +6,7 @@ import inquirer from "inquirer";
6
6
 
7
7
  // src/utils/store.ts
8
8
  import fs, { readFileSync, writeFileSync } from "fs";
9
- import { Account, constants } from "starknet";
9
+ import { Account as Account2, constants } from "starknet";
10
10
  import * as crypto2 from "crypto";
11
11
 
12
12
  // src/utils/encrypt.ts
@@ -78,19 +78,19 @@ var _Web3Number = class extends BigNumber {
78
78
  return this.mul(10 ** this.decimals).toFixed(0);
79
79
  }
80
80
  multipliedBy(value) {
81
- let _value = Number(value).toFixed(this.maxToFixedDecimals());
81
+ const _value = this.getStandardString(value);
82
82
  return this.construct(this.mul(_value).toString(), this.decimals);
83
83
  }
84
84
  dividedBy(value) {
85
- let _value = Number(value).toFixed(this.maxToFixedDecimals());
85
+ const _value = this.getStandardString(value);
86
86
  return this.construct(this.div(_value).toString(), this.decimals);
87
87
  }
88
88
  plus(value) {
89
- const _value = Number(value).toFixed(this.maxToFixedDecimals());
89
+ const _value = this.getStandardString(value);
90
90
  return this.construct(this.add(_value).toString(), this.decimals);
91
91
  }
92
92
  minus(n, base) {
93
- const _value = Number(n).toFixed(this.maxToFixedDecimals());
93
+ const _value = this.getStandardString(n);
94
94
  return this.construct(super.minus(_value, base).toString(), this.decimals);
95
95
  }
96
96
  construct(value, decimals) {
@@ -106,11 +106,17 @@ var _Web3Number = class extends BigNumber {
106
106
  return this.toString();
107
107
  }
108
108
  maxToFixedDecimals() {
109
- return Math.min(this.decimals, 13);
109
+ return Math.min(this.decimals, 18);
110
+ }
111
+ getStandardString(value) {
112
+ if (typeof value == "string") {
113
+ return value;
114
+ }
115
+ return value.toFixed(this.maxToFixedDecimals());
110
116
  }
111
117
  };
112
- BigNumber.config({ DECIMAL_PLACES: 18 });
113
- _Web3Number.config({ DECIMAL_PLACES: 18 });
118
+ BigNumber.config({ DECIMAL_PLACES: 18, ROUNDING_MODE: BigNumber.ROUND_DOWN });
119
+ _Web3Number.config({ DECIMAL_PLACES: 18, ROUNDING_MODE: BigNumber.ROUND_DOWN });
114
120
 
115
121
  // src/dataTypes/bignumber.node.ts
116
122
  var Web3Number = class _Web3Number2 extends _Web3Number {
@@ -182,42 +188,48 @@ var defaultTokens = [{
182
188
  logo: "https://assets.coingecko.com/coins/images/26433/small/starknet.png",
183
189
  address: ContractAddr.from("0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d"),
184
190
  decimals: 18,
185
- coingeckId: "starknet"
191
+ coingeckId: "starknet",
192
+ displayDecimals: 2
186
193
  }, {
187
194
  name: "xSTRK",
188
195
  symbol: "xSTRK",
189
196
  logo: "https://dashboard.endur.fi/endur-fi.svg",
190
197
  address: ContractAddr.from("0x028d709c875c0ceac3dce7065bec5328186dc89fe254527084d1689910954b0a"),
191
198
  decimals: 18,
192
- coingeckId: void 0
199
+ coingeckId: void 0,
200
+ displayDecimals: 2
193
201
  }, {
194
202
  name: "ETH",
195
203
  symbol: "ETH",
196
204
  logo: "https://opbnb.bscscan.com/token/images/ether.svg",
197
205
  address: ContractAddr.from("0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7"),
198
206
  decimals: 18,
199
- coingeckId: void 0
207
+ coingeckId: void 0,
208
+ displayDecimals: 4
200
209
  }, {
201
210
  name: "USDC",
202
211
  symbol: "USDC",
203
212
  logo: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png",
204
213
  address: ContractAddr.from("0x53c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8"),
205
214
  decimals: 6,
206
- coingeckId: void 0
215
+ coingeckId: void 0,
216
+ displayDecimals: 2
207
217
  }, {
208
218
  name: "USDT",
209
219
  symbol: "USDT",
210
220
  logo: "https://assets.coingecko.com/coins/images/325/small/Tether.png",
211
221
  address: ContractAddr.from("0x68f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8"),
212
222
  decimals: 6,
213
- coingeckId: void 0
223
+ coingeckId: void 0,
224
+ displayDecimals: 2
214
225
  }, {
215
226
  name: "WBTC",
216
227
  symbol: "WBTC",
217
228
  logo: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599/logo.png",
218
229
  address: ContractAddr.from("0x3fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac"),
219
230
  decimals: 8,
220
- coingeckId: void 0
231
+ coingeckId: void 0,
232
+ displayDecimals: 6
221
233
  }];
222
234
  var tokens = defaultTokens;
223
235
  var Global = class _Global {
@@ -249,7 +261,8 @@ var Global = class _Global {
249
261
  address: ContractAddr.from(token.address),
250
262
  decimals: token.decimals,
251
263
  logo: token.logoUri,
252
- coingeckId: token.extensions.coingeckoId
264
+ coingeckId: token.extensions.coingeckoId,
265
+ displayDecimals: 2
253
266
  });
254
267
  });
255
268
  console.log(tokens);
@@ -339,7 +352,8 @@ var _ZkLend = class _ZkLend extends ILending {
339
352
  logo: "",
340
353
  decimals: pool.token.decimals,
341
354
  borrowFactor: Web3Number2.fromWei(pool.borrow_factor.value, pool.borrow_factor.decimals),
342
- collareralFactor
355
+ collareralFactor,
356
+ displayDecimals: 2
343
357
  };
344
358
  this.tokens.push(token);
345
359
  });
@@ -581,32 +595,42 @@ var VesuRebalanceStrategies = [{
581
595
  }];
582
596
 
583
597
  // src/strategies/ekubo-cl-vault.ts
584
- import { Contract as Contract5, uint256 as uint2564 } from "starknet";
585
- var _description2 = "Automatically rebalances liquidity near current price to maximize yield while reducing the necessity to manually rebalance positions frequently. Fees earn and Defi spring rewards are automatically re-invested.";
598
+ import { Contract as Contract6, num as num3, uint256 as uint2564 } from "starknet";
599
+
600
+ // src/modules/harvests.ts
601
+ import { Contract as Contract5 } from "starknet";
602
+
603
+ // src/strategies/ekubo-cl-vault.ts
604
+ var _description2 = "Deploys your {{POOL_NAME}} into an Ekubo liquidity pool, automatically rebalancing positions around the current price to optimize yield and reduce the need for manual adjustments. Trading fees and DeFi Spring rewards are automatically compounded back into the strategy. In return, you receive an ERC-20 token representing your share of the strategy. The APY is calculated based on 7-day historical performance.";
586
605
  var _protocol2 = { name: "Ekubo", logo: "https://app.ekubo.org/favicon.ico" };
587
606
  var _riskFactor2 = [
588
607
  { type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25 },
589
608
  { type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value: 1, weight: 75 }
590
609
  ];
610
+ var AUDIT_URL2 = "https://assets.strkfarm.com/strkfarm/audit_report_vesu_and_ekubo_strats.pdf";
591
611
  var EkuboCLVaultStrategies = [{
592
612
  name: "Ekubo xSTRK/STRK",
593
- description: _description2,
613
+ description: _description2.replace("{{POOL_NAME}}", "xSTRK/STRK"),
594
614
  address: ContractAddr.from("0x01f083b98674bc21effee29ef443a00c7b9a500fd92cf30341a3da12c73f2324"),
595
615
  type: "Other",
596
- depositTokens: [Global.getDefaultTokens().find((t) => t.symbol === "STRK"), Global.getDefaultTokens().find((t) => t.symbol === "xSTRK")],
616
+ // must be same order as poolKey token0 and token1
617
+ depositTokens: [Global.getDefaultTokens().find((t) => t.symbol === "xSTRK"), Global.getDefaultTokens().find((t) => t.symbol === "STRK")],
597
618
  protocols: [_protocol2],
619
+ auditUrl: AUDIT_URL2,
598
620
  maxTVL: Web3Number.fromWei("0", 18),
599
621
  risk: {
600
622
  riskFactor: _riskFactor2,
601
623
  netRisk: _riskFactor2.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor2.reduce((acc, curr) => acc + curr.weight, 0),
602
624
  notARisks: getNoRiskTags(_riskFactor2)
603
625
  },
626
+ apyMethodology: "APY based on 7-day historical performance, including fees and rewards.",
604
627
  additionalInfo: {
605
628
  newBounds: {
606
629
  lower: -1,
607
630
  upper: 1
608
631
  },
609
- lstContract: ContractAddr.from("0x028d709c875c0ceac3dce7065bec5328186dc89fe254527084d1689910954b0a")
632
+ lstContract: ContractAddr.from("0x028d709c875c0ceac3dce7065bec5328186dc89fe254527084d1689910954b0a"),
633
+ feeBps: 1e3
610
634
  }
611
635
  }];
612
636
 
@@ -658,7 +682,7 @@ var Store = class _Store {
658
682
  }
659
683
  logger.verbose(`Account loaded: ${accountKey} from network: ${this.config.network}`);
660
684
  logger.verbose(`Address: ${data.address}`);
661
- const acc = new Account(this.config.provider, data.address, data.pk, void 0, txVersion);
685
+ const acc = new Account2(this.config.provider, data.address, data.pk, void 0, txVersion);
662
686
  return acc;
663
687
  }
664
688
  addAccount(accountKey, address, pk) {