pub use ics23::ProofSpec;
use namada_core::address::Address;
use namada_core::token::Amount;
use namada_state::{Result, StorageRead, StorageWrite};
use crate::event::IbcEvent;
pub trait IbcStorageContext {
type Storage: StorageRead + StorageWrite;
fn storage(&self) -> &Self::Storage;
fn storage_mut(&mut self) -> &mut Self::Storage;
fn emit_ibc_event(&mut self, event: IbcEvent) -> Result<()>;
fn transfer_token(
&mut self,
src: &Address,
dest: &Address,
token: &Address,
amount: Amount,
) -> Result<()>;
fn mint_token(
&mut self,
target: &Address,
token: &Address,
amount: Amount,
) -> Result<()>;
fn burn_token(
&mut self,
target: &Address,
token: &Address,
amount: Amount,
) -> Result<()>;
fn insert_verifier(&mut self, verifier: &Address) -> Result<()>;
fn log_string(&self, message: String);
}