@strkfarm/sdk 2.0.0-dev.4 → 2.0.0-dev.41
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 +190 -36
- package/dist/cli.mjs +188 -34
- package/dist/index.browser.global.js +116250 -90801
- package/dist/index.browser.mjs +13050 -10957
- package/dist/index.d.ts +2232 -1933
- package/dist/index.js +13380 -11084
- package/dist/index.mjs +13280 -11007
- package/package.json +6 -7
- package/src/data/avnu.abi.json +840 -0
- package/src/data/ekubo-price-fethcer.abi.json +265 -0
- package/src/data/redeem-request-nft.abi.json +752 -0
- package/src/data/universal-vault.abi.json +8 -7
- package/src/dataTypes/_bignumber.ts +13 -4
- package/src/dataTypes/bignumber.browser.ts +10 -1
- package/src/dataTypes/bignumber.node.ts +10 -1
- package/src/dataTypes/index.ts +3 -2
- package/src/dataTypes/mynumber.ts +141 -0
- package/src/global.ts +93 -36
- package/src/index.browser.ts +2 -1
- package/src/interfaces/common.tsx +218 -5
- package/src/modules/apollo-client-config.ts +28 -0
- package/src/modules/avnu.ts +21 -12
- package/src/modules/ekubo-pricer.ts +79 -0
- package/src/modules/ekubo-quoter.ts +48 -30
- package/src/modules/erc20.ts +17 -0
- package/src/modules/harvests.ts +43 -29
- package/src/modules/index.ts +2 -1
- package/src/modules/pragma.ts +23 -8
- package/src/modules/pricer-avnu-api.ts +114 -0
- package/src/modules/pricer-from-api.ts +156 -15
- package/src/modules/pricer-lst.ts +1 -1
- package/src/modules/pricer.ts +94 -40
- package/src/modules/pricerBase.ts +2 -1
- package/src/node/deployer.ts +36 -1
- package/src/node/pricer-redis.ts +3 -1
- package/src/strategies/base-strategy.ts +168 -16
- package/src/strategies/constants.ts +8 -3
- package/src/strategies/ekubo-cl-vault.tsx +1047 -351
- package/src/strategies/factory.ts +199 -0
- package/src/strategies/index.ts +5 -3
- package/src/strategies/registry.ts +262 -0
- package/src/strategies/sensei.ts +353 -9
- package/src/strategies/svk-strategy.ts +283 -31
- package/src/strategies/token-boosted-xstrk-carry-strategy.tsx +1262 -0
- package/src/strategies/types.ts +4 -0
- package/src/strategies/universal-adapters/adapter-utils.ts +4 -1
- package/src/strategies/universal-adapters/avnu-adapter.ts +196 -272
- package/src/strategies/universal-adapters/baseAdapter.ts +263 -251
- package/src/strategies/universal-adapters/common-adapter.ts +206 -203
- package/src/strategies/universal-adapters/index.ts +10 -8
- package/src/strategies/universal-adapters/svk-troves-adapter.ts +511 -0
- package/src/strategies/universal-adapters/token-transfer-adapter.ts +200 -0
- package/src/strategies/universal-adapters/vesu-adapter.ts +120 -82
- package/src/strategies/universal-adapters/vesu-modify-position-adapter.ts +525 -0
- package/src/strategies/universal-adapters/vesu-multiply-adapter.ts +1098 -712
- package/src/strategies/universal-adapters/vesu-position-common.ts +258 -0
- package/src/strategies/universal-adapters/vesu-supply-only-adapter.ts +18 -3
- package/src/strategies/universal-lst-muliplier-strategy.tsx +631 -414
- package/src/strategies/universal-strategy.tsx +1331 -1173
- package/src/strategies/vesu-rebalance.tsx +252 -152
- package/src/strategies/yoloVault.ts +1087 -0
- package/src/utils/cacheClass.ts +11 -2
- package/src/utils/health-factor-math.ts +33 -1
- package/src/utils/index.ts +3 -1
- package/src/utils/logger.browser.ts +22 -4
- package/src/utils/logger.node.ts +259 -24
- package/src/utils/starknet-call-parser.ts +1036 -0
- package/src/utils/strategy-utils.ts +61 -0
- package/src/modules/ExtendedWrapperSDk/index.ts +0 -62
- package/src/modules/ExtendedWrapperSDk/types.ts +0 -311
- package/src/modules/ExtendedWrapperSDk/wrapper.ts +0 -395
- package/src/strategies/universal-adapters/extended-adapter.ts +0 -661
- package/src/strategies/universal-adapters/unused-balance-adapter.ts +0 -109
- package/src/strategies/vesu-extended-strategy/services/operationService.ts +0 -34
- package/src/strategies/vesu-extended-strategy/utils/config.runtime.ts +0 -77
- package/src/strategies/vesu-extended-strategy/utils/constants.ts +0 -49
- package/src/strategies/vesu-extended-strategy/utils/helper.ts +0 -372
- package/src/strategies/vesu-extended-strategy/vesu-extended-strategy.tsx +0 -1140
|
@@ -1628,32 +1628,32 @@
|
|
|
1628
1628
|
{
|
|
1629
1629
|
"name": "ERC20Event",
|
|
1630
1630
|
"type": "openzeppelin_token::erc20::erc20::ERC20Component::Event",
|
|
1631
|
-
"kind": "
|
|
1631
|
+
"kind": "flat"
|
|
1632
1632
|
},
|
|
1633
1633
|
{
|
|
1634
1634
|
"name": "ERC4626Event",
|
|
1635
1635
|
"type": "openzeppelin_token::erc20::extensions::erc4626::erc4626::ERC4626Component::Event",
|
|
1636
|
-
"kind": "
|
|
1636
|
+
"kind": "flat"
|
|
1637
1637
|
},
|
|
1638
1638
|
{
|
|
1639
1639
|
"name": "SRC5Event",
|
|
1640
1640
|
"type": "openzeppelin_introspection::src5::SRC5Component::Event",
|
|
1641
|
-
"kind": "
|
|
1641
|
+
"kind": "flat"
|
|
1642
1642
|
},
|
|
1643
1643
|
{
|
|
1644
1644
|
"name": "AccessControlEvent",
|
|
1645
1645
|
"type": "openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::Event",
|
|
1646
|
-
"kind": "
|
|
1646
|
+
"kind": "flat"
|
|
1647
1647
|
},
|
|
1648
1648
|
{
|
|
1649
1649
|
"name": "UpgradeableEvent",
|
|
1650
1650
|
"type": "openzeppelin_upgrades::upgradeable::UpgradeableComponent::Event",
|
|
1651
|
-
"kind": "
|
|
1651
|
+
"kind": "flat"
|
|
1652
1652
|
},
|
|
1653
1653
|
{
|
|
1654
1654
|
"name": "PausableEvent",
|
|
1655
1655
|
"type": "openzeppelin_security::pausable::PausableComponent::Event",
|
|
1656
|
-
"kind": "
|
|
1656
|
+
"kind": "flat"
|
|
1657
1657
|
},
|
|
1658
1658
|
{
|
|
1659
1659
|
"name": "RedeemRequested",
|
|
@@ -1677,4 +1677,5 @@
|
|
|
1677
1677
|
}
|
|
1678
1678
|
]
|
|
1679
1679
|
}
|
|
1680
|
-
]
|
|
1680
|
+
]
|
|
1681
|
+
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { logger } from "@/utils/logger";
|
|
2
2
|
import BigNumber from "bignumber.js";
|
|
3
|
+
import { uint256 } from "starknet";
|
|
3
4
|
|
|
4
5
|
export class _Web3Number<T extends _Web3Number<T>> extends BigNumber {
|
|
5
6
|
decimals: number;
|
|
@@ -26,11 +27,11 @@ export class _Web3Number<T extends _Web3Number<T>> extends BigNumber {
|
|
|
26
27
|
plus(value: string | number | T): T {
|
|
27
28
|
// Convert to raw number/string to avoid calling overridden methods
|
|
28
29
|
const rawValue = this.getStandardString(value);
|
|
29
|
-
|
|
30
|
+
|
|
30
31
|
// Create a fresh BigNumber instance to do the math
|
|
31
32
|
const thisBN = new BigNumber(this.toString());
|
|
32
33
|
const result = thisBN.plus(rawValue);
|
|
33
|
-
|
|
34
|
+
|
|
34
35
|
return this.construct(result.toString(), this.decimals);
|
|
35
36
|
// const _value = this.getStandardString(value);
|
|
36
37
|
// return this.construct(super.plus(_value).toString(), this.decimals);
|
|
@@ -38,11 +39,11 @@ export class _Web3Number<T extends _Web3Number<T>> extends BigNumber {
|
|
|
38
39
|
|
|
39
40
|
minus(n: number | string | T, base?: number): T {
|
|
40
41
|
const rawValue = this.getStandardString(n);
|
|
41
|
-
|
|
42
|
+
|
|
42
43
|
// Create a fresh BigNumber instance to do the math
|
|
43
44
|
const thisBN = new BigNumber(this.toString());
|
|
44
45
|
const result = thisBN.minus(rawValue, base);
|
|
45
|
-
|
|
46
|
+
|
|
46
47
|
return this.construct(result.toString(), this.decimals);
|
|
47
48
|
// const _value = this.getStandardString(n);
|
|
48
49
|
// return this.construct(super.minus(_value, base).toString(), this.decimals);
|
|
@@ -100,6 +101,10 @@ export class _Web3Number<T extends _Web3Number<T>> extends BigNumber {
|
|
|
100
101
|
return this.construct(Math.abs(this.toNumber()).toFixed(12), this.decimals);
|
|
101
102
|
}
|
|
102
103
|
|
|
104
|
+
toFixedRoundDown(dp?: number): string {
|
|
105
|
+
return this.toFixed(dp, BigNumber.ROUND_DOWN);
|
|
106
|
+
}
|
|
107
|
+
|
|
103
108
|
toI129(): { mag: bigint, sign: 0 | 1 } {
|
|
104
109
|
const sign = this.isNegative() ? 1 : 0;
|
|
105
110
|
return {
|
|
@@ -107,6 +112,10 @@ export class _Web3Number<T extends _Web3Number<T>> extends BigNumber {
|
|
|
107
112
|
sign: sign,
|
|
108
113
|
}
|
|
109
114
|
}
|
|
115
|
+
|
|
116
|
+
toUint256() {
|
|
117
|
+
return uint256.bnToUint256(this.toWei());
|
|
118
|
+
}
|
|
110
119
|
}
|
|
111
120
|
|
|
112
121
|
BigNumber.config({ DECIMAL_PLACES: 18, ROUNDING_MODE: BigNumber.ROUND_DOWN });
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Uint256, uint256 } from "starknet";
|
|
1
2
|
import { _Web3Number } from "./_bignumber";
|
|
2
3
|
|
|
3
4
|
export class Web3Number extends _Web3Number<Web3Number> {
|
|
@@ -5,4 +6,12 @@ export class Web3Number extends _Web3Number<Web3Number> {
|
|
|
5
6
|
const bn = (new Web3Number(weiNumber, decimals)).dividedBy(10 ** decimals)
|
|
6
7
|
return new Web3Number(bn.toString(), decimals);
|
|
7
8
|
}
|
|
8
|
-
|
|
9
|
+
|
|
10
|
+
static fromNumber(number: number, decimals: number) {
|
|
11
|
+
return new Web3Number(number.toString(), decimals);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
static fromUint256(uint256Value: Uint256): Web3Number {
|
|
15
|
+
return this.fromWei(uint256.uint256ToBN(uint256Value).toString(), 18);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import util from 'util';
|
|
2
2
|
import { _Web3Number } from "./_bignumber";
|
|
3
|
+
import { Uint256, uint256 } from 'starknet';
|
|
3
4
|
|
|
4
5
|
export class Web3Number extends _Web3Number<Web3Number> {
|
|
5
6
|
|
|
@@ -8,6 +9,14 @@ export class Web3Number extends _Web3Number<Web3Number> {
|
|
|
8
9
|
return new Web3Number(bn.toString(), decimals);
|
|
9
10
|
}
|
|
10
11
|
|
|
12
|
+
static fromNumber(number: number, decimals: number) {
|
|
13
|
+
return new Web3Number(number.toString(), decimals);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
static fromUint256(uint256Value: Uint256): Web3Number {
|
|
17
|
+
return this.fromWei(uint256.uint256ToBN(uint256Value).toString(), 18);
|
|
18
|
+
}
|
|
19
|
+
|
|
11
20
|
[util.inspect.custom](depth: any, opts: any): string {
|
|
12
21
|
return this.toString();
|
|
13
22
|
}
|
|
@@ -19,4 +28,4 @@ export class Web3Number extends _Web3Number<Web3Number> {
|
|
|
19
28
|
inspect(depth: any, opts: any) {
|
|
20
29
|
return this.toString();
|
|
21
30
|
}
|
|
22
|
-
}
|
|
31
|
+
}
|
package/src/dataTypes/index.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
1
|
+
export * from "@/dataTypes/bignumber";
|
|
2
|
+
export * from "./address";
|
|
3
|
+
export * from "./mynumber";
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import BigNumber from "bignumber.js";
|
|
2
|
+
import { ethers } from "ethers";
|
|
3
|
+
|
|
4
|
+
const customInspectSymbol = Symbol.for("nodejs.util.inspect.custom");
|
|
5
|
+
|
|
6
|
+
BigNumber.config({
|
|
7
|
+
DECIMAL_PLACES: 18
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
export class MyNumber {
|
|
11
|
+
bigNumber: BigNumber;
|
|
12
|
+
decimals: number;
|
|
13
|
+
|
|
14
|
+
constructor(bigNumber: string, decimals: number) {
|
|
15
|
+
this.bigNumber = new BigNumber(bigNumber);
|
|
16
|
+
this.decimals = decimals;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
static fromEther(num: string, decimals: number) {
|
|
20
|
+
try {
|
|
21
|
+
return new MyNumber(
|
|
22
|
+
Number(
|
|
23
|
+
ethers.parseUnits(Number(num).toFixed(10), decimals)
|
|
24
|
+
).toFixed(6),
|
|
25
|
+
decimals
|
|
26
|
+
);
|
|
27
|
+
} catch (e) {
|
|
28
|
+
console.error("fromEther", e, num, decimals);
|
|
29
|
+
throw e;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
static fromZero() {
|
|
34
|
+
return new MyNumber("0", 0);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
toString() {
|
|
38
|
+
return this.bigNumber.toFixed();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
toEtherStr() {
|
|
42
|
+
return ethers.formatUnits(this.bigNumber.toFixed(), this.decimals);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
toFixedStr(decimals: number) {
|
|
46
|
+
return Number(this.toEtherStr()).toFixed(decimals);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
toEtherToFixedDecimals(decimals: number) {
|
|
50
|
+
// rounding down
|
|
51
|
+
if (this.bigNumber.isNaN()) {
|
|
52
|
+
return "NaN";
|
|
53
|
+
}
|
|
54
|
+
return (
|
|
55
|
+
Math.floor(parseFloat(this.toEtherStr()) * 10 ** decimals) /
|
|
56
|
+
10 ** decimals
|
|
57
|
+
).toFixed(decimals);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
isZero() {
|
|
61
|
+
return this.bigNumber.eq("0");
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
*
|
|
66
|
+
* @param amountEther in token terms without decimal e.g. 1 for 1 STRK
|
|
67
|
+
* @param command BigNumber compare funds. e.g. gte, gt, lt
|
|
68
|
+
* @returns
|
|
69
|
+
* @dev Add more commands as needed
|
|
70
|
+
*/
|
|
71
|
+
compare(amountEther: string, command: "gte" | "gt" | "lt") {
|
|
72
|
+
const fullNum = new BigNumber(
|
|
73
|
+
ethers.parseUnits(amountEther, this.decimals).toString()
|
|
74
|
+
);
|
|
75
|
+
return this.bigNumber[command](fullNum);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
operate(command: "div" | "plus" | "mul", value: string | number) {
|
|
79
|
+
const bn = new BigNumber(Number(value).toFixed(6));
|
|
80
|
+
return new MyNumber(
|
|
81
|
+
this.bigNumber[command](bn).toFixed(0),
|
|
82
|
+
this.decimals
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
subtract(value: MyNumber) {
|
|
87
|
+
const bn = this.bigNumber.minus(value.bigNumber);
|
|
88
|
+
return new MyNumber(bn.toString(), this.decimals);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
static min(a: MyNumber, b: MyNumber) {
|
|
92
|
+
if (a.decimals !== b.decimals) {
|
|
93
|
+
const diff = Math.abs(a.decimals - b.decimals);
|
|
94
|
+
if (a.decimals > b.decimals) {
|
|
95
|
+
b = new MyNumber(
|
|
96
|
+
b.bigNumber.times(10 ** diff).toString(),
|
|
97
|
+
a.decimals
|
|
98
|
+
);
|
|
99
|
+
} else {
|
|
100
|
+
a = new MyNumber(
|
|
101
|
+
a.bigNumber.times(10 ** diff).toString(),
|
|
102
|
+
b.decimals
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const bn = BigNumber.min(a.bigNumber, b.bigNumber);
|
|
107
|
+
return new MyNumber(
|
|
108
|
+
bn.toString(),
|
|
109
|
+
a.decimals > b.decimals ? a.decimals : b.decimals
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
static max(a: MyNumber, b: MyNumber) {
|
|
114
|
+
if (a.decimals !== b.decimals) {
|
|
115
|
+
const diff = Math.abs(a.decimals - b.decimals);
|
|
116
|
+
if (a.decimals > b.decimals) {
|
|
117
|
+
b = new MyNumber(
|
|
118
|
+
b.bigNumber.times(10 ** diff).toString(),
|
|
119
|
+
a.decimals
|
|
120
|
+
);
|
|
121
|
+
} else {
|
|
122
|
+
a = new MyNumber(
|
|
123
|
+
a.bigNumber.times(10 ** diff).toString(),
|
|
124
|
+
b.decimals
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
const bn = BigNumber.max(a.bigNumber, b.bigNumber);
|
|
129
|
+
return new MyNumber(
|
|
130
|
+
bn.toString(),
|
|
131
|
+
a.decimals > b.decimals ? a.decimals : b.decimals
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
[customInspectSymbol](depth: any, inspectOptions: any, inspect: any) {
|
|
136
|
+
return JSON.stringify({
|
|
137
|
+
raw: this.toString(),
|
|
138
|
+
decimals: this.decimals
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
package/src/global.ts
CHANGED
|
@@ -48,14 +48,21 @@ const defaultTokens: TokenInfo[] = [
|
|
|
48
48
|
coingeckId: undefined,
|
|
49
49
|
priceCheckAmount: 0.1,
|
|
50
50
|
displayDecimals: 6,
|
|
51
|
-
},
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
51
|
+
}, {
|
|
52
|
+
name: 'USDC.e',
|
|
53
|
+
symbol: 'USDC.e',
|
|
54
|
+
logo: 'https://assets.troves.fi/integrations/tokens/usdc.svg',
|
|
55
|
+
address: ContractAddr.from('0x53c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8'),
|
|
56
|
+
decimals: 6,
|
|
57
|
+
coingeckId: undefined,
|
|
58
|
+
displayDecimals: 2,
|
|
59
|
+
priceCheckAmount: 1000,
|
|
60
|
+
priceProxySymbol: 'USDC'
|
|
61
|
+
}, {
|
|
62
|
+
name: 'USDC',
|
|
63
|
+
symbol: 'USDC',
|
|
64
|
+
logo: 'https://assets.troves.fi/integrations/tokens/usdc.svg',
|
|
65
|
+
address: ContractAddr.from('0x033068F6539f8e6e6b131e6B2B814e6c34A5224bC66947c47DaB9dFeE93b35fb'),
|
|
59
66
|
decimals: 6,
|
|
60
67
|
coingeckId: undefined,
|
|
61
68
|
displayDecimals: 2,
|
|
@@ -133,6 +140,7 @@ const defaultTokens: TokenInfo[] = [
|
|
|
133
140
|
decimals: 8,
|
|
134
141
|
coingeckId: undefined,
|
|
135
142
|
displayDecimals: 6,
|
|
143
|
+
priceProxySymbol: 'WBTC',
|
|
136
144
|
priceCheckAmount: 0.001, // 112000 * 0.0001 = $110.2
|
|
137
145
|
},
|
|
138
146
|
{
|
|
@@ -160,14 +168,12 @@ const defaultTokens: TokenInfo[] = [
|
|
|
160
168
|
coingeckId: undefined,
|
|
161
169
|
displayDecimals: 6,
|
|
162
170
|
priceCheckAmount: 0.001, // 112000 * 0.0001 = $110.2
|
|
163
|
-
|
|
164
|
-
{
|
|
165
|
-
name:
|
|
166
|
-
symbol:
|
|
167
|
-
logo:
|
|
168
|
-
address: ContractAddr.from(
|
|
169
|
-
"0x07dd3c80de9fcc5545f0cb83678826819c79619ed7992cc06ff81fc67cd2efe0"
|
|
170
|
-
),
|
|
171
|
+
priceProxySymbol: 'WBTC',
|
|
172
|
+
}, {
|
|
173
|
+
name: 'xLBTC',
|
|
174
|
+
symbol: 'xLBTC',
|
|
175
|
+
logo: 'https://assets.strkfarm.com/integrations/tokens/xlbtc.svg',
|
|
176
|
+
address: ContractAddr.from('0x07dd3c80de9fcc5545f0cb83678826819c79619ed7992cc06ff81fc67cd2efe0'),
|
|
171
177
|
decimals: 8,
|
|
172
178
|
coingeckId: undefined,
|
|
173
179
|
displayDecimals: 6,
|
|
@@ -185,32 +191,68 @@ const defaultTokens: TokenInfo[] = [
|
|
|
185
191
|
coingeckId: undefined,
|
|
186
192
|
displayDecimals: 6,
|
|
187
193
|
priceCheckAmount: 0.0001, // 112000 * 0.0001 = $11.2
|
|
188
|
-
|
|
189
|
-
{
|
|
190
|
-
name:
|
|
191
|
-
symbol:
|
|
192
|
-
logo:
|
|
193
|
-
address: ContractAddr.from(
|
|
194
|
-
"0x4be8945e61dc3e19ebadd1579a6bd53b262f51ba89e6f8b0c4bc9a7e3c633fc"
|
|
195
|
-
),
|
|
194
|
+
dontPrice: true,
|
|
195
|
+
}, {
|
|
196
|
+
name: 'mRe7YIELD',
|
|
197
|
+
symbol: 'mRe7YIELD',
|
|
198
|
+
logo: 'https://midas.app/assets/mre7-BcOOHm7i.svg',
|
|
199
|
+
address: ContractAddr.from('0x4be8945e61dc3e19ebadd1579a6bd53b262f51ba89e6f8b0c4bc9a7e3c633fc'),
|
|
196
200
|
decimals: 18,
|
|
197
201
|
coingeckId: undefined,
|
|
198
202
|
displayDecimals: 2,
|
|
199
203
|
priceCheckAmount: 100,
|
|
200
|
-
|
|
201
|
-
{
|
|
202
|
-
name: "
|
|
203
|
-
symbol: "
|
|
204
|
-
logo:
|
|
205
|
-
address: ContractAddr.from(
|
|
206
|
-
|
|
207
|
-
|
|
204
|
+
dontPrice: true,
|
|
205
|
+
}, {
|
|
206
|
+
name: "fyWBTC",
|
|
207
|
+
symbol: "fyWBTC",
|
|
208
|
+
logo: 'https://assets.strkfarm.com/integrations/tokens/wbtc.svg',
|
|
209
|
+
address: ContractAddr.from('0x04dd39de0a588f5e1c7a8377e1bef2c49caaee49a11433429d2c48f587b3a492'),
|
|
210
|
+
decimals: 8,
|
|
211
|
+
coingeckId: undefined,
|
|
212
|
+
displayDecimals: 6,
|
|
213
|
+
priceCheckAmount: 0.001, // 112000 * 0.0001 = $110.2
|
|
214
|
+
dontPrice: true,
|
|
215
|
+
}, {
|
|
216
|
+
name: "fyETH",
|
|
217
|
+
symbol: "fyETH",
|
|
218
|
+
logo: 'https://assets.strkfarm.com/integrations/tokens/eth.svg',
|
|
219
|
+
address: ContractAddr.from('0x050707bC3b8730022F10530C2c6f6b9467644129C50C2868Ad0036c5e4E9e616'),
|
|
220
|
+
decimals: 18,
|
|
221
|
+
coingeckId: undefined,
|
|
222
|
+
displayDecimals: 4,
|
|
223
|
+
priceCheckAmount: 0.1,
|
|
224
|
+
dontPrice: true,
|
|
225
|
+
}, {
|
|
226
|
+
name: "fyUSDC",
|
|
227
|
+
symbol: "fyUSDC",
|
|
228
|
+
logo: 'https://assets.strkfarm.com/integrations/tokens/usdc.svg',
|
|
229
|
+
address: ContractAddr.from('0x07fdcec0cef01294c9c3d52415215949805c77bae8003702a7928fd6d2c36bc1'),
|
|
208
230
|
decimals: 6,
|
|
209
231
|
coingeckId: undefined,
|
|
210
232
|
displayDecimals: 2,
|
|
211
233
|
priceCheckAmount: 100,
|
|
212
|
-
|
|
213
|
-
|
|
234
|
+
dontPrice: true,
|
|
235
|
+
}, {
|
|
236
|
+
name: 'strkBTC',
|
|
237
|
+
symbol: 'strkBTC',
|
|
238
|
+
logo: 'https://assets.troves.fi/integrations/tokens/strkbtc.svg',
|
|
239
|
+
address: ContractAddr.from('0x0787150e306e6eae6e3f79dea881770e8bbff2c1b8eb490f969669ee945b3135'),
|
|
240
|
+
decimals: 8,
|
|
241
|
+
coingeckId: undefined,
|
|
242
|
+
displayDecimals: 6,
|
|
243
|
+
priceCheckAmount: 0.001, // 112000 * 0.0001 = $110.2
|
|
244
|
+
priceProxySymbol: 'WBTC',
|
|
245
|
+
}, {
|
|
246
|
+
name: 'xstrkBTC',
|
|
247
|
+
symbol: 'xstrkBTC',
|
|
248
|
+
logo: 'https://assets.troves.fi/integrations/tokens/xstrkbtc.svg',
|
|
249
|
+
address: ContractAddr.from('0x047751b3532fabca89b0f2e35ca1cb45e5a7b11d5e3d3663dfa1f4406b45fd88'),
|
|
250
|
+
decimals: 8,
|
|
251
|
+
coingeckId: undefined,
|
|
252
|
+
displayDecimals: 6,
|
|
253
|
+
priceCheckAmount: 0.001,
|
|
254
|
+
priceProxySymbol: 'WBTC',
|
|
255
|
+
},]
|
|
214
256
|
const tokens: TokenInfo[] = defaultTokens;
|
|
215
257
|
|
|
216
258
|
/** Contains globally useful functions.
|
|
@@ -289,12 +331,27 @@ export class Global {
|
|
|
289
331
|
}
|
|
290
332
|
}
|
|
291
333
|
|
|
292
|
-
|
|
334
|
+
|
|
335
|
+
static async getTokenInfoFromName(tokenName: string) {
|
|
293
336
|
// if tokens are not loaded, load them
|
|
294
337
|
if (tokens.length == defaultTokens.length) {
|
|
295
338
|
await Global.getTokens();
|
|
296
339
|
}
|
|
297
340
|
|
|
341
|
+
const token = tokens.find(
|
|
342
|
+
(token) => token.name.toLowerCase() === tokenName.toLowerCase()
|
|
343
|
+
);
|
|
344
|
+
if (!token) {
|
|
345
|
+
throw new FatalError(`Token not found: ${tokenName}`);
|
|
346
|
+
}
|
|
347
|
+
return token;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
static async getTokenInfoFromAddr(addr: ContractAddr) {
|
|
351
|
+
// if tokens are not loaded, load them
|
|
352
|
+
if (tokens.length == defaultTokens.length) {
|
|
353
|
+
await Global.getTokens();
|
|
354
|
+
}
|
|
298
355
|
const token = tokens.find((token) => addr.eq(token.address));
|
|
299
356
|
if (!token) {
|
|
300
357
|
throw new FatalError(`Token not found: ${addr.address}`);
|
|
@@ -306,7 +363,7 @@ export class Global {
|
|
|
306
363
|
Global.cache[key] = {
|
|
307
364
|
value: data,
|
|
308
365
|
ttl,
|
|
309
|
-
timestamp: Date.now()
|
|
366
|
+
timestamp: Date.now()
|
|
310
367
|
};
|
|
311
368
|
}
|
|
312
369
|
|
package/src/index.browser.ts
CHANGED