curvance 3.6.1 → 3.6.3
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/chains/arbitrum.d.ts +3 -0
- package/dist/chains/arbitrum.d.ts.map +1 -0
- package/dist/chains/arbitrum.js +16 -0
- package/dist/chains/arbitrum.js.map +1 -0
- package/dist/chains/index.d.ts +21 -568
- package/dist/chains/index.d.ts.map +1 -1
- package/dist/chains/index.js +6 -12
- package/dist/chains/index.js.map +1 -1
- package/dist/chains/monad.d.ts +3 -0
- package/dist/chains/monad.d.ts.map +1 -0
- package/dist/chains/monad.js +21 -0
- package/dist/chains/monad.js.map +1 -0
- package/dist/classes/Api.d.ts +37 -0
- package/dist/classes/Api.d.ts.map +1 -0
- package/dist/classes/Api.js +69 -0
- package/dist/classes/Api.js.map +1 -0
- package/dist/classes/BorrowableCToken.d.ts +0 -4
- package/dist/classes/BorrowableCToken.d.ts.map +1 -1
- package/dist/classes/BorrowableCToken.js +0 -6
- package/dist/classes/BorrowableCToken.js.map +1 -1
- package/dist/classes/CToken.d.ts +11 -1
- package/dist/classes/CToken.d.ts.map +1 -1
- package/dist/classes/CToken.js +20 -4
- package/dist/classes/CToken.js.map +1 -1
- package/dist/classes/DexAggregators/KyberSwap.d.ts.map +1 -1
- package/dist/classes/DexAggregators/KyberSwap.js +8 -6
- package/dist/classes/DexAggregators/KyberSwap.js.map +1 -1
- package/dist/classes/Market.d.ts +1 -5
- package/dist/classes/Market.d.ts.map +1 -1
- package/dist/classes/Market.js +17 -32
- package/dist/classes/Market.js.map +1 -1
- package/dist/classes/NativeToken.d.ts.map +1 -1
- package/dist/classes/NativeToken.js +2 -1
- package/dist/classes/NativeToken.js.map +1 -1
- package/dist/classes/index.d.ts +15 -0
- package/dist/classes/index.d.ts.map +1 -0
- package/dist/classes/index.js +31 -0
- package/dist/classes/index.js.map +1 -0
- package/dist/contracts/arb-sepolia.json +44 -0
- package/dist/contracts/index.d.ts +267 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +13 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/monad-mainnet.json +220 -0
- package/dist/format/amounts.d.ts +18 -0
- package/dist/format/amounts.d.ts.map +1 -0
- package/dist/format/amounts.js +75 -0
- package/dist/format/amounts.js.map +1 -0
- package/dist/format/borrow.d.ts +15 -0
- package/dist/format/borrow.d.ts.map +1 -0
- package/dist/format/borrow.js +38 -0
- package/dist/format/borrow.js.map +1 -0
- package/dist/format/collateral.d.ts +10 -0
- package/dist/format/collateral.d.ts.map +1 -0
- package/dist/format/collateral.js +28 -0
- package/dist/format/collateral.js.map +1 -0
- package/dist/format/health.d.ts +10 -0
- package/dist/format/health.d.ts.map +1 -0
- package/dist/format/health.js +50 -0
- package/dist/format/health.js.map +1 -0
- package/dist/format/index.d.ts +6 -0
- package/dist/format/index.d.ts.map +1 -0
- package/dist/format/index.js +22 -0
- package/dist/format/index.js.map +1 -0
- package/dist/format/leverage.d.ts +40 -0
- package/dist/format/leverage.d.ts.map +1 -0
- package/dist/format/leverage.js +130 -0
- package/dist/format/leverage.js.map +1 -0
- package/dist/helpers.d.ts +59 -133
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +83 -15
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +5 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -16
- package/dist/index.js.map +1 -1
- package/dist/integrations/index.d.ts +3 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +19 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/merkl.d.ts +98 -0
- package/dist/integrations/merkl.d.ts.map +1 -0
- package/dist/integrations/merkl.js +37 -0
- package/dist/integrations/merkl.js.map +1 -0
- package/dist/integrations/snapshot.d.ts +53 -0
- package/dist/integrations/snapshot.d.ts.map +1 -0
- package/dist/integrations/snapshot.js +103 -0
- package/dist/integrations/snapshot.js.map +1 -0
- package/dist/setup.d.ts +4 -85
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +8 -74
- package/dist/setup.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGlB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.chains = void 0;
|
|
7
|
+
const monad_mainnet_json_1 = __importDefault(require("./monad-mainnet.json"));
|
|
8
|
+
const arb_sepolia_json_1 = __importDefault(require("./arb-sepolia.json"));
|
|
9
|
+
exports.chains = {
|
|
10
|
+
"monad-mainnet": monad_mainnet_json_1.default,
|
|
11
|
+
"arb-sepolia": arb_sepolia_json_1.default,
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":";;;;;;AAAA,8EAAiD;AACjD,0EAA6C;AAEhC,QAAA,MAAM,GAAG;IAClB,eAAe,EAAE,4BAAa;IAC9B,aAAa,EAAE,0BAAW;CAC7B,CAAC"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
{
|
|
2
|
+
"CentralRegistry": "0x1310f352f1389969Ece6741671c4B919523912fF",
|
|
3
|
+
"OracleManager": "0x32faD39e79FAc67f80d1C86CbD1598043e52CDb6",
|
|
4
|
+
"adaptors": {
|
|
5
|
+
"ChainlinkAdaptor": "0xACfE3fCcae79445836E03c5359BB96bd352b9C00",
|
|
6
|
+
"RedstoneClassicAdaptor": "0x0fA602b3e748438A3F1599206Ed6DC497ab3331E",
|
|
7
|
+
"RedstoneCoreAdaptor": "0x1779e22c746b3CA505FfA636F96c4E0916D616d8"
|
|
8
|
+
},
|
|
9
|
+
"calldataCheckers": {
|
|
10
|
+
"RedstoneAdaptorMulticallChecker": "0x75c30005f479307D743753F8604A847fFFe01a04",
|
|
11
|
+
"KyberSwapChecker": "0x206639D34bB079C1AD334c958c3ED3feC85Fbfff"
|
|
12
|
+
},
|
|
13
|
+
"zappers": {
|
|
14
|
+
"nativeVaultZapper": "0x792451D679542B660E8a2284d458Ed1b5657dE88",
|
|
15
|
+
"vaultZapper": "0x53634af626c728Cd857b807bA290F70d5B656A6D",
|
|
16
|
+
"simpleZapper": "0xc148ff6ac9DbEBc287f923E2ECd62D7dbC34160d"
|
|
17
|
+
},
|
|
18
|
+
"VaultAggregator-AUSD-sAUSD": "0x73Af3E1848636D4DE6A61050D5487d6f09A7A1Be",
|
|
19
|
+
"StaticPriceAggregator-loAZND": "0x6eCb16faf9b0c0F7098204e0FE685D2960b4C0Ba",
|
|
20
|
+
"markets": {
|
|
21
|
+
"MUBOND | AUSD": {
|
|
22
|
+
"address": "0x830D40CDFdc494BC1A2729a7381bfCe44326c944",
|
|
23
|
+
"muBOND-DynamicIRM": "0x5b1d3a91457f7AD854a559dAACc0be18cD402D12",
|
|
24
|
+
"tokens": {
|
|
25
|
+
"muBOND": "0x92EE4b4d33Dc61bd93a88601F29131B08aCedBF1",
|
|
26
|
+
"AUSD": "0x2B4e0232F46E6DB4af35474c140B968EeFCB09Ec"
|
|
27
|
+
},
|
|
28
|
+
"plugins": {
|
|
29
|
+
"simplePositionManager": "0xA3d212D4705caf42C35d6EaE0C85E94c4cd329E4"
|
|
30
|
+
},
|
|
31
|
+
"AUSD-DynamicIRM": "0x08DcB6Ad285217ef29816Ac0F813C21C54c48Cd5"
|
|
32
|
+
},
|
|
33
|
+
"loAZND | AUSD": {
|
|
34
|
+
"address": "0x7C822B093A116654F824Ec2A35CD23a3749E4f90",
|
|
35
|
+
"loAZND-DynamicIRM": "0x5d2b40E3e3FdCDEd15314290d4384D4D12044233",
|
|
36
|
+
"tokens": {
|
|
37
|
+
"loAZND": "0xf7a6AB4aF86966C141D3C5633DF658E5CDb0a735",
|
|
38
|
+
"AUSD": "0xDaDbB2D8f9802DC458F5D7F133D053087Ba8983d"
|
|
39
|
+
},
|
|
40
|
+
"plugins": {
|
|
41
|
+
"simplePositionManager": "0x9e4638fd67bE15360bfebC5e07AECfF33dfda917"
|
|
42
|
+
},
|
|
43
|
+
"AUSD-DynamicIRM": "0xf4E19DEdB240FFd9ECEDbfad88A91C34aC3095AA"
|
|
44
|
+
},
|
|
45
|
+
"ezETH | WETH": {
|
|
46
|
+
"address": "0x83840d837E7A3E00bBb0B8501E60E989A8987c37",
|
|
47
|
+
"ezETH-DynamicIRM": "0x28444Eb9FA9dDA1E6F3D240B2e06a453505e16E6",
|
|
48
|
+
"tokens": {
|
|
49
|
+
"ezETH": "0x20f1A13BfbF85a22Aa59D189861790981372220b",
|
|
50
|
+
"WETH": "0xa206D51C02c0202a2Eed8E6A757b49Ab13930227"
|
|
51
|
+
},
|
|
52
|
+
"plugins": {
|
|
53
|
+
"simplePositionManager": "0xd8d3E46E52C3AB8FD98D04143984C763B4Bbc584"
|
|
54
|
+
},
|
|
55
|
+
"WETH-DynamicIRM": "0xf23d194e151069d09c927E8CD8ae3e14922F2a23"
|
|
56
|
+
},
|
|
57
|
+
"shMON | WMON": {
|
|
58
|
+
"address": "0xE1C24B2E93230FBe33d32Ba38ECA3218284143e2",
|
|
59
|
+
"shMON-DynamicIRM": "0x2C802F49fb5ce37D37E947D9b88B2A2Cea7A3C31",
|
|
60
|
+
"tokens": {
|
|
61
|
+
"shMON": "0x926C101Cf0a3dE8725Eb24a93E980f9FE34d6230",
|
|
62
|
+
"WMON": "0x0fcEd51b526BfA5619F83d97b54a57e3327eB183"
|
|
63
|
+
},
|
|
64
|
+
"plugins": {
|
|
65
|
+
"nativeVaultPositionManager": "0x2fAA792502aC5a329DcCc1580C5308fCc0a772fe",
|
|
66
|
+
"simplePositionManager": "0x7E8705a164DA7Cc5a4119C750b1F79837AD89D5E"
|
|
67
|
+
},
|
|
68
|
+
"WMON-DynamicIRM": "0x963E8aFc1a60E470EB2381896F75853bF6C1FeD2"
|
|
69
|
+
},
|
|
70
|
+
"aprMON | WMON": {
|
|
71
|
+
"address": "0x5EA0a1Cf3501C954b64902c5e92100b8A2CaB1Ac",
|
|
72
|
+
"aprMON-DynamicIRM": "0x0d44480D72B23D19673EEde88aEa03a119bc13f4",
|
|
73
|
+
"tokens": {
|
|
74
|
+
"aprMON": "0xD9E2025b907E95EcC963A5018f56B87575B4aB26",
|
|
75
|
+
"WMON": "0xF32B334042DC1EB9732454cc9bc1a06205d184f2"
|
|
76
|
+
},
|
|
77
|
+
"plugins": {
|
|
78
|
+
"nativeVaultPositionManager": "0x82f88A810E86a730699231F5fBF5686c643467C8",
|
|
79
|
+
"simplePositionManager": "0x669786FF3da7544c98FE74eE1006D787118d1770"
|
|
80
|
+
},
|
|
81
|
+
"WMON-DynamicIRM": "0x309d475e84b7C99C98031006F491e20280a1A768"
|
|
82
|
+
},
|
|
83
|
+
"sMON | WMON": {
|
|
84
|
+
"address": "0xe5970cDB1916B2cCF6185C86C174EEE2d330D05B",
|
|
85
|
+
"sMON-DynamicIRM": "0x0db363a2eDB3Ac8F4CDdC174ff44B6dfd09A2FeF",
|
|
86
|
+
"tokens": {
|
|
87
|
+
"sMON": "0x494876051B0E85dCe5ecd5822B1aD39b9660c928",
|
|
88
|
+
"WMON": "0xebE45A6ceA7760a71D8e0fa5a0AE80a75320D708"
|
|
89
|
+
},
|
|
90
|
+
"plugins": {
|
|
91
|
+
"simplePositionManager": "0x3d6ba6C90E1738cb01C46E72F284C7Bd57eB11EC"
|
|
92
|
+
},
|
|
93
|
+
"WMON-DynamicIRM": "0x16cB8A09f2a17E30273b749ed178954FE63bb1BC"
|
|
94
|
+
},
|
|
95
|
+
"sAUSD | AUSD": {
|
|
96
|
+
"address": "0xBBE7A3c45aDBb16F6490767b663428c34aA341Eb",
|
|
97
|
+
"sAUSD-DynamicIRM": "0xcf31332aB92953101B8E1af7Ca841f6426936da8",
|
|
98
|
+
"tokens": {
|
|
99
|
+
"sAUSD": "0x84C5aF20b58818631164Bb7d798E457fcFACD9Ac",
|
|
100
|
+
"AUSD": "0xfD493ce1A0ae986e09d17004B7E748817a47d73c"
|
|
101
|
+
},
|
|
102
|
+
"plugins": {
|
|
103
|
+
"simplePositionManager": "0x491e8712885E4e0b98864F13393ced8c1a61FD57",
|
|
104
|
+
"vaultPositionManager": "0xe94AC990873C3B59A417d25C1ec1398807FB41A1"
|
|
105
|
+
},
|
|
106
|
+
"AUSD-DynamicIRM": "0x22dCF7dd5518F5F08ec05c59606d84698FFF07BB"
|
|
107
|
+
},
|
|
108
|
+
"earnAUSD | AUSD": {
|
|
109
|
+
"address": "0xd6365555f6a697C7C295bA741100AA644cE28545",
|
|
110
|
+
"earnAUSD-DynamicIRM": "0x346339e3Fbd21ed48ADDDE1523896c0d97cF1851",
|
|
111
|
+
"tokens": {
|
|
112
|
+
"earnAUSD": "0x852FF1EC21D63b405eC431e04AE3AC760e29263D",
|
|
113
|
+
"AUSD": "0xAd4AA2a713fB86FBb6b60dE2aF9E32a11DB6Abf2"
|
|
114
|
+
},
|
|
115
|
+
"plugins": {
|
|
116
|
+
"simplePositionManager": "0xd807efC94376618B4d9CE6eAaf89607006d3B881"
|
|
117
|
+
},
|
|
118
|
+
"AUSD-DynamicIRM": "0x46e2bA1D6CFfB180Efa17d4D5A726b599ED8B904"
|
|
119
|
+
},
|
|
120
|
+
"WMON | AUSD": {
|
|
121
|
+
"address": "0x05e70717fA8BD0F21a9F826d093d99f6Da4f1554",
|
|
122
|
+
"WMON-DynamicIRM": "0xc17A271F79ac4449FaABeAf64E805BEE37B78DBd",
|
|
123
|
+
"tokens": {
|
|
124
|
+
"WMON": "0xE01d426B589c7834a5F6B20D7e992A705d3c22ED",
|
|
125
|
+
"AUSD": "0x6E182EB501800C555bd5E662E6D350D627F504D8"
|
|
126
|
+
},
|
|
127
|
+
"plugins": {
|
|
128
|
+
"simplePositionManager": "0x2619BB5Acfe51317c4C36a63578FD56148e68C74"
|
|
129
|
+
},
|
|
130
|
+
"AUSD-DynamicIRM": "0x72cb6a15E050427e1a6047614A47659A2C94d1bA"
|
|
131
|
+
},
|
|
132
|
+
"WMON | USDC": {
|
|
133
|
+
"address": "0xa6A2A92F126b79Ee0804845ee6B52899b4491093",
|
|
134
|
+
"WMON-DynamicIRM": "0x50264B615175f8DBFFF417CF6D0003D2e77D87B4",
|
|
135
|
+
"tokens": {
|
|
136
|
+
"WMON": "0x1e240E30E51491546deC3aF16B0b4EAC8Dd110D4",
|
|
137
|
+
"USDC": "0x8EE9FC28B8Da872c38A496e9dDB9700bb7261774"
|
|
138
|
+
},
|
|
139
|
+
"plugins": {
|
|
140
|
+
"simplePositionManager": "0x960c49E523e6A87282D2bC5032d0AeCb35Dc20ef"
|
|
141
|
+
},
|
|
142
|
+
"USDC-DynamicIRM": "0x1622D77E311638C77779e6D9B212E3e7D73AaFB4"
|
|
143
|
+
},
|
|
144
|
+
"WBTC | USDC": {
|
|
145
|
+
"address": "0x01C4a0d396EFE982B1B103BE9910321d34e1aEA9",
|
|
146
|
+
"WBTC-DynamicIRM": "0x8a78Bd450258B7B1D42431fB904453cA43161AdE",
|
|
147
|
+
"tokens": {
|
|
148
|
+
"WBTC": "0x3D2Ff9F862D89Ba526a0fC166bD56ABe04EF28d5",
|
|
149
|
+
"USDC": "0x7C9d4f1695C6282Da5e5509Aa51fC9fb417C6f1d"
|
|
150
|
+
},
|
|
151
|
+
"plugins": {
|
|
152
|
+
"simplePositionManager": "0x8cA51d155C07e91B206Cf11C8D52d5aB082657F6"
|
|
153
|
+
},
|
|
154
|
+
"USDC-DynamicIRM": "0x9F57957F2CA8d0DB433e4623f8bd248293b01e86"
|
|
155
|
+
},
|
|
156
|
+
"WETH | USDC": {
|
|
157
|
+
"address": "0xb3E9E0134354cc91b7FB9F9d6C3ab0dE7854BB49",
|
|
158
|
+
"WETH-DynamicIRM": "0x8c82ccF6Ee43346425E04325Df03219cf46a7739",
|
|
159
|
+
"tokens": {
|
|
160
|
+
"WETH": "0x8Af00fbbb2601A8F7636EabbF6243B30BEA47D50",
|
|
161
|
+
"USDC": "0x21aDBb60a5fB909e7F1fB48aACC4569615CD97b5"
|
|
162
|
+
},
|
|
163
|
+
"plugins": {
|
|
164
|
+
"simplePositionManager": "0x3A1B2Dc11a81Fe106eC667BaB4056fC72498ff73"
|
|
165
|
+
},
|
|
166
|
+
"USDC-DynamicIRM": "0x034f1a014946Fe4d4ea3bD36A315F775a8C1aB26"
|
|
167
|
+
},
|
|
168
|
+
"gMON | WMON": {
|
|
169
|
+
"address": "0xb00aFF53a4Df2b4E2f97a3d9ffaDb55564C8E42F",
|
|
170
|
+
"gMON-DynamicIRM": "0x95DFba58340Ba7Cde59FB4D16EA85caDb4F83894",
|
|
171
|
+
"tokens": {
|
|
172
|
+
"gMON": "0x5ca6966543c0786f547446234492D2F11C82f11f",
|
|
173
|
+
"WMON": "0xf473568b26B8C5aadCa9fbC0eA17E1728d5ec925"
|
|
174
|
+
},
|
|
175
|
+
"plugins": {
|
|
176
|
+
"simplePositionManager": "0x77B90040E6dFE8A62293Cd91CAeE35296EC266Ee"
|
|
177
|
+
},
|
|
178
|
+
"WMON-DynamicIRM": "0x034Cb4152B6506c445f18d564b3Ce86B0DE05C7B"
|
|
179
|
+
},
|
|
180
|
+
"syzUSD | AUSD": {
|
|
181
|
+
"address": "0x90fc1A4abC4ee5f8a9560dE069067D9606d2909C",
|
|
182
|
+
"syzUSD-DynamicIRM": "0x0A8c317C25A000000296673Bd75cA3f5c1E8C57c",
|
|
183
|
+
"tokens": {
|
|
184
|
+
"syzUSD": "0x7EdA3cb060Ff7B650eB227971dbfEBD3513b11D5",
|
|
185
|
+
"AUSD": "0x8E94704607E857eB3E10Bd21D90bf8C1Ecba0452"
|
|
186
|
+
},
|
|
187
|
+
"plugins": {},
|
|
188
|
+
"AUSD-DynamicIRM": "0xdCB32fc822eAe8794E48Ad005b50AA850529296D"
|
|
189
|
+
},
|
|
190
|
+
"wsrUSD | AUSD": {
|
|
191
|
+
"address": "0x627a15859d09C1550e2934991AA95aFc6896e3Ef",
|
|
192
|
+
"tokens": {
|
|
193
|
+
"wsrUSD": "0x251B67Ae7e90fDc6a7B080Ee601913A8B2746A28",
|
|
194
|
+
"AUSD": "0x88e0994E8130EF72bf614CBBcF722839B167c8d1"
|
|
195
|
+
},
|
|
196
|
+
"plugins": {
|
|
197
|
+
"simplePositionManager": "0xF8613b7b4e8bFb5E7155fb4D3bc9f9B93d895C31"
|
|
198
|
+
},
|
|
199
|
+
"AUSD-DynamicIRM": "0xb785f9234d22bA56CCc117CFd3e9f460B8AB354e",
|
|
200
|
+
"wsrUSD-DynamicIRM": "0x89ed43d2ab0aE39beE492bA1Ee6117B07aFAA066"
|
|
201
|
+
},
|
|
202
|
+
"YZM | AUSD": {
|
|
203
|
+
"address": "0x4409e2161B6f9A25ACbC471a37390654Ed272249",
|
|
204
|
+
"plugins": {
|
|
205
|
+
"simplePositionManager": "0xb85dEf309F7eEEb8f581909c7afB623dDf59AdD9"
|
|
206
|
+
},
|
|
207
|
+
"YZM-DynamicIRM": "0x9f39f4b61E89f78eE34780664afDc8D5bfAa74ca",
|
|
208
|
+
"tokens": {
|
|
209
|
+
"YZM": "0x8626B8f4F64CAeee9549Af8ebbFA591A7425e5ba",
|
|
210
|
+
"AUSD": "0xcdc9D2c4EaD8f2A9FD3D6F5a00bA4e6001ab7898"
|
|
211
|
+
},
|
|
212
|
+
"AUSD-DynamicIRM": "0xC813497D710CF30f7eEF73eF5dAC53c76fb821E6"
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
"ProtocolReader": "0x0c791636db1561E1f5aDD5Bf3994c95F14f272fF",
|
|
216
|
+
"CombinedAggregator-ezETH": "0xd5F84C4497621768f3F08b65ad7019BdF183b1fd",
|
|
217
|
+
"CombinedAggregator-earnAUSD": "0xf80CC9965d260d7cD96E41b9734F031279dCDf2f",
|
|
218
|
+
"DAOTimelock": "0x2677738657F27e1A3591E00AD7E5a78807688C08",
|
|
219
|
+
"VaultAggregator-USDC-YZM": "0x7cB60D0Ca3B3dd08bA2aE5DF6686beAd289b1cF4"
|
|
220
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Decimal } from "decimal.js";
|
|
2
|
+
export declare const USD_DUST_THRESHOLD: Decimal;
|
|
3
|
+
export declare function clampUsdDustAmount(value: Decimal.Value): Decimal;
|
|
4
|
+
export declare function normalizeAmountString(value: Decimal.Value, maxFractionDigits: number, roundingMode?: 1): string;
|
|
5
|
+
export type NormalizeCurrencyAmountsOptions = {
|
|
6
|
+
amount: string;
|
|
7
|
+
currencyView: 'dollar' | 'token';
|
|
8
|
+
tokenDecimals: number;
|
|
9
|
+
price: Decimal.Value;
|
|
10
|
+
usdDecimals?: number;
|
|
11
|
+
usdViewDecimals?: number;
|
|
12
|
+
};
|
|
13
|
+
export declare function normalizeCurrencyAmounts({ amount, currencyView, tokenDecimals, price, usdDecimals, usdViewDecimals, }: NormalizeCurrencyAmountsOptions): {
|
|
14
|
+
amount: string;
|
|
15
|
+
usdAmount: string;
|
|
16
|
+
tokenAmount: string;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=amounts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"amounts.d.ts","sourceRoot":"","sources":["../../src/format/amounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,eAAO,MAAM,kBAAkB,SAAsB,CAAC;AAItD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,OAAO,CAGhE;AAKD,wBAAgB,qBAAqB,CACjC,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,iBAAiB,EAAE,MAAM,EACzB,YAAY,IAAqB,GAClC,MAAM,CAaR;AAED,MAAM,MAAM,+BAA+B,GAAG;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,QAAQ,GAAG,OAAO,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,EACrC,MAAM,EACN,YAAY,EACZ,aAAa,EACb,KAAK,EACL,WAA2C,EAC3C,eAA2C,GAC9C,EAAE,+BAA+B,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAyD9F"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.USD_DUST_THRESHOLD = void 0;
|
|
4
|
+
exports.clampUsdDustAmount = clampUsdDustAmount;
|
|
5
|
+
exports.normalizeAmountString = normalizeAmountString;
|
|
6
|
+
exports.normalizeCurrencyAmounts = normalizeCurrencyAmounts;
|
|
7
|
+
const decimal_js_1 = require("decimal.js");
|
|
8
|
+
exports.USD_DUST_THRESHOLD = new decimal_js_1.Decimal('0.01');
|
|
9
|
+
const DEFAULT_USD_VIEW_DECIMALS = 2;
|
|
10
|
+
const DEFAULT_USD_INTERNAL_DECIMALS = 8;
|
|
11
|
+
function clampUsdDustAmount(value) {
|
|
12
|
+
const amount = new decimal_js_1.Decimal(value || 0);
|
|
13
|
+
return amount.abs().lt(exports.USD_DUST_THRESHOLD) ? new decimal_js_1.Decimal(0) : amount;
|
|
14
|
+
}
|
|
15
|
+
const trimTrailingZeros = (value) => value.replace(/(\.\d*?[1-9])0+$/u, '$1').replace(/\.0+$/u, '');
|
|
16
|
+
function normalizeAmountString(value, maxFractionDigits, roundingMode = decimal_js_1.Decimal.ROUND_DOWN) {
|
|
17
|
+
const decimals = Math.max(0, maxFractionDigits);
|
|
18
|
+
let decimalValue;
|
|
19
|
+
try {
|
|
20
|
+
decimalValue = new decimal_js_1.Decimal(value || 0);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return '0';
|
|
24
|
+
}
|
|
25
|
+
const rounded = decimalValue.toDecimalPlaces(decimals, roundingMode);
|
|
26
|
+
if (rounded.isZero())
|
|
27
|
+
return '0';
|
|
28
|
+
return trimTrailingZeros(rounded.toFixed(decimals, roundingMode));
|
|
29
|
+
}
|
|
30
|
+
function normalizeCurrencyAmounts({ amount, currencyView, tokenDecimals, price, usdDecimals = DEFAULT_USD_INTERNAL_DECIMALS, usdViewDecimals = DEFAULT_USD_VIEW_DECIMALS, }) {
|
|
31
|
+
if (!amount) {
|
|
32
|
+
return { amount, usdAmount: '0', tokenAmount: '0' };
|
|
33
|
+
}
|
|
34
|
+
let amountDecimal;
|
|
35
|
+
try {
|
|
36
|
+
amountDecimal = new decimal_js_1.Decimal(amount || 0);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return { amount: '0', usdAmount: '0', tokenAmount: '0' };
|
|
40
|
+
}
|
|
41
|
+
const priceDecimal = new decimal_js_1.Decimal(price || 0);
|
|
42
|
+
const hasPrice = priceDecimal.gt(0);
|
|
43
|
+
const tokenAmountRaw = currencyView === 'token'
|
|
44
|
+
? amountDecimal
|
|
45
|
+
: hasPrice
|
|
46
|
+
? amountDecimal.div(priceDecimal)
|
|
47
|
+
: new decimal_js_1.Decimal(0);
|
|
48
|
+
const usdAmountRaw = currencyView === 'dollar'
|
|
49
|
+
? amountDecimal
|
|
50
|
+
: hasPrice
|
|
51
|
+
? amountDecimal.mul(priceDecimal)
|
|
52
|
+
: new decimal_js_1.Decimal(0);
|
|
53
|
+
const endsWithDot = typeof amount === 'string' && amount.endsWith('.');
|
|
54
|
+
// Preserve trailing zeros after decimal point during user input (e.g., "0.0", "0.00", "1.20")
|
|
55
|
+
const hasTrailingZeros = typeof amount === 'string' && /\.\d*0$/.test(amount);
|
|
56
|
+
const dustDecimals = currencyView === 'dollar' ? usdViewDecimals : usdDecimals;
|
|
57
|
+
const usdThreshold = new decimal_js_1.Decimal(10).pow(-Math.max(0, dustDecimals));
|
|
58
|
+
if (!endsWithDot &&
|
|
59
|
+
!hasTrailingZeros &&
|
|
60
|
+
(currencyView === 'dollar' || hasPrice) &&
|
|
61
|
+
usdAmountRaw.abs().lt(usdThreshold)) {
|
|
62
|
+
return { amount: '0', usdAmount: '0', tokenAmount: '0' };
|
|
63
|
+
}
|
|
64
|
+
const normalizedAmount = currencyView === 'dollar'
|
|
65
|
+
? normalizeAmountString(amountDecimal, usdViewDecimals)
|
|
66
|
+
: normalizeAmountString(amountDecimal, tokenDecimals);
|
|
67
|
+
// Preserve user's exact input when they're typing decimal values with trailing zeros
|
|
68
|
+
const preservedAmount = endsWithDot || hasTrailingZeros ? amount : normalizedAmount;
|
|
69
|
+
return {
|
|
70
|
+
amount: preservedAmount,
|
|
71
|
+
usdAmount: normalizeAmountString(usdAmountRaw, usdDecimals),
|
|
72
|
+
tokenAmount: normalizeAmountString(tokenAmountRaw, tokenDecimals),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=amounts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"amounts.js","sourceRoot":"","sources":["../../src/format/amounts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Decimal } from "decimal.js";
|
|
2
|
+
export declare const MIN_LOAN_USD = 10;
|
|
3
|
+
export declare function calculateMaxBorrow(userRemainingCredit: Decimal, remainingDebt: Decimal, availableLiquidity: Decimal): Decimal;
|
|
4
|
+
export declare function calculateMaxRepay(userBalance: Decimal, userDebt: Decimal): Decimal;
|
|
5
|
+
export interface RepayValidation {
|
|
6
|
+
isValid: boolean;
|
|
7
|
+
error?: 'min_loan';
|
|
8
|
+
}
|
|
9
|
+
export declare function validateRepayRemainder(currentDebtUsd: Decimal, repayAmountUsd: Decimal, minLoanUsd?: number): RepayValidation;
|
|
10
|
+
export declare function calculateDebtPreview(currentDebt: Decimal, amount: Decimal, isRepaying: boolean): Decimal;
|
|
11
|
+
export declare function convertAmountByCurrencyView(amount: string, price: Decimal, currencyView: 'dollar' | 'token'): {
|
|
12
|
+
usdAmount: string;
|
|
13
|
+
tokenAmount: string;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=borrow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"borrow.d.ts","sourceRoot":"","sources":["../../src/format/borrow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B,wBAAgB,kBAAkB,CAC9B,mBAAmB,EAAE,OAAO,EAC5B,aAAa,EAAE,OAAO,EACtB,kBAAkB,EAAE,OAAO,GAC5B,OAAO,CAMT;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAElF;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,UAAU,CAAC;CACtB;AAED,wBAAgB,sBAAsB,CAClC,cAAc,EAAE,OAAO,EACvB,cAAc,EAAE,OAAO,EACvB,UAAU,GAAE,MAAqB,GAClC,eAAe,CASjB;AAED,wBAAgB,oBAAoB,CAChC,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,OAAO,GACpB,OAAO,CAET;AAED,wBAAgB,2BAA2B,CACvC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,QAAQ,GAAG,OAAO,GACjC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAO5C"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MIN_LOAN_USD = void 0;
|
|
4
|
+
exports.calculateMaxBorrow = calculateMaxBorrow;
|
|
5
|
+
exports.calculateMaxRepay = calculateMaxRepay;
|
|
6
|
+
exports.validateRepayRemainder = validateRepayRemainder;
|
|
7
|
+
exports.calculateDebtPreview = calculateDebtPreview;
|
|
8
|
+
exports.convertAmountByCurrencyView = convertAmountByCurrencyView;
|
|
9
|
+
const decimal_js_1 = require("decimal.js");
|
|
10
|
+
exports.MIN_LOAN_USD = 10;
|
|
11
|
+
function calculateMaxBorrow(userRemainingCredit, remainingDebt, availableLiquidity) {
|
|
12
|
+
const credit = decimal_js_1.Decimal.max(userRemainingCredit, 0);
|
|
13
|
+
const debt = decimal_js_1.Decimal.max(remainingDebt, 0);
|
|
14
|
+
const liquidity = decimal_js_1.Decimal.max(availableLiquidity, 0);
|
|
15
|
+
return decimal_js_1.Decimal.min(credit, debt, liquidity);
|
|
16
|
+
}
|
|
17
|
+
function calculateMaxRepay(userBalance, userDebt) {
|
|
18
|
+
return decimal_js_1.Decimal.min(userBalance, userDebt);
|
|
19
|
+
}
|
|
20
|
+
function validateRepayRemainder(currentDebtUsd, repayAmountUsd, minLoanUsd = exports.MIN_LOAN_USD) {
|
|
21
|
+
const remainingDebt = currentDebtUsd.minus(repayAmountUsd);
|
|
22
|
+
// TODO: Remove this once we have a better way to handle dust loans
|
|
23
|
+
if (remainingDebt.greaterThan(0.001) && remainingDebt.lessThan(minLoanUsd)) {
|
|
24
|
+
return { isValid: false, error: 'min_loan' };
|
|
25
|
+
}
|
|
26
|
+
return { isValid: true };
|
|
27
|
+
}
|
|
28
|
+
function calculateDebtPreview(currentDebt, amount, isRepaying) {
|
|
29
|
+
return isRepaying ? currentDebt.minus(amount) : currentDebt.plus(amount);
|
|
30
|
+
}
|
|
31
|
+
function convertAmountByCurrencyView(amount, price, currencyView) {
|
|
32
|
+
if (!amount)
|
|
33
|
+
return { usdAmount: '0', tokenAmount: '0' };
|
|
34
|
+
const usdAmount = currencyView === 'dollar' ? amount : new decimal_js_1.Decimal(amount).mul(price).toString();
|
|
35
|
+
const tokenAmount = currencyView === 'token' ? amount : new decimal_js_1.Decimal(amount).div(price).toString();
|
|
36
|
+
return { usdAmount, tokenAmount };
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=borrow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"borrow.js","sourceRoot":"","sources":["../../src/format/borrow.ts"],"names":[],"mappings":";;;AAIA,gDAUC;AAED,8CAEC;AAOD,wDAaC;AAED,oDAMC;AAED,kEAWC;AA3DD,2CAAqC;AAExB,QAAA,YAAY,GAAG,EAAE,CAAC;AAE/B,SAAgB,kBAAkB,CAC9B,mBAA4B,EAC5B,aAAsB,EACtB,kBAA2B;IAE3B,MAAM,MAAM,GAAG,oBAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,oBAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,oBAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAErD,OAAO,oBAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AAChD,CAAC;AAED,SAAgB,iBAAiB,CAAC,WAAoB,EAAE,QAAiB;IACrE,OAAO,oBAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAOD,SAAgB,sBAAsB,CAClC,cAAuB,EACvB,cAAuB,EACvB,aAAqB,oBAAY;IAEjC,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAE3D,mEAAmE;IACnE,IAAI,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACzE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IACjD,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,SAAgB,oBAAoB,CAChC,WAAoB,EACpB,MAAe,EACf,UAAmB;IAEnB,OAAO,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7E,CAAC;AAED,SAAgB,2BAA2B,CACvC,MAAc,EACd,KAAc,EACd,YAAgC;IAEhC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;IAEzD,MAAM,SAAS,GAAG,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,oBAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjG,MAAM,WAAW,GAAG,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,oBAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IAElG,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Decimal } from "decimal.js";
|
|
2
|
+
export interface CollateralBreakdown {
|
|
3
|
+
exchangeRate: Decimal;
|
|
4
|
+
collateralAssets: Decimal;
|
|
5
|
+
uncollateralizedAssets: Decimal;
|
|
6
|
+
}
|
|
7
|
+
export declare function calculateExchangeRate(assetBalance: Decimal, shareBalance: Decimal): Decimal;
|
|
8
|
+
export declare function calculateCollateralBreakdown(assetBalance: Decimal, collateralShares: Decimal, exchangeRate: Decimal): CollateralBreakdown;
|
|
9
|
+
export declare function calculateNewCollateral(currentCollateral: Decimal, amount: Decimal, action: 'add' | 'remove'): Decimal;
|
|
10
|
+
//# sourceMappingURL=collateral.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collateral.d.ts","sourceRoot":"","sources":["../../src/format/collateral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,WAAW,mBAAmB;IAChC,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,sBAAsB,EAAE,OAAO,CAAC;CACnC;AAED,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,CAK3F;AAED,wBAAgB,4BAA4B,CACxC,YAAY,EAAE,OAAO,EACrB,gBAAgB,EAAE,OAAO,EACzB,YAAY,EAAE,OAAO,GACtB,mBAAmB,CASrB;AAED,wBAAgB,sBAAsB,CAClC,iBAAiB,EAAE,OAAO,EAC1B,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,KAAK,GAAG,QAAQ,GACzB,OAAO,CAKT"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.calculateExchangeRate = calculateExchangeRate;
|
|
4
|
+
exports.calculateCollateralBreakdown = calculateCollateralBreakdown;
|
|
5
|
+
exports.calculateNewCollateral = calculateNewCollateral;
|
|
6
|
+
const decimal_js_1 = require("decimal.js");
|
|
7
|
+
function calculateExchangeRate(assetBalance, shareBalance) {
|
|
8
|
+
if (shareBalance.gt(0) && !shareBalance.isZero()) {
|
|
9
|
+
return assetBalance.div(shareBalance);
|
|
10
|
+
}
|
|
11
|
+
return new decimal_js_1.Decimal(1);
|
|
12
|
+
}
|
|
13
|
+
function calculateCollateralBreakdown(assetBalance, collateralShares, exchangeRate) {
|
|
14
|
+
const collateralAssets = decimal_js_1.Decimal.min(assetBalance, collateralShares.mul(exchangeRate));
|
|
15
|
+
const uncollateralizedAssets = decimal_js_1.Decimal.max(assetBalance.minus(collateralAssets), new decimal_js_1.Decimal(0));
|
|
16
|
+
return {
|
|
17
|
+
exchangeRate,
|
|
18
|
+
collateralAssets,
|
|
19
|
+
uncollateralizedAssets,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function calculateNewCollateral(currentCollateral, amount, action) {
|
|
23
|
+
if (action === 'add') {
|
|
24
|
+
return currentCollateral.plus(amount);
|
|
25
|
+
}
|
|
26
|
+
return decimal_js_1.Decimal.max(currentCollateral.minus(amount), new decimal_js_1.Decimal(0));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=collateral.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collateral.js","sourceRoot":"","sources":["../../src/format/collateral.ts"],"names":[],"mappings":";;AAQA,sDAKC;AAED,oEAaC;AAED,wDASC;AAvCD,2CAAqC;AAQrC,SAAgB,qBAAqB,CAAC,YAAqB,EAAE,YAAqB;IAC9E,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;QAC/C,OAAO,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,SAAgB,4BAA4B,CACxC,YAAqB,EACrB,gBAAyB,EACzB,YAAqB;IAErB,MAAM,gBAAgB,GAAG,oBAAO,CAAC,GAAG,CAAC,YAAY,EAAE,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IACvF,MAAM,sBAAsB,GAAG,oBAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjG,OAAO;QACH,YAAY;QACZ,gBAAgB;QAChB,sBAAsB;KACzB,CAAC;AACN,CAAC;AAED,SAAgB,sBAAsB,CAClC,iBAA0B,EAC1B,MAAe,EACf,MAAwB;IAExB,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACnB,OAAO,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,oBAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Decimal } from "decimal.js";
|
|
2
|
+
export type HealthStatus = 'Danger' | 'Caution' | 'Healthy';
|
|
3
|
+
export declare const LOW_HEALTH_THRESHOLD = 10;
|
|
4
|
+
export declare const CAUTION_HEALTH_UPPER = 20;
|
|
5
|
+
export declare function getHealthStatus(percentageValue: number | null | undefined): HealthStatus;
|
|
6
|
+
export declare function healthFactorToPercentage(rawHealthFactor: number | null | undefined): number;
|
|
7
|
+
export declare function formatHealthFactorPercentage(value: number): string;
|
|
8
|
+
export declare function formatHealthFactor(value?: number | null): string;
|
|
9
|
+
export declare function getLiquidityStatus(ratio: Decimal.Value): 'green' | 'yellow' | 'red';
|
|
10
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/format/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5D,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,wBAAgB,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,CAQxF;AAED,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAE3F;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAIhE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAMnF"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CAUTION_HEALTH_UPPER = exports.LOW_HEALTH_THRESHOLD = void 0;
|
|
4
|
+
exports.getHealthStatus = getHealthStatus;
|
|
5
|
+
exports.healthFactorToPercentage = healthFactorToPercentage;
|
|
6
|
+
exports.formatHealthFactorPercentage = formatHealthFactorPercentage;
|
|
7
|
+
exports.formatHealthFactor = formatHealthFactor;
|
|
8
|
+
exports.getLiquidityStatus = getLiquidityStatus;
|
|
9
|
+
const decimal_js_1 = require("decimal.js");
|
|
10
|
+
exports.LOW_HEALTH_THRESHOLD = 10;
|
|
11
|
+
exports.CAUTION_HEALTH_UPPER = 20;
|
|
12
|
+
function getHealthStatus(percentageValue) {
|
|
13
|
+
if (percentageValue == null)
|
|
14
|
+
return 'Healthy';
|
|
15
|
+
if (percentageValue < 5)
|
|
16
|
+
return 'Danger';
|
|
17
|
+
if (percentageValue >= 5 && percentageValue <= 20)
|
|
18
|
+
return 'Caution';
|
|
19
|
+
if (percentageValue > 20)
|
|
20
|
+
return 'Healthy';
|
|
21
|
+
return 'Healthy';
|
|
22
|
+
}
|
|
23
|
+
function healthFactorToPercentage(rawHealthFactor) {
|
|
24
|
+
return Math.max(((rawHealthFactor ?? 5) - 1) * 100, 0);
|
|
25
|
+
}
|
|
26
|
+
function formatHealthFactorPercentage(value) {
|
|
27
|
+
return new Intl.NumberFormat('en-US', {
|
|
28
|
+
style: 'percent',
|
|
29
|
+
minimumFractionDigits: 0,
|
|
30
|
+
maximumFractionDigits: 0,
|
|
31
|
+
}).format(value / 100);
|
|
32
|
+
}
|
|
33
|
+
function formatHealthFactor(value) {
|
|
34
|
+
if (value === null || value === undefined)
|
|
35
|
+
return '∞';
|
|
36
|
+
if (value >= 999)
|
|
37
|
+
return '>999%';
|
|
38
|
+
return formatHealthFactorPercentage(Math.max(value, 0));
|
|
39
|
+
}
|
|
40
|
+
function getLiquidityStatus(ratio) {
|
|
41
|
+
const v = new decimal_js_1.Decimal(ratio).toNumber();
|
|
42
|
+
if (v < 0.75)
|
|
43
|
+
return 'green';
|
|
44
|
+
if (v >= 0.76 && v <= 0.9)
|
|
45
|
+
return 'yellow';
|
|
46
|
+
if (v > 0.91)
|
|
47
|
+
return 'red';
|
|
48
|
+
return 'yellow';
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/format/health.ts"],"names":[],"mappings":";;;AAOA,0CAQC;AAED,4DAEC;AAED,oEAMC;AAED,gDAIC;AAED,gDAMC;AAzCD,2CAAqC;AAIxB,QAAA,oBAAoB,GAAG,EAAE,CAAC;AAC1B,QAAA,oBAAoB,GAAG,EAAE,CAAC;AAEvC,SAAgB,eAAe,CAAC,eAA0C;IACtE,IAAI,eAAe,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IAE9C,IAAI,eAAe,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IACzC,IAAI,eAAe,IAAI,CAAC,IAAI,eAAe,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IACpE,IAAI,eAAe,GAAG,EAAE;QAAE,OAAO,SAAS,CAAC;IAE3C,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAgB,wBAAwB,CAAC,eAA0C;IAC/E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAgB,4BAA4B,CAAC,KAAa;IACtD,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QAClC,KAAK,EAAE,SAAS;QAChB,qBAAqB,EAAE,CAAC;QACxB,qBAAqB,EAAE,CAAC;KAC3B,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAAqB;IACpD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACtD,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,OAAO,CAAC;IACjC,OAAO,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAAoB;IACnD,MAAM,CAAC,GAAG,IAAI,oBAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxC,IAAI,CAAC,GAAG,IAAI;QAAE,OAAO,OAAO,CAAC;IAC7B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,CAAC,GAAG,IAAI;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,QAAQ,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/format/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./leverage"), exports);
|
|
18
|
+
__exportStar(require("./borrow"), exports);
|
|
19
|
+
__exportStar(require("./collateral"), exports);
|
|
20
|
+
__exportStar(require("./health"), exports);
|
|
21
|
+
__exportStar(require("./amounts"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/format/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,2CAAyB;AACzB,+CAA6B;AAC7B,2CAAyB;AACzB,4CAA0B"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Decimal } from "decimal.js";
|
|
2
|
+
export declare const MIN_DEPOSIT_USD = 10;
|
|
3
|
+
export declare const MIN_BORROW_USD = 10.1;
|
|
4
|
+
export declare const HIGH_LEVERAGE_THRESHOLD = 60;
|
|
5
|
+
export declare const MAX_LTV_RATIO = 0.85;
|
|
6
|
+
export declare function calculateBorrowAmount(depositUsd: Decimal, leverage: number): Decimal;
|
|
7
|
+
export declare function calculateLeverageRatio(totalValue: Decimal, debtAmount: Decimal): Decimal;
|
|
8
|
+
export declare function calculateDeleverageAmount(currentLeverage: number, targetLeverage: number, totalValue: Decimal): Decimal;
|
|
9
|
+
export declare function calculatePositionSize(tokenAmount: Decimal, leverage: number): Decimal;
|
|
10
|
+
export interface LeverageValidationInput {
|
|
11
|
+
depositAmount: number;
|
|
12
|
+
leverage: number;
|
|
13
|
+
availableLiquidity: number;
|
|
14
|
+
maxLeverage: number;
|
|
15
|
+
userBalance: number;
|
|
16
|
+
currentDebt?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface ValidationResult {
|
|
19
|
+
isValid: boolean;
|
|
20
|
+
error?: string;
|
|
21
|
+
warning?: string;
|
|
22
|
+
canProceed: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface CheckLeverageAmountBelowMinimumInput {
|
|
25
|
+
isEditLeverage: boolean;
|
|
26
|
+
debtSize: {
|
|
27
|
+
current: {
|
|
28
|
+
usd: number | string;
|
|
29
|
+
};
|
|
30
|
+
new?: {
|
|
31
|
+
usd: number | string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
leverage: number;
|
|
35
|
+
borrowAmount: Decimal | undefined;
|
|
36
|
+
}
|
|
37
|
+
export declare function checkLeverageAmountBelowMinimum(input: CheckLeverageAmountBelowMinimumInput): boolean;
|
|
38
|
+
export declare function checkBorrowExceedsLiquidity(borrowAmount: Decimal | undefined, availableLiquidity: Decimal | undefined): boolean;
|
|
39
|
+
export declare function validateLeverageInput(input: LeverageValidationInput): ValidationResult;
|
|
40
|
+
//# sourceMappingURL=leverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leverage.d.ts","sourceRoot":"","sources":["../../src/format/leverage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,cAAc,OAAO,CAAC;AACnC,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,aAAa,OAAO,CAAC;AAElC,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGpF;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAKxF;AAED,wBAAgB,yBAAyB,CACrC,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,OAAO,GACpB,OAAO,CAOT;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAErF;AAED,MAAM,WAAW,uBAAuB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,oCAAoC;IACjD,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE;QACN,OAAO,EAAE;YAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;QAClC,GAAG,CAAC,EAAE;YAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;KAClC,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;CACrC;AAED,wBAAgB,+BAA+B,CAC3C,KAAK,EAAE,oCAAoC,GAC5C,OAAO,CAaT;AAED,wBAAgB,2BAA2B,CACvC,YAAY,EAAE,OAAO,GAAG,SAAS,EACjC,kBAAkB,EAAE,OAAO,GAAG,SAAS,GACxC,OAAO,CAGT;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,uBAAuB,GAAG,gBAAgB,CAkFtF"}
|