@strkfarm/sdk 1.1.4 → 1.1.6
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/index.browser.global.js +541 -253
- package/dist/index.browser.mjs +364 -90
- package/dist/index.d.ts +10 -2
- package/dist/index.js +367 -95
- package/dist/index.mjs +367 -95
- package/package.json +2 -1
- package/src/global.ts +51 -1
- package/src/interfaces/common.tsx +2 -0
- package/src/interfaces/risks.ts +175 -0
- package/src/modules/harvests.ts +2 -1
- package/src/modules/pricer.ts +25 -8
- package/src/notifs/telegram.ts +3 -3
- package/src/strategies/constants.ts +5 -1
- package/src/strategies/ekubo-cl-vault.tsx +288 -81
- package/src/strategies/universal-adapters/vesu-adapter.ts +2 -1
- package/src/strategies/vesu-rebalance.tsx +3 -3
|
@@ -5719,70 +5719,15 @@ var strkfarm_risk_engine = (() => {
|
|
|
5719
5719
|
}
|
|
5720
5720
|
});
|
|
5721
5721
|
|
|
5722
|
-
// node_modules/.pnpm/@noble+hashes@1.
|
|
5723
|
-
var require_assert = __commonJS({
|
|
5724
|
-
"node_modules/.pnpm/@noble+hashes@1.6.0/node_modules/@noble/hashes/_assert.js"(exports) {
|
|
5725
|
-
"use strict";
|
|
5726
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5727
|
-
exports.anumber = anumber4;
|
|
5728
|
-
exports.number = anumber4;
|
|
5729
|
-
exports.abytes = abytes4;
|
|
5730
|
-
exports.bytes = abytes4;
|
|
5731
|
-
exports.ahash = ahash3;
|
|
5732
|
-
exports.aexists = aexists3;
|
|
5733
|
-
exports.aoutput = aoutput3;
|
|
5734
|
-
function anumber4(n) {
|
|
5735
|
-
if (!Number.isSafeInteger(n) || n < 0)
|
|
5736
|
-
throw new Error("positive integer expected, got " + n);
|
|
5737
|
-
}
|
|
5738
|
-
function isBytes6(a) {
|
|
5739
|
-
return a instanceof Uint8Array || ArrayBuffer.isView(a) && a.constructor.name === "Uint8Array";
|
|
5740
|
-
}
|
|
5741
|
-
function abytes4(b, ...lengths) {
|
|
5742
|
-
if (!isBytes6(b))
|
|
5743
|
-
throw new Error("Uint8Array expected");
|
|
5744
|
-
if (lengths.length > 0 && !lengths.includes(b.length))
|
|
5745
|
-
throw new Error("Uint8Array expected of length " + lengths + ", got length=" + b.length);
|
|
5746
|
-
}
|
|
5747
|
-
function ahash3(h) {
|
|
5748
|
-
if (typeof h !== "function" || typeof h.create !== "function")
|
|
5749
|
-
throw new Error("Hash should be wrapped by utils.wrapConstructor");
|
|
5750
|
-
anumber4(h.outputLen);
|
|
5751
|
-
anumber4(h.blockLen);
|
|
5752
|
-
}
|
|
5753
|
-
function aexists3(instance, checkFinished = true) {
|
|
5754
|
-
if (instance.destroyed)
|
|
5755
|
-
throw new Error("Hash instance has been destroyed");
|
|
5756
|
-
if (checkFinished && instance.finished)
|
|
5757
|
-
throw new Error("Hash#digest() has already been called");
|
|
5758
|
-
}
|
|
5759
|
-
function aoutput3(out, instance) {
|
|
5760
|
-
abytes4(out);
|
|
5761
|
-
const min = instance.outputLen;
|
|
5762
|
-
if (out.length < min) {
|
|
5763
|
-
throw new Error("digestInto() expects output buffer of length at least " + min);
|
|
5764
|
-
}
|
|
5765
|
-
}
|
|
5766
|
-
var assert4 = {
|
|
5767
|
-
number: anumber4,
|
|
5768
|
-
bytes: abytes4,
|
|
5769
|
-
hash: ahash3,
|
|
5770
|
-
exists: aexists3,
|
|
5771
|
-
output: aoutput3
|
|
5772
|
-
};
|
|
5773
|
-
exports.default = assert4;
|
|
5774
|
-
}
|
|
5775
|
-
});
|
|
5776
|
-
|
|
5777
|
-
// node_modules/.pnpm/@noble+hashes@1.6.0/node_modules/@noble/hashes/_u64.js
|
|
5722
|
+
// node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/_u64.js
|
|
5778
5723
|
var require_u64 = __commonJS({
|
|
5779
|
-
"node_modules/.pnpm/@noble+hashes@1.
|
|
5724
|
+
"node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/_u64.js"(exports) {
|
|
5780
5725
|
"use strict";
|
|
5781
5726
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5782
|
-
exports.
|
|
5727
|
+
exports.toBig = exports.shrSL = exports.shrSH = exports.rotrSL = exports.rotrSH = exports.rotrBL = exports.rotrBH = exports.rotr32L = exports.rotr32H = exports.rotlSL = exports.rotlSH = exports.rotlBL = exports.rotlBH = exports.add5L = exports.add5H = exports.add4L = exports.add4H = exports.add3L = exports.add3H = void 0;
|
|
5728
|
+
exports.add = add;
|
|
5783
5729
|
exports.fromBig = fromBig2;
|
|
5784
5730
|
exports.split = split2;
|
|
5785
|
-
exports.add = add;
|
|
5786
5731
|
var U32_MASK642 = /* @__PURE__ */ BigInt(2 ** 32 - 1);
|
|
5787
5732
|
var _32n2 = /* @__PURE__ */ BigInt(32);
|
|
5788
5733
|
function fromBig2(n, le = false) {
|
|
@@ -5791,9 +5736,10 @@ var strkfarm_risk_engine = (() => {
|
|
|
5791
5736
|
return { h: Number(n >> _32n2 & U32_MASK642) | 0, l: Number(n & U32_MASK642) | 0 };
|
|
5792
5737
|
}
|
|
5793
5738
|
function split2(lst, le = false) {
|
|
5794
|
-
|
|
5795
|
-
let
|
|
5796
|
-
|
|
5739
|
+
const len = lst.length;
|
|
5740
|
+
let Ah = new Uint32Array(len);
|
|
5741
|
+
let Al = new Uint32Array(len);
|
|
5742
|
+
for (let i = 0; i < len; i++) {
|
|
5797
5743
|
const { h, l } = fromBig2(lst[i], le);
|
|
5798
5744
|
[Ah[i], Al[i]] = [h, l];
|
|
5799
5745
|
}
|
|
@@ -5869,9 +5815,9 @@ var strkfarm_risk_engine = (() => {
|
|
|
5869
5815
|
}
|
|
5870
5816
|
});
|
|
5871
5817
|
|
|
5872
|
-
// node_modules/.pnpm/@noble+hashes@1.
|
|
5818
|
+
// node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/crypto.js
|
|
5873
5819
|
var require_crypto = __commonJS({
|
|
5874
|
-
"node_modules/.pnpm/@noble+hashes@1.
|
|
5820
|
+
"node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/crypto.js"(exports) {
|
|
5875
5821
|
"use strict";
|
|
5876
5822
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5877
5823
|
exports.crypto = void 0;
|
|
@@ -5879,52 +5825,114 @@ var strkfarm_risk_engine = (() => {
|
|
|
5879
5825
|
}
|
|
5880
5826
|
});
|
|
5881
5827
|
|
|
5882
|
-
// node_modules/.pnpm/@noble+hashes@1.
|
|
5828
|
+
// node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/utils.js
|
|
5883
5829
|
var require_utils3 = __commonJS({
|
|
5884
|
-
"node_modules/.pnpm/@noble+hashes@1.
|
|
5830
|
+
"node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/utils.js"(exports) {
|
|
5885
5831
|
"use strict";
|
|
5886
5832
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5887
|
-
exports.
|
|
5833
|
+
exports.wrapXOFConstructorWithOpts = exports.wrapConstructorWithOpts = exports.wrapConstructor = exports.Hash = exports.nextTick = exports.swap32IfBE = exports.byteSwapIfBE = exports.swap8IfBE = exports.isLE = void 0;
|
|
5888
5834
|
exports.isBytes = isBytes6;
|
|
5835
|
+
exports.anumber = anumber4;
|
|
5836
|
+
exports.abytes = abytes4;
|
|
5837
|
+
exports.ahash = ahash3;
|
|
5838
|
+
exports.aexists = aexists3;
|
|
5839
|
+
exports.aoutput = aoutput3;
|
|
5840
|
+
exports.u8 = u8;
|
|
5841
|
+
exports.u32 = u322;
|
|
5842
|
+
exports.clean = clean2;
|
|
5843
|
+
exports.createView = createView3;
|
|
5844
|
+
exports.rotr = rotr3;
|
|
5845
|
+
exports.rotl = rotl;
|
|
5846
|
+
exports.byteSwap = byteSwap2;
|
|
5889
5847
|
exports.byteSwap32 = byteSwap322;
|
|
5890
5848
|
exports.bytesToHex = bytesToHex3;
|
|
5891
5849
|
exports.hexToBytes = hexToBytes4;
|
|
5892
5850
|
exports.asyncLoop = asyncLoop;
|
|
5893
5851
|
exports.utf8ToBytes = utf8ToBytes4;
|
|
5852
|
+
exports.bytesToUtf8 = bytesToUtf8;
|
|
5894
5853
|
exports.toBytes = toBytes3;
|
|
5854
|
+
exports.kdfInputToBytes = kdfInputToBytes;
|
|
5895
5855
|
exports.concatBytes = concatBytes4;
|
|
5896
5856
|
exports.checkOpts = checkOpts;
|
|
5897
|
-
exports.
|
|
5898
|
-
exports.
|
|
5899
|
-
exports.
|
|
5857
|
+
exports.createHasher = createHasher2;
|
|
5858
|
+
exports.createOptHasher = createOptHasher;
|
|
5859
|
+
exports.createXOFer = createXOFer;
|
|
5900
5860
|
exports.randomBytes = randomBytes3;
|
|
5901
5861
|
var crypto_1 = require_crypto();
|
|
5902
|
-
var _assert_js_1 = require_assert();
|
|
5903
5862
|
function isBytes6(a) {
|
|
5904
5863
|
return a instanceof Uint8Array || ArrayBuffer.isView(a) && a.constructor.name === "Uint8Array";
|
|
5905
5864
|
}
|
|
5906
|
-
|
|
5907
|
-
|
|
5908
|
-
|
|
5909
|
-
|
|
5910
|
-
|
|
5911
|
-
|
|
5912
|
-
|
|
5913
|
-
|
|
5914
|
-
|
|
5915
|
-
|
|
5865
|
+
function anumber4(n) {
|
|
5866
|
+
if (!Number.isSafeInteger(n) || n < 0)
|
|
5867
|
+
throw new Error("positive integer expected, got " + n);
|
|
5868
|
+
}
|
|
5869
|
+
function abytes4(b, ...lengths) {
|
|
5870
|
+
if (!isBytes6(b))
|
|
5871
|
+
throw new Error("Uint8Array expected");
|
|
5872
|
+
if (lengths.length > 0 && !lengths.includes(b.length))
|
|
5873
|
+
throw new Error("Uint8Array expected of length " + lengths + ", got length=" + b.length);
|
|
5874
|
+
}
|
|
5875
|
+
function ahash3(h) {
|
|
5876
|
+
if (typeof h !== "function" || typeof h.create !== "function")
|
|
5877
|
+
throw new Error("Hash should be wrapped by utils.createHasher");
|
|
5878
|
+
anumber4(h.outputLen);
|
|
5879
|
+
anumber4(h.blockLen);
|
|
5880
|
+
}
|
|
5881
|
+
function aexists3(instance, checkFinished = true) {
|
|
5882
|
+
if (instance.destroyed)
|
|
5883
|
+
throw new Error("Hash instance has been destroyed");
|
|
5884
|
+
if (checkFinished && instance.finished)
|
|
5885
|
+
throw new Error("Hash#digest() has already been called");
|
|
5886
|
+
}
|
|
5887
|
+
function aoutput3(out, instance) {
|
|
5888
|
+
abytes4(out);
|
|
5889
|
+
const min = instance.outputLen;
|
|
5890
|
+
if (out.length < min) {
|
|
5891
|
+
throw new Error("digestInto() expects output buffer of length at least " + min);
|
|
5892
|
+
}
|
|
5893
|
+
}
|
|
5894
|
+
function u8(arr) {
|
|
5895
|
+
return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);
|
|
5896
|
+
}
|
|
5897
|
+
function u322(arr) {
|
|
5898
|
+
return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));
|
|
5899
|
+
}
|
|
5900
|
+
function clean2(...arrays) {
|
|
5901
|
+
for (let i = 0; i < arrays.length; i++) {
|
|
5902
|
+
arrays[i].fill(0);
|
|
5903
|
+
}
|
|
5904
|
+
}
|
|
5905
|
+
function createView3(arr) {
|
|
5906
|
+
return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);
|
|
5907
|
+
}
|
|
5908
|
+
function rotr3(word, shift) {
|
|
5909
|
+
return word << 32 - shift | word >>> shift;
|
|
5910
|
+
}
|
|
5911
|
+
function rotl(word, shift) {
|
|
5912
|
+
return word << shift | word >>> 32 - shift >>> 0;
|
|
5913
|
+
}
|
|
5916
5914
|
exports.isLE = (() => new Uint8Array(new Uint32Array([287454020]).buffer)[0] === 68)();
|
|
5917
|
-
|
|
5918
|
-
|
|
5919
|
-
|
|
5915
|
+
function byteSwap2(word) {
|
|
5916
|
+
return word << 24 & 4278190080 | word << 8 & 16711680 | word >>> 8 & 65280 | word >>> 24 & 255;
|
|
5917
|
+
}
|
|
5918
|
+
exports.swap8IfBE = exports.isLE ? (n) => n : (n) => byteSwap2(n);
|
|
5919
|
+
exports.byteSwapIfBE = exports.swap8IfBE;
|
|
5920
5920
|
function byteSwap322(arr) {
|
|
5921
5921
|
for (let i = 0; i < arr.length; i++) {
|
|
5922
|
-
arr[i] = (
|
|
5922
|
+
arr[i] = byteSwap2(arr[i]);
|
|
5923
5923
|
}
|
|
5924
|
+
return arr;
|
|
5924
5925
|
}
|
|
5926
|
+
exports.swap32IfBE = exports.isLE ? (u) => u : byteSwap322;
|
|
5927
|
+
var hasHexBuiltin2 = /* @__PURE__ */ (() => (
|
|
5928
|
+
// @ts-ignore
|
|
5929
|
+
typeof Uint8Array.from([]).toHex === "function" && typeof Uint8Array.fromHex === "function"
|
|
5930
|
+
))();
|
|
5925
5931
|
var hexes3 = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0"));
|
|
5926
5932
|
function bytesToHex3(bytes) {
|
|
5927
|
-
(
|
|
5933
|
+
abytes4(bytes);
|
|
5934
|
+
if (hasHexBuiltin2)
|
|
5935
|
+
return bytes.toHex();
|
|
5928
5936
|
let hex = "";
|
|
5929
5937
|
for (let i = 0; i < bytes.length; i++) {
|
|
5930
5938
|
hex += hexes3[bytes[i]];
|
|
@@ -5944,10 +5952,12 @@ var strkfarm_risk_engine = (() => {
|
|
|
5944
5952
|
function hexToBytes4(hex) {
|
|
5945
5953
|
if (typeof hex !== "string")
|
|
5946
5954
|
throw new Error("hex string expected, got " + typeof hex);
|
|
5955
|
+
if (hasHexBuiltin2)
|
|
5956
|
+
return Uint8Array.fromHex(hex);
|
|
5947
5957
|
const hl = hex.length;
|
|
5948
5958
|
const al = hl / 2;
|
|
5949
5959
|
if (hl % 2)
|
|
5950
|
-
throw new Error("
|
|
5960
|
+
throw new Error("hex string expected, got unpadded hex of length " + hl);
|
|
5951
5961
|
const array = new Uint8Array(al);
|
|
5952
5962
|
for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {
|
|
5953
5963
|
const n1 = asciiToBase163(hex.charCodeAt(hi));
|
|
@@ -5976,20 +5986,29 @@ var strkfarm_risk_engine = (() => {
|
|
|
5976
5986
|
}
|
|
5977
5987
|
function utf8ToBytes4(str) {
|
|
5978
5988
|
if (typeof str !== "string")
|
|
5979
|
-
throw new Error("
|
|
5989
|
+
throw new Error("string expected");
|
|
5980
5990
|
return new Uint8Array(new TextEncoder().encode(str));
|
|
5981
5991
|
}
|
|
5992
|
+
function bytesToUtf8(bytes) {
|
|
5993
|
+
return new TextDecoder().decode(bytes);
|
|
5994
|
+
}
|
|
5982
5995
|
function toBytes3(data) {
|
|
5983
5996
|
if (typeof data === "string")
|
|
5984
5997
|
data = utf8ToBytes4(data);
|
|
5985
|
-
(
|
|
5998
|
+
abytes4(data);
|
|
5999
|
+
return data;
|
|
6000
|
+
}
|
|
6001
|
+
function kdfInputToBytes(data) {
|
|
6002
|
+
if (typeof data === "string")
|
|
6003
|
+
data = utf8ToBytes4(data);
|
|
6004
|
+
abytes4(data);
|
|
5986
6005
|
return data;
|
|
5987
6006
|
}
|
|
5988
6007
|
function concatBytes4(...arrays) {
|
|
5989
6008
|
let sum = 0;
|
|
5990
6009
|
for (let i = 0; i < arrays.length; i++) {
|
|
5991
6010
|
const a = arrays[i];
|
|
5992
|
-
(
|
|
6011
|
+
abytes4(a);
|
|
5993
6012
|
sum += a.length;
|
|
5994
6013
|
}
|
|
5995
6014
|
const res = new Uint8Array(sum);
|
|
@@ -6000,20 +6019,16 @@ var strkfarm_risk_engine = (() => {
|
|
|
6000
6019
|
}
|
|
6001
6020
|
return res;
|
|
6002
6021
|
}
|
|
6003
|
-
var Hash2 = class {
|
|
6004
|
-
// Safe version that clones internal state
|
|
6005
|
-
clone() {
|
|
6006
|
-
return this._cloneInto();
|
|
6007
|
-
}
|
|
6008
|
-
};
|
|
6009
|
-
exports.Hash = Hash2;
|
|
6010
6022
|
function checkOpts(defaults2, opts) {
|
|
6011
6023
|
if (opts !== void 0 && {}.toString.call(opts) !== "[object Object]")
|
|
6012
|
-
throw new Error("
|
|
6024
|
+
throw new Error("options should be object or undefined");
|
|
6013
6025
|
const merged = Object.assign(defaults2, opts);
|
|
6014
6026
|
return merged;
|
|
6015
6027
|
}
|
|
6016
|
-
|
|
6028
|
+
var Hash2 = class {
|
|
6029
|
+
};
|
|
6030
|
+
exports.Hash = Hash2;
|
|
6031
|
+
function createHasher2(hashCons) {
|
|
6017
6032
|
const hashC = (msg) => hashCons().update(toBytes3(msg)).digest();
|
|
6018
6033
|
const tmp = hashCons();
|
|
6019
6034
|
hashC.outputLen = tmp.outputLen;
|
|
@@ -6021,7 +6036,7 @@ var strkfarm_risk_engine = (() => {
|
|
|
6021
6036
|
hashC.create = () => hashCons();
|
|
6022
6037
|
return hashC;
|
|
6023
6038
|
}
|
|
6024
|
-
function
|
|
6039
|
+
function createOptHasher(hashCons) {
|
|
6025
6040
|
const hashC = (msg, opts) => hashCons(opts).update(toBytes3(msg)).digest();
|
|
6026
6041
|
const tmp = hashCons({});
|
|
6027
6042
|
hashC.outputLen = tmp.outputLen;
|
|
@@ -6029,7 +6044,7 @@ var strkfarm_risk_engine = (() => {
|
|
|
6029
6044
|
hashC.create = (opts) => hashCons(opts);
|
|
6030
6045
|
return hashC;
|
|
6031
6046
|
}
|
|
6032
|
-
function
|
|
6047
|
+
function createXOFer(hashCons) {
|
|
6033
6048
|
const hashC = (msg, opts) => hashCons(opts).update(toBytes3(msg)).digest();
|
|
6034
6049
|
const tmp = hashCons({});
|
|
6035
6050
|
hashC.outputLen = tmp.outputLen;
|
|
@@ -6037,37 +6052,39 @@ var strkfarm_risk_engine = (() => {
|
|
|
6037
6052
|
hashC.create = (opts) => hashCons(opts);
|
|
6038
6053
|
return hashC;
|
|
6039
6054
|
}
|
|
6055
|
+
exports.wrapConstructor = createHasher2;
|
|
6056
|
+
exports.wrapConstructorWithOpts = createOptHasher;
|
|
6057
|
+
exports.wrapXOFConstructorWithOpts = createXOFer;
|
|
6040
6058
|
function randomBytes3(bytesLength = 32) {
|
|
6041
6059
|
if (crypto_1.crypto && typeof crypto_1.crypto.getRandomValues === "function") {
|
|
6042
6060
|
return crypto_1.crypto.getRandomValues(new Uint8Array(bytesLength));
|
|
6043
6061
|
}
|
|
6044
6062
|
if (crypto_1.crypto && typeof crypto_1.crypto.randomBytes === "function") {
|
|
6045
|
-
return crypto_1.crypto.randomBytes(bytesLength);
|
|
6063
|
+
return Uint8Array.from(crypto_1.crypto.randomBytes(bytesLength));
|
|
6046
6064
|
}
|
|
6047
6065
|
throw new Error("crypto.getRandomValues must be defined");
|
|
6048
6066
|
}
|
|
6049
6067
|
}
|
|
6050
6068
|
});
|
|
6051
6069
|
|
|
6052
|
-
// node_modules/.pnpm/@noble+hashes@1.
|
|
6070
|
+
// node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/sha3.js
|
|
6053
6071
|
var require_sha3 = __commonJS({
|
|
6054
|
-
"node_modules/.pnpm/@noble+hashes@1.
|
|
6072
|
+
"node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/sha3.js"(exports) {
|
|
6055
6073
|
"use strict";
|
|
6056
6074
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6057
6075
|
exports.shake256 = exports.shake128 = exports.keccak_512 = exports.keccak_384 = exports.keccak_256 = exports.keccak_224 = exports.sha3_512 = exports.sha3_384 = exports.sha3_256 = exports.sha3_224 = exports.Keccak = void 0;
|
|
6058
6076
|
exports.keccakP = keccakP2;
|
|
6059
|
-
var
|
|
6060
|
-
var
|
|
6061
|
-
var
|
|
6077
|
+
var _u64_ts_1 = require_u64();
|
|
6078
|
+
var utils_ts_1 = require_utils3();
|
|
6079
|
+
var _0n11 = BigInt(0);
|
|
6080
|
+
var _1n11 = BigInt(1);
|
|
6081
|
+
var _2n8 = BigInt(2);
|
|
6082
|
+
var _7n3 = BigInt(7);
|
|
6083
|
+
var _256n2 = BigInt(256);
|
|
6084
|
+
var _0x71n2 = BigInt(113);
|
|
6062
6085
|
var SHA3_PI2 = [];
|
|
6063
6086
|
var SHA3_ROTL2 = [];
|
|
6064
6087
|
var _SHA3_IOTA2 = [];
|
|
6065
|
-
var _0n11 = /* @__PURE__ */ BigInt(0);
|
|
6066
|
-
var _1n11 = /* @__PURE__ */ BigInt(1);
|
|
6067
|
-
var _2n8 = /* @__PURE__ */ BigInt(2);
|
|
6068
|
-
var _7n3 = /* @__PURE__ */ BigInt(7);
|
|
6069
|
-
var _256n2 = /* @__PURE__ */ BigInt(256);
|
|
6070
|
-
var _0x71n2 = /* @__PURE__ */ BigInt(113);
|
|
6071
6088
|
for (let round = 0, R = _1n11, x = 1, y = 0; round < 24; round++) {
|
|
6072
6089
|
[x, y] = [y, (2 * x + 3 * y) % 5];
|
|
6073
6090
|
SHA3_PI2.push(2 * (5 * y + x));
|
|
@@ -6080,9 +6097,11 @@ var strkfarm_risk_engine = (() => {
|
|
|
6080
6097
|
}
|
|
6081
6098
|
_SHA3_IOTA2.push(t);
|
|
6082
6099
|
}
|
|
6083
|
-
var
|
|
6084
|
-
var
|
|
6085
|
-
var
|
|
6100
|
+
var IOTAS = (0, _u64_ts_1.split)(_SHA3_IOTA2, true);
|
|
6101
|
+
var SHA3_IOTA_H2 = IOTAS[0];
|
|
6102
|
+
var SHA3_IOTA_L2 = IOTAS[1];
|
|
6103
|
+
var rotlH2 = (h, l, s) => s > 32 ? (0, _u64_ts_1.rotlBH)(h, l, s) : (0, _u64_ts_1.rotlSH)(h, l, s);
|
|
6104
|
+
var rotlL2 = (h, l, s) => s > 32 ? (0, _u64_ts_1.rotlBL)(h, l, s) : (0, _u64_ts_1.rotlSL)(h, l, s);
|
|
6086
6105
|
function keccakP2(s, rounds = 24) {
|
|
6087
6106
|
const B = new Uint32Array(5 * 2);
|
|
6088
6107
|
for (let round = 24 - rounds; round < 24; round++) {
|
|
@@ -6121,40 +6140,43 @@ var strkfarm_risk_engine = (() => {
|
|
|
6121
6140
|
s[0] ^= SHA3_IOTA_H2[round];
|
|
6122
6141
|
s[1] ^= SHA3_IOTA_L2[round];
|
|
6123
6142
|
}
|
|
6124
|
-
|
|
6143
|
+
(0, utils_ts_1.clean)(B);
|
|
6125
6144
|
}
|
|
6126
|
-
var Keccak2 = class _Keccak extends
|
|
6145
|
+
var Keccak2 = class _Keccak extends utils_ts_1.Hash {
|
|
6127
6146
|
// NOTE: we accept arguments in bytes instead of bits here.
|
|
6128
6147
|
constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {
|
|
6129
6148
|
super();
|
|
6149
|
+
this.pos = 0;
|
|
6150
|
+
this.posOut = 0;
|
|
6151
|
+
this.finished = false;
|
|
6152
|
+
this.destroyed = false;
|
|
6153
|
+
this.enableXOF = false;
|
|
6130
6154
|
this.blockLen = blockLen;
|
|
6131
6155
|
this.suffix = suffix;
|
|
6132
6156
|
this.outputLen = outputLen;
|
|
6133
6157
|
this.enableXOF = enableXOF;
|
|
6134
6158
|
this.rounds = rounds;
|
|
6135
|
-
|
|
6136
|
-
|
|
6137
|
-
|
|
6138
|
-
this.destroyed = false;
|
|
6139
|
-
(0, _assert_js_1.anumber)(outputLen);
|
|
6140
|
-
if (0 >= this.blockLen || this.blockLen >= 200)
|
|
6141
|
-
throw new Error("Sha3 supports only keccak-f1600 function");
|
|
6159
|
+
(0, utils_ts_1.anumber)(outputLen);
|
|
6160
|
+
if (!(0 < blockLen && blockLen < 200))
|
|
6161
|
+
throw new Error("only keccak-f1600 function is supported");
|
|
6142
6162
|
this.state = new Uint8Array(200);
|
|
6143
|
-
this.state32 = (0,
|
|
6163
|
+
this.state32 = (0, utils_ts_1.u32)(this.state);
|
|
6164
|
+
}
|
|
6165
|
+
clone() {
|
|
6166
|
+
return this._cloneInto();
|
|
6144
6167
|
}
|
|
6145
6168
|
keccak() {
|
|
6146
|
-
|
|
6147
|
-
(0, utils_js_1.byteSwap32)(this.state32);
|
|
6169
|
+
(0, utils_ts_1.swap32IfBE)(this.state32);
|
|
6148
6170
|
keccakP2(this.state32, this.rounds);
|
|
6149
|
-
|
|
6150
|
-
(0, utils_js_1.byteSwap32)(this.state32);
|
|
6171
|
+
(0, utils_ts_1.swap32IfBE)(this.state32);
|
|
6151
6172
|
this.posOut = 0;
|
|
6152
6173
|
this.pos = 0;
|
|
6153
6174
|
}
|
|
6154
6175
|
update(data) {
|
|
6155
|
-
(0,
|
|
6176
|
+
(0, utils_ts_1.aexists)(this);
|
|
6177
|
+
data = (0, utils_ts_1.toBytes)(data);
|
|
6178
|
+
(0, utils_ts_1.abytes)(data);
|
|
6156
6179
|
const { blockLen, state } = this;
|
|
6157
|
-
data = (0, utils_js_1.toBytes)(data);
|
|
6158
6180
|
const len = data.length;
|
|
6159
6181
|
for (let pos = 0; pos < len; ) {
|
|
6160
6182
|
const take = Math.min(blockLen - this.pos, len - pos);
|
|
@@ -6177,8 +6199,8 @@ var strkfarm_risk_engine = (() => {
|
|
|
6177
6199
|
this.keccak();
|
|
6178
6200
|
}
|
|
6179
6201
|
writeInto(out) {
|
|
6180
|
-
(0,
|
|
6181
|
-
(0,
|
|
6202
|
+
(0, utils_ts_1.aexists)(this, false);
|
|
6203
|
+
(0, utils_ts_1.abytes)(out);
|
|
6182
6204
|
this.finish();
|
|
6183
6205
|
const bufferOut = this.state;
|
|
6184
6206
|
const { blockLen } = this;
|
|
@@ -6198,11 +6220,11 @@ var strkfarm_risk_engine = (() => {
|
|
|
6198
6220
|
return this.writeInto(out);
|
|
6199
6221
|
}
|
|
6200
6222
|
xof(bytes) {
|
|
6201
|
-
(0,
|
|
6223
|
+
(0, utils_ts_1.anumber)(bytes);
|
|
6202
6224
|
return this.xofInto(new Uint8Array(bytes));
|
|
6203
6225
|
}
|
|
6204
6226
|
digestInto(out) {
|
|
6205
|
-
(0,
|
|
6227
|
+
(0, utils_ts_1.aoutput)(out, this);
|
|
6206
6228
|
if (this.finished)
|
|
6207
6229
|
throw new Error("digest() was already called");
|
|
6208
6230
|
this.writeInto(out);
|
|
@@ -6214,7 +6236,7 @@ var strkfarm_risk_engine = (() => {
|
|
|
6214
6236
|
}
|
|
6215
6237
|
destroy() {
|
|
6216
6238
|
this.destroyed = true;
|
|
6217
|
-
this.state
|
|
6239
|
+
(0, utils_ts_1.clean)(this.state);
|
|
6218
6240
|
}
|
|
6219
6241
|
_cloneInto(to) {
|
|
6220
6242
|
const { blockLen, suffix, outputLen, rounds, enableXOF } = this;
|
|
@@ -6232,23 +6254,23 @@ var strkfarm_risk_engine = (() => {
|
|
|
6232
6254
|
}
|
|
6233
6255
|
};
|
|
6234
6256
|
exports.Keccak = Keccak2;
|
|
6235
|
-
var gen2 = (suffix, blockLen, outputLen) => (0,
|
|
6236
|
-
exports.sha3_224 = gen2(6, 144, 224 / 8);
|
|
6237
|
-
exports.sha3_256 = gen2(6, 136, 256 / 8);
|
|
6238
|
-
exports.sha3_384 = gen2(6, 104, 384 / 8);
|
|
6239
|
-
exports.sha3_512 = gen2(6, 72, 512 / 8);
|
|
6240
|
-
exports.keccak_224 = gen2(1, 144, 224 / 8);
|
|
6241
|
-
exports.keccak_256 = gen2(1, 136, 256 / 8);
|
|
6242
|
-
exports.keccak_384 = gen2(1, 104, 384 / 8);
|
|
6243
|
-
exports.keccak_512 = gen2(1, 72, 512 / 8);
|
|
6244
|
-
var genShake2 = (suffix, blockLen, outputLen) => (0,
|
|
6245
|
-
exports.shake128 = genShake2(31, 168, 128 / 8);
|
|
6246
|
-
exports.shake256 = genShake2(31, 136, 256 / 8);
|
|
6257
|
+
var gen2 = (suffix, blockLen, outputLen) => (0, utils_ts_1.createHasher)(() => new Keccak2(blockLen, suffix, outputLen));
|
|
6258
|
+
exports.sha3_224 = (() => gen2(6, 144, 224 / 8))();
|
|
6259
|
+
exports.sha3_256 = (() => gen2(6, 136, 256 / 8))();
|
|
6260
|
+
exports.sha3_384 = (() => gen2(6, 104, 384 / 8))();
|
|
6261
|
+
exports.sha3_512 = (() => gen2(6, 72, 512 / 8))();
|
|
6262
|
+
exports.keccak_224 = (() => gen2(1, 144, 224 / 8))();
|
|
6263
|
+
exports.keccak_256 = (() => gen2(1, 136, 256 / 8))();
|
|
6264
|
+
exports.keccak_384 = (() => gen2(1, 104, 384 / 8))();
|
|
6265
|
+
exports.keccak_512 = (() => gen2(1, 72, 512 / 8))();
|
|
6266
|
+
var genShake2 = (suffix, blockLen, outputLen) => (0, utils_ts_1.createXOFer)((opts = {}) => new Keccak2(blockLen, suffix, opts.dkLen === void 0 ? outputLen : opts.dkLen, true));
|
|
6267
|
+
exports.shake128 = (() => genShake2(31, 168, 128 / 8))();
|
|
6268
|
+
exports.shake256 = (() => genShake2(31, 136, 256 / 8))();
|
|
6247
6269
|
}
|
|
6248
6270
|
});
|
|
6249
6271
|
|
|
6250
6272
|
// node_modules/.pnpm/@noble+hashes@1.3.3/node_modules/@noble/hashes/_assert.js
|
|
6251
|
-
var
|
|
6273
|
+
var require_assert = __commonJS({
|
|
6252
6274
|
"node_modules/.pnpm/@noble+hashes@1.3.3/node_modules/@noble/hashes/_assert.js"(exports) {
|
|
6253
6275
|
"use strict";
|
|
6254
6276
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -6571,7 +6593,7 @@ var strkfarm_risk_engine = (() => {
|
|
|
6571
6593
|
"use strict";
|
|
6572
6594
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6573
6595
|
exports.shake256 = exports.shake128 = exports.keccak_512 = exports.keccak_384 = exports.keccak_256 = exports.keccak_224 = exports.sha3_512 = exports.sha3_384 = exports.sha3_256 = exports.sha3_224 = exports.Keccak = exports.keccakP = void 0;
|
|
6574
|
-
var _assert_js_1 =
|
|
6596
|
+
var _assert_js_1 = require_assert();
|
|
6575
6597
|
var _u64_js_1 = require_u642();
|
|
6576
6598
|
var utils_js_1 = require_utils4();
|
|
6577
6599
|
var [SHA3_PI2, SHA3_ROTL2, _SHA3_IOTA2] = [[], [], []];
|
|
@@ -6763,7 +6785,7 @@ var strkfarm_risk_engine = (() => {
|
|
|
6763
6785
|
"use strict";
|
|
6764
6786
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6765
6787
|
exports.SHA2 = void 0;
|
|
6766
|
-
var _assert_js_1 =
|
|
6788
|
+
var _assert_js_1 = require_assert();
|
|
6767
6789
|
var utils_js_1 = require_utils4();
|
|
6768
6790
|
function setBigUint642(view, byteOffset, value, isLE2) {
|
|
6769
6791
|
if (typeof view.setBigUint64 === "function")
|
|
@@ -8760,7 +8782,7 @@ var strkfarm_risk_engine = (() => {
|
|
|
8760
8782
|
"use strict";
|
|
8761
8783
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8762
8784
|
exports.hmac = exports.HMAC = void 0;
|
|
8763
|
-
var _assert_js_1 =
|
|
8785
|
+
var _assert_js_1 = require_assert();
|
|
8764
8786
|
var utils_js_1 = require_utils4();
|
|
8765
8787
|
var HMAC2 = class extends utils_js_1.Hash {
|
|
8766
8788
|
constructor(hash2, _key) {
|
|
@@ -15206,7 +15228,7 @@ ${r2}}` : "}", l2;
|
|
|
15206
15228
|
});
|
|
15207
15229
|
|
|
15208
15230
|
// node_modules/.pnpm/@noble+hashes@1.4.0/node_modules/@noble/hashes/_assert.js
|
|
15209
|
-
var
|
|
15231
|
+
var require_assert2 = __commonJS({
|
|
15210
15232
|
"node_modules/.pnpm/@noble+hashes@1.4.0/node_modules/@noble/hashes/_assert.js"(exports) {
|
|
15211
15233
|
"use strict";
|
|
15212
15234
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -15276,7 +15298,7 @@ ${r2}}` : "}", l2;
|
|
|
15276
15298
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15277
15299
|
exports.randomBytes = exports.wrapXOFConstructorWithOpts = exports.wrapConstructorWithOpts = exports.wrapConstructor = exports.checkOpts = exports.Hash = exports.concatBytes = exports.toBytes = exports.utf8ToBytes = exports.asyncLoop = exports.nextTick = exports.hexToBytes = exports.bytesToHex = exports.byteSwap32 = exports.byteSwapIfBE = exports.byteSwap = exports.isLE = exports.rotl = exports.rotr = exports.createView = exports.u32 = exports.u8 = exports.isBytes = void 0;
|
|
15278
15300
|
var crypto_1 = require_crypto3();
|
|
15279
|
-
var _assert_js_1 =
|
|
15301
|
+
var _assert_js_1 = require_assert2();
|
|
15280
15302
|
function isBytes6(a) {
|
|
15281
15303
|
return a instanceof Uint8Array || a != null && typeof a === "object" && a.constructor.name === "Uint8Array";
|
|
15282
15304
|
}
|
|
@@ -15443,7 +15465,7 @@ ${r2}}` : "}", l2;
|
|
|
15443
15465
|
"use strict";
|
|
15444
15466
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15445
15467
|
exports.HashMD = exports.Maj = exports.Chi = void 0;
|
|
15446
|
-
var _assert_js_1 =
|
|
15468
|
+
var _assert_js_1 = require_assert2();
|
|
15447
15469
|
var utils_js_1 = require_utils6();
|
|
15448
15470
|
function setBigUint642(view, byteOffset, value, isLE2) {
|
|
15449
15471
|
if (typeof view.setBigUint64 === "function")
|
|
@@ -15731,7 +15753,7 @@ ${r2}}` : "}", l2;
|
|
|
15731
15753
|
"use strict";
|
|
15732
15754
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15733
15755
|
exports.hmac = exports.HMAC = void 0;
|
|
15734
|
-
var _assert_js_1 =
|
|
15756
|
+
var _assert_js_1 = require_assert2();
|
|
15735
15757
|
var utils_js_1 = require_utils6();
|
|
15736
15758
|
var HMAC2 = class extends utils_js_1.Hash {
|
|
15737
15759
|
constructor(hash2, _key) {
|
|
@@ -23128,11 +23150,8 @@ ${r2}}` : "}", l2;
|
|
|
23128
23150
|
}
|
|
23129
23151
|
async fetchEndpoint(method, params) {
|
|
23130
23152
|
try {
|
|
23131
|
-
console.log(`dfsg`);
|
|
23132
23153
|
const rawResult = await this.fetch(method, params, this.requestId += 1);
|
|
23133
|
-
console.log(`dfsg2`);
|
|
23134
23154
|
const { error: error2, result } = await rawResult.json();
|
|
23135
|
-
console.log(`dfsg4`);
|
|
23136
23155
|
this.errorHandler(method, params, error2);
|
|
23137
23156
|
return result;
|
|
23138
23157
|
} catch (error2) {
|
|
@@ -23677,11 +23696,8 @@ ${r2}}` : "}", l2;
|
|
|
23677
23696
|
}
|
|
23678
23697
|
async fetchEndpoint(method, params) {
|
|
23679
23698
|
try {
|
|
23680
|
-
console.log(3435);
|
|
23681
23699
|
const rawResult = await this.fetch(method, params, this.requestId += 1);
|
|
23682
|
-
console.log(3435345);
|
|
23683
23700
|
const { error: error2, result } = await rawResult.json();
|
|
23684
|
-
console.log(343534534256);
|
|
23685
23701
|
this.errorHandler(method, params, error2);
|
|
23686
23702
|
return result;
|
|
23687
23703
|
} catch (error2) {
|
|
@@ -49063,7 +49079,7 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
49063
49079
|
name: "WBTC",
|
|
49064
49080
|
symbol: "WBTC",
|
|
49065
49081
|
logo: "https://assets.troves.fi/integrations/tokens/wbtc.svg",
|
|
49066
|
-
address: ContractAddr.from("
|
|
49082
|
+
address: ContractAddr.from("0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac"),
|
|
49067
49083
|
decimals: 8,
|
|
49068
49084
|
coingeckId: void 0,
|
|
49069
49085
|
displayDecimals: 6,
|
|
@@ -49079,6 +49095,61 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
49079
49095
|
displayDecimals: 6,
|
|
49080
49096
|
priceCheckAmount: 1e-4
|
|
49081
49097
|
// 112000 * 0.0001 = $11.2
|
|
49098
|
+
}, {
|
|
49099
|
+
name: "solvBTC",
|
|
49100
|
+
symbol: "solvBTC",
|
|
49101
|
+
logo: "https://assets.strkfarm.com/integrations/tokens/solvbtc.svg",
|
|
49102
|
+
address: ContractAddr.from("0x0593e034dda23eea82d2ba9a30960ed42cf4a01502cc2351dc9b9881f9931a68"),
|
|
49103
|
+
decimals: 18,
|
|
49104
|
+
coingeckId: void 0,
|
|
49105
|
+
priceProxySymbol: "WBTC",
|
|
49106
|
+
displayDecimals: 6,
|
|
49107
|
+
priceCheckAmount: 1e-4
|
|
49108
|
+
// 112000 * 0.0001 = $11.2
|
|
49109
|
+
}, {
|
|
49110
|
+
name: "LBTC",
|
|
49111
|
+
symbol: "LBTC",
|
|
49112
|
+
logo: "https://assets.strkfarm.com/integrations/tokens/lbtc.svg",
|
|
49113
|
+
address: ContractAddr.from("0x036834a40984312f7f7de8d31e3f6305b325389eaeea5b1c0664b2fb936461a4"),
|
|
49114
|
+
decimals: 8,
|
|
49115
|
+
coingeckId: void 0,
|
|
49116
|
+
displayDecimals: 6,
|
|
49117
|
+
priceProxySymbol: "WBTC",
|
|
49118
|
+
priceCheckAmount: 1e-4
|
|
49119
|
+
// 112000 * 0.0001 = $11.2
|
|
49120
|
+
}, {
|
|
49121
|
+
name: "xWBTC",
|
|
49122
|
+
symbol: "xWBTC",
|
|
49123
|
+
logo: "https://assets.strkfarm.com/integrations/tokens/xwbtc.svg",
|
|
49124
|
+
address: ContractAddr.from("0x6a567e68c805323525fe1649adb80b03cddf92c23d2629a6779f54192dffc13"),
|
|
49125
|
+
decimals: 8,
|
|
49126
|
+
coingeckId: void 0,
|
|
49127
|
+
displayDecimals: 6,
|
|
49128
|
+
priceProxySymbol: "WBTC",
|
|
49129
|
+
priceCheckAmount: 1e-4
|
|
49130
|
+
// 112000 * 0.0001 = $11.2
|
|
49131
|
+
}, {
|
|
49132
|
+
name: "xsBTC",
|
|
49133
|
+
symbol: "xsBTC",
|
|
49134
|
+
logo: "https://assets.strkfarm.com/integrations/tokens/xsbtc_solv.svg",
|
|
49135
|
+
address: ContractAddr.from("0x580f3dc564a7b82f21d40d404b3842d490ae7205e6ac07b1b7af2b4a5183dc9"),
|
|
49136
|
+
decimals: 18,
|
|
49137
|
+
coingeckId: void 0,
|
|
49138
|
+
displayDecimals: 6,
|
|
49139
|
+
priceProxySymbol: "WBTC",
|
|
49140
|
+
priceCheckAmount: 1e-4
|
|
49141
|
+
// 112000 * 0.0001 = $11.2
|
|
49142
|
+
}, {
|
|
49143
|
+
name: "xtBTC",
|
|
49144
|
+
symbol: "xtBTC",
|
|
49145
|
+
logo: "https://assets.strkfarm.com/integrations/tokens/xtbtc.svg",
|
|
49146
|
+
address: ContractAddr.from("0x43a35c1425a0125ef8c171f1a75c6f31ef8648edcc8324b55ce1917db3f9b91"),
|
|
49147
|
+
decimals: 8,
|
|
49148
|
+
coingeckId: void 0,
|
|
49149
|
+
displayDecimals: 6,
|
|
49150
|
+
priceProxySymbol: "WBTC",
|
|
49151
|
+
priceCheckAmount: 1e-4
|
|
49152
|
+
// 112000 * 0.0001 = $11.2
|
|
49082
49153
|
}];
|
|
49083
49154
|
var tokens = defaultTokens;
|
|
49084
49155
|
var _Global = class _Global {
|
|
@@ -49166,9 +49237,11 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
49166
49237
|
// src/modules/pricer.ts
|
|
49167
49238
|
var Pricer = class extends PricerBase {
|
|
49168
49239
|
// e.g. ETH/USDC
|
|
49169
|
-
constructor(config3, tokens2) {
|
|
49240
|
+
constructor(config3, tokens2, refreshInterval = 3e4, staleTime = 6e4) {
|
|
49170
49241
|
super(config3, tokens2);
|
|
49171
49242
|
this.prices = {};
|
|
49243
|
+
this.refreshInterval = 3e4;
|
|
49244
|
+
this.staleTime = 6e4;
|
|
49172
49245
|
// code populates this map during runtime to determine which method to use for a given token
|
|
49173
49246
|
// The method set will be the first one to try after first attempt
|
|
49174
49247
|
this.methodToUse = {};
|
|
@@ -49177,6 +49250,8 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
49177
49250
|
*/
|
|
49178
49251
|
this.PRICE_API = `https://api.coinbase.com/v2/prices/{{PRICER_KEY}}/buy`;
|
|
49179
49252
|
this.EKUBO_API = "https://quoter-mainnet-api.ekubo.org/{{AMOUNT}}/{{TOKEN_ADDRESS}}/0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8";
|
|
49253
|
+
this.refreshInterval = refreshInterval;
|
|
49254
|
+
this.staleTime = staleTime;
|
|
49180
49255
|
}
|
|
49181
49256
|
isReady() {
|
|
49182
49257
|
const allPricesExist = Object.keys(this.prices).length === this.tokens.length;
|
|
@@ -49209,10 +49284,10 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
49209
49284
|
this._loadPrices();
|
|
49210
49285
|
setInterval(() => {
|
|
49211
49286
|
this._loadPrices();
|
|
49212
|
-
},
|
|
49287
|
+
}, this.refreshInterval);
|
|
49213
49288
|
}
|
|
49214
49289
|
isStale(timestamp, tokenName) {
|
|
49215
|
-
const STALE_TIME =
|
|
49290
|
+
const STALE_TIME = this.staleTime;
|
|
49216
49291
|
return (/* @__PURE__ */ new Date()).getTime() - timestamp.getTime() > STALE_TIME;
|
|
49217
49292
|
}
|
|
49218
49293
|
assertNotStale(timestamp, tokenName) {
|
|
@@ -49238,13 +49313,25 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
49238
49313
|
onUpdate(token.symbol);
|
|
49239
49314
|
return;
|
|
49240
49315
|
}
|
|
49241
|
-
|
|
49242
|
-
|
|
49243
|
-
|
|
49244
|
-
|
|
49245
|
-
|
|
49316
|
+
if (token.priceProxySymbol) {
|
|
49317
|
+
const proxyToken = this.tokens.find((t) => t.symbol === token.priceProxySymbol);
|
|
49318
|
+
if (!proxyToken) {
|
|
49319
|
+
throw new FatalError(`Price proxy token ${token.priceProxySymbol} not found`);
|
|
49320
|
+
}
|
|
49321
|
+
const price = await this._getPrice(proxyToken);
|
|
49322
|
+
this.prices[token.symbol] = {
|
|
49323
|
+
price,
|
|
49324
|
+
timestamp: /* @__PURE__ */ new Date()
|
|
49325
|
+
};
|
|
49326
|
+
} else {
|
|
49327
|
+
const price = await this._getPrice(token);
|
|
49328
|
+
this.prices[token.symbol] = {
|
|
49329
|
+
price,
|
|
49330
|
+
timestamp: /* @__PURE__ */ new Date()
|
|
49331
|
+
};
|
|
49332
|
+
}
|
|
49246
49333
|
onUpdate(token.symbol);
|
|
49247
|
-
logger2.verbose(`Fetched price of ${token.name} as ${price}`);
|
|
49334
|
+
logger2.verbose(`Fetched price of ${token.name} as ${this.prices[token.symbol].price}`);
|
|
49248
49335
|
break;
|
|
49249
49336
|
} catch (error2) {
|
|
49250
49337
|
if (retry < MAX_RETRIES) {
|
|
@@ -55357,6 +55444,16 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
55357
55444
|
return res.data;
|
|
55358
55445
|
}
|
|
55359
55446
|
|
|
55447
|
+
// src/strategies/constants.ts
|
|
55448
|
+
var COMMON_CONTRACTS = [{
|
|
55449
|
+
address: ContractAddr.from("0x0636a3f51cc37f5729e4da4b1de6a8549a28f3c0d5bf3b17f150971e451ff9c2"),
|
|
55450
|
+
name: "Access Controller",
|
|
55451
|
+
sourceCodeUrl: "https://github.com/strkfarm/strkfarm-contracts/blob/main/src/components/accessControl.cairo"
|
|
55452
|
+
}];
|
|
55453
|
+
var ENDPOINTS = {
|
|
55454
|
+
VESU_BASE: "https://cache-server-t2me.onrender.com/vesu"
|
|
55455
|
+
};
|
|
55456
|
+
|
|
55360
55457
|
// src/modules/harvests.ts
|
|
55361
55458
|
var Harvests = class _Harvests {
|
|
55362
55459
|
constructor(config3) {
|
|
@@ -55417,7 +55514,7 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
55417
55514
|
var VESU_REWARDS_CONTRACT = ContractAddr.from("0x0387f3eb1d98632fbe3440a9f1385Aec9d87b6172491d3Dd81f1c35A7c61048F");
|
|
55418
55515
|
var VesuHarvests = class _VesuHarvests extends Harvests {
|
|
55419
55516
|
async getHarvests(addr) {
|
|
55420
|
-
const result = await fetch(
|
|
55517
|
+
const result = await fetch(`${ENDPOINTS.VESU_BASE}/users/${addr.address}/strk-rewards/calldata`);
|
|
55421
55518
|
const data = await result.json();
|
|
55422
55519
|
const rewardsContract = VESU_REWARDS_CONTRACT;
|
|
55423
55520
|
const cls = await this.config.provider.getClassAt(rewardsContract.address);
|
|
@@ -60895,13 +60992,6 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
60895
60992
|
]
|
|
60896
60993
|
};
|
|
60897
60994
|
|
|
60898
|
-
// src/strategies/constants.ts
|
|
60899
|
-
var COMMON_CONTRACTS = [{
|
|
60900
|
-
address: ContractAddr.from("0x0636a3f51cc37f5729e4da4b1de6a8549a28f3c0d5bf3b17f150971e451ff9c2"),
|
|
60901
|
-
name: "Access Controller",
|
|
60902
|
-
sourceCodeUrl: "https://github.com/strkfarm/strkfarm-contracts/blob/main/src/components/accessControl.cairo"
|
|
60903
|
-
}];
|
|
60904
|
-
|
|
60905
60995
|
// src/strategies/vesu-rebalance.tsx
|
|
60906
60996
|
var import_jsx_runtime2 = __toESM(require_jsx_runtime());
|
|
60907
60997
|
var VesuRebalance = class _VesuRebalance extends BaseStrategy {
|
|
@@ -61030,7 +61120,7 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
61030
61120
|
};
|
|
61031
61121
|
}
|
|
61032
61122
|
static async getAllPossibleVerifiedPools(asset) {
|
|
61033
|
-
const data = await getAPIUsingHeadlessBrowser(
|
|
61123
|
+
const data = await getAPIUsingHeadlessBrowser(`${ENDPOINTS.VESU_BASE}/pools`);
|
|
61034
61124
|
const verifiedPools = data.data.filter((d) => d.isVerified);
|
|
61035
61125
|
const pools = verifiedPools.map((p) => {
|
|
61036
61126
|
const hasMyAsset = p.assets.find((a) => asset.eqString(a.address));
|
|
@@ -61207,7 +61297,7 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
61207
61297
|
let pools = [];
|
|
61208
61298
|
try {
|
|
61209
61299
|
const data = await getAPIUsingHeadlessBrowser(
|
|
61210
|
-
|
|
61300
|
+
`${ENDPOINTS.VESU_BASE}/pools`
|
|
61211
61301
|
);
|
|
61212
61302
|
pools = data.data;
|
|
61213
61303
|
for (const pool of vesu_pools_default.data) {
|
|
@@ -67777,14 +67867,31 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
67777
67867
|
name: "Ekubo",
|
|
67778
67868
|
logo: "https://app.ekubo.org/favicon.ico"
|
|
67779
67869
|
};
|
|
67780
|
-
var
|
|
67781
|
-
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value:
|
|
67782
|
-
{ type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value:
|
|
67783
|
-
{ type: "Market Risk" /* MARKET_RISK */, value:
|
|
67870
|
+
var _corelatedPoolRiskFactors = [
|
|
67871
|
+
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 2 /* WELL_AUDITED */, weight: 34, reason: "Audited smart contracts" },
|
|
67872
|
+
{ type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value: 1 /* HIGHLY_CORRELATED */, weight: 33, reason: "Low risk due to co-related assets" },
|
|
67873
|
+
{ type: "Market Risk" /* MARKET_RISK */, value: 1 /* VERY_LOW_VOLATILITY */, weight: 33, reason: "Low risk due to co-related assets" }
|
|
67874
|
+
];
|
|
67875
|
+
var mediumVolatilityPoolRiskFactors = [
|
|
67876
|
+
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 2 /* WELL_AUDITED */, weight: 34, reason: "Audited smart contracts" },
|
|
67877
|
+
{ type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value: 3 /* NON_CORRELATED */, weight: 33, reason: "Low risk due to co-related assets" },
|
|
67878
|
+
{ type: "Market Risk" /* MARKET_RISK */, value: 3 /* MODERATE_VOLATILITY */, weight: 33, reason: "Low risk due to co-related assets" }
|
|
67784
67879
|
];
|
|
67785
|
-
var
|
|
67786
|
-
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value:
|
|
67880
|
+
var highVolatilityPoolRiskFactors = [
|
|
67881
|
+
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 2 /* WELL_AUDITED */, weight: 34, reason: "Audited smart contracts" },
|
|
67882
|
+
{ type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value: 3 /* NON_CORRELATED */, weight: 33, reason: "Low risk due to co-related assets" },
|
|
67883
|
+
{ type: "Market Risk" /* MARKET_RISK */, value: 4 /* HIGH_VOLATILITY */, weight: 33, reason: "Low risk due to co-related assets" }
|
|
67787
67884
|
];
|
|
67885
|
+
var mediumRisk = {
|
|
67886
|
+
riskFactor: mediumVolatilityPoolRiskFactors,
|
|
67887
|
+
netRisk: mediumVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / mediumVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.weight, 0),
|
|
67888
|
+
notARisks: getNoRiskTags(mediumVolatilityPoolRiskFactors)
|
|
67889
|
+
};
|
|
67890
|
+
var highRisk = {
|
|
67891
|
+
riskFactor: highVolatilityPoolRiskFactors,
|
|
67892
|
+
netRisk: highVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / highVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.weight, 0),
|
|
67893
|
+
notARisks: getNoRiskTags(highVolatilityPoolRiskFactors)
|
|
67894
|
+
};
|
|
67788
67895
|
var AUDIT_URL2 = "https://assets.troves.fi/strkfarm/audit_report_vesu_and_ekubo_strats.pdf";
|
|
67789
67896
|
var faqs2 = [
|
|
67790
67897
|
{
|
|
@@ -67799,6 +67906,10 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
67799
67906
|
question: "What happens during withdrawal?",
|
|
67800
67907
|
answer: "During withdrawal, you may receive either or both tokens depending on market conditions and prevailing prices."
|
|
67801
67908
|
},
|
|
67909
|
+
{
|
|
67910
|
+
question: "Are there any deposit/withdrawal fees?",
|
|
67911
|
+
answer: "No, there are no deposit/withdrawal fees. However, there is a performance fee varying between 10-20% of the fees and rewards generated. The exact fee is determined by the strategy and the APY shown is net of this fee."
|
|
67912
|
+
},
|
|
67802
67913
|
{
|
|
67803
67914
|
question: "Is the strategy audited?",
|
|
67804
67915
|
answer: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { children: [
|
|
@@ -67816,6 +67927,15 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
67816
67927
|
] })
|
|
67817
67928
|
}
|
|
67818
67929
|
];
|
|
67930
|
+
function getLSTFAQs(lstSymbol) {
|
|
67931
|
+
return [
|
|
67932
|
+
...faqs2,
|
|
67933
|
+
{
|
|
67934
|
+
question: "Why might I see a negative APY?",
|
|
67935
|
+
answer: `A negative APY can occur when ${lstSymbol}'s price drops on DEXes. This is usually temporary and tends to recover within a few days or a week.`
|
|
67936
|
+
}
|
|
67937
|
+
];
|
|
67938
|
+
}
|
|
67819
67939
|
var xSTRKSTRK = {
|
|
67820
67940
|
name: "Ekubo xSTRK/STRK",
|
|
67821
67941
|
description: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}),
|
|
@@ -67833,9 +67953,9 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
67833
67953
|
auditUrl: AUDIT_URL2,
|
|
67834
67954
|
maxTVL: Web3Number.fromWei("0", 18),
|
|
67835
67955
|
risk: {
|
|
67836
|
-
riskFactor:
|
|
67837
|
-
netRisk:
|
|
67838
|
-
notARisks: getNoRiskTags(
|
|
67956
|
+
riskFactor: _corelatedPoolRiskFactors,
|
|
67957
|
+
netRisk: _corelatedPoolRiskFactors.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _corelatedPoolRiskFactors.reduce((acc, curr) => acc + curr.weight, 0),
|
|
67958
|
+
notARisks: getNoRiskTags(_corelatedPoolRiskFactors)
|
|
67839
67959
|
},
|
|
67840
67960
|
apyMethodology: "APY based on 7-day historical performance, including fees and rewards.",
|
|
67841
67961
|
additionalInfo: {
|
|
@@ -67851,15 +67971,10 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
67851
67971
|
customShouldRebalance: async (currentPrice) => true,
|
|
67852
67972
|
minWaitHours: 24,
|
|
67853
67973
|
direction: "uponly"
|
|
67854
|
-
}
|
|
67974
|
+
},
|
|
67975
|
+
quoteAsset: Global.getDefaultTokens().find((t) => t.symbol === "STRK")
|
|
67855
67976
|
},
|
|
67856
|
-
faqs:
|
|
67857
|
-
...faqs2,
|
|
67858
|
-
{
|
|
67859
|
-
question: "Why might I see a negative APY?",
|
|
67860
|
-
answer: "A negative APY can occur when xSTRK's price drops on DEXes. This is usually temporary and tends to recover within a few days or a week."
|
|
67861
|
-
}
|
|
67862
|
-
],
|
|
67977
|
+
faqs: getLSTFAQs("xSTRK"),
|
|
67863
67978
|
points: [{
|
|
67864
67979
|
multiplier: 1,
|
|
67865
67980
|
logo: "https://endur.fi/favicon.ico",
|
|
@@ -67868,68 +67983,237 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
67868
67983
|
contractDetails: [],
|
|
67869
67984
|
investmentSteps: []
|
|
67870
67985
|
};
|
|
67871
|
-
var
|
|
67986
|
+
var lstStrategies = [
|
|
67872
67987
|
xSTRKSTRK,
|
|
67873
67988
|
{
|
|
67874
67989
|
...xSTRKSTRK,
|
|
67990
|
+
name: "Ekubo xWBTC/WBTC",
|
|
67991
|
+
description: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}),
|
|
67992
|
+
address: ContractAddr.from(
|
|
67993
|
+
"0x2ea99b4971d3c277fa4a9b4beb7d4d7d169e683393a29eef263d5d57b4380a"
|
|
67994
|
+
),
|
|
67995
|
+
launchBlock: 2338309,
|
|
67996
|
+
// must be same order as poolKey token0 and token1
|
|
67997
|
+
depositTokens: [
|
|
67998
|
+
Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
|
|
67999
|
+
Global.getDefaultTokens().find((t) => t.symbol === "xWBTC")
|
|
68000
|
+
],
|
|
68001
|
+
additionalInfo: {
|
|
68002
|
+
...xSTRKSTRK.additionalInfo,
|
|
68003
|
+
quoteAsset: Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
|
|
68004
|
+
lstContract: Global.getDefaultTokens().find((t) => t.symbol === "xWBTC").address
|
|
68005
|
+
},
|
|
68006
|
+
faqs: getLSTFAQs("xWBTC"),
|
|
68007
|
+
points: [],
|
|
68008
|
+
contractDetails: [],
|
|
68009
|
+
investmentSteps: []
|
|
68010
|
+
},
|
|
68011
|
+
{
|
|
68012
|
+
...xSTRKSTRK,
|
|
68013
|
+
name: "Ekubo xtBTC/tBTC",
|
|
68014
|
+
description: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}),
|
|
68015
|
+
address: ContractAddr.from(
|
|
68016
|
+
"0x785dc3dfc4e80ef2690a99512481e3ed3a5266180adda5a47e856245d68a4af"
|
|
68017
|
+
),
|
|
68018
|
+
launchBlock: 2344809,
|
|
68019
|
+
// must be same order as poolKey token0 and token1
|
|
68020
|
+
depositTokens: [
|
|
68021
|
+
Global.getDefaultTokens().find((t) => t.symbol === "xtBTC"),
|
|
68022
|
+
Global.getDefaultTokens().find((t) => t.symbol === "tBTC")
|
|
68023
|
+
],
|
|
68024
|
+
additionalInfo: {
|
|
68025
|
+
...xSTRKSTRK.additionalInfo,
|
|
68026
|
+
quoteAsset: Global.getDefaultTokens().find((t) => t.symbol === "tBTC"),
|
|
68027
|
+
lstContract: Global.getDefaultTokens().find((t) => t.symbol === "xtBTC").address
|
|
68028
|
+
},
|
|
68029
|
+
faqs: getLSTFAQs("xtBTC"),
|
|
68030
|
+
points: [],
|
|
68031
|
+
contractDetails: [],
|
|
68032
|
+
investmentSteps: []
|
|
68033
|
+
},
|
|
68034
|
+
{
|
|
68035
|
+
...xSTRKSTRK,
|
|
68036
|
+
name: "Ekubo xsBTC/solvBTC",
|
|
68037
|
+
description: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}),
|
|
68038
|
+
address: ContractAddr.from(
|
|
68039
|
+
"0x3af1c7faa7c464cf2c494e988972ad1939f1103dbfb6e47e9bf0c47e49b14ef"
|
|
68040
|
+
),
|
|
68041
|
+
launchBlock: 2344809,
|
|
68042
|
+
// must be same order as poolKey token0 and token1
|
|
68043
|
+
depositTokens: [
|
|
68044
|
+
Global.getDefaultTokens().find((t) => t.symbol === "xsBTC"),
|
|
68045
|
+
Global.getDefaultTokens().find((t) => t.symbol === "solvBTC")
|
|
68046
|
+
],
|
|
68047
|
+
additionalInfo: {
|
|
68048
|
+
...xSTRKSTRK.additionalInfo,
|
|
68049
|
+
quoteAsset: Global.getDefaultTokens().find((t) => t.symbol === "solvBTC"),
|
|
68050
|
+
lstContract: Global.getDefaultTokens().find((t) => t.symbol === "xsBTC").address
|
|
68051
|
+
},
|
|
68052
|
+
faqs: getLSTFAQs("xsBTC"),
|
|
68053
|
+
points: [],
|
|
68054
|
+
contractDetails: [],
|
|
68055
|
+
investmentSteps: []
|
|
68056
|
+
}
|
|
68057
|
+
];
|
|
68058
|
+
var ETHUSDCRe7Strategy = {
|
|
68059
|
+
...xSTRKSTRK,
|
|
68060
|
+
name: "Ekubo ETH/USDC",
|
|
68061
|
+
description: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}),
|
|
68062
|
+
address: ContractAddr.from(
|
|
68063
|
+
"0x160d8fa4569ef6a12e6bf47cb943d7b5ebba8a41a69a14c1d943050ba5ff947"
|
|
68064
|
+
),
|
|
68065
|
+
launchBlock: 1504232,
|
|
68066
|
+
// must be same order as poolKey token0 and token1
|
|
68067
|
+
depositTokens: [
|
|
68068
|
+
Global.getDefaultTokens().find((t) => t.symbol === "ETH"),
|
|
68069
|
+
Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
68070
|
+
],
|
|
68071
|
+
additionalInfo: {
|
|
68072
|
+
newBounds: "Managed by Re7",
|
|
68073
|
+
truePrice: 1,
|
|
68074
|
+
feeBps: 1e3,
|
|
68075
|
+
rebalanceConditions: {
|
|
68076
|
+
customShouldRebalance: async (currentPrice) => currentPrice > 0.99 && currentPrice < 1.01,
|
|
68077
|
+
minWaitHours: 6,
|
|
68078
|
+
direction: "any"
|
|
68079
|
+
},
|
|
68080
|
+
quoteAsset: Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
68081
|
+
},
|
|
68082
|
+
faqs: [
|
|
68083
|
+
...faqs2,
|
|
68084
|
+
{
|
|
68085
|
+
question: "Who is the curator of this strategy?",
|
|
68086
|
+
answer: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { children: [
|
|
68087
|
+
"Re7 Labs is the curator of this strategy. Re7 Labs is a well-known Web3 asset management firm. This strategy is completely managed by them, including ownership of the vault. Troves is developer of the smart contracts and maintains infrastructure to help users access these strategies. You can find more information about them on their website ",
|
|
68088
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("a", { href: "https://www.re7labs.xyz", style: { textDecoration: "underline", marginLeft: "2px" }, target: "_blank", children: "here" }),
|
|
68089
|
+
"."
|
|
68090
|
+
] })
|
|
68091
|
+
}
|
|
68092
|
+
],
|
|
68093
|
+
risk: highRisk,
|
|
68094
|
+
points: [],
|
|
68095
|
+
curator: { name: "Re7 Labs", logo: "https://www.re7labs.xyz/favicon.ico" }
|
|
68096
|
+
};
|
|
68097
|
+
var RE7Strategies = [
|
|
68098
|
+
ETHUSDCRe7Strategy,
|
|
68099
|
+
{
|
|
68100
|
+
...ETHUSDCRe7Strategy,
|
|
67875
68101
|
name: "Ekubo USDC/USDT",
|
|
67876
68102
|
description: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}),
|
|
67877
68103
|
address: ContractAddr.from(
|
|
67878
|
-
"
|
|
68104
|
+
"0x3a4f8debaf12af97bb911099bc011d63d6c208d4c5ba8e15d7f437785b0aaa2"
|
|
67879
68105
|
),
|
|
67880
|
-
launchBlock:
|
|
68106
|
+
launchBlock: 1506139,
|
|
67881
68107
|
// must be same order as poolKey token0 and token1
|
|
67882
68108
|
depositTokens: [
|
|
67883
68109
|
Global.getDefaultTokens().find((t) => t.symbol === "USDC"),
|
|
67884
68110
|
Global.getDefaultTokens().find((t) => t.symbol === "USDT")
|
|
67885
68111
|
],
|
|
67886
|
-
|
|
67887
|
-
newBounds: {
|
|
67888
|
-
lower: -1,
|
|
67889
|
-
upper: 1
|
|
67890
|
-
},
|
|
67891
|
-
truePrice: 1,
|
|
67892
|
-
feeBps: 1e3,
|
|
67893
|
-
rebalanceConditions: {
|
|
67894
|
-
customShouldRebalance: async (currentPrice) => currentPrice > 0.99 && currentPrice < 1.01,
|
|
67895
|
-
minWaitHours: 6,
|
|
67896
|
-
direction: "any"
|
|
67897
|
-
}
|
|
67898
|
-
}
|
|
68112
|
+
risk: xSTRKSTRK.risk
|
|
67899
68113
|
},
|
|
67900
68114
|
{
|
|
67901
|
-
...
|
|
68115
|
+
...ETHUSDCRe7Strategy,
|
|
67902
68116
|
name: "Ekubo STRK/USDC",
|
|
67903
68117
|
description: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}),
|
|
67904
68118
|
address: ContractAddr.from(
|
|
67905
|
-
"
|
|
68119
|
+
"0x351b36d0d9d8b40010658825adeeddb1397436cd41acd0ff6c6e23aaa8b5b30"
|
|
67906
68120
|
),
|
|
67907
|
-
launchBlock:
|
|
68121
|
+
launchBlock: 1504079,
|
|
67908
68122
|
// must be same order as poolKey token0 and token1
|
|
67909
68123
|
depositTokens: [
|
|
67910
68124
|
Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
|
|
67911
68125
|
Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
67912
68126
|
],
|
|
67913
|
-
|
|
67914
|
-
|
|
67915
|
-
|
|
67916
|
-
|
|
67917
|
-
|
|
67918
|
-
|
|
67919
|
-
|
|
67920
|
-
|
|
67921
|
-
|
|
67922
|
-
|
|
68127
|
+
risk: highRisk
|
|
68128
|
+
},
|
|
68129
|
+
{
|
|
68130
|
+
...ETHUSDCRe7Strategy,
|
|
68131
|
+
name: "Ekubo STRK/ETH",
|
|
68132
|
+
description: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}),
|
|
68133
|
+
address: ContractAddr.from(
|
|
68134
|
+
"0x4ce3024b0ee879009112d7b0e073f8a87153dd35b029347d4247ffe48d28f51"
|
|
68135
|
+
),
|
|
68136
|
+
launchBlock: 1504149,
|
|
68137
|
+
// must be same order as poolKey token0 and token1
|
|
68138
|
+
depositTokens: [
|
|
68139
|
+
Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
|
|
68140
|
+
Global.getDefaultTokens().find((t) => t.symbol === "ETH")
|
|
68141
|
+
],
|
|
68142
|
+
risk: highRisk
|
|
68143
|
+
},
|
|
68144
|
+
{
|
|
68145
|
+
...ETHUSDCRe7Strategy,
|
|
68146
|
+
name: "Ekubo WBTC/USDC",
|
|
68147
|
+
description: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}),
|
|
68148
|
+
address: ContractAddr.from(
|
|
68149
|
+
"0x2bcaef2eb7706875a5fdc6853dd961a0590f850bc3a031c59887189b5e84ba1"
|
|
68150
|
+
),
|
|
68151
|
+
launchBlock: 1506144,
|
|
68152
|
+
// must be same order as poolKey token0 and token1
|
|
68153
|
+
depositTokens: [
|
|
68154
|
+
Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
|
|
68155
|
+
Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
68156
|
+
],
|
|
68157
|
+
risk: mediumRisk
|
|
68158
|
+
},
|
|
68159
|
+
{
|
|
68160
|
+
...ETHUSDCRe7Strategy,
|
|
68161
|
+
name: "Ekubo tBTC/USDC",
|
|
68162
|
+
description: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}),
|
|
68163
|
+
address: ContractAddr.from(
|
|
68164
|
+
"0x4aad891a2d4432fba06b6558631bb13f6bbd7f6f33ab8c3111e344889ea4456"
|
|
68165
|
+
),
|
|
68166
|
+
launchBlock: 1501764,
|
|
68167
|
+
// must be same order as poolKey token0 and token1
|
|
68168
|
+
depositTokens: [
|
|
68169
|
+
Global.getDefaultTokens().find((t) => t.symbol === "tBTC"),
|
|
68170
|
+
Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
68171
|
+
],
|
|
68172
|
+
risk: mediumRisk
|
|
68173
|
+
},
|
|
68174
|
+
{
|
|
68175
|
+
...ETHUSDCRe7Strategy,
|
|
68176
|
+
name: "Ekubo WBTC/ETH",
|
|
68177
|
+
description: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}),
|
|
68178
|
+
address: ContractAddr.from(
|
|
68179
|
+
"0x1c9232b8186d9317652f05055615f18a120c2ad9e5ee96c39e031c257fb945b"
|
|
68180
|
+
),
|
|
68181
|
+
launchBlock: 1506145,
|
|
68182
|
+
// must be same order as poolKey token0 and token1
|
|
68183
|
+
depositTokens: [
|
|
68184
|
+
Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
|
|
68185
|
+
Global.getDefaultTokens().find((t) => t.symbol === "ETH")
|
|
68186
|
+
],
|
|
68187
|
+
risk: mediumRisk
|
|
68188
|
+
},
|
|
68189
|
+
{
|
|
68190
|
+
...ETHUSDCRe7Strategy,
|
|
68191
|
+
name: "Ekubo WBTC/STRK",
|
|
68192
|
+
description: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}),
|
|
68193
|
+
address: ContractAddr.from(
|
|
68194
|
+
"0x1248e385c23a929a015ec298a26560fa7745bbd6e41a886550e337b02714b1b"
|
|
68195
|
+
),
|
|
68196
|
+
launchBlock: 1506147,
|
|
68197
|
+
// must be same order as poolKey token0 and token1
|
|
68198
|
+
depositTokens: [
|
|
68199
|
+
Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
|
|
68200
|
+
Global.getDefaultTokens().find((t) => t.symbol === "STRK")
|
|
68201
|
+
],
|
|
68202
|
+
risk: highRisk
|
|
67923
68203
|
}
|
|
67924
68204
|
];
|
|
68205
|
+
var EkuboCLVaultStrategies = [
|
|
68206
|
+
...[lstStrategies[0]],
|
|
68207
|
+
...RE7Strategies
|
|
68208
|
+
];
|
|
67925
68209
|
EkuboCLVaultStrategies.forEach((s) => {
|
|
67926
68210
|
s.contractDetails = [
|
|
67927
68211
|
{
|
|
67928
68212
|
address: s.address,
|
|
67929
68213
|
name: "Vault",
|
|
67930
68214
|
sourceCodeUrl: "https://github.com/strkfarm/strkfarm-contracts/tree/main/src/strategies/cl_vault"
|
|
67931
|
-
}
|
|
67932
|
-
...COMMON_CONTRACTS
|
|
68215
|
+
}
|
|
68216
|
+
// ...COMMON_CONTRACTS
|
|
67933
68217
|
];
|
|
67934
68218
|
s.docs = "https://docs.troves.fi/p/ekubo-cl-vaults";
|
|
67935
68219
|
s.description = /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { children: [
|
|
@@ -67950,7 +68234,11 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
67950
68234
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h4", { style: { fontWeight: "bold" }, children: "Key points to note:" }),
|
|
67951
68235
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "10px", color: "var(--chakra-colors-text_secondary)" }, children: [
|
|
67952
68236
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { style: {}, children: "1. During withdrawal, you may receive either or both tokens depending on market conditions and prevailing prices." }),
|
|
67953
|
-
s.
|
|
68237
|
+
s.additionalInfo.lstContract && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("p", { style: {}, children: [
|
|
68238
|
+
"2. Sometimes you might see a negative APY \u2014 this is usually not a big deal. It happens when ",
|
|
68239
|
+
s.name.split(" ")[1].split("/")[0],
|
|
68240
|
+
"'s price drops on DEXes, but things typically bounce back within a few days or a week."
|
|
68241
|
+
] })
|
|
67954
68242
|
] })
|
|
67955
68243
|
] })
|
|
67956
68244
|
] });
|
|
@@ -69897,7 +70185,7 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
69897
70185
|
name: "Endur",
|
|
69898
70186
|
logo: "https://app.endur.fi/logo.png"
|
|
69899
70187
|
};
|
|
69900
|
-
var
|
|
70188
|
+
var _riskFactor2 = [
|
|
69901
70189
|
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25, reason: "Audited by CSC" },
|
|
69902
70190
|
{ type: "Depeg Risk" /* DEPEG_RISK */, value: 0.25, weight: 25, reason: "Depending on prevailing market conditions and trading activity, xSTRK may lose its peg to the underlying asset." },
|
|
69903
70191
|
{ type: "Liquidation Risk" /* LIQUIDATION_RISK */, value: 0.1, weight: 10, reason: "Liquidation risk is low due to the nature of the Re7 Pool on Vesu" },
|
|
@@ -69972,9 +70260,9 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
69972
70260
|
protocols: [endurProtocol, vesuProtocol],
|
|
69973
70261
|
maxTVL: new Web3Number("1500000", 18),
|
|
69974
70262
|
risk: {
|
|
69975
|
-
riskFactor:
|
|
69976
|
-
netRisk:
|
|
69977
|
-
notARisks: getNoRiskTags(
|
|
70263
|
+
riskFactor: _riskFactor2,
|
|
70264
|
+
netRisk: _riskFactor2.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor2.reduce((acc, curr) => acc + curr.weight, 0),
|
|
70265
|
+
notARisks: getNoRiskTags(_riskFactor2)
|
|
69978
70266
|
},
|
|
69979
70267
|
additionalInfo: {
|
|
69980
70268
|
mainToken: Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
|
|
@@ -72722,7 +73010,7 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
72722
73010
|
let pools = [];
|
|
72723
73011
|
try {
|
|
72724
73012
|
const data = await getAPIUsingHeadlessBrowser(
|
|
72725
|
-
|
|
73013
|
+
`${ENDPOINTS.VESU_BASE}/pools`
|
|
72726
73014
|
);
|
|
72727
73015
|
pools = data.data;
|
|
72728
73016
|
for (const pool of vesu_pools_default.data) {
|
|
@@ -75578,7 +75866,7 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
75578
75866
|
vaultSettings.leafAdapters.push(commonAdapter.getAvnuAdapter(STRKToken.address, USDCToken.address, "avnu_swap_rewards" /* AVNU_SWAP_REWARDS */).bind(commonAdapter));
|
|
75579
75867
|
return vaultSettings;
|
|
75580
75868
|
}
|
|
75581
|
-
var
|
|
75869
|
+
var _riskFactor3 = [
|
|
75582
75870
|
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25, reason: "Audited by Zellic" },
|
|
75583
75871
|
{ type: "Liquidation Risk" /* LIQUIDATION_RISK */, value: 1.5, weight: 50, reason: "Liquidation risk is mitigated by stable price feed on Starknet" },
|
|
75584
75872
|
{ type: "Technical Risk" /* TECHNICAL_RISK */, value: 1, weight: 50, reason: "Technical failures like risk monitoring failures" }
|
|
@@ -75782,9 +76070,9 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
75782
76070
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "USDC")],
|
|
75783
76071
|
additionalInfo: getLooperSettings("USDC", "ETH", usdcVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
75784
76072
|
risk: {
|
|
75785
|
-
riskFactor:
|
|
75786
|
-
netRisk:
|
|
75787
|
-
notARisks: getNoRiskTags(
|
|
76073
|
+
riskFactor: _riskFactor3,
|
|
76074
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
76075
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
75788
76076
|
},
|
|
75789
76077
|
protocols: [Protocols.VESU],
|
|
75790
76078
|
maxTVL: Web3Number.fromWei(0, 6),
|
|
@@ -75801,9 +76089,9 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
75801
76089
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "WBTC")],
|
|
75802
76090
|
additionalInfo: getLooperSettings("WBTC", "ETH", wbtcVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
75803
76091
|
risk: {
|
|
75804
|
-
riskFactor:
|
|
75805
|
-
netRisk:
|
|
75806
|
-
notARisks: getNoRiskTags(
|
|
76092
|
+
riskFactor: _riskFactor3,
|
|
76093
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
76094
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
75807
76095
|
},
|
|
75808
76096
|
protocols: [Protocols.VESU],
|
|
75809
76097
|
maxTVL: Web3Number.fromWei(0, 8),
|
|
@@ -75820,9 +76108,9 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
75820
76108
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "ETH")],
|
|
75821
76109
|
additionalInfo: getLooperSettings("ETH", "WBTC", ethVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
75822
76110
|
risk: {
|
|
75823
|
-
riskFactor:
|
|
75824
|
-
netRisk:
|
|
75825
|
-
notARisks: getNoRiskTags(
|
|
76111
|
+
riskFactor: _riskFactor3,
|
|
76112
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
76113
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
75826
76114
|
},
|
|
75827
76115
|
protocols: [Protocols.VESU],
|
|
75828
76116
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
@@ -75839,9 +76127,9 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
75839
76127
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "STRK")],
|
|
75840
76128
|
additionalInfo: getLooperSettings("STRK", "ETH", strkVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
75841
76129
|
risk: {
|
|
75842
|
-
riskFactor:
|
|
75843
|
-
netRisk:
|
|
75844
|
-
notARisks: getNoRiskTags(
|
|
76130
|
+
riskFactor: _riskFactor3,
|
|
76131
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
76132
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
75845
76133
|
},
|
|
75846
76134
|
protocols: [Protocols.VESU],
|
|
75847
76135
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
@@ -75858,9 +76146,9 @@ ${JSON.stringify(data, null, 2)}`;
|
|
|
75858
76146
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "USDT")],
|
|
75859
76147
|
additionalInfo: getLooperSettings("USDT", "ETH", usdtVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
75860
76148
|
risk: {
|
|
75861
|
-
riskFactor:
|
|
75862
|
-
netRisk:
|
|
75863
|
-
notARisks: getNoRiskTags(
|
|
76149
|
+
riskFactor: _riskFactor3,
|
|
76150
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
76151
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
75864
76152
|
},
|
|
75865
76153
|
protocols: [Protocols.VESU],
|
|
75866
76154
|
maxTVL: Web3Number.fromWei(0, 6),
|