pub use crate::traits::errors::{
PSP22Error,
PSP22ReceiverError,
};
use brush::traits::{
AccountId,
Balance,
};
use ink_prelude::vec::Vec;
#[brush::wrapper]
pub type PSP22Ref = dyn PSP22;
#[brush::trait_definition]
pub trait PSP22 {
#[ink(message)]
fn total_supply(&self) -> Balance;
#[ink(message)]
fn balance_of(&self, owner: AccountId) -> Balance;
#[ink(message)]
fn allowance(&self, owner: AccountId, spender: AccountId) -> Balance;
#[ink(message)]
fn transfer(&mut self, to: AccountId, value: Balance, data: Vec<u8>) -> Result<(), PSP22Error>;
#[ink(message)]
fn transfer_from(
&mut self,
from: AccountId,
to: AccountId,
value: Balance,
data: Vec<u8>,
) -> Result<(), PSP22Error>;
#[ink(message)]
fn approve(&mut self, spender: AccountId, value: Balance) -> Result<(), PSP22Error>;
#[ink(message)]
fn increase_allowance(&mut self, spender: AccountId, delta_value: Balance) -> Result<(), PSP22Error>;
#[ink(message)]
fn decrease_allowance(&mut self, spender: AccountId, delta_value: Balance) -> Result<(), PSP22Error>;
}
#[brush::wrapper]
pub type PSP22ReceiverRef = dyn PSP22Receiver;
#[brush::trait_definition]
pub trait PSP22Receiver {
#[ink(message)]
fn before_received(
&mut self,
operator: AccountId,
from: AccountId,
value: Balance,
data: Vec<u8>,
) -> Result<(), PSP22ReceiverError>;
}