-
Notifications
You must be signed in to change notification settings - Fork 13
/
IERC3156FlashLender.sol
34 lines (28 loc) · 1.38 KB
/
IERC3156FlashLender.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
import "./IERC3156FlashBorrower.sol";
interface IERC3156FlashLender {
event FlashFeeSet(address indexed _setter, uint256 _oldFee, uint256 _newFee);
event MaxFlashFeeSet(address indexed _setter, uint256 _oldMaxFee, uint256 _newMaxFee);
event FlashLoansPaused(address indexed _setter, bool _paused);
/// @dev The amount of currency available to be lent.
/// @param token The loan currency.
/// @return The amount of `token` that can be borrowed.
function maxFlashLoan(address token) external view returns (uint256);
/// @dev The fee to be charged for a given loan.
/// @param token The loan currency.
/// @param amount The amount of tokens lent.
/// @return The amount of `token` to be charged for the loan, on top of the returned principal.
function flashFee(address token, uint256 amount) external view returns (uint256);
/// @dev Initiate a flash loan.
/// @param receiver The receiver of the tokens in the loan, and the receiver of the callback.
/// @param token The loan currency.
/// @param amount The amount of tokens lent.
/// @param data Arbitrary data structure, intended to contain user-defined parameters.
function flashLoan(
IERC3156FlashBorrower receiver,
address token,
uint256 amount,
bytes calldata data
) external returns (bool);
}