use crate::events::{AsEvent, EventMetadata};
use near_sdk::AccountId;
use serde::Serialize;
pub trait Ownable {
fn owner_storage_key(&self) -> &'static [u8];
fn owner_get(&self) -> Option<AccountId>;
fn owner_set(&mut self, owner: Option<AccountId>);
fn owner_is(&self) -> bool;
}
#[derive(Serialize, Clone)]
pub struct OwnershipTransferred {
pub previous_owner: Option<AccountId>,
pub new_owner: Option<AccountId>,
}
impl AsEvent<OwnershipTransferred> for OwnershipTransferred {
fn metadata(&self) -> EventMetadata<OwnershipTransferred> {
EventMetadata {
standard: "Ownable".to_string(),
version: "1.0.0".to_string(),
event: "ownership_transferred".to_string(),
data: Some(self.clone()),
}
}
}