@curvefi/llamalend-api 1.1.10 → 2.0.0

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 (138) hide show
  1. package/docs/MIGRATION.md +325 -0
  2. package/docs/SUPPORT_LLv2.md +409 -0
  3. package/lib/constants/abis/OneWayLendingFactoryV2ABI.json +543 -0
  4. package/lib/constants/aliases.d.ts +0 -11
  5. package/lib/constants/aliases.js +1 -86
  6. package/lib/constants/coins.d.ts +0 -11
  7. package/lib/constants/coins.js +0 -14
  8. package/lib/constants/utils.d.ts +2 -0
  9. package/lib/constants/utils.js +2 -0
  10. package/lib/index.d.ts +10 -4
  11. package/lib/interfaces.d.ts +3 -2
  12. package/lib/lendMarkets/LendMarketTemplate.d.ts +13 -502
  13. package/lib/lendMarkets/LendMarketTemplate.js +237 -2860
  14. package/lib/lendMarkets/fetch/fetchFactoryData.d.ts +13 -0
  15. package/lib/lendMarkets/fetch/fetchFactoryData.js +101 -0
  16. package/lib/lendMarkets/fetch/fetchLendMarkets.d.ts +3 -0
  17. package/lib/lendMarkets/fetch/fetchLendMarkets.js +94 -0
  18. package/lib/lendMarkets/interfaces/common/amm.d.ts +10 -0
  19. package/lib/lendMarkets/interfaces/common/amm.js +1 -0
  20. package/lib/lendMarkets/interfaces/common/index.d.ts +5 -0
  21. package/lib/lendMarkets/interfaces/common/index.js +5 -0
  22. package/lib/lendMarkets/interfaces/common/prices.d.ts +13 -0
  23. package/lib/lendMarkets/interfaces/common/prices.js +1 -0
  24. package/lib/lendMarkets/interfaces/common/userPosition.d.ts +39 -0
  25. package/lib/lendMarkets/interfaces/common/userPosition.js +1 -0
  26. package/lib/lendMarkets/interfaces/common/vault.d.ts +55 -0
  27. package/lib/lendMarkets/interfaces/common/vault.js +1 -0
  28. package/lib/lendMarkets/interfaces/common/wallet.d.ts +8 -0
  29. package/lib/lendMarkets/interfaces/common/wallet.js +1 -0
  30. package/lib/lendMarkets/interfaces/v1/index.d.ts +4 -0
  31. package/lib/lendMarkets/interfaces/v1/index.js +4 -0
  32. package/lib/lendMarkets/interfaces/v1/leverageV1.d.ts +90 -0
  33. package/lib/lendMarkets/interfaces/v1/leverageV1.js +1 -0
  34. package/lib/lendMarkets/interfaces/v1/loanV1.d.ts +73 -0
  35. package/lib/lendMarkets/interfaces/v1/loanV1.js +1 -0
  36. package/lib/lendMarkets/interfaces/v1/statsV1.d.ts +49 -0
  37. package/lib/lendMarkets/interfaces/v1/statsV1.js +1 -0
  38. package/lib/lendMarkets/interfaces/v2/index.d.ts +3 -0
  39. package/lib/lendMarkets/interfaces/v2/index.js +3 -0
  40. package/lib/lendMarkets/interfaces/v2/leverageV2.d.ts +90 -0
  41. package/lib/lendMarkets/interfaces/v2/leverageV2.js +1 -0
  42. package/lib/lendMarkets/interfaces/v2/loanV2.d.ts +73 -0
  43. package/lib/lendMarkets/interfaces/v2/loanV2.js +1 -0
  44. package/lib/lendMarkets/interfaces/v2/statsV2.d.ts +49 -0
  45. package/lib/lendMarkets/interfaces/v2/statsV2.js +1 -0
  46. package/lib/lendMarkets/lendMarketConstructor.js +1 -1
  47. package/lib/lendMarkets/modules/common/amm.d.ts +19 -0
  48. package/lib/lendMarkets/modules/common/amm.js +137 -0
  49. package/lib/lendMarkets/modules/common/index.d.ts +9 -0
  50. package/lib/lendMarkets/modules/common/index.js +9 -0
  51. package/lib/lendMarkets/modules/common/leverageZapV1Base.d.ts +118 -0
  52. package/lib/lendMarkets/modules/common/leverageZapV1Base.js +770 -0
  53. package/lib/lendMarkets/modules/{leverageZapV2.d.ts → common/leverageZapV2Base.d.ts} +10 -5
  54. package/lib/lendMarkets/modules/{leverageZapV2.js → common/leverageZapV2Base.js} +36 -32
  55. package/lib/lendMarkets/modules/common/loanBase.d.ts +115 -0
  56. package/lib/lendMarkets/modules/common/loanBase.js +793 -0
  57. package/lib/lendMarkets/modules/common/prices.d.ts +19 -0
  58. package/lib/lendMarkets/modules/common/prices.js +104 -0
  59. package/lib/lendMarkets/modules/common/statsBase.d.ts +69 -0
  60. package/lib/lendMarkets/modules/common/statsBase.js +291 -0
  61. package/lib/lendMarkets/modules/common/userPosition.d.ts +46 -0
  62. package/lib/lendMarkets/modules/common/userPosition.js +223 -0
  63. package/lib/lendMarkets/modules/common/vault.d.ts +69 -0
  64. package/lib/lendMarkets/modules/common/vault.js +535 -0
  65. package/lib/lendMarkets/modules/common/wallet.d.ts +13 -0
  66. package/lib/lendMarkets/modules/common/wallet.js +28 -0
  67. package/lib/lendMarkets/modules/index.d.ts +1 -1
  68. package/lib/lendMarkets/modules/index.js +1 -1
  69. package/lib/lendMarkets/modules/v1/index.d.ts +4 -0
  70. package/lib/lendMarkets/modules/v1/index.js +4 -0
  71. package/lib/lendMarkets/modules/v1/leverageV1ZapV1.d.ts +3 -0
  72. package/lib/lendMarkets/modules/v1/leverageV1ZapV1.js +3 -0
  73. package/lib/lendMarkets/modules/v1/leverageV1ZapV2.d.ts +3 -0
  74. package/lib/lendMarkets/modules/v1/leverageV1ZapV2.js +3 -0
  75. package/lib/lendMarkets/modules/v1/loanV1.d.ts +4 -0
  76. package/lib/lendMarkets/modules/v1/loanV1.js +3 -0
  77. package/lib/lendMarkets/modules/v1/statsV1.d.ts +3 -0
  78. package/lib/lendMarkets/modules/v1/statsV1.js +3 -0
  79. package/lib/lendMarkets/modules/v2/index.d.ts +4 -0
  80. package/lib/lendMarkets/modules/v2/index.js +4 -0
  81. package/lib/lendMarkets/modules/v2/leverageV2ZapV1.d.ts +3 -0
  82. package/lib/lendMarkets/modules/v2/leverageV2ZapV1.js +3 -0
  83. package/lib/lendMarkets/modules/v2/leverageV2ZapV2.d.ts +3 -0
  84. package/lib/lendMarkets/modules/v2/leverageV2ZapV2.js +3 -0
  85. package/lib/lendMarkets/modules/v2/loanV2.d.ts +4 -0
  86. package/lib/lendMarkets/modules/v2/loanV2.js +3 -0
  87. package/lib/lendMarkets/modules/v2/statsV2.d.ts +3 -0
  88. package/lib/lendMarkets/modules/v2/statsV2.js +3 -0
  89. package/lib/llamalend.d.ts +6 -6
  90. package/lib/llamalend.js +46 -210
  91. package/lib/utils.js +2 -33
  92. package/package.json +1 -1
  93. package/src/constants/abis/OneWayLendingFactoryV2ABI.json +543 -0
  94. package/src/constants/aliases.ts +1 -97
  95. package/src/constants/coins.ts +0 -25
  96. package/src/constants/utils.ts +4 -0
  97. package/src/interfaces.ts +3 -2
  98. package/src/lendMarkets/LendMarketTemplate.ts +318 -3222
  99. package/src/lendMarkets/fetch/fetchFactoryData.ts +113 -0
  100. package/src/lendMarkets/fetch/fetchLendMarkets.ts +108 -0
  101. package/src/lendMarkets/interfaces/common/amm.ts +11 -0
  102. package/src/lendMarkets/interfaces/common/index.ts +5 -0
  103. package/src/lendMarkets/interfaces/common/prices.ts +13 -0
  104. package/src/lendMarkets/interfaces/common/userPosition.ts +24 -0
  105. package/src/lendMarkets/interfaces/common/vault.ts +48 -0
  106. package/src/lendMarkets/interfaces/common/wallet.ts +3 -0
  107. package/src/lendMarkets/interfaces/v1/index.ts +4 -0
  108. package/src/lendMarkets/interfaces/v1/leverageV1.ts +84 -0
  109. package/src/lendMarkets/interfaces/v1/loanV1.ts +77 -0
  110. package/src/lendMarkets/interfaces/v1/statsV1.ts +21 -0
  111. package/src/lendMarkets/interfaces/v2/index.ts +3 -0
  112. package/src/lendMarkets/interfaces/v2/leverageV2.ts +84 -0
  113. package/src/lendMarkets/interfaces/v2/loanV2.ts +77 -0
  114. package/src/lendMarkets/interfaces/v2/statsV2.ts +21 -0
  115. package/src/lendMarkets/lendMarketConstructor.ts +1 -1
  116. package/src/lendMarkets/modules/common/amm.ts +132 -0
  117. package/src/lendMarkets/modules/common/index.ts +9 -0
  118. package/src/lendMarkets/modules/common/leverageZapV1Base.ts +912 -0
  119. package/src/lendMarkets/modules/{leverageZapV2.ts → common/leverageZapV2Base.ts} +41 -37
  120. package/src/lendMarkets/modules/common/loanBase.ts +773 -0
  121. package/src/lendMarkets/modules/common/prices.ts +111 -0
  122. package/src/lendMarkets/modules/common/statsBase.ts +313 -0
  123. package/src/lendMarkets/modules/common/userPosition.ts +243 -0
  124. package/src/lendMarkets/modules/common/vault.ts +551 -0
  125. package/src/lendMarkets/modules/common/wallet.ts +29 -0
  126. package/src/lendMarkets/modules/index.ts +1 -1
  127. package/src/lendMarkets/modules/v1/index.ts +4 -0
  128. package/src/lendMarkets/modules/v1/leverageV1ZapV1.ts +3 -0
  129. package/src/lendMarkets/modules/v1/leverageV1ZapV2.ts +3 -0
  130. package/src/lendMarkets/modules/v1/loanV1.ts +4 -0
  131. package/src/lendMarkets/modules/v1/statsV1.ts +3 -0
  132. package/src/lendMarkets/modules/v2/index.ts +4 -0
  133. package/src/lendMarkets/modules/v2/leverageV2ZapV1.ts +3 -0
  134. package/src/lendMarkets/modules/v2/leverageV2ZapV2.ts +3 -0
  135. package/src/lendMarkets/modules/v2/loanV2.ts +4 -0
  136. package/src/lendMarkets/modules/v2/statsV2.ts +3 -0
  137. package/src/llamalend.ts +47 -244
  138. package/src/utils.ts +2 -35
@@ -0,0 +1,13 @@
1
+ import type { Llamalend } from "../../llamalend.js";
2
+ export declare const getFactoryMarketDataV1: (llamalend: Llamalend) => Promise<Record<string, any>>;
3
+ export declare const getFactoryMarketDataByAPI: (llamalend: Llamalend) => Promise<Record<string, string[]>>;
4
+ export declare const getFactoryMarketDataV2: (llamalend: Llamalend) => Promise<{
5
+ names: string[];
6
+ amms: string[];
7
+ controllers: string[];
8
+ borrowed_tokens: string[];
9
+ collateral_tokens: string[];
10
+ monetary_policies: string[];
11
+ vaults: string[];
12
+ gauges: string[];
13
+ }>;
@@ -0,0 +1,101 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { createCall, handleMultiCallResponse } from "../../utils.js";
11
+ import { _getMarketsData } from "../../external-api.js";
12
+ export const getFactoryMarketDataV1 = (llamalend) => __awaiter(void 0, void 0, void 0, function* () {
13
+ const factoryAlias = 'one_way_factory';
14
+ if (!llamalend.constants.ALIASES[factoryAlias] || llamalend.constants.ALIASES[factoryAlias] === llamalend.constants.ZERO_ADDRESS) {
15
+ throw new Error(`Factory v1 is not available for network ${llamalend.constants.NETWORK_NAME}`);
16
+ }
17
+ const factoryAddress = llamalend.constants.ALIASES[factoryAlias];
18
+ const factory = llamalend.contracts[factoryAddress];
19
+ const factoryContract = factory.contract;
20
+ const markets_count = yield factoryContract.market_count();
21
+ const callsMap = ['names', 'amms', 'controllers', 'borrowed_tokens', 'collateral_tokens', 'monetary_policies', 'vaults', 'gauges'];
22
+ const calls = [];
23
+ for (let i = 0; i < markets_count; i++) {
24
+ callsMap.forEach((item) => {
25
+ calls.push(createCall(factory, item, [i]));
26
+ });
27
+ }
28
+ const res = (yield llamalend.multicallProvider.all(calls)).map((addr) => addr.toLowerCase());
29
+ return handleMultiCallResponse(callsMap, res);
30
+ });
31
+ export const getFactoryMarketDataByAPI = (llamalend) => __awaiter(void 0, void 0, void 0, function* () {
32
+ const apiData = (yield _getMarketsData(llamalend.constants.NETWORK_NAME)).lendingVaultData;
33
+ const result = {
34
+ names: [],
35
+ amms: [],
36
+ controllers: [],
37
+ borrowed_tokens: [],
38
+ collateral_tokens: [],
39
+ monetary_policies: [],
40
+ vaults: [],
41
+ gauges: [],
42
+ };
43
+ apiData.forEach((market) => {
44
+ var _a;
45
+ result.names.push(market.name);
46
+ result.amms.push(market.ammAddress.toLowerCase());
47
+ result.controllers.push(market.controllerAddress.toLowerCase());
48
+ result.borrowed_tokens.push(market.assets.borrowed.address.toLowerCase());
49
+ result.collateral_tokens.push(market.assets.collateral.address.toLowerCase());
50
+ result.monetary_policies.push(market.monetaryPolicyAddress.toLowerCase());
51
+ result.vaults.push(market.address.toLowerCase());
52
+ result.gauges.push(((_a = market.gaugeAddress) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || llamalend.constants.ZERO_ADDRESS);
53
+ });
54
+ return result;
55
+ });
56
+ export const getFactoryMarketDataV2 = (llamalend) => __awaiter(void 0, void 0, void 0, function* () {
57
+ const factoryAlias = 'one_way_factory_v2';
58
+ if (!llamalend.constants.ALIASES[factoryAlias] || llamalend.constants.ALIASES[factoryAlias] === llamalend.constants.ZERO_ADDRESS) {
59
+ throw new Error(`Factory v2 is not available for network ${llamalend.constants.NETWORK_NAME}`);
60
+ }
61
+ const factoryAddress = llamalend.constants.ALIASES[factoryAlias];
62
+ const factory = llamalend.contracts[factoryAddress];
63
+ const factoryContract = factory.contract;
64
+ const markets_count = yield factoryContract.market_count();
65
+ const calls = [];
66
+ for (let i = 0; i < markets_count; i++) {
67
+ calls.push(createCall(factory, 'markets', [i]));
68
+ calls.push(createCall(factory, 'names', [i]));
69
+ }
70
+ const res = yield llamalend.multicallProvider.all(calls);
71
+ const names = [];
72
+ const vaults = [];
73
+ const controllers = [];
74
+ const amms = [];
75
+ const collateral_tokens = [];
76
+ const borrowed_tokens = [];
77
+ const monetary_policies = [];
78
+ const gauges = [];
79
+ for (let i = 0; i < markets_count; i++) {
80
+ const marketData = res[i * 2];
81
+ const name = res[(i * 2) + 1];
82
+ vaults.push(marketData[0].toLowerCase());
83
+ controllers.push(marketData[1].toLowerCase());
84
+ amms.push(marketData[2].toLowerCase());
85
+ collateral_tokens.push(marketData[3].toLowerCase());
86
+ borrowed_tokens.push(marketData[4].toLowerCase());
87
+ monetary_policies.push(marketData[6].toLowerCase());
88
+ names.push(name);
89
+ gauges.push(llamalend.constants.ZERO_ADDRESS);
90
+ }
91
+ return {
92
+ names,
93
+ amms,
94
+ controllers,
95
+ borrowed_tokens,
96
+ collateral_tokens,
97
+ monetary_policies,
98
+ vaults,
99
+ gauges,
100
+ };
101
+ });
@@ -0,0 +1,3 @@
1
+ import type { Llamalend } from "../../llamalend.js";
2
+ export declare const fetchOneWayMarketsByBlockchain: (llamalend: Llamalend, version?: "v1" | "v2") => Promise<void>;
3
+ export declare const fetchOneWayMarketsByAPI: (llamalend: Llamalend, version?: "v1" | "v2") => Promise<void>;
@@ -0,0 +1,94 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { getFactoryMarketDataV1, getFactoryMarketDataV2, getFactoryMarketDataByAPI } from "./fetchFactoryData.js";
11
+ import LlammaABI from '../../constants/abis/Llamma.json' with { type: 'json' };
12
+ import ControllerABI from '../../constants/abis/Controller.json' with { type: 'json' };
13
+ import MonetaryPolicyABI from '../../constants/abis/MonetaryPolicy.json' with { type: 'json' };
14
+ import VaultABI from '../../constants/abis/Vault.json' with { type: 'json' };
15
+ import GaugeABI from '../../constants/abis/GaugeV5.json' with { type: 'json' };
16
+ import SidechainGaugeABI from '../../constants/abis/SidechainGauge.json' with { type: 'json' };
17
+ const registerMarkets = (llamalend, names, amms, controllers, borrowed_tokens, collateral_tokens, monetary_policies, vaults, gauges, COIN_DATA, version) => {
18
+ amms.forEach((amm, index) => {
19
+ llamalend.setContract(amms[index], LlammaABI);
20
+ llamalend.setContract(controllers[index], ControllerABI);
21
+ llamalend.setContract(monetary_policies[index], MonetaryPolicyABI);
22
+ llamalend.setContract(vaults[index], VaultABI);
23
+ if (gauges[index]) {
24
+ llamalend.setContract(gauges[index], llamalend.chainId === 1 ? GaugeABI : SidechainGaugeABI);
25
+ }
26
+ COIN_DATA[vaults[index]] = {
27
+ address: vaults[index],
28
+ decimals: 18,
29
+ name: "Curve Vault for " + COIN_DATA[borrowed_tokens[index]].name,
30
+ symbol: "cv" + COIN_DATA[borrowed_tokens[index]].symbol,
31
+ };
32
+ COIN_DATA[gauges[index]] = {
33
+ address: gauges[index],
34
+ decimals: 18,
35
+ name: "curve.finance " + COIN_DATA[borrowed_tokens[index]].name + " Gauge Deposit",
36
+ symbol: "cv" + COIN_DATA[borrowed_tokens[index]].symbol + "-gauge",
37
+ };
38
+ llamalend.constants.DECIMALS[vaults[index]] = 18;
39
+ llamalend.constants.DECIMALS[gauges[index]] = 18;
40
+ const marketData = {
41
+ name: names[index],
42
+ version: version,
43
+ addresses: {
44
+ amm: amms[index],
45
+ controller: controllers[index],
46
+ borrowed_token: borrowed_tokens[index],
47
+ collateral_token: collateral_tokens[index],
48
+ monetary_policy: monetary_policies[index],
49
+ vault: vaults[index],
50
+ gauge: gauges[index],
51
+ },
52
+ borrowed_token: COIN_DATA[borrowed_tokens[index]],
53
+ collateral_token: COIN_DATA[collateral_tokens[index]],
54
+ };
55
+ if (version === 'v2') {
56
+ llamalend.constants.ONE_WAY_MARKETS_V2[`one-way-market-v2-${index}`] = marketData;
57
+ }
58
+ else {
59
+ llamalend.constants.ONE_WAY_MARKETS[`one-way-market-${index}`] = marketData;
60
+ }
61
+ });
62
+ };
63
+ export const fetchOneWayMarketsByBlockchain = (llamalend_1, ...args_1) => __awaiter(void 0, [llamalend_1, ...args_1], void 0, function* (llamalend, version = 'v1') {
64
+ const factoryData = version === 'v2'
65
+ ? yield getFactoryMarketDataV2(llamalend)
66
+ : yield getFactoryMarketDataV1(llamalend);
67
+ const { names, amms, controllers, borrowed_tokens, collateral_tokens, monetary_policies, vaults, gauges } = factoryData;
68
+ const COIN_DATA = yield llamalend.getCoins(collateral_tokens, borrowed_tokens);
69
+ for (const c in COIN_DATA) {
70
+ llamalend.constants.DECIMALS[c] = COIN_DATA[c].decimals;
71
+ }
72
+ registerMarkets(llamalend, names, amms, controllers, borrowed_tokens, collateral_tokens, monetary_policies, vaults, gauges, COIN_DATA, version);
73
+ if (version === 'v2') {
74
+ llamalend.constants.ONE_WAY_MARKETS_V2 = yield llamalend._filterHiddenMarkets(llamalend.constants.ONE_WAY_MARKETS_V2);
75
+ }
76
+ else {
77
+ llamalend.constants.ONE_WAY_MARKETS = yield llamalend._filterHiddenMarkets(llamalend.constants.ONE_WAY_MARKETS);
78
+ }
79
+ yield llamalend.fetchStats(amms, controllers, vaults, borrowed_tokens, collateral_tokens, version);
80
+ });
81
+ export const fetchOneWayMarketsByAPI = (llamalend_1, ...args_1) => __awaiter(void 0, [llamalend_1, ...args_1], void 0, function* (llamalend, version = 'v1') {
82
+ const { names, amms, controllers, borrowed_tokens, collateral_tokens, monetary_policies, vaults, gauges } = yield getFactoryMarketDataByAPI(llamalend);
83
+ const COIN_DATA = yield llamalend.getCoins(collateral_tokens, borrowed_tokens, true);
84
+ for (const c in COIN_DATA) {
85
+ llamalend.constants.DECIMALS[c] = COIN_DATA[c].decimals;
86
+ }
87
+ registerMarkets(llamalend, names, amms, controllers, borrowed_tokens, collateral_tokens, monetary_policies, vaults, gauges, COIN_DATA, version);
88
+ if (version === 'v2') {
89
+ llamalend.constants.ONE_WAY_MARKETS_V2 = yield llamalend._filterHiddenMarkets(llamalend.constants.ONE_WAY_MARKETS_V2);
90
+ }
91
+ else {
92
+ llamalend.constants.ONE_WAY_MARKETS = yield llamalend._filterHiddenMarkets(llamalend.constants.ONE_WAY_MARKETS);
93
+ }
94
+ });
@@ -0,0 +1,10 @@
1
+ import { TAmount } from "../../../interfaces";
2
+ export interface IAmm {
3
+ maxSwappable: (i: number, j: number) => Promise<string>;
4
+ swapExpected: (i: number, j: number, amount: TAmount) => Promise<string>;
5
+ swapRequired: (i: number, j: number, outAmount: TAmount) => Promise<string>;
6
+ swapPriceImpact: (i: number, j: number, amount: TAmount) => Promise<string>;
7
+ swapIsApproved: (i: number, amount: TAmount) => Promise<boolean>;
8
+ swapApprove: (i: number, amount: TAmount) => Promise<string[]>;
9
+ swap: (i: number, j: number, amount: TAmount, slippage?: number) => Promise<string>;
10
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ export * from './userPosition';
2
+ export * from './wallet';
3
+ export * from './amm';
4
+ export * from './prices';
5
+ export * from './vault';
@@ -0,0 +1,5 @@
1
+ export * from './userPosition';
2
+ export * from './wallet';
3
+ export * from './amm';
4
+ export * from './prices';
5
+ export * from './vault';
@@ -0,0 +1,13 @@
1
+ export interface IPrices {
2
+ A: () => Promise<string>;
3
+ basePrice: () => Promise<string>;
4
+ oraclePrice: () => Promise<string>;
5
+ oraclePriceBand: () => Promise<number>;
6
+ price: () => Promise<string>;
7
+ calcTickPrice: (n: number) => Promise<string>;
8
+ calcBandPrices: (n: number) => Promise<[string, string]>;
9
+ calcRangePct: (range: number) => Promise<string>;
10
+ getPrices: (_n2: bigint, _n1: bigint) => Promise<[string, string]>;
11
+ calcPrices: (_n2: bigint, _n1: bigint) => Promise<[string, string]>;
12
+ checkRange: (range: number) => void;
13
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,39 @@
1
+ import { IDict } from "../../../interfaces";
2
+ export interface IUserPosition {
3
+ userLoanExists: (address?: string) => Promise<boolean>;
4
+ userStateBigInt: (address?: string) => Promise<{
5
+ _collateral: bigint;
6
+ _borrowed: bigint;
7
+ _debt: bigint;
8
+ _N: bigint;
9
+ }>;
10
+ userBandsBigInt: (address: string) => Promise<bigint[]>;
11
+ userState: (address?: string) => Promise<{
12
+ collateral: string;
13
+ borrowed: string;
14
+ debt: string;
15
+ N: string;
16
+ }>;
17
+ userHealth: (full?: boolean, address?: string) => Promise<string>;
18
+ userBands: (address?: string) => Promise<number[]>;
19
+ userRange: (address?: string) => Promise<number>;
20
+ userPrices: (address?: string) => Promise<string[]>;
21
+ userLoss: (userAddress?: string) => Promise<{
22
+ deposited_collateral: string;
23
+ current_collateral_estimation: string;
24
+ loss: string;
25
+ loss_pct: string;
26
+ }>;
27
+ userBandsBalances: (address?: string) => Promise<IDict<{
28
+ collateral: string;
29
+ borrowed: string;
30
+ }>>;
31
+ currentLeverage: (userAddress?: string) => Promise<string>;
32
+ currentPnL: (userAddress?: string) => Promise<Record<string, string>>;
33
+ userBoost: (address?: string) => Promise<string>;
34
+ forceUpdateUserState: (newTx: string, userAddress?: string) => Promise<void>;
35
+ getCurrentLeverageParams: (userAddress: string) => Promise<{
36
+ stateCollateral: string;
37
+ totalDepositFromUser: string;
38
+ }>;
39
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,55 @@
1
+ import { IReward, TAmount, TGas } from "../../../interfaces";
2
+ export interface IVault {
3
+ maxDeposit: (address?: string) => Promise<string>;
4
+ previewDeposit: (amount: TAmount) => Promise<string>;
5
+ depositIsApproved: (borrowed: TAmount) => Promise<boolean>;
6
+ depositApprove: (borrowed: TAmount) => Promise<string[]>;
7
+ deposit: (amount: TAmount) => Promise<string>;
8
+ maxMint: (address?: string) => Promise<string>;
9
+ previewMint: (amount: TAmount) => Promise<string>;
10
+ mintIsApproved: (borrowed: TAmount) => Promise<boolean>;
11
+ mintApprove: (borrowed: TAmount) => Promise<string[]>;
12
+ mint: (amount: TAmount) => Promise<string>;
13
+ maxWithdraw: (address?: string) => Promise<string>;
14
+ previewWithdraw: (amount: TAmount) => Promise<string>;
15
+ withdraw: (amount: TAmount) => Promise<string>;
16
+ maxRedeem: (address?: string) => Promise<string>;
17
+ previewRedeem: (amount: TAmount) => Promise<string>;
18
+ redeem: (amount: TAmount) => Promise<string>;
19
+ convertToShares: (assets: TAmount) => Promise<string>;
20
+ convertToAssets: (shares: TAmount) => Promise<string>;
21
+ stakeIsApproved: (vaultShares: number | string) => Promise<boolean>;
22
+ stakeApprove: (vaultShares: number | string) => Promise<string[]>;
23
+ stake: (vaultShares: number | string) => Promise<string>;
24
+ unstake: (vaultShares: number | string) => Promise<string>;
25
+ rewardsOnly: () => boolean;
26
+ totalLiquidity: () => Promise<string>;
27
+ crvApr: (useApi?: boolean) => Promise<[baseApy: number, boostedApy: number]>;
28
+ claimableCrv: (address?: string) => Promise<string>;
29
+ claimCrv: () => Promise<string>;
30
+ rewardTokens: (useApi?: boolean) => Promise<{
31
+ token: string;
32
+ symbol: string;
33
+ decimals: number;
34
+ }[]>;
35
+ rewardsApr: (useApi?: boolean) => Promise<IReward[]>;
36
+ claimableRewards: (address?: string) => Promise<{
37
+ token: string;
38
+ symbol: string;
39
+ amount: string;
40
+ }[]>;
41
+ claimRewards: () => Promise<string>;
42
+ estimateGas: {
43
+ depositApprove: (amount: TAmount) => Promise<TGas>;
44
+ deposit: (amount: TAmount) => Promise<TGas>;
45
+ mintApprove: (amount: TAmount) => Promise<TGas>;
46
+ mint: (amount: TAmount) => Promise<TGas>;
47
+ withdraw: (amount: TAmount) => Promise<TGas>;
48
+ redeem: (amount: TAmount) => Promise<TGas>;
49
+ stakeApprove: (vaultShares: number | string) => Promise<TGas>;
50
+ stake: (vaultShares: number | string) => Promise<TGas>;
51
+ unstake: (vaultShares: number | string) => Promise<TGas>;
52
+ claimCrv: () => Promise<TGas>;
53
+ claimRewards: () => Promise<TGas>;
54
+ };
55
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ export interface IWallet {
2
+ balances: (address?: string) => Promise<{
3
+ collateral: string;
4
+ borrowed: string;
5
+ vaultShares: string;
6
+ gauge: string;
7
+ }>;
8
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ export * from './statsV1';
2
+ export * from '../common/vault';
3
+ export * from './loanV1';
4
+ export * from './leverageV1';
@@ -0,0 +1,4 @@
1
+ export * from './statsV1';
2
+ export * from '../common/vault';
3
+ export * from './loanV1';
4
+ export * from './leverageV1';
@@ -0,0 +1,90 @@
1
+ import { TAmount, TGas, IDict } from "../../../interfaces";
2
+ export interface ILeverageV1 {
3
+ hasLeverage: () => boolean;
4
+ maxLeverage: (N: number) => Promise<string>;
5
+ createLoanMaxRecv: (userCollateral: TAmount, userBorrowed: TAmount, range: number) => Promise<{
6
+ maxDebt: string;
7
+ maxTotalCollateral: string;
8
+ userCollateral: string;
9
+ collateralFromUserBorrowed: string;
10
+ collateralFromMaxDebt: string;
11
+ maxLeverage: string;
12
+ avgPrice: string;
13
+ }>;
14
+ createLoanMaxRecvAllRanges: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<IDict<{
15
+ maxDebt: string;
16
+ maxTotalCollateral: string;
17
+ userCollateral: string;
18
+ collateralFromUserBorrowed: string;
19
+ collateralFromMaxDebt: string;
20
+ maxLeverage: string;
21
+ avgPrice: string;
22
+ }>>;
23
+ createLoanExpectedCollateral: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number) => Promise<{
24
+ totalCollateral: string;
25
+ userCollateral: string;
26
+ collateralFromUserBorrowed: string;
27
+ collateralFromDebt: string;
28
+ leverage: string;
29
+ avgPrice: string;
30
+ }>;
31
+ createLoanPriceImpact: (userBorrowed: TAmount, debt: TAmount) => Promise<string>;
32
+ createLoanMaxRange: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount) => Promise<number>;
33
+ createLoanBands: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number) => Promise<[number, number]>;
34
+ createLoanBandsAllRanges: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount) => Promise<IDict<[number, number] | null>>;
35
+ createLoanPrices: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number) => Promise<string[]>;
36
+ createLoanPricesAllRanges: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount) => Promise<IDict<[string, string] | null>>;
37
+ createLoanHealth: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, full?: boolean) => Promise<string>;
38
+ createLoanIsApproved: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<boolean>;
39
+ createLoanApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
40
+ createLoanRouteImage: (userBorrowed: TAmount, debt: TAmount) => Promise<string>;
41
+ createLoan: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, slippage?: number) => Promise<string>;
42
+ borrowMoreMaxRecv: (userCollateral: TAmount, userBorrowed: TAmount, address?: string) => Promise<{
43
+ maxDebt: string;
44
+ maxTotalCollateral: string;
45
+ userCollateral: string;
46
+ collateralFromUserBorrowed: string;
47
+ collateralFromMaxDebt: string;
48
+ avgPrice: string;
49
+ }>;
50
+ borrowMoreExpectedCollateral: (userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, slippage?: number, address?: string) => Promise<{
51
+ totalCollateral: string;
52
+ userCollateral: string;
53
+ collateralFromUserBorrowed: string;
54
+ collateralFromDebt: string;
55
+ avgPrice: string;
56
+ }>;
57
+ borrowMorePriceImpact: (userBorrowed: TAmount, dDebt: TAmount, address?: string) => Promise<string>;
58
+ borrowMoreBands: (userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, address?: string) => Promise<[number, number]>;
59
+ borrowMorePrices: (userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, address?: string) => Promise<string[]>;
60
+ borrowMoreHealth: (userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, full?: boolean, address?: string) => Promise<string>;
61
+ borrowMoreIsApproved: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<boolean>;
62
+ borrowMoreApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
63
+ borrowMoreRouteImage: (userBorrowed: TAmount, debt: TAmount) => Promise<string>;
64
+ borrowMore: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number) => Promise<string>;
65
+ repayExpectedBorrowed: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) => Promise<{
66
+ totalBorrowed: string;
67
+ borrowedFromStateCollateral: string;
68
+ borrowedFromUserCollateral: string;
69
+ userBorrowed: string;
70
+ avgPrice: string;
71
+ }>;
72
+ repayPriceImpact: (stateCollateral: TAmount, userCollateral: TAmount) => Promise<string>;
73
+ repayIsFull: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string) => Promise<boolean>;
74
+ repayIsAvailable: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string) => Promise<boolean>;
75
+ repayBands: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string) => Promise<[number, number]>;
76
+ repayPrices: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string) => Promise<string[]>;
77
+ repayHealth: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, full?: boolean, address?: string) => Promise<string>;
78
+ repayIsApproved: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<boolean>;
79
+ repayApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
80
+ repayRouteImage: (stateCollateral: TAmount, userCollateral: TAmount) => Promise<string>;
81
+ repay: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) => Promise<string>;
82
+ estimateGas: {
83
+ createLoanApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<TGas>;
84
+ createLoan: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, slippage?: number) => Promise<number>;
85
+ borrowMoreApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<TGas>;
86
+ borrowMore: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number) => Promise<number>;
87
+ repayApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<TGas>;
88
+ repay: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) => Promise<number>;
89
+ };
90
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,73 @@
1
+ import { TAmount, TGas, IPartialFrac } from "../../../interfaces";
2
+ export interface ILoanV1 {
3
+ createLoanMaxRecv: (collateral: TAmount, range: number) => Promise<string>;
4
+ createLoanMaxRecvAllRanges: (collateral: TAmount) => Promise<{
5
+ [index: number]: string;
6
+ }>;
7
+ getMaxRange: (collateral: TAmount, debt: TAmount) => Promise<number>;
8
+ createLoanBands: (collateral: TAmount, debt: TAmount, range: number) => Promise<[number, number]>;
9
+ createLoanBandsAllRanges: (collateral: TAmount, debt: TAmount) => Promise<{
10
+ [index: number]: [number, number] | null;
11
+ }>;
12
+ createLoanPrices: (collateral: TAmount, debt: TAmount, range: number) => Promise<string[]>;
13
+ createLoanPricesAllRanges: (collateral: TAmount, debt: TAmount) => Promise<{
14
+ [index: number]: [string, string] | null;
15
+ }>;
16
+ createLoanHealth: (collateral: TAmount, debt: TAmount, range: number, full?: boolean) => Promise<string>;
17
+ createLoanIsApproved: (collateral: TAmount) => Promise<boolean>;
18
+ createLoanApprove: (collateral: TAmount) => Promise<string[]>;
19
+ createLoan: (collateral: TAmount, debt: TAmount, range: number) => Promise<string>;
20
+ borrowMoreMaxRecv: (collateralAmount: TAmount) => Promise<string>;
21
+ borrowMoreBands: (collateral: TAmount, debt: TAmount) => Promise<[number, number]>;
22
+ borrowMorePrices: (collateral: TAmount, debt: TAmount) => Promise<string[]>;
23
+ borrowMoreHealth: (collateral: TAmount, debt: TAmount, full?: boolean, address?: string) => Promise<string>;
24
+ borrowMoreIsApproved: (collateral: TAmount) => Promise<boolean>;
25
+ borrowMoreApprove: (collateral: TAmount) => Promise<string[]>;
26
+ borrowMore: (collateral: TAmount, debt: TAmount) => Promise<string>;
27
+ borrowMoreFutureLeverage: (collateral: TAmount, debt: TAmount, userAddress?: string) => Promise<string>;
28
+ addCollateralBands: (collateral: TAmount, address?: string) => Promise<[number, number]>;
29
+ addCollateralPrices: (collateral: TAmount, address?: string) => Promise<string[]>;
30
+ addCollateralHealth: (collateral: TAmount, full?: boolean, address?: string) => Promise<string>;
31
+ addCollateralIsApproved: (collateral: TAmount) => Promise<boolean>;
32
+ addCollateralApprove: (collateral: TAmount) => Promise<string[]>;
33
+ addCollateral: (collateral: TAmount, address?: string) => Promise<string>;
34
+ addCollateralFutureLeverage: (collateral: TAmount, userAddress?: string) => Promise<string>;
35
+ maxRemovable: () => Promise<string>;
36
+ removeCollateralBands: (collateral: TAmount) => Promise<[number, number]>;
37
+ removeCollateralPrices: (collateral: TAmount) => Promise<string[]>;
38
+ removeCollateralHealth: (collateral: TAmount, full?: boolean, address?: string) => Promise<string>;
39
+ removeCollateral: (collateral: TAmount) => Promise<string>;
40
+ removeCollateralFutureLeverage: (collateral: TAmount, userAddress?: string) => Promise<string>;
41
+ repayBands: (debt: TAmount, address?: string) => Promise<[number, number]>;
42
+ repayPrices: (debt: TAmount, address?: string) => Promise<string[]>;
43
+ repayIsApproved: (debt: TAmount) => Promise<boolean>;
44
+ repayApprove: (debt: TAmount) => Promise<string[]>;
45
+ repayHealth: (debt: TAmount, full?: boolean, address?: string) => Promise<string>;
46
+ repay: (debt: TAmount, address?: string) => Promise<string>;
47
+ repayFutureLeverage: (debt: TAmount, userAddress?: string) => Promise<string>;
48
+ fullRepayIsApproved: (address?: string) => Promise<boolean>;
49
+ fullRepayApprove: (address?: string) => Promise<string[]>;
50
+ fullRepay: (address?: string) => Promise<string>;
51
+ tokensToLiquidate: (address?: string) => Promise<string>;
52
+ calcPartialFrac: (amount: TAmount, address?: string) => Promise<IPartialFrac>;
53
+ liquidateIsApproved: (address?: string) => Promise<boolean>;
54
+ liquidateApprove: (address?: string) => Promise<string[]>;
55
+ liquidate: (address: string, slippage?: number) => Promise<string>;
56
+ selfLiquidateIsApproved: () => Promise<boolean>;
57
+ selfLiquidateApprove: () => Promise<string[]>;
58
+ selfLiquidate: (slippage?: number) => Promise<string>;
59
+ partialSelfLiquidateIsApproved: (partialFrac: IPartialFrac) => Promise<boolean>;
60
+ partialSelfLiquidateApprove: (partialFrac: IPartialFrac) => Promise<string[]>;
61
+ partialSelfLiquidate: (partialFrac: IPartialFrac, slippage?: number) => Promise<string>;
62
+ estimateGas: {
63
+ createLoan: (collateral: TAmount, debt: TAmount, range: number) => Promise<TGas>;
64
+ borrowMore: (collateral: TAmount, debt: TAmount) => Promise<TGas>;
65
+ addCollateral: (collateral: TAmount, address?: string) => Promise<TGas>;
66
+ removeCollateral: (collateral: TAmount) => Promise<TGas>;
67
+ repay: (debt: TAmount, address?: string) => Promise<TGas>;
68
+ fullRepay: (address?: string) => Promise<TGas>;
69
+ liquidate: (address: string, slippage?: number) => Promise<TGas>;
70
+ selfLiquidate: (slippage?: number) => Promise<TGas>;
71
+ partialSelfLiquidate: (partialFrac: IPartialFrac, slippage?: number) => Promise<TGas>;
72
+ };
73
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,49 @@
1
+ import { TAmount } from "../../../interfaces";
2
+ export interface IStatsV1 {
3
+ parameters: () => Promise<{
4
+ fee: string;
5
+ admin_fee: string;
6
+ liquidation_discount: string;
7
+ loan_discount: string;
8
+ base_price: string;
9
+ A: string;
10
+ }>;
11
+ rates: (isGetter?: boolean, useAPI?: boolean) => Promise<{
12
+ borrowApr: string;
13
+ lendApr: string;
14
+ borrowApy: string;
15
+ lendApy: string;
16
+ }>;
17
+ futureRates: (dReserves: TAmount, dDebt: TAmount) => Promise<{
18
+ borrowApr: string;
19
+ lendApr: string;
20
+ borrowApy: string;
21
+ lendApy: string;
22
+ }>;
23
+ balances: () => Promise<[string, string]>;
24
+ bandsInfo: () => Promise<{
25
+ activeBand: number;
26
+ maxBand: number;
27
+ minBand: number;
28
+ liquidationBand: number | null;
29
+ }>;
30
+ bandBalances: (n: number) => Promise<{
31
+ borrowed: string;
32
+ collateral: string;
33
+ }>;
34
+ bandsBalances: () => Promise<{
35
+ [index: number]: {
36
+ borrowed: string;
37
+ collateral: string;
38
+ };
39
+ }>;
40
+ totalDebt: (isGetter?: boolean, useAPI?: boolean) => Promise<string>;
41
+ ammBalances: (isGetter?: boolean, useAPI?: boolean) => Promise<{
42
+ borrowed: string;
43
+ collateral: string;
44
+ }>;
45
+ capAndAvailable: (isGetter?: boolean, useAPI?: boolean) => Promise<{
46
+ cap: string;
47
+ available: string;
48
+ }>;
49
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export * from './statsV2';
2
+ export * from './loanV2';
3
+ export * from './leverageV2';
@@ -0,0 +1,3 @@
1
+ export * from './statsV2';
2
+ export * from './loanV2';
3
+ export * from './leverageV2';