pub use crate::traits::errors::{
FlashBorrowerError,
FlashLenderError,
};
use brush::traits::{
AccountId,
Balance,
};
use ink_prelude::vec::Vec;
#[brush::wrapper]
pub type FlashLenderRef = dyn FlashLender;
#[brush::trait_definition]
pub trait FlashLender {
#[ink(message)]
fn max_flashloan(&mut self, token: AccountId) -> Balance;
#[ink(message)]
fn flash_fee(&self, token: AccountId, amount: Balance) -> Result<Balance, FlashLenderError>;
#[ink(message)]
fn flashloan(
&mut self,
receiver_account: AccountId,
token: AccountId,
amount: Balance,
data: Vec<u8>,
) -> Result<(), FlashLenderError>;
}
#[brush::wrapper]
pub type FlashBorrowerRef = dyn FlashBorrower;
#[brush::trait_definition]
pub trait FlashBorrower {
#[ink(message)]
fn on_flashloan(
&mut self,
initiator: AccountId,
token: AccountId,
amount: Balance,
fee: Balance,
data: Vec<u8>,
) -> Result<(), FlashBorrowerError>;
}