@curvefi/llamalend-api 1.0.2

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 (125) hide show
  1. package/.eslintrc.json +40 -0
  2. package/.github/workflows/lint.yml +15 -0
  3. package/.github/workflows/publish.yml +55 -0
  4. package/LICENSE +21 -0
  5. package/README.md +1976 -0
  6. package/lib/cache/index.d.ts +14 -0
  7. package/lib/cache/index.js +31 -0
  8. package/lib/constants/L2Networks.d.ts +1 -0
  9. package/lib/constants/L2Networks.js +1 -0
  10. package/lib/constants/abis/Controller.json +1027 -0
  11. package/lib/constants/abis/ERC20.json +222 -0
  12. package/lib/constants/abis/ERC4626.json +1674 -0
  13. package/lib/constants/abis/GaugeController.json +794 -0
  14. package/lib/constants/abis/GaugeFactoryMainnet.json +1 -0
  15. package/lib/constants/abis/GaugeFactorySidechain.json +475 -0
  16. package/lib/constants/abis/GaugeV5.json +958 -0
  17. package/lib/constants/abis/LeverageZap.json +35 -0
  18. package/lib/constants/abis/Llamma.json +984 -0
  19. package/lib/constants/abis/Minter.json +1 -0
  20. package/lib/constants/abis/MonetaryPolicy.json +221 -0
  21. package/lib/constants/abis/OneWayLendingFactoryABI.json +899 -0
  22. package/lib/constants/abis/SidechainGauge.json +939 -0
  23. package/lib/constants/abis/Vault.json +721 -0
  24. package/lib/constants/abis/crvUSD/DeleverageZap.json +248 -0
  25. package/lib/constants/abis/crvUSD/Factory.json +514 -0
  26. package/lib/constants/abis/crvUSD/HealthCalculatorZap.json +54 -0
  27. package/lib/constants/abis/crvUSD/LeverageZap.json +312 -0
  28. package/lib/constants/abis/crvUSD/MonetaryPolicy.json +294 -0
  29. package/lib/constants/abis/crvUSD/MonetaryPolicy2.json +299 -0
  30. package/lib/constants/abis/crvUSD/PegKeeper.json +411 -0
  31. package/lib/constants/abis/crvUSD/controller.json +991 -0
  32. package/lib/constants/abis/crvUSD/llamma.json +984 -0
  33. package/lib/constants/abis/gas_oracle_optimism.json +149 -0
  34. package/lib/constants/abis/gas_oracle_optimism_blob.json +203 -0
  35. package/lib/constants/aliases.d.ts +16 -0
  36. package/lib/constants/aliases.js +124 -0
  37. package/lib/constants/coins.d.ts +16 -0
  38. package/lib/constants/coins.js +24 -0
  39. package/lib/constants/llammas.d.ts +2 -0
  40. package/lib/constants/llammas.js +96 -0
  41. package/lib/constants/utils.d.ts +4 -0
  42. package/lib/constants/utils.js +27 -0
  43. package/lib/external-api.d.ts +13 -0
  44. package/lib/external-api.js +436 -0
  45. package/lib/index.d.ts +104 -0
  46. package/lib/index.js +123 -0
  47. package/lib/interfaces.d.ts +228 -0
  48. package/lib/interfaces.js +1 -0
  49. package/lib/lendMarkets/LendMarketTemplate.d.ts +510 -0
  50. package/lib/lendMarkets/LendMarketTemplate.js +4682 -0
  51. package/lib/lendMarkets/index.d.ts +3 -0
  52. package/lib/lendMarkets/index.js +3 -0
  53. package/lib/lendMarkets/lendMarketConstructor.d.ts +2 -0
  54. package/lib/lendMarkets/lendMarketConstructor.js +6 -0
  55. package/lib/llamalend.d.ts +80 -0
  56. package/lib/llamalend.js +878 -0
  57. package/lib/mintMarkets/MintMarketTemplate.d.ts +308 -0
  58. package/lib/mintMarkets/MintMarketTemplate.js +2998 -0
  59. package/lib/mintMarkets/index.d.ts +3 -0
  60. package/lib/mintMarkets/index.js +3 -0
  61. package/lib/mintMarkets/mintMarketConstructor.d.ts +2 -0
  62. package/lib/mintMarkets/mintMarketConstructor.js +4 -0
  63. package/lib/st-crvUSD.d.ts +35 -0
  64. package/lib/st-crvUSD.js +505 -0
  65. package/lib/utils.d.ts +58 -0
  66. package/lib/utils.js +661 -0
  67. package/package.json +42 -0
  68. package/src/cache/index.ts +41 -0
  69. package/src/constants/L2Networks.ts +1 -0
  70. package/src/constants/abis/Controller.json +1027 -0
  71. package/src/constants/abis/ERC20.json +222 -0
  72. package/src/constants/abis/ERC4626.json +1674 -0
  73. package/src/constants/abis/GaugeController.json +794 -0
  74. package/src/constants/abis/GaugeFactoryMainnet.json +1 -0
  75. package/src/constants/abis/GaugeFactorySidechain.json +475 -0
  76. package/src/constants/abis/GaugeV5.json +958 -0
  77. package/src/constants/abis/LeverageZap.json +35 -0
  78. package/src/constants/abis/Llamma.json +984 -0
  79. package/src/constants/abis/Minter.json +1 -0
  80. package/src/constants/abis/MonetaryPolicy.json +221 -0
  81. package/src/constants/abis/OneWayLendingFactoryABI.json +899 -0
  82. package/src/constants/abis/SidechainGauge.json +939 -0
  83. package/src/constants/abis/Vault.json +721 -0
  84. package/src/constants/abis/crvUSD/DeleverageZap.json +248 -0
  85. package/src/constants/abis/crvUSD/ERC20.json +222 -0
  86. package/src/constants/abis/crvUSD/Factory.json +514 -0
  87. package/src/constants/abis/crvUSD/HealthCalculatorZap.json +54 -0
  88. package/src/constants/abis/crvUSD/LeverageZap.json +312 -0
  89. package/src/constants/abis/crvUSD/MonetaryPolicy.json +294 -0
  90. package/src/constants/abis/crvUSD/MonetaryPolicy2.json +299 -0
  91. package/src/constants/abis/crvUSD/PegKeeper.json +411 -0
  92. package/src/constants/abis/crvUSD/controller.json +991 -0
  93. package/src/constants/abis/crvUSD/llamma.json +984 -0
  94. package/src/constants/abis/gas_oracle_optimism.json +149 -0
  95. package/src/constants/abis/gas_oracle_optimism_blob.json +203 -0
  96. package/src/constants/aliases.ts +141 -0
  97. package/src/constants/coins.ts +41 -0
  98. package/src/constants/llammas.ts +99 -0
  99. package/src/constants/utils.ts +33 -0
  100. package/src/external-api.ts +325 -0
  101. package/src/index.ts +128 -0
  102. package/src/interfaces.ts +237 -0
  103. package/src/lendMarkets/LendMarketTemplate.ts +3022 -0
  104. package/src/lendMarkets/index.ts +7 -0
  105. package/src/lendMarkets/lendMarketConstructor.ts +7 -0
  106. package/src/llamalend.ts +785 -0
  107. package/src/mintMarkets/MintMarketTemplate.ts +1781 -0
  108. package/src/mintMarkets/index.ts +7 -0
  109. package/src/mintMarkets/mintMarketConstructor.ts +5 -0
  110. package/src/st-crvUSD.ts +244 -0
  111. package/src/utils.ts +497 -0
  112. package/test/fetch.test.ts +152 -0
  113. package/test/general.test.ts +216 -0
  114. package/test/leverageBorrowMore.test.ts +245 -0
  115. package/test/leverageCreateLoan.test.ts +236 -0
  116. package/test/leverageRepay.test.ts +240 -0
  117. package/test/readme.test.ts +475 -0
  118. package/test/selfLiquidate.test.ts +57 -0
  119. package/test/selfLiquidateCrvUSD.test.ts +54 -0
  120. package/test/st_crvUSD.test.ts +68 -0
  121. package/test/swap.test.ts +62 -0
  122. package/test/swapCrvUSD.test.ts +56 -0
  123. package/test/vault.test.ts +112 -0
  124. package/tsconfig.build.json +10 -0
  125. package/tsconfig.json +72 -0
@@ -0,0 +1,308 @@
1
+ import memoize from "memoizee";
2
+ import { IDict, TGas } from "../interfaces";
3
+ export declare class MintMarketTemplate {
4
+ id: string;
5
+ address: string;
6
+ controller: string;
7
+ monetaryPolicy: string;
8
+ collateral: string;
9
+ leverageZap: string;
10
+ deleverageZap: string;
11
+ healthCalculator: string | undefined;
12
+ collateralSymbol: string;
13
+ collateralDecimals: number;
14
+ coins: string[];
15
+ coinAddresses: string[];
16
+ coinDecimals: number[];
17
+ minBands: number;
18
+ maxBands: number;
19
+ defaultBands: number;
20
+ A: number;
21
+ tickSpace: number;
22
+ estimateGas: {
23
+ createLoanApprove: (collateral: number | string) => Promise<TGas>;
24
+ createLoan: (collateral: number | string, debt: number | string, range: number) => Promise<TGas>;
25
+ addCollateralApprove: (collateral: number | string) => Promise<TGas>;
26
+ addCollateral: (collateral: number | string, address?: string) => Promise<TGas>;
27
+ borrowMoreApprove: (collateral: number | string) => Promise<TGas>;
28
+ borrowMore: (collateral: number | string, debt: number | string) => Promise<TGas>;
29
+ repayApprove: (debt: number | string) => Promise<TGas>;
30
+ repay: (debt: number | string, address?: string) => Promise<TGas>;
31
+ fullRepayApprove: (address?: string) => Promise<TGas>;
32
+ fullRepay: (address?: string) => Promise<TGas>;
33
+ swapApprove: (i: number, amount: number | string) => Promise<TGas>;
34
+ swap: (i: number, j: number, amount: number | string, slippage?: number) => Promise<TGas>;
35
+ liquidateApprove: (address: string) => Promise<TGas>;
36
+ liquidate: (address: string, slippage?: number) => Promise<TGas>;
37
+ selfLiquidateApprove: () => Promise<TGas>;
38
+ selfLiquidate: (slippage?: number) => Promise<TGas>;
39
+ };
40
+ stats: {
41
+ parameters: () => Promise<{
42
+ fee: string;
43
+ admin_fee: string;
44
+ rate: string;
45
+ liquidation_discount: string;
46
+ loan_discount: string;
47
+ }>;
48
+ balances: () => Promise<[string, string]>;
49
+ maxMinBands: () => Promise<[number, number]>;
50
+ activeBand: () => Promise<number>;
51
+ liquidatingBand: () => Promise<number | null>;
52
+ bandBalances: (n: number) => Promise<{
53
+ stablecoin: string;
54
+ collateral: string;
55
+ }>;
56
+ bandsBalances: () => Promise<{
57
+ [index: number]: {
58
+ stablecoin: string;
59
+ collateral: string;
60
+ };
61
+ }>;
62
+ totalSupply: () => Promise<string>;
63
+ totalDebt: () => Promise<string>;
64
+ totalStablecoin: () => Promise<string>;
65
+ totalCollateral: () => Promise<string>;
66
+ capAndAvailable: () => Promise<{
67
+ "cap": string;
68
+ "available": string;
69
+ }>;
70
+ };
71
+ wallet: {
72
+ balances: (address?: string) => Promise<{
73
+ stablecoin: string;
74
+ collateral: string;
75
+ }>;
76
+ };
77
+ leverage: {
78
+ createLoanMaxRecv: (collateral: number | string, range: number) => Promise<{
79
+ maxBorrowable: string;
80
+ maxCollateral: string;
81
+ leverage: string;
82
+ routeIdx: number;
83
+ }>;
84
+ createLoanMaxRecvAllRanges: (collateral: number | string) => Promise<IDict<{
85
+ maxBorrowable: string;
86
+ maxCollateral: string;
87
+ leverage: string;
88
+ routeIdx: number;
89
+ }>>;
90
+ createLoanCollateral: (userCollateral: number | string, debt: number | string) => Promise<{
91
+ collateral: string;
92
+ leverage: string;
93
+ routeIdx: number;
94
+ }>;
95
+ getRouteName: (routeIdx: number) => Promise<string>;
96
+ getMaxRange: (collateral: number | string, debt: number | string) => Promise<number>;
97
+ createLoanBands: (collateral: number | string, debt: number | string, range: number) => Promise<[number, number]>;
98
+ createLoanBandsAllRanges: (collateral: number | string, debt: number | string) => Promise<IDict<[number, number] | null>>;
99
+ createLoanPrices: (collateral: number | string, debt: number | string, range: number) => Promise<string[]>;
100
+ createLoanPricesAllRanges: (collateral: number | string, debt: number | string) => Promise<IDict<[string, string] | null>>;
101
+ createLoanHealth: (collateral: number | string, debt: number | string, range: number, full?: boolean, address?: string) => Promise<string>;
102
+ createLoanIsApproved: (collateral: number | string) => Promise<boolean>;
103
+ createLoanApprove: (collateral: number | string) => Promise<string[]>;
104
+ priceImpact: (collateral: number | string, debt: number | string) => Promise<string>;
105
+ createLoan: (collateral: number | string, debt: number | string, range: number, slippage?: number) => Promise<string>;
106
+ estimateGas: {
107
+ createLoanApprove: (collateral: number | string) => Promise<TGas>;
108
+ createLoan: (collateral: number | string, debt: number | string, range: number, slippage?: number) => Promise<TGas>;
109
+ };
110
+ };
111
+ deleverage: {
112
+ repayStablecoins: (collateral: number | string) => Promise<{
113
+ stablecoins: string;
114
+ routeIdx: number;
115
+ }>;
116
+ getRouteName: (routeIdx: number) => Promise<string>;
117
+ isAvailable: (deleverageCollateral: number | string, address?: string) => Promise<boolean>;
118
+ isFullRepayment: (deleverageCollateral: number | string, address?: string) => Promise<boolean>;
119
+ repayBands: (collateral: number | string, address?: string) => Promise<[number, number]>;
120
+ repayPrices: (collateral: number | string, address?: string) => Promise<string[]>;
121
+ repayHealth: (collateral: number | string, full?: boolean, address?: string) => Promise<string>;
122
+ repay: (collateral: number | string, slippage?: number) => Promise<string>;
123
+ priceImpact: (collateral: number | string) => Promise<string>;
124
+ estimateGas: {
125
+ repay: (collateral: number | string, slippage?: number) => Promise<number>;
126
+ };
127
+ };
128
+ constructor(id: string);
129
+ private statsParameters;
130
+ private statsBalances;
131
+ private statsMaxMinBands;
132
+ private statsActiveBand;
133
+ private statsLiquidatingBand;
134
+ private statsBandBalances;
135
+ private statsBandsBalances;
136
+ private statsTotalSupply;
137
+ private statsTotalDebt;
138
+ private statsTotalStablecoin;
139
+ private statsTotalCollateral;
140
+ private statsCapAndAvailable;
141
+ loanExists(address?: string): Promise<boolean>;
142
+ userDebt(address?: string): Promise<string>;
143
+ userHealth(full?: boolean, address?: string): Promise<string>;
144
+ userBands(address?: string): Promise<number[]>;
145
+ userRange(address?: string): Promise<number>;
146
+ userPrices(address?: string): Promise<string[]>;
147
+ _userState(address?: string): Promise<{
148
+ _collateral: bigint;
149
+ _stablecoin: bigint;
150
+ _debt: bigint;
151
+ }>;
152
+ userState(address?: string): Promise<{
153
+ collateral: string;
154
+ stablecoin: string;
155
+ debt: string;
156
+ }>;
157
+ userLoss(userAddress?: string): Promise<{
158
+ deposited_collateral: string;
159
+ current_collateral_estimation: string;
160
+ loss: string;
161
+ loss_pct: string;
162
+ }>;
163
+ userBandsBalances(address?: string): Promise<IDict<{
164
+ stablecoin: string;
165
+ collateral: string;
166
+ }>>;
167
+ oraclePrice(): Promise<string>;
168
+ oraclePriceBand(): Promise<number>;
169
+ price(): Promise<string>;
170
+ basePrice: (() => Promise<string>) & memoize.Memoized<() => Promise<string>>;
171
+ calcTickPrice(n: number): Promise<string>;
172
+ calcBandPrices(n: number): Promise<[string, string]>;
173
+ calcRangePct(range: number): string;
174
+ private walletBalances;
175
+ private _checkRange;
176
+ createLoanMaxRecv(collateral: number | string, range: number): Promise<string>;
177
+ createLoanMaxRecvAllRanges: ((collateral: number | string) => Promise<{
178
+ [index: number]: string;
179
+ }>) & memoize.Memoized<(collateral: number | string) => Promise<{
180
+ [index: number]: string;
181
+ }>>;
182
+ getMaxRange(collateral: number | string, debt: number | string): Promise<number>;
183
+ private _calcN1;
184
+ private _calcN1AllRanges;
185
+ private _getPrices;
186
+ private _calcPrices;
187
+ private _createLoanBands;
188
+ private _createLoanBandsAllRanges;
189
+ createLoanBands(collateral: number | string, debt: number | string, range: number): Promise<[number, number]>;
190
+ createLoanBandsAllRanges(collateral: number | string, debt: number | string): Promise<{
191
+ [index: number]: [number, number] | null;
192
+ }>;
193
+ createLoanPrices(collateral: number | string, debt: number | string, range: number): Promise<string[]>;
194
+ createLoanPricesAllRanges(collateral: number | string, debt: number | string): Promise<{
195
+ [index: number]: [string, string] | null;
196
+ }>;
197
+ createLoanHealth(collateral: number | string, debt: number | string, range: number, full?: boolean, address?: string): Promise<string>;
198
+ createLoanIsApproved(collateral: number | string): Promise<boolean>;
199
+ private createLoanApproveEstimateGas;
200
+ createLoanApprove(collateral: number | string): Promise<string[]>;
201
+ private _createLoan;
202
+ createLoanEstimateGas(collateral: number | string, debt: number | string, range: number): Promise<number>;
203
+ createLoan(collateral: number | string, debt: number | string, range: number): Promise<string>;
204
+ borrowMoreMaxRecv(collateralAmount: number | string): Promise<string>;
205
+ private _borrowMoreBands;
206
+ borrowMoreBands(collateral: number | string, debt: number | string): Promise<[number, number]>;
207
+ borrowMorePrices(collateral: number | string, debt: number | string): Promise<string[]>;
208
+ borrowMoreHealth(collateral: number | string, debt: number | string, full?: boolean, address?: string): Promise<string>;
209
+ borrowMoreIsApproved(collateral: number | string): Promise<boolean>;
210
+ private borrowMoreApproveEstimateGas;
211
+ borrowMoreApprove(collateral: number | string): Promise<string[]>;
212
+ private _borrowMore;
213
+ borrowMoreEstimateGas(collateral: number | string, debt: number | string): Promise<number>;
214
+ borrowMore(collateral: number | string, debt: number | string): Promise<string>;
215
+ private _addCollateralBands;
216
+ addCollateralBands(collateral: number | string, address?: string): Promise<[number, number]>;
217
+ addCollateralPrices(collateral: number | string, address?: string): Promise<string[]>;
218
+ addCollateralHealth(collateral: number | string, full?: boolean, address?: string): Promise<string>;
219
+ addCollateralIsApproved(collateral: number | string): Promise<boolean>;
220
+ private addCollateralApproveEstimateGas;
221
+ addCollateralApprove(collateral: number | string): Promise<string[]>;
222
+ private _addCollateral;
223
+ addCollateralEstimateGas(collateral: number | string, address?: string): Promise<number>;
224
+ addCollateral(collateral: number | string, address?: string): Promise<string>;
225
+ maxRemovable(): Promise<string>;
226
+ private _removeCollateralBands;
227
+ removeCollateralBands(collateral: number | string): Promise<[number, number]>;
228
+ removeCollateralPrices(collateral: number | string): Promise<string[]>;
229
+ removeCollateralHealth(collateral: number | string, full?: boolean, address?: string): Promise<string>;
230
+ private _removeCollateral;
231
+ removeCollateralEstimateGas(collateral: number | string): Promise<number>;
232
+ removeCollateral(collateral: number | string): Promise<string>;
233
+ private _repayBands;
234
+ repayBands(debt: number | string, address?: string): Promise<[number, number]>;
235
+ repayPrices(debt: number | string, address?: string): Promise<string[]>;
236
+ repayIsApproved(debt: number | string): Promise<boolean>;
237
+ private repayApproveEstimateGas;
238
+ repayApprove(debt: number | string): Promise<string[]>;
239
+ repayHealth(debt: number | string, full?: boolean, address?: string): Promise<string>;
240
+ private _repay;
241
+ repayEstimateGas(debt: number | string, address?: string): Promise<number>;
242
+ repay(debt: number | string, address?: string): Promise<string>;
243
+ private _fullRepayAmount;
244
+ fullRepayIsApproved(address?: string): Promise<boolean>;
245
+ private fullRepayApproveEstimateGas;
246
+ fullRepayApprove(address?: string): Promise<string[]>;
247
+ fullRepayEstimateGas(address?: string): Promise<number>;
248
+ fullRepay(address?: string): Promise<string>;
249
+ maxSwappable(i: number, j: number): Promise<string>;
250
+ private _swapExpected;
251
+ swapExpected(i: number, j: number, amount: number | string): Promise<string>;
252
+ swapRequired(i: number, j: number, outAmount: number | string): Promise<string>;
253
+ swapPriceImpact(i: number, j: number, amount: number | string): Promise<string>;
254
+ swapIsApproved(i: number, amount: number | string): Promise<boolean>;
255
+ private swapApproveEstimateGas;
256
+ swapApprove(i: number, amount: number | string): Promise<string[]>;
257
+ private _swap;
258
+ swapEstimateGas(i: number, j: number, amount: number | string, slippage?: number): Promise<number>;
259
+ swap(i: number, j: number, amount: number | string, slippage?: number): Promise<string>;
260
+ tokensToLiquidate(address?: string): Promise<string>;
261
+ liquidateIsApproved(address?: string): Promise<boolean>;
262
+ private liquidateApproveEstimateGas;
263
+ liquidateApprove(address?: string): Promise<string[]>;
264
+ private _liquidate;
265
+ liquidateEstimateGas(address: string, slippage?: number): Promise<number>;
266
+ liquidate(address: string, slippage?: number): Promise<string>;
267
+ selfLiquidateIsApproved(): Promise<boolean>;
268
+ private selfLiquidateApproveEstimateGas;
269
+ selfLiquidateApprove(): Promise<string[]>;
270
+ selfLiquidateEstimateGas(slippage?: number): Promise<number>;
271
+ selfLiquidate(slippage?: number): Promise<string>;
272
+ private _getBestIdx;
273
+ private _checkLeverageZap;
274
+ private leverageCreateLoanMaxRecv;
275
+ private leverageCreateLoanMaxRecvAllRanges;
276
+ private _leverageCreateLoanMaxRecvAllRanges2;
277
+ private _leverageCreateLoanCollateral;
278
+ private _getRouteIdx;
279
+ private leverageCreateLoanCollateral;
280
+ private leverageGetRouteName;
281
+ private leverageGetMaxRange;
282
+ private _leverageCalcN1;
283
+ private _leverageCalcN1AllRanges;
284
+ private _leverageCreateLoanBands;
285
+ private _leverageCreateLoanBandsAllRanges;
286
+ private leverageCreateLoanBands;
287
+ private leverageCreateLoanBandsAllRanges;
288
+ private leverageCreateLoanPrices;
289
+ private leverageCreateLoanPricesAllRanges;
290
+ private leverageCreateLoanHealth;
291
+ leveragePriceImpact(collateral: number | string, debt: number | string): Promise<string>;
292
+ private _leverageCreateLoan;
293
+ private leverageCreateLoanEstimateGas;
294
+ private leverageCreateLoan;
295
+ private _checkDeleverageZap;
296
+ private deleverageRepayStablecoins;
297
+ private deleverageGetRouteName;
298
+ private deleverageIsFullRepayment;
299
+ private deleverageIsAvailable;
300
+ private _deleverageRepayBands;
301
+ private deleverageRepayBands;
302
+ private deleverageRepayPrices;
303
+ private deleverageRepayHealth;
304
+ deleveragePriceImpact(collateral: number | string): Promise<string>;
305
+ private _deleverageRepay;
306
+ private deleverageRepayEstimateGas;
307
+ private deleverageRepay;
308
+ }