@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,113 @@
1
+ import { Call } from "@curvefi/ethcall";
2
+ import { createCall, handleMultiCallResponse } from "../../utils.js";
3
+ import { IMarketDataAPI } from "../../interfaces.js";
4
+ import { _getMarketsData } from "../../external-api.js";
5
+ import type { Llamalend } from "../../llamalend.js";
6
+
7
+ export const getFactoryMarketDataV1 = async (llamalend: Llamalend) => {
8
+ const factoryAlias = 'one_way_factory';
9
+
10
+ if (!llamalend.constants.ALIASES[factoryAlias] || llamalend.constants.ALIASES[factoryAlias] === llamalend.constants.ZERO_ADDRESS) {
11
+ throw new Error(`Factory v1 is not available for network ${llamalend.constants.NETWORK_NAME}`);
12
+ }
13
+
14
+ const factoryAddress = llamalend.constants.ALIASES[factoryAlias];
15
+ const factory = llamalend.contracts[factoryAddress];
16
+ const factoryContract = factory.contract;
17
+ const markets_count = await factoryContract.market_count();
18
+ const callsMap = ['names', 'amms', 'controllers', 'borrowed_tokens', 'collateral_tokens', 'monetary_policies', 'vaults', 'gauges']
19
+
20
+ const calls: Call[] = [];
21
+ for (let i = 0; i < markets_count; i++) {
22
+ callsMap.forEach((item) => {
23
+ calls.push(createCall(factory, item, [i]))
24
+ })
25
+ }
26
+ const res = (await llamalend.multicallProvider.all(calls) as string[]).map((addr) => addr.toLowerCase());
27
+
28
+ return handleMultiCallResponse(callsMap, res)
29
+ };
30
+
31
+ export const getFactoryMarketDataByAPI = async (llamalend: Llamalend) => {
32
+ const apiData = (await _getMarketsData(llamalend.constants.NETWORK_NAME)).lendingVaultData;
33
+
34
+ const result: Record<string, string[]> = {
35
+ names: [],
36
+ amms: [],
37
+ controllers: [],
38
+ borrowed_tokens: [],
39
+ collateral_tokens: [],
40
+ monetary_policies: [],
41
+ vaults: [],
42
+ gauges: [],
43
+ };
44
+
45
+ apiData.forEach((market: IMarketDataAPI) => {
46
+ result.names.push(market.name);
47
+ result.amms.push(market.ammAddress.toLowerCase());
48
+ result.controllers.push(market.controllerAddress.toLowerCase());
49
+ result.borrowed_tokens.push(market.assets.borrowed.address.toLowerCase());
50
+ result.collateral_tokens.push(market.assets.collateral.address.toLowerCase());
51
+ result.monetary_policies.push(market.monetaryPolicyAddress.toLowerCase());
52
+ result.vaults.push(market.address.toLowerCase());
53
+ result.gauges.push(market.gaugeAddress?.toLowerCase() || llamalend.constants.ZERO_ADDRESS);
54
+ });
55
+
56
+ return result;
57
+ };
58
+
59
+ export const getFactoryMarketDataV2 = async (llamalend: Llamalend) => {
60
+ const factoryAlias = 'one_way_factory_v2';
61
+
62
+ if (!llamalend.constants.ALIASES[factoryAlias] || llamalend.constants.ALIASES[factoryAlias] === llamalend.constants.ZERO_ADDRESS) {
63
+ throw new Error(`Factory v2 is not available for network ${llamalend.constants.NETWORK_NAME}`);
64
+ }
65
+
66
+ const factoryAddress = llamalend.constants.ALIASES[factoryAlias];
67
+ const factory = llamalend.contracts[factoryAddress];
68
+ const factoryContract = factory.contract;
69
+ const markets_count = await factoryContract.market_count();
70
+
71
+ const calls: Call[] = [];
72
+
73
+ for (let i = 0; i < markets_count; i++) {
74
+ calls.push(createCall(factory, 'markets', [i]));
75
+ calls.push(createCall(factory, 'names', [i]));
76
+ }
77
+
78
+ const res = await llamalend.multicallProvider.all(calls);
79
+
80
+ const names: string[] = [];
81
+ const vaults: string[] = [];
82
+ const controllers: string[] = [];
83
+ const amms: string[] = [];
84
+ const collateral_tokens: string[] = [];
85
+ const borrowed_tokens: string[] = [];
86
+ const monetary_policies: string[] = [];
87
+ const gauges: string[] = [];
88
+
89
+ for (let i = 0; i < markets_count; i++) {
90
+ const marketData = res[i * 2] as any;
91
+ const name = res[(i * 2) + 1] as string;
92
+
93
+ vaults.push(marketData[0].toLowerCase());
94
+ controllers.push(marketData[1].toLowerCase());
95
+ amms.push(marketData[2].toLowerCase());
96
+ collateral_tokens.push(marketData[3].toLowerCase());
97
+ borrowed_tokens.push(marketData[4].toLowerCase());
98
+ monetary_policies.push(marketData[6].toLowerCase());
99
+ names.push(name);
100
+ gauges.push(llamalend.constants.ZERO_ADDRESS);
101
+ }
102
+
103
+ return {
104
+ names,
105
+ amms,
106
+ controllers,
107
+ borrowed_tokens,
108
+ collateral_tokens,
109
+ monetary_policies,
110
+ vaults,
111
+ gauges,
112
+ };
113
+ };
@@ -0,0 +1,108 @@
1
+ import type { Llamalend } from "../../llamalend.js";
2
+ import type { ICoin, IDict } from "../../interfaces.js";
3
+ import { getFactoryMarketDataV1, getFactoryMarketDataV2, getFactoryMarketDataByAPI } from "./fetchFactoryData.js";
4
+
5
+ import LlammaABI from '../../constants/abis/Llamma.json' with {type: 'json'};
6
+ import ControllerABI from '../../constants/abis/Controller.json' with {type: 'json'};
7
+ import MonetaryPolicyABI from '../../constants/abis/MonetaryPolicy.json' with {type: 'json'};
8
+ import VaultABI from '../../constants/abis/Vault.json' with {type: 'json'};
9
+ import GaugeABI from '../../constants/abis/GaugeV5.json' with {type: 'json'};
10
+ import SidechainGaugeABI from '../../constants/abis/SidechainGauge.json' with {type: 'json'};
11
+
12
+ const registerMarkets = (
13
+ llamalend: Llamalend,
14
+ names: string[],
15
+ amms: string[],
16
+ controllers: string[],
17
+ borrowed_tokens: string[],
18
+ collateral_tokens: string[],
19
+ monetary_policies: string[],
20
+ vaults: string[],
21
+ gauges: string[],
22
+ COIN_DATA: IDict<ICoin>,
23
+ version: 'v1' | 'v2'
24
+ ) => {
25
+ amms.forEach((amm: string, index: number) => {
26
+ llamalend.setContract(amms[index], LlammaABI);
27
+ llamalend.setContract(controllers[index], ControllerABI);
28
+ llamalend.setContract(monetary_policies[index], MonetaryPolicyABI);
29
+ llamalend.setContract(vaults[index], VaultABI);
30
+ if (gauges[index]) {
31
+ llamalend.setContract(gauges[index], llamalend.chainId === 1 ? GaugeABI : SidechainGaugeABI);
32
+ }
33
+ COIN_DATA[vaults[index]] = {
34
+ address: vaults[index],
35
+ decimals: 18,
36
+ name: "Curve Vault for " + COIN_DATA[borrowed_tokens[index]].name,
37
+ symbol: "cv" + COIN_DATA[borrowed_tokens[index]].symbol,
38
+ };
39
+ COIN_DATA[gauges[index]] = {
40
+ address: gauges[index],
41
+ decimals: 18,
42
+ name: "curve.finance " + COIN_DATA[borrowed_tokens[index]].name + " Gauge Deposit",
43
+ symbol: "cv" + COIN_DATA[borrowed_tokens[index]].symbol + "-gauge",
44
+ };
45
+ llamalend.constants.DECIMALS[vaults[index]] = 18;
46
+ llamalend.constants.DECIMALS[gauges[index]] = 18;
47
+
48
+ const marketData = {
49
+ name: names[index],
50
+ version: version,
51
+ addresses: {
52
+ amm: amms[index],
53
+ controller: controllers[index],
54
+ borrowed_token: borrowed_tokens[index],
55
+ collateral_token: collateral_tokens[index],
56
+ monetary_policy: monetary_policies[index],
57
+ vault: vaults[index],
58
+ gauge: gauges[index],
59
+ },
60
+ borrowed_token: COIN_DATA[borrowed_tokens[index]],
61
+ collateral_token: COIN_DATA[collateral_tokens[index]],
62
+ };
63
+
64
+ if (version === 'v2') {
65
+ llamalend.constants.ONE_WAY_MARKETS_V2[`one-way-market-v2-${index}`] = marketData;
66
+ } else {
67
+ llamalend.constants.ONE_WAY_MARKETS[`one-way-market-${index}`] = marketData;
68
+ }
69
+ });
70
+ };
71
+
72
+ export const fetchOneWayMarketsByBlockchain = async (llamalend: Llamalend, version: 'v1' | 'v2' = 'v1') => {
73
+ const factoryData = version === 'v2'
74
+ ? await getFactoryMarketDataV2(llamalend)
75
+ : await getFactoryMarketDataV1(llamalend);
76
+
77
+ const { names, amms, controllers, borrowed_tokens, collateral_tokens, monetary_policies, vaults, gauges } = factoryData;
78
+ const COIN_DATA = await llamalend.getCoins(collateral_tokens, borrowed_tokens);
79
+ for (const c in COIN_DATA) {
80
+ llamalend.constants.DECIMALS[c] = COIN_DATA[c].decimals;
81
+ }
82
+
83
+ registerMarkets(llamalend, names, amms, controllers, borrowed_tokens, collateral_tokens, monetary_policies, vaults, gauges, COIN_DATA, version);
84
+
85
+ if (version === 'v2') {
86
+ llamalend.constants.ONE_WAY_MARKETS_V2 = await llamalend._filterHiddenMarkets(llamalend.constants.ONE_WAY_MARKETS_V2);
87
+ } else {
88
+ llamalend.constants.ONE_WAY_MARKETS = await llamalend._filterHiddenMarkets(llamalend.constants.ONE_WAY_MARKETS);
89
+ }
90
+
91
+ await llamalend.fetchStats(amms, controllers, vaults, borrowed_tokens, collateral_tokens, version);
92
+ };
93
+
94
+ export const fetchOneWayMarketsByAPI = async (llamalend: Llamalend, version: 'v1' | 'v2' = 'v1') => {
95
+ const { names, amms, controllers, borrowed_tokens, collateral_tokens, monetary_policies, vaults, gauges } = await getFactoryMarketDataByAPI(llamalend);
96
+ const COIN_DATA = await llamalend.getCoins(collateral_tokens, borrowed_tokens, true);
97
+ for (const c in COIN_DATA) {
98
+ llamalend.constants.DECIMALS[c] = COIN_DATA[c].decimals;
99
+ }
100
+
101
+ registerMarkets(llamalend, names, amms, controllers, borrowed_tokens, collateral_tokens, monetary_policies, vaults, gauges, COIN_DATA, version);
102
+
103
+ if (version === 'v2') {
104
+ llamalend.constants.ONE_WAY_MARKETS_V2 = await llamalend._filterHiddenMarkets(llamalend.constants.ONE_WAY_MARKETS_V2);
105
+ } else {
106
+ llamalend.constants.ONE_WAY_MARKETS = await llamalend._filterHiddenMarkets(llamalend.constants.ONE_WAY_MARKETS);
107
+ }
108
+ };
@@ -0,0 +1,11 @@
1
+ import {TAmount} from "../../../interfaces";
2
+
3
+ export interface IAmm {
4
+ maxSwappable: (i: number, j: number) => Promise<string>;
5
+ swapExpected: (i: number, j: number, amount: TAmount) => Promise<string>;
6
+ swapRequired: (i: number, j: number, outAmount: TAmount) => Promise<string>;
7
+ swapPriceImpact: (i: number, j: number, amount: TAmount) => Promise<string>;
8
+ swapIsApproved: (i: number, amount: TAmount) => Promise<boolean>;
9
+ swapApprove: (i: number, amount: TAmount) => Promise<string[]>;
10
+ swap: (i: number, j: number, amount: TAmount, slippage?: number) => Promise<string>;
11
+ }
@@ -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,24 @@
1
+ import {IDict} from "../../../interfaces";
2
+
3
+ export interface IUserPosition {
4
+ userLoanExists: (address?: string) => Promise<boolean>,
5
+ userStateBigInt: (address?: string) => Promise<{ _collateral: bigint, _borrowed: bigint, _debt: bigint, _N: bigint }>,
6
+ userBandsBigInt:(address: string) => Promise<bigint[]>,
7
+ userState: (address?: string) => Promise<{ collateral: string, borrowed: string, debt: string, N: string }>,
8
+ userHealth: (full?: boolean, address?: string) => Promise<string>,
9
+ userBands: (address?: string) => Promise<number[]>,
10
+ userRange: (address?: string) => Promise<number>,
11
+ userPrices: (address?: string) => Promise<string[]>,
12
+ userLoss: (userAddress?: string) => Promise<{
13
+ deposited_collateral: string,
14
+ current_collateral_estimation: string,
15
+ loss: string,
16
+ loss_pct: string
17
+ }>,
18
+ userBandsBalances: (address?: string) => Promise<IDict<{ collateral: string, borrowed: string }>>,
19
+ currentLeverage: (userAddress?: string) => Promise<string>,
20
+ currentPnL: (userAddress?: string) => Promise<Record<string, string>>,
21
+ userBoost: (address?: string) => Promise<string>,
22
+ forceUpdateUserState: (newTx: string, userAddress?: string) => Promise<void>,
23
+ getCurrentLeverageParams: (userAddress: string) => Promise<{ stateCollateral: string, totalDepositFromUser: string }>,
24
+ }
@@ -0,0 +1,48 @@
1
+ import {IReward, TAmount, TGas} from "../../../interfaces";
2
+
3
+ export interface IVault {
4
+ maxDeposit: (address?: string) => Promise<string>,
5
+ previewDeposit: (amount: TAmount) => Promise<string>,
6
+ depositIsApproved: (borrowed: TAmount) => Promise<boolean>
7
+ depositApprove: (borrowed: TAmount) => Promise<string[]>
8
+ deposit: (amount: TAmount) => Promise<string>,
9
+ maxMint: (address?: string) => Promise<string>,
10
+ previewMint: (amount: TAmount) => Promise<string>,
11
+ mintIsApproved: (borrowed: TAmount) => Promise<boolean>
12
+ mintApprove: (borrowed: TAmount) => Promise<string[]>
13
+ mint: (amount: TAmount) => Promise<string>,
14
+ maxWithdraw: (address?: string) => Promise<string>,
15
+ previewWithdraw: (amount: TAmount) => Promise<string>,
16
+ withdraw: (amount: TAmount) => Promise<string>,
17
+ maxRedeem: (address?: string) => Promise<string>,
18
+ previewRedeem: (amount: TAmount) => Promise<string>,
19
+ redeem: (amount: TAmount) => Promise<string>,
20
+ convertToShares: (assets: TAmount) => Promise<string>,
21
+ convertToAssets: (shares: TAmount) => Promise<string>,
22
+ stakeIsApproved: (vaultShares: number | string) => Promise<boolean>,
23
+ stakeApprove: (vaultShares: number | string) => Promise<string[]>,
24
+ stake: (vaultShares: number | string) => Promise<string>,
25
+ unstake: (vaultShares: number | string) => Promise<string>,
26
+ rewardsOnly: () => boolean,
27
+ totalLiquidity: () => Promise<string>,
28
+ crvApr: (useApi?: boolean) => Promise<[baseApy: number, boostedApy: number]>,
29
+ claimableCrv: (address?: string) => Promise<string>,
30
+ claimCrv: () => Promise<string>,
31
+ rewardTokens: (useApi?: boolean) => Promise<{token: string, symbol: string, decimals: number}[]>,
32
+ rewardsApr: (useApi?: boolean) => Promise<IReward[]>,
33
+ claimableRewards: (address?: string) => Promise<{token: string, symbol: string, amount: string}[]>,
34
+ claimRewards: () => Promise<string>,
35
+ estimateGas: {
36
+ depositApprove: (amount: TAmount) => Promise<TGas>,
37
+ deposit: (amount: TAmount) => Promise<TGas>,
38
+ mintApprove: (amount: TAmount) => Promise<TGas>,
39
+ mint: (amount: TAmount) => Promise<TGas>,
40
+ withdraw: (amount: TAmount) => Promise<TGas>,
41
+ redeem: (amount: TAmount) => Promise<TGas>,
42
+ stakeApprove: (vaultShares: number | string) => Promise<TGas>,
43
+ stake: (vaultShares: number | string) => Promise<TGas>,
44
+ unstake: (vaultShares: number | string) => Promise<TGas>,
45
+ claimCrv: () => Promise<TGas>,
46
+ claimRewards: () => Promise<TGas>,
47
+ }
48
+ }
@@ -0,0 +1,3 @@
1
+ export interface IWallet {
2
+ balances: (address?: string) => Promise<{ collateral: string, borrowed: string, vaultShares: string, gauge: string }>,
3
+ }
@@ -0,0 +1,4 @@
1
+ export * from './statsV1';
2
+ export * from '../common/vault';
3
+ export * from './loanV1';
4
+ export * from './leverageV1';
@@ -0,0 +1,84 @@
1
+ import {TAmount, TGas, IDict} from "../../../interfaces";
2
+
3
+ export interface ILeverageV1 {
4
+ hasLeverage: () => boolean;
5
+ maxLeverage: (N: number) => Promise<string>;
6
+
7
+ createLoanMaxRecv: (userCollateral: TAmount, userBorrowed: TAmount, range: number) =>
8
+ Promise<{
9
+ maxDebt: string,
10
+ maxTotalCollateral: string,
11
+ userCollateral: string,
12
+ collateralFromUserBorrowed: string,
13
+ collateralFromMaxDebt: string,
14
+ maxLeverage: string,
15
+ avgPrice: string,
16
+ }>;
17
+ createLoanMaxRecvAllRanges: (userCollateral: TAmount, userBorrowed: TAmount) =>
18
+ Promise<IDict<{
19
+ maxDebt: string,
20
+ maxTotalCollateral: string,
21
+ userCollateral: string,
22
+ collateralFromUserBorrowed: string,
23
+ collateralFromMaxDebt: string,
24
+ maxLeverage: string,
25
+ avgPrice: string,
26
+ }>>;
27
+ createLoanExpectedCollateral: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number) =>
28
+ Promise<{ totalCollateral: string, userCollateral: string, collateralFromUserBorrowed: string, collateralFromDebt: string, leverage: string, avgPrice: string }>;
29
+ createLoanPriceImpact: (userBorrowed: TAmount, debt: TAmount) => Promise<string>;
30
+ createLoanMaxRange: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount) => Promise<number>;
31
+ createLoanBands: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number) => Promise<[number, number]>;
32
+ createLoanBandsAllRanges: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount) => Promise<IDict<[number, number] | null>>;
33
+ createLoanPrices: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number) => Promise<string[]>;
34
+ createLoanPricesAllRanges: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount) => Promise<IDict<[string, string] | null>>;
35
+ createLoanHealth: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, full?: boolean) => Promise<string>;
36
+ createLoanIsApproved: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<boolean>;
37
+ createLoanApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
38
+ createLoanRouteImage: (userBorrowed: TAmount, debt: TAmount) => Promise<string>;
39
+ createLoan: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, slippage?: number) => Promise<string>;
40
+
41
+ borrowMoreMaxRecv: (userCollateral: TAmount, userBorrowed: TAmount, address?: string) =>
42
+ 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) =>
51
+ Promise<{ totalCollateral: string, userCollateral: string, collateralFromUserBorrowed: string, collateralFromDebt: string, avgPrice: string }>;
52
+ borrowMorePriceImpact: (userBorrowed: TAmount, dDebt: TAmount, address?: string) => Promise<string>;
53
+ borrowMoreBands: (userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, address?: string) => Promise<[number, number]>;
54
+ borrowMorePrices: (userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, address?: string) => Promise<string[]>;
55
+ borrowMoreHealth: (userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, full?: boolean, address?: string) => Promise<string>;
56
+ borrowMoreIsApproved: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<boolean>;
57
+ borrowMoreApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
58
+ borrowMoreRouteImage: (userBorrowed: TAmount, debt: TAmount) => Promise<string>;
59
+ borrowMore: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number) => Promise<string>;
60
+
61
+ repayExpectedBorrowed: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) =>
62
+ Promise<{ totalBorrowed: string, borrowedFromStateCollateral: string, borrowedFromUserCollateral: string, userBorrowed: string, avgPrice: string }>;
63
+ repayPriceImpact: (stateCollateral: TAmount, userCollateral: TAmount) => Promise<string>;
64
+ repayIsFull: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string) => Promise<boolean>;
65
+ repayIsAvailable: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string) => Promise<boolean>;
66
+ repayBands: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string) => Promise<[number, number]>;
67
+ repayPrices: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string) => Promise<string[]>;
68
+ repayHealth: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, full?: boolean, address?: string) => Promise<string>;
69
+ repayIsApproved: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<boolean>;
70
+ repayApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
71
+ repayRouteImage: (stateCollateral: TAmount, userCollateral: TAmount) => Promise<string>;
72
+ repay: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) => Promise<string>;
73
+
74
+ estimateGas: {
75
+ createLoanApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<TGas>;
76
+ createLoan: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, slippage?: number) => Promise<number>;
77
+
78
+ borrowMoreApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<TGas>;
79
+ borrowMore: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number) => Promise<number>;
80
+
81
+ repayApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<TGas>;
82
+ repay: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) => Promise<number>;
83
+ };
84
+ }
@@ -0,0 +1,77 @@
1
+ import {TAmount, TGas, IPartialFrac} from "../../../interfaces";
2
+
3
+ export interface ILoanV1 {
4
+ createLoanMaxRecv: (collateral: TAmount, range: number) => Promise<string>;
5
+ createLoanMaxRecvAllRanges: (collateral: TAmount) => Promise<{ [index: number]: string }>;
6
+ getMaxRange: (collateral: TAmount, debt: TAmount) => Promise<number>;
7
+ createLoanBands: (collateral: TAmount, debt: TAmount, range: number) => Promise<[number, number]>;
8
+ createLoanBandsAllRanges: (collateral: TAmount, debt: TAmount) => Promise<{ [index: number]: [number, number] | null }>;
9
+ createLoanPrices: (collateral: TAmount, debt: TAmount, range: number) => Promise<string[]>;
10
+ createLoanPricesAllRanges: (collateral: TAmount, debt: TAmount) => Promise<{ [index: number]: [string, string] | null }>;
11
+ createLoanHealth: (collateral: TAmount, debt: TAmount, range: number, full?: boolean) => Promise<string>;
12
+ createLoanIsApproved: (collateral: TAmount) => Promise<boolean>;
13
+ createLoanApprove: (collateral: TAmount) => Promise<string[]>;
14
+ createLoan: (collateral: TAmount, debt: TAmount, range: number) => Promise<string>;
15
+
16
+ borrowMoreMaxRecv: (collateralAmount: TAmount) => Promise<string>;
17
+ borrowMoreBands: (collateral: TAmount, debt: TAmount) => Promise<[number, number]>;
18
+ borrowMorePrices: (collateral: TAmount, debt: TAmount) => Promise<string[]>;
19
+ borrowMoreHealth: (collateral: TAmount, debt: TAmount, full?: boolean, address?: string) => Promise<string>;
20
+ borrowMoreIsApproved: (collateral: TAmount) => Promise<boolean>;
21
+ borrowMoreApprove: (collateral: TAmount) => Promise<string[]>;
22
+ borrowMore: (collateral: TAmount, debt: TAmount) => Promise<string>;
23
+ borrowMoreFutureLeverage: (collateral: TAmount, debt: TAmount, userAddress?: string) => Promise<string>;
24
+
25
+ addCollateralBands: (collateral: TAmount, address?: string) => Promise<[number, number]>;
26
+ addCollateralPrices: (collateral: TAmount, address?: string) => Promise<string[]>;
27
+ addCollateralHealth: (collateral: TAmount, full?: boolean, address?: string) => Promise<string>;
28
+ addCollateralIsApproved: (collateral: TAmount) => Promise<boolean>;
29
+ addCollateralApprove: (collateral: TAmount) => Promise<string[]>;
30
+ addCollateral: (collateral: TAmount, address?: string) => Promise<string>;
31
+ addCollateralFutureLeverage: (collateral: TAmount, userAddress?: string) => Promise<string>;
32
+
33
+ maxRemovable: () => Promise<string>;
34
+ removeCollateralBands: (collateral: TAmount) => Promise<[number, number]>;
35
+ removeCollateralPrices: (collateral: TAmount) => Promise<string[]>;
36
+ removeCollateralHealth: (collateral: TAmount, full?: boolean, address?: string) => Promise<string>;
37
+ removeCollateral: (collateral: TAmount) => Promise<string>;
38
+ removeCollateralFutureLeverage: (collateral: TAmount, userAddress?: string) => Promise<string>;
39
+
40
+ repayBands: (debt: TAmount, address?: string) => Promise<[number, number]>;
41
+ repayPrices: (debt: TAmount, address?: string) => Promise<string[]>;
42
+ repayIsApproved: (debt: TAmount) => Promise<boolean>;
43
+ repayApprove: (debt: TAmount) => Promise<string[]>;
44
+ repayHealth: (debt: TAmount, full?: boolean, address?: string) => Promise<string>;
45
+ repay: (debt: TAmount, address?: string) => Promise<string>;
46
+ repayFutureLeverage: (debt: TAmount, userAddress?: string) => Promise<string>;
47
+
48
+ fullRepayIsApproved: (address?: string) => Promise<boolean>;
49
+ fullRepayApprove: (address?: string) => Promise<string[]>;
50
+ fullRepay: (address?: string) => Promise<string>;
51
+
52
+ tokensToLiquidate: (address?: string) => Promise<string>;
53
+ calcPartialFrac: (amount: TAmount, address?: string) => Promise<IPartialFrac>;
54
+ liquidateIsApproved: (address?: string) => Promise<boolean>;
55
+ liquidateApprove: (address?: string) => Promise<string[]>;
56
+ liquidate: (address: string, slippage?: number) => Promise<string>;
57
+
58
+ selfLiquidateIsApproved: () => Promise<boolean>;
59
+ selfLiquidateApprove: () => Promise<string[]>;
60
+ selfLiquidate: (slippage?: number) => Promise<string>;
61
+
62
+ partialSelfLiquidateIsApproved: (partialFrac: IPartialFrac) => Promise<boolean>;
63
+ partialSelfLiquidateApprove: (partialFrac: IPartialFrac) => Promise<string[]>;
64
+ partialSelfLiquidate: (partialFrac: IPartialFrac, slippage?: number) => Promise<string>;
65
+
66
+ estimateGas: {
67
+ createLoan: (collateral: TAmount, debt: TAmount, range: number) => Promise<TGas>;
68
+ borrowMore: (collateral: TAmount, debt: TAmount) => Promise<TGas>;
69
+ addCollateral: (collateral: TAmount, address?: string) => Promise<TGas>;
70
+ removeCollateral: (collateral: TAmount) => Promise<TGas>;
71
+ repay: (debt: TAmount, address?: string) => Promise<TGas>;
72
+ fullRepay: (address?: string) => Promise<TGas>;
73
+ liquidate: (address: string, slippage?: number) => Promise<TGas>;
74
+ selfLiquidate: (slippage?: number) => Promise<TGas>;
75
+ partialSelfLiquidate: (partialFrac: IPartialFrac, slippage?: number) => Promise<TGas>;
76
+ };
77
+ }
@@ -0,0 +1,21 @@
1
+ import {TAmount} from "../../../interfaces";
2
+
3
+ export interface IStatsV1 {
4
+ parameters: () => Promise<{
5
+ fee: string, // %
6
+ admin_fee: string, // %
7
+ liquidation_discount: string, // %
8
+ loan_discount: string, // %
9
+ base_price: string,
10
+ A: string,
11
+ }>,
12
+ rates: (isGetter?: boolean, useAPI?: boolean) => Promise<{borrowApr: string, lendApr: string, borrowApy: string, lendApy: string}>,
13
+ futureRates: (dReserves: TAmount, dDebt: TAmount) => Promise<{borrowApr: string, lendApr: string, borrowApy: string, lendApy: string}>,
14
+ balances: () => Promise<[string, string]>,
15
+ bandsInfo: () => Promise<{ activeBand: number, maxBand: number, minBand: number, liquidationBand: number | null }>
16
+ bandBalances:(n: number) => Promise<{ borrowed: string, collateral: string }>,
17
+ bandsBalances: () => Promise<{ [index: number]: { borrowed: string, collateral: string } }>,
18
+ totalDebt: (isGetter?: boolean, useAPI?: boolean) => Promise<string>,
19
+ ammBalances: (isGetter?: boolean, useAPI?: boolean) => Promise<{ borrowed: string, collateral: string }>,
20
+ capAndAvailable: (isGetter?: boolean, useAPI?: boolean) => Promise<{ cap: string, available: string }>,
21
+ }
@@ -0,0 +1,3 @@
1
+ export * from './statsV2';
2
+ export * from './loanV2';
3
+ export * from './leverageV2';
@@ -0,0 +1,84 @@
1
+ import {TAmount, TGas, IDict} from "../../../interfaces";
2
+
3
+ export interface ILeverageV2 {
4
+ hasLeverage: () => boolean;
5
+ maxLeverage: (N: number) => Promise<string>;
6
+
7
+ createLoanMaxRecv: (userCollateral: TAmount, userBorrowed: TAmount, range: number) =>
8
+ Promise<{
9
+ maxDebt: string,
10
+ maxTotalCollateral: string,
11
+ userCollateral: string,
12
+ collateralFromUserBorrowed: string,
13
+ collateralFromMaxDebt: string,
14
+ maxLeverage: string,
15
+ avgPrice: string,
16
+ }>;
17
+ createLoanMaxRecvAllRanges: (userCollateral: TAmount, userBorrowed: TAmount) =>
18
+ Promise<IDict<{
19
+ maxDebt: string,
20
+ maxTotalCollateral: string,
21
+ userCollateral: string,
22
+ collateralFromUserBorrowed: string,
23
+ collateralFromMaxDebt: string,
24
+ maxLeverage: string,
25
+ avgPrice: string,
26
+ }>>;
27
+ createLoanExpectedCollateral: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number) =>
28
+ Promise<{ totalCollateral: string, userCollateral: string, collateralFromUserBorrowed: string, collateralFromDebt: string, leverage: string, avgPrice: string }>;
29
+ createLoanPriceImpact: (userBorrowed: TAmount, debt: TAmount) => Promise<string>;
30
+ createLoanMaxRange: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount) => Promise<number>;
31
+ createLoanBands: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number) => Promise<[number, number]>;
32
+ createLoanBandsAllRanges: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount) => Promise<IDict<[number, number] | null>>;
33
+ createLoanPrices: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number) => Promise<string[]>;
34
+ createLoanPricesAllRanges: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount) => Promise<IDict<[string, string] | null>>;
35
+ createLoanHealth: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, full?: boolean) => Promise<string>;
36
+ createLoanIsApproved: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<boolean>;
37
+ createLoanApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
38
+ createLoanRouteImage: (userBorrowed: TAmount, debt: TAmount) => Promise<string>;
39
+ createLoan: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, slippage?: number) => Promise<string>;
40
+
41
+ borrowMoreMaxRecv: (userCollateral: TAmount, userBorrowed: TAmount, address?: string) =>
42
+ 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) =>
51
+ Promise<{ totalCollateral: string, userCollateral: string, collateralFromUserBorrowed: string, collateralFromDebt: string, avgPrice: string }>;
52
+ borrowMorePriceImpact: (userBorrowed: TAmount, dDebt: TAmount, address?: string) => Promise<string>;
53
+ borrowMoreBands: (userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, address?: string) => Promise<[number, number]>;
54
+ borrowMorePrices: (userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, address?: string) => Promise<string[]>;
55
+ borrowMoreHealth: (userCollateral: TAmount, userBorrowed: TAmount, dDebt: TAmount, full?: boolean, address?: string) => Promise<string>;
56
+ borrowMoreIsApproved: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<boolean>;
57
+ borrowMoreApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
58
+ borrowMoreRouteImage: (userBorrowed: TAmount, debt: TAmount) => Promise<string>;
59
+ borrowMore: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number) => Promise<string>;
60
+
61
+ repayExpectedBorrowed: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) =>
62
+ Promise<{ totalBorrowed: string, borrowedFromStateCollateral: string, borrowedFromUserCollateral: string, userBorrowed: string, avgPrice: string }>;
63
+ repayPriceImpact: (stateCollateral: TAmount, userCollateral: TAmount) => Promise<string>;
64
+ repayIsFull: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string) => Promise<boolean>;
65
+ repayIsAvailable: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string) => Promise<boolean>;
66
+ repayBands: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string) => Promise<[number, number]>;
67
+ repayPrices: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, address?: string) => Promise<string[]>;
68
+ repayHealth: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, full?: boolean, address?: string) => Promise<string>;
69
+ repayIsApproved: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<boolean>;
70
+ repayApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<string[]>;
71
+ repayRouteImage: (stateCollateral: TAmount, userCollateral: TAmount) => Promise<string>;
72
+ repay: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) => Promise<string>;
73
+
74
+ estimateGas: {
75
+ createLoanApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<TGas>;
76
+ createLoan: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, range: number, slippage?: number) => Promise<number>;
77
+
78
+ borrowMoreApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<TGas>;
79
+ borrowMore: (userCollateral: TAmount, userBorrowed: TAmount, debt: TAmount, slippage?: number) => Promise<number>;
80
+
81
+ repayApprove: (userCollateral: TAmount, userBorrowed: TAmount) => Promise<TGas>;
82
+ repay: (stateCollateral: TAmount, userCollateral: TAmount, userBorrowed: TAmount, slippage?: number) => Promise<number>;
83
+ };
84
+ }