@strkfarm/sdk 1.0.15 → 1.0.17

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_starknet5 = require("starknet");
32
+ var import_starknet6 = require("starknet");
33
33
  var crypto2 = __toESM(require("crypto"));
34
34
 
35
35
  // src/utils/encrypt.ts
@@ -101,7 +101,14 @@ var FatalError = class extends Error {
101
101
  this.name = "FatalError";
102
102
  }
103
103
  };
104
- var tokens = [];
104
+ var tokens = [{
105
+ name: "Starknet",
106
+ symbol: "STRK",
107
+ logo: "https://assets.coingecko.com/coins/images/26433/small/starknet.png",
108
+ address: "0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d",
109
+ decimals: 18,
110
+ coingeckId: "starknet"
111
+ }];
105
112
  var Global = class {
106
113
  static fatalError(message, err) {
107
114
  logger.error(message);
@@ -114,6 +121,9 @@ var Global = class {
114
121
  logger.error(`${url}: ${message}`);
115
122
  console.error(err);
116
123
  }
124
+ static getDefaultTokens() {
125
+ return tokens;
126
+ }
117
127
  static async getTokens() {
118
128
  if (tokens.length) return tokens;
119
129
  const data = await import_axios.default.get("https://starknet.api.avnu.fi/v1/starknet/tokens");
@@ -127,6 +137,7 @@ var Global = class {
127
137
  symbol: token.symbol,
128
138
  address: token.address,
129
139
  decimals: token.decimals,
140
+ logo: token.logoUri,
130
141
  coingeckId: token.extensions.coingeckoId
131
142
  });
132
143
  });
@@ -155,10 +166,12 @@ var Web3Number = class _Web3Number extends import_bignumber.default {
155
166
  return this.mul(10 ** this.decimals).toFixed(0);
156
167
  }
157
168
  multipliedBy(value) {
158
- return new _Web3Number(this.mul(value).toString(), this.decimals);
169
+ let _value = Number(value).toFixed(6);
170
+ return new _Web3Number(this.mul(_value).toString(), this.decimals);
159
171
  }
160
172
  dividedBy(value) {
161
- return new _Web3Number(this.div(value).toString(), this.decimals);
173
+ let _value = Number(value).toFixed(6);
174
+ return new _Web3Number(this.div(_value).toString(), this.decimals);
162
175
  }
163
176
  plus(value) {
164
177
  return new _Web3Number(this.add(value).toString(), this.decimals);
@@ -178,9 +191,31 @@ Web3Number.config({ DECIMAL_PLACES: 18 });
178
191
 
179
192
  // src/dataTypes/address.ts
180
193
  var import_starknet = require("starknet");
181
-
182
- // src/modules/pricer.ts
183
- var CoinMarketCap = require("coinmarketcap-api");
194
+ var ContractAddr = class _ContractAddr {
195
+ constructor(address) {
196
+ this.address = _ContractAddr.standardise(address);
197
+ }
198
+ static from(address) {
199
+ return new _ContractAddr(address);
200
+ }
201
+ eq(other) {
202
+ return this.address === other.address;
203
+ }
204
+ eqString(other) {
205
+ return this.address === _ContractAddr.standardise(other);
206
+ }
207
+ static standardise(address) {
208
+ let _a = address;
209
+ if (!address) {
210
+ _a = "0";
211
+ }
212
+ const a = import_starknet.num.getHexString(import_starknet.num.getDecimalString(_a.toString()));
213
+ return a;
214
+ }
215
+ static eqString(a, b) {
216
+ return _ContractAddr.standardise(a) === _ContractAddr.standardise(b);
217
+ }
218
+ };
184
219
 
185
220
  // src/modules/pragma.ts
186
221
  var import_starknet2 = require("starknet");
@@ -238,6 +273,7 @@ var _ZkLend = class _ZkLend extends ILending {
238
273
  name: pool.token.name,
239
274
  symbol: pool.token.symbol,
240
275
  address: savedTokenInfo?.address || "",
276
+ logo: "",
241
277
  decimals: pool.token.decimals,
242
278
  borrowFactor: Web3Number.fromWei(pool.borrow_factor.value, pool.borrow_factor.decimals),
243
279
  collareralFactor
@@ -347,12 +383,39 @@ var _ZkLend = class _ZkLend extends ILending {
347
383
  _ZkLend.POOLS_URL = "https://app.zklend.com/api/pools";
348
384
  var ZkLend = _ZkLend;
349
385
 
386
+ // src/modules/pricer-from-api.ts
387
+ var import_axios4 = __toESM(require("axios"));
388
+
350
389
  // src/interfaces/common.ts
351
390
  var import_starknet3 = require("starknet");
352
391
 
353
392
  // src/strategies/autoCompounderStrk.ts
354
393
  var import_starknet4 = require("starknet");
355
394
 
395
+ // src/strategies/vesu-rebalance.ts
396
+ var import_starknet5 = require("starknet");
397
+ var import_axios5 = __toESM(require("axios"));
398
+ var _description = "Automatically diversify {{TOKEN}} holdings into different Vesu pools while reducing risk and maximizing yield. Defi spring STRK Rewards are auto-compounded as well.";
399
+ var _protocol = { name: "Vesu", logo: "https://static-assets-8zct.onrender.com/integrations/vesu/logo.png" };
400
+ var _riskFactor = [
401
+ { type: "SMART_CONTRACT_RISK" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25 },
402
+ { type: "TECHNICAL_RISK" /* TECHNICAL_RISK */, value: 0.5, weight: 25 },
403
+ { type: "COUNTERPARTY_RISK" /* COUNTERPARTY_RISK */, value: 1, weight: 50 }
404
+ ];
405
+ var VesuRebalanceStrategies = [{
406
+ name: "Vesu STRK",
407
+ description: _description.replace("{{TOKEN}}", "STRK"),
408
+ address: ContractAddr.from("0xeeb729d554ae486387147b13a9c8871bc7991d454e8b5ff570d4bf94de71e1"),
409
+ type: "ERC4626",
410
+ depositTokens: [Global.getDefaultTokens().find((t) => t.symbol === "STRK")],
411
+ protocols: [_protocol],
412
+ maxTVL: Web3Number.fromWei("0", 18),
413
+ risk: {
414
+ riskFactor: _riskFactor,
415
+ netRisk: _riskFactor.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / 100
416
+ }
417
+ }];
418
+
356
419
  // src/notifs/telegram.ts
357
420
  var import_node_telegram_bot_api = __toESM(require("node-telegram-bot-api"));
358
421
 
@@ -392,7 +455,7 @@ var Store = class _Store {
392
455
  logger.warn(`This not stored anywhere, please you backup this password for future use`);
393
456
  logger.warn(`\u26A0\uFE0F=========================================\u26A0\uFE0F`);
394
457
  }
395
- getAccount(accountKey, txVersion = import_starknet5.constants.TRANSACTION_VERSION.V2) {
458
+ getAccount(accountKey, txVersion = import_starknet6.constants.TRANSACTION_VERSION.V2) {
396
459
  const accounts = this.loadAccounts();
397
460
  logger.verbose(`nAccounts loaded for network: ${Object.keys(accounts).length}`);
398
461
  const data = accounts[accountKey];
@@ -401,7 +464,7 @@ var Store = class _Store {
401
464
  }
402
465
  logger.verbose(`Account loaded: ${accountKey} from network: ${this.config.network}`);
403
466
  logger.verbose(`Address: ${data.address}`);
404
- const acc = new import_starknet5.Account(this.config.provider, data.address, data.pk, void 0, txVersion);
467
+ const acc = new import_starknet6.Account(this.config.provider, data.address, data.pk, void 0, txVersion);
405
468
  return acc;
406
469
  }
407
470
  addAccount(accountKey, address, pk) {
@@ -465,11 +528,11 @@ var Store = class _Store {
465
528
 
466
529
  // src/cli.ts
467
530
  var import_chalk = __toESM(require("chalk"));
468
- var import_starknet6 = require("starknet");
531
+ var import_starknet7 = require("starknet");
469
532
  var program = new import_commander.Command();
470
533
  var getConfig = (network) => {
471
534
  return {
472
- provider: new import_starknet6.RpcProvider({
535
+ provider: new import_starknet7.RpcProvider({
473
536
  nodeUrl: "https://starknet-mainnet.public.blastapi.io"
474
537
  }),
475
538
  network,
package/dist/cli.mjs CHANGED
@@ -1,10 +1,4 @@
1
1
  #!/usr/bin/env node
2
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
3
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
4
- }) : x)(function(x) {
5
- if (typeof require !== "undefined") return require.apply(this, arguments);
6
- throw Error('Dynamic require of "' + x + '" is not supported');
7
- });
8
2
 
9
3
  // src/cli.ts
10
4
  import { Command } from "commander";
@@ -84,7 +78,14 @@ var FatalError = class extends Error {
84
78
  this.name = "FatalError";
85
79
  }
86
80
  };
87
- var tokens = [];
81
+ var tokens = [{
82
+ name: "Starknet",
83
+ symbol: "STRK",
84
+ logo: "https://assets.coingecko.com/coins/images/26433/small/starknet.png",
85
+ address: "0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d",
86
+ decimals: 18,
87
+ coingeckId: "starknet"
88
+ }];
88
89
  var Global = class {
89
90
  static fatalError(message, err) {
90
91
  logger.error(message);
@@ -97,6 +98,9 @@ var Global = class {
97
98
  logger.error(`${url}: ${message}`);
98
99
  console.error(err);
99
100
  }
101
+ static getDefaultTokens() {
102
+ return tokens;
103
+ }
100
104
  static async getTokens() {
101
105
  if (tokens.length) return tokens;
102
106
  const data = await axios.get("https://starknet.api.avnu.fi/v1/starknet/tokens");
@@ -110,6 +114,7 @@ var Global = class {
110
114
  symbol: token.symbol,
111
115
  address: token.address,
112
116
  decimals: token.decimals,
117
+ logo: token.logoUri,
113
118
  coingeckId: token.extensions.coingeckoId
114
119
  });
115
120
  });
@@ -138,10 +143,12 @@ var Web3Number = class _Web3Number extends BigNumber {
138
143
  return this.mul(10 ** this.decimals).toFixed(0);
139
144
  }
140
145
  multipliedBy(value) {
141
- return new _Web3Number(this.mul(value).toString(), this.decimals);
146
+ let _value = Number(value).toFixed(6);
147
+ return new _Web3Number(this.mul(_value).toString(), this.decimals);
142
148
  }
143
149
  dividedBy(value) {
144
- return new _Web3Number(this.div(value).toString(), this.decimals);
150
+ let _value = Number(value).toFixed(6);
151
+ return new _Web3Number(this.div(_value).toString(), this.decimals);
145
152
  }
146
153
  plus(value) {
147
154
  return new _Web3Number(this.add(value).toString(), this.decimals);
@@ -161,9 +168,31 @@ Web3Number.config({ DECIMAL_PLACES: 18 });
161
168
 
162
169
  // src/dataTypes/address.ts
163
170
  import { num } from "starknet";
164
-
165
- // src/modules/pricer.ts
166
- var CoinMarketCap = __require("coinmarketcap-api");
171
+ var ContractAddr = class _ContractAddr {
172
+ constructor(address) {
173
+ this.address = _ContractAddr.standardise(address);
174
+ }
175
+ static from(address) {
176
+ return new _ContractAddr(address);
177
+ }
178
+ eq(other) {
179
+ return this.address === other.address;
180
+ }
181
+ eqString(other) {
182
+ return this.address === _ContractAddr.standardise(other);
183
+ }
184
+ static standardise(address) {
185
+ let _a = address;
186
+ if (!address) {
187
+ _a = "0";
188
+ }
189
+ const a = num.getHexString(num.getDecimalString(_a.toString()));
190
+ return a;
191
+ }
192
+ static eqString(a, b) {
193
+ return _ContractAddr.standardise(a) === _ContractAddr.standardise(b);
194
+ }
195
+ };
167
196
 
168
197
  // src/modules/pragma.ts
169
198
  import { Contract } from "starknet";
@@ -221,6 +250,7 @@ var _ZkLend = class _ZkLend extends ILending {
221
250
  name: pool.token.name,
222
251
  symbol: pool.token.symbol,
223
252
  address: savedTokenInfo?.address || "",
253
+ logo: "",
224
254
  decimals: pool.token.decimals,
225
255
  borrowFactor: Web3Number.fromWei(pool.borrow_factor.value, pool.borrow_factor.decimals),
226
256
  collareralFactor
@@ -330,12 +360,39 @@ var _ZkLend = class _ZkLend extends ILending {
330
360
  _ZkLend.POOLS_URL = "https://app.zklend.com/api/pools";
331
361
  var ZkLend = _ZkLend;
332
362
 
363
+ // src/modules/pricer-from-api.ts
364
+ import axios4 from "axios";
365
+
333
366
  // src/interfaces/common.ts
334
367
  import { RpcProvider as RpcProvider2 } from "starknet";
335
368
 
336
369
  // src/strategies/autoCompounderStrk.ts
337
370
  import { Contract as Contract2, uint256 } from "starknet";
338
371
 
372
+ // src/strategies/vesu-rebalance.ts
373
+ import { CairoCustomEnum, Contract as Contract3, num as num2, uint256 as uint2562 } from "starknet";
374
+ import axios5 from "axios";
375
+ var _description = "Automatically diversify {{TOKEN}} holdings into different Vesu pools while reducing risk and maximizing yield. Defi spring STRK Rewards are auto-compounded as well.";
376
+ var _protocol = { name: "Vesu", logo: "https://static-assets-8zct.onrender.com/integrations/vesu/logo.png" };
377
+ var _riskFactor = [
378
+ { type: "SMART_CONTRACT_RISK" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25 },
379
+ { type: "TECHNICAL_RISK" /* TECHNICAL_RISK */, value: 0.5, weight: 25 },
380
+ { type: "COUNTERPARTY_RISK" /* COUNTERPARTY_RISK */, value: 1, weight: 50 }
381
+ ];
382
+ var VesuRebalanceStrategies = [{
383
+ name: "Vesu STRK",
384
+ description: _description.replace("{{TOKEN}}", "STRK"),
385
+ address: ContractAddr.from("0xeeb729d554ae486387147b13a9c8871bc7991d454e8b5ff570d4bf94de71e1"),
386
+ type: "ERC4626",
387
+ depositTokens: [Global.getDefaultTokens().find((t) => t.symbol === "STRK")],
388
+ protocols: [_protocol],
389
+ maxTVL: Web3Number.fromWei("0", 18),
390
+ risk: {
391
+ riskFactor: _riskFactor,
392
+ netRisk: _riskFactor.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / 100
393
+ }
394
+ }];
395
+
339
396
  // src/notifs/telegram.ts
340
397
  import TelegramBot from "node-telegram-bot-api";
341
398