oasis_contract_sdk/
context.rs1use crate::{
3 env::{Crypto, Env},
4 event::Event,
5 storage::{ConfidentialStore, PublicStore},
6 types::{address::Address, message::Message, token, CallFormat, InstanceId},
7};
8
9pub trait Context {
11 type PublicStore: PublicStore;
13 type ConfidentialStore: ConfidentialStore;
15 type Env: Env + Crypto;
17
18 fn instance_id(&self) -> InstanceId;
20
21 fn instance_address(&self) -> &Address;
23
24 fn caller_address(&self) -> &Address;
26
27 fn deposited_tokens(&self) -> &[token::BaseUnits];
29
30 fn is_read_only(&self) -> bool;
32
33 fn call_format(&self) -> CallFormat;
35
36 fn emit_message(&mut self, msg: Message);
38
39 fn emit_event<E: Event>(&mut self, event: E);
41
42 fn public_store(&mut self) -> &mut Self::PublicStore;
44
45 fn confidential_store(&mut self) -> &mut Self::ConfidentialStore;
47
48 fn env(&self) -> &Self::Env;
50}