use odra::casper_types::{bytesrepr::Bytes, U256};
use odra::prelude::*;
pub mod erc721_base;
pub mod extensions;
pub mod owned_erc721_with_metadata;
pub trait Erc721 {
fn balance_of(&self, owner: &Address) -> U256;
fn owner_of(&self, token_id: &U256) -> Address;
fn safe_transfer_from(&mut self, from: &Address, to: &Address, token_id: &U256);
fn safe_transfer_from_with_data(
&mut self,
from: &Address,
to: &Address,
token_id: &U256,
data: &Bytes
);
fn transfer_from(&mut self, from: &Address, to: &Address, token_id: &U256);
fn approve(&mut self, approved: &Option<Address>, token_id: &U256);
fn set_approval_for_all(&mut self, operator: &Address, approved: bool);
fn get_approved(&self, token_id: &U256) -> Option<Address>;
fn is_approved_for_all(&self, owner: &Address, operator: &Address) -> bool;
}
pub mod events {
use odra::casper_event_standard;
use odra::casper_types::U256;
use odra::prelude::*;
#[odra::event]
pub struct Transfer {
pub from: Option<Address>,
pub to: Option<Address>,
pub token_id: U256
}
#[odra::event]
pub struct Approval {
pub owner: Address,
pub approved: Option<Address>,
pub token_id: U256
}
#[odra::event]
pub struct ApprovalForAll {
pub owner: Address,
pub operator: Address,
pub approved: bool
}
}
pub mod errors {
use odra::prelude::OdraError;
#[odra::odra_error]
pub enum Error {
InvalidTokenId = 30_000,
NotAnOwnerOrApproved = 30_001,
ApprovalToCurrentOwner = 30_002,
ApproveToCaller = 30_003,
TransferFailed = 30_004
}
}