@strkfarm/sdk 1.1.5 → 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 +393 -246
- package/dist/index.browser.mjs +171 -36
- package/dist/index.d.ts +4 -1
- package/dist/index.js +171 -36
- package/dist/index.mjs +171 -36
- package/package.json +2 -1
- package/src/global.ts +32 -0
- package/src/interfaces/common.tsx +1 -0
- package/src/modules/harvests.ts +2 -1
- package/src/modules/pricer.ts +25 -8
- package/src/strategies/constants.ts +5 -1
- package/src/strategies/ekubo-cl-vault.tsx +95 -18
- package/src/strategies/universal-adapters/vesu-adapter.ts +2 -1
- package/src/strategies/vesu-rebalance.tsx +3 -3
|
@@ -1668,6 +1668,17 @@ const faqs: FAQ[] = [
|
|
|
1668
1668
|
},
|
|
1669
1669
|
];
|
|
1670
1670
|
|
|
1671
|
+
function getLSTFAQs(lstSymbol: string): FAQ[] {
|
|
1672
|
+
return [
|
|
1673
|
+
...faqs,
|
|
1674
|
+
{
|
|
1675
|
+
question: "Why might I see a negative APY?",
|
|
1676
|
+
answer:
|
|
1677
|
+
`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.`,
|
|
1678
|
+
},
|
|
1679
|
+
]
|
|
1680
|
+
}
|
|
1681
|
+
|
|
1671
1682
|
const xSTRKSTRK: IStrategyMetadata<CLVaultStrategySettings> = {
|
|
1672
1683
|
name: "Ekubo xSTRK/STRK",
|
|
1673
1684
|
description: <></>,
|
|
@@ -1709,14 +1720,7 @@ const xSTRKSTRK: IStrategyMetadata<CLVaultStrategySettings> = {
|
|
|
1709
1720
|
},
|
|
1710
1721
|
quoteAsset: Global.getDefaultTokens().find((t) => t.symbol === "STRK")!,
|
|
1711
1722
|
},
|
|
1712
|
-
faqs:
|
|
1713
|
-
...faqs,
|
|
1714
|
-
{
|
|
1715
|
-
question: "Why might I see a negative APY?",
|
|
1716
|
-
answer:
|
|
1717
|
-
"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.",
|
|
1718
|
-
},
|
|
1719
|
-
],
|
|
1723
|
+
faqs: getLSTFAQs("xSTRK"),
|
|
1720
1724
|
points: [{
|
|
1721
1725
|
multiplier: 1,
|
|
1722
1726
|
logo: 'https://endur.fi/favicon.ico',
|
|
@@ -1726,6 +1730,79 @@ const xSTRKSTRK: IStrategyMetadata<CLVaultStrategySettings> = {
|
|
|
1726
1730
|
investmentSteps: []
|
|
1727
1731
|
};
|
|
1728
1732
|
|
|
1733
|
+
const lstStrategies: IStrategyMetadata<CLVaultStrategySettings>[] = [
|
|
1734
|
+
xSTRKSTRK,
|
|
1735
|
+
{
|
|
1736
|
+
...xSTRKSTRK,
|
|
1737
|
+
name: "Ekubo xWBTC/WBTC",
|
|
1738
|
+
description: <></>,
|
|
1739
|
+
address: ContractAddr.from(
|
|
1740
|
+
"0x2ea99b4971d3c277fa4a9b4beb7d4d7d169e683393a29eef263d5d57b4380a"
|
|
1741
|
+
),
|
|
1742
|
+
launchBlock: 2338309,
|
|
1743
|
+
// must be same order as poolKey token0 and token1
|
|
1744
|
+
depositTokens: [
|
|
1745
|
+
Global.getDefaultTokens().find((t) => t.symbol === "WBTC")!,
|
|
1746
|
+
Global.getDefaultTokens().find((t) => t.symbol === "xWBTC")!,
|
|
1747
|
+
],
|
|
1748
|
+
additionalInfo: {
|
|
1749
|
+
...xSTRKSTRK.additionalInfo,
|
|
1750
|
+
quoteAsset: Global.getDefaultTokens().find((t) => t.symbol === "WBTC")!,
|
|
1751
|
+
lstContract: Global.getDefaultTokens().find((t) => t.symbol === "xWBTC")!.address,
|
|
1752
|
+
},
|
|
1753
|
+
faqs: getLSTFAQs("xWBTC"),
|
|
1754
|
+
points: [],
|
|
1755
|
+
contractDetails: [],
|
|
1756
|
+
investmentSteps: []
|
|
1757
|
+
},
|
|
1758
|
+
{
|
|
1759
|
+
...xSTRKSTRK,
|
|
1760
|
+
name: "Ekubo xtBTC/tBTC",
|
|
1761
|
+
description: <></>,
|
|
1762
|
+
address: ContractAddr.from(
|
|
1763
|
+
"0x785dc3dfc4e80ef2690a99512481e3ed3a5266180adda5a47e856245d68a4af"
|
|
1764
|
+
),
|
|
1765
|
+
launchBlock: 2344809,
|
|
1766
|
+
// must be same order as poolKey token0 and token1
|
|
1767
|
+
depositTokens: [
|
|
1768
|
+
Global.getDefaultTokens().find((t) => t.symbol === "xtBTC")!,
|
|
1769
|
+
Global.getDefaultTokens().find((t) => t.symbol === "tBTC")!,
|
|
1770
|
+
],
|
|
1771
|
+
additionalInfo: {
|
|
1772
|
+
...xSTRKSTRK.additionalInfo,
|
|
1773
|
+
quoteAsset: Global.getDefaultTokens().find((t) => t.symbol === "tBTC")!,
|
|
1774
|
+
lstContract: Global.getDefaultTokens().find((t) => t.symbol === "xtBTC")!.address,
|
|
1775
|
+
},
|
|
1776
|
+
faqs: getLSTFAQs("xtBTC"),
|
|
1777
|
+
points: [],
|
|
1778
|
+
contractDetails: [],
|
|
1779
|
+
investmentSteps: []
|
|
1780
|
+
},
|
|
1781
|
+
{
|
|
1782
|
+
...xSTRKSTRK,
|
|
1783
|
+
name: "Ekubo xsBTC/solvBTC",
|
|
1784
|
+
description: <></>,
|
|
1785
|
+
address: ContractAddr.from(
|
|
1786
|
+
"0x3af1c7faa7c464cf2c494e988972ad1939f1103dbfb6e47e9bf0c47e49b14ef"
|
|
1787
|
+
),
|
|
1788
|
+
launchBlock: 2344809,
|
|
1789
|
+
// must be same order as poolKey token0 and token1
|
|
1790
|
+
depositTokens: [
|
|
1791
|
+
Global.getDefaultTokens().find((t) => t.symbol === "xsBTC")!,
|
|
1792
|
+
Global.getDefaultTokens().find((t) => t.symbol === "solvBTC")!,
|
|
1793
|
+
],
|
|
1794
|
+
additionalInfo: {
|
|
1795
|
+
...xSTRKSTRK.additionalInfo,
|
|
1796
|
+
quoteAsset: Global.getDefaultTokens().find((t) => t.symbol === "solvBTC")!,
|
|
1797
|
+
lstContract: Global.getDefaultTokens().find((t) => t.symbol === "xsBTC")!.address,
|
|
1798
|
+
},
|
|
1799
|
+
faqs: getLSTFAQs("xsBTC"),
|
|
1800
|
+
points: [],
|
|
1801
|
+
contractDetails: [],
|
|
1802
|
+
investmentSteps: []
|
|
1803
|
+
},
|
|
1804
|
+
];
|
|
1805
|
+
|
|
1729
1806
|
const ETHUSDCRe7Strategy: IStrategyMetadata<CLVaultStrategySettings> = {
|
|
1730
1807
|
...xSTRKSTRK,
|
|
1731
1808
|
name: "Ekubo ETH/USDC",
|
|
@@ -1733,7 +1810,7 @@ const ETHUSDCRe7Strategy: IStrategyMetadata<CLVaultStrategySettings> = {
|
|
|
1733
1810
|
address: ContractAddr.from(
|
|
1734
1811
|
"0x160d8fa4569ef6a12e6bf47cb943d7b5ebba8a41a69a14c1d943050ba5ff947"
|
|
1735
1812
|
),
|
|
1736
|
-
launchBlock:
|
|
1813
|
+
launchBlock: 1504232,
|
|
1737
1814
|
// must be same order as poolKey token0 and token1
|
|
1738
1815
|
depositTokens: [
|
|
1739
1816
|
Global.getDefaultTokens().find((t) => t.symbol === "ETH")!,
|
|
@@ -1773,7 +1850,7 @@ const RE7Strategies: IStrategyMetadata<CLVaultStrategySettings>[] = [
|
|
|
1773
1850
|
address: ContractAddr.from(
|
|
1774
1851
|
"0x3a4f8debaf12af97bb911099bc011d63d6c208d4c5ba8e15d7f437785b0aaa2"
|
|
1775
1852
|
),
|
|
1776
|
-
launchBlock:
|
|
1853
|
+
launchBlock: 1506139,
|
|
1777
1854
|
// must be same order as poolKey token0 and token1
|
|
1778
1855
|
depositTokens: [
|
|
1779
1856
|
Global.getDefaultTokens().find((t) => t.symbol === "USDC")!,
|
|
@@ -1788,7 +1865,7 @@ const RE7Strategies: IStrategyMetadata<CLVaultStrategySettings>[] = [
|
|
|
1788
1865
|
address: ContractAddr.from(
|
|
1789
1866
|
"0x351b36d0d9d8b40010658825adeeddb1397436cd41acd0ff6c6e23aaa8b5b30"
|
|
1790
1867
|
),
|
|
1791
|
-
launchBlock:
|
|
1868
|
+
launchBlock: 1504079,
|
|
1792
1869
|
// must be same order as poolKey token0 and token1
|
|
1793
1870
|
depositTokens: [
|
|
1794
1871
|
Global.getDefaultTokens().find((t) => t.symbol === "STRK")!,
|
|
@@ -1803,7 +1880,7 @@ const RE7Strategies: IStrategyMetadata<CLVaultStrategySettings>[] = [
|
|
|
1803
1880
|
address: ContractAddr.from(
|
|
1804
1881
|
"0x4ce3024b0ee879009112d7b0e073f8a87153dd35b029347d4247ffe48d28f51"
|
|
1805
1882
|
),
|
|
1806
|
-
launchBlock:
|
|
1883
|
+
launchBlock: 1504149,
|
|
1807
1884
|
// must be same order as poolKey token0 and token1
|
|
1808
1885
|
depositTokens: [
|
|
1809
1886
|
Global.getDefaultTokens().find((t) => t.symbol === "STRK")!,
|
|
@@ -1818,7 +1895,7 @@ const RE7Strategies: IStrategyMetadata<CLVaultStrategySettings>[] = [
|
|
|
1818
1895
|
address: ContractAddr.from(
|
|
1819
1896
|
"0x2bcaef2eb7706875a5fdc6853dd961a0590f850bc3a031c59887189b5e84ba1"
|
|
1820
1897
|
),
|
|
1821
|
-
launchBlock:
|
|
1898
|
+
launchBlock: 1506144,
|
|
1822
1899
|
// must be same order as poolKey token0 and token1
|
|
1823
1900
|
depositTokens: [
|
|
1824
1901
|
Global.getDefaultTokens().find((t) => t.symbol === "WBTC")!,
|
|
@@ -1848,7 +1925,7 @@ const RE7Strategies: IStrategyMetadata<CLVaultStrategySettings>[] = [
|
|
|
1848
1925
|
address: ContractAddr.from(
|
|
1849
1926
|
"0x1c9232b8186d9317652f05055615f18a120c2ad9e5ee96c39e031c257fb945b"
|
|
1850
1927
|
),
|
|
1851
|
-
launchBlock:
|
|
1928
|
+
launchBlock: 1506145,
|
|
1852
1929
|
// must be same order as poolKey token0 and token1
|
|
1853
1930
|
depositTokens: [
|
|
1854
1931
|
Global.getDefaultTokens().find((t) => t.symbol === "WBTC")!,
|
|
@@ -1863,7 +1940,7 @@ const RE7Strategies: IStrategyMetadata<CLVaultStrategySettings>[] = [
|
|
|
1863
1940
|
address: ContractAddr.from(
|
|
1864
1941
|
"0x1248e385c23a929a015ec298a26560fa7745bbd6e41a886550e337b02714b1b"
|
|
1865
1942
|
),
|
|
1866
|
-
launchBlock:
|
|
1943
|
+
launchBlock: 1506147,
|
|
1867
1944
|
// must be same order as poolKey token0 and token1
|
|
1868
1945
|
depositTokens: [
|
|
1869
1946
|
Global.getDefaultTokens().find((t) => t.symbol === "WBTC")!,
|
|
@@ -1877,7 +1954,7 @@ const RE7Strategies: IStrategyMetadata<CLVaultStrategySettings>[] = [
|
|
|
1877
1954
|
* Represents the Ekubo CL Vault Strategies.
|
|
1878
1955
|
*/
|
|
1879
1956
|
export const EkuboCLVaultStrategies: IStrategyMetadata<CLVaultStrategySettings>[] = [
|
|
1880
|
-
|
|
1957
|
+
...[lstStrategies[0]],
|
|
1881
1958
|
...RE7Strategies,
|
|
1882
1959
|
];
|
|
1883
1960
|
|
|
@@ -1916,9 +1993,9 @@ EkuboCLVaultStrategies.forEach((s) => {
|
|
|
1916
1993
|
<div style={{display: "flex", flexDirection: "column", gap: "10px", color: 'var(--chakra-colors-text_secondary)'}}>
|
|
1917
1994
|
<p style={{}}>1. During withdrawal, you may receive either or both tokens depending
|
|
1918
1995
|
on market conditions and prevailing prices.</p>
|
|
1919
|
-
{s.
|
|
1996
|
+
{s.additionalInfo.lstContract && <p style={{}}>
|
|
1920
1997
|
2. Sometimes you might see a negative APY — this is usually not a big
|
|
1921
|
-
deal. It happens when
|
|
1998
|
+
deal. It happens when {s.name.split(" ")[1].split('/')[0]}'s price drops on DEXes, but things
|
|
1922
1999
|
typically bounce back within a few days or a week.
|
|
1923
2000
|
</p>}
|
|
1924
2001
|
</div>
|
|
@@ -10,6 +10,7 @@ import VesuPoolIDs from "@/data/vesu_pools.json";
|
|
|
10
10
|
import { getAPIUsingHeadlessBrowser } from "@/node/headless";
|
|
11
11
|
import { Global } from "@/global";
|
|
12
12
|
import { VESU_REWARDS_CONTRACT } from "@/modules/harvests";
|
|
13
|
+
import { ENDPOINTS } from "../constants";
|
|
13
14
|
|
|
14
15
|
interface VesuPoolsInfo { pools: any[]; isErrorPoolsAPI: boolean };
|
|
15
16
|
|
|
@@ -350,7 +351,7 @@ export class VesuAdapter extends BaseAdapter {
|
|
|
350
351
|
let pools: any[] = [];
|
|
351
352
|
try {
|
|
352
353
|
const data = await getAPIUsingHeadlessBrowser(
|
|
353
|
-
|
|
354
|
+
`${ENDPOINTS.VESU_BASE}/pools`
|
|
354
355
|
);
|
|
355
356
|
pools = data.data;
|
|
356
357
|
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
import { getAPIUsingHeadlessBrowser } from "@/node/headless";
|
|
28
28
|
import { VesuHarvests } from "@/modules/harvests";
|
|
29
29
|
import VesuPoolIDs from "@/data/vesu_pools.json";
|
|
30
|
-
import { COMMON_CONTRACTS } from "./constants";
|
|
30
|
+
import { COMMON_CONTRACTS, ENDPOINTS } from "./constants";
|
|
31
31
|
|
|
32
32
|
interface PoolProps {
|
|
33
33
|
pool_id: ContractAddr;
|
|
@@ -223,7 +223,7 @@ export class VesuRebalance extends BaseStrategy<
|
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
static async getAllPossibleVerifiedPools(asset: ContractAddr) {
|
|
226
|
-
const data = await getAPIUsingHeadlessBrowser(
|
|
226
|
+
const data = await getAPIUsingHeadlessBrowser(`${ENDPOINTS.VESU_BASE}/pools`);
|
|
227
227
|
const verifiedPools = data.data.filter((d: any) => d.isVerified);
|
|
228
228
|
const pools = verifiedPools
|
|
229
229
|
.map((p: any) => {
|
|
@@ -490,7 +490,7 @@ export class VesuRebalance extends BaseStrategy<
|
|
|
490
490
|
let pools: any[] = [];
|
|
491
491
|
try {
|
|
492
492
|
const data = await getAPIUsingHeadlessBrowser(
|
|
493
|
-
|
|
493
|
+
`${ENDPOINTS.VESU_BASE}/pools`
|
|
494
494
|
);
|
|
495
495
|
pools = data.data;
|
|
496
496
|
|