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.
Files changed (93) hide show
  1. package/dist/chains/arbitrum.d.ts +3 -0
  2. package/dist/chains/arbitrum.d.ts.map +1 -0
  3. package/dist/chains/arbitrum.js +16 -0
  4. package/dist/chains/arbitrum.js.map +1 -0
  5. package/dist/chains/index.d.ts +21 -568
  6. package/dist/chains/index.d.ts.map +1 -1
  7. package/dist/chains/index.js +6 -12
  8. package/dist/chains/index.js.map +1 -1
  9. package/dist/chains/monad.d.ts +3 -0
  10. package/dist/chains/monad.d.ts.map +1 -0
  11. package/dist/chains/monad.js +21 -0
  12. package/dist/chains/monad.js.map +1 -0
  13. package/dist/classes/Api.d.ts +37 -0
  14. package/dist/classes/Api.d.ts.map +1 -0
  15. package/dist/classes/Api.js +69 -0
  16. package/dist/classes/Api.js.map +1 -0
  17. package/dist/classes/BorrowableCToken.d.ts +0 -4
  18. package/dist/classes/BorrowableCToken.d.ts.map +1 -1
  19. package/dist/classes/BorrowableCToken.js +0 -6
  20. package/dist/classes/BorrowableCToken.js.map +1 -1
  21. package/dist/classes/CToken.d.ts +11 -1
  22. package/dist/classes/CToken.d.ts.map +1 -1
  23. package/dist/classes/CToken.js +20 -4
  24. package/dist/classes/CToken.js.map +1 -1
  25. package/dist/classes/DexAggregators/KyberSwap.d.ts.map +1 -1
  26. package/dist/classes/DexAggregators/KyberSwap.js +8 -6
  27. package/dist/classes/DexAggregators/KyberSwap.js.map +1 -1
  28. package/dist/classes/Market.d.ts +1 -5
  29. package/dist/classes/Market.d.ts.map +1 -1
  30. package/dist/classes/Market.js +17 -32
  31. package/dist/classes/Market.js.map +1 -1
  32. package/dist/classes/NativeToken.d.ts.map +1 -1
  33. package/dist/classes/NativeToken.js +2 -1
  34. package/dist/classes/NativeToken.js.map +1 -1
  35. package/dist/classes/index.d.ts +15 -0
  36. package/dist/classes/index.d.ts.map +1 -0
  37. package/dist/classes/index.js +31 -0
  38. package/dist/classes/index.js.map +1 -0
  39. package/dist/contracts/arb-sepolia.json +44 -0
  40. package/dist/contracts/index.d.ts +267 -0
  41. package/dist/contracts/index.d.ts.map +1 -0
  42. package/dist/contracts/index.js +13 -0
  43. package/dist/contracts/index.js.map +1 -0
  44. package/dist/contracts/monad-mainnet.json +220 -0
  45. package/dist/format/amounts.d.ts +18 -0
  46. package/dist/format/amounts.d.ts.map +1 -0
  47. package/dist/format/amounts.js +75 -0
  48. package/dist/format/amounts.js.map +1 -0
  49. package/dist/format/borrow.d.ts +15 -0
  50. package/dist/format/borrow.d.ts.map +1 -0
  51. package/dist/format/borrow.js +38 -0
  52. package/dist/format/borrow.js.map +1 -0
  53. package/dist/format/collateral.d.ts +10 -0
  54. package/dist/format/collateral.d.ts.map +1 -0
  55. package/dist/format/collateral.js +28 -0
  56. package/dist/format/collateral.js.map +1 -0
  57. package/dist/format/health.d.ts +10 -0
  58. package/dist/format/health.d.ts.map +1 -0
  59. package/dist/format/health.js +50 -0
  60. package/dist/format/health.js.map +1 -0
  61. package/dist/format/index.d.ts +6 -0
  62. package/dist/format/index.d.ts.map +1 -0
  63. package/dist/format/index.js +22 -0
  64. package/dist/format/index.js.map +1 -0
  65. package/dist/format/leverage.d.ts +40 -0
  66. package/dist/format/leverage.d.ts.map +1 -0
  67. package/dist/format/leverage.js +130 -0
  68. package/dist/format/leverage.js.map +1 -0
  69. package/dist/helpers.d.ts +59 -133
  70. package/dist/helpers.d.ts.map +1 -1
  71. package/dist/helpers.js +83 -15
  72. package/dist/helpers.js.map +1 -1
  73. package/dist/index.d.ts +5 -16
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +5 -16
  76. package/dist/index.js.map +1 -1
  77. package/dist/integrations/index.d.ts +3 -0
  78. package/dist/integrations/index.d.ts.map +1 -0
  79. package/dist/integrations/index.js +19 -0
  80. package/dist/integrations/index.js.map +1 -0
  81. package/dist/integrations/merkl.d.ts +98 -0
  82. package/dist/integrations/merkl.d.ts.map +1 -0
  83. package/dist/integrations/merkl.js +37 -0
  84. package/dist/integrations/merkl.js.map +1 -0
  85. package/dist/integrations/snapshot.d.ts +53 -0
  86. package/dist/integrations/snapshot.d.ts.map +1 -0
  87. package/dist/integrations/snapshot.js +103 -0
  88. package/dist/integrations/snapshot.js.map +1 -0
  89. package/dist/setup.d.ts +4 -85
  90. package/dist/setup.d.ts.map +1 -1
  91. package/dist/setup.js +8 -74
  92. package/dist/setup.js.map +1 -1
  93. 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,6 @@
1
+ export * from './leverage';
2
+ export * from './borrow';
3
+ export * from './collateral';
4
+ export * from './health';
5
+ export * from './amounts';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}