use crate::api::field_api::FieldHandle;
use crate::api::{ActorRefHandle, FieldIndex};
use crate::types::*;
use crate::Sbor;
use bitflags::bitflags;
use radix_engine_interface::api::{ActorStateHandle, LockFlags};
use sbor::rust::fmt::Debug;
use sbor::rust::string::String;
use sbor::rust::vec::Vec;
bitflags! {
#[derive(Sbor)]
pub struct EventFlags: u32 {
const FORCE_WRITE = 0b00000001;
}
}
pub trait ClientActorApi<E: Debug> {
fn actor_get_blueprint_id(&mut self) -> Result<BlueprintId, E>;
fn actor_get_node_id(&mut self, ref_handle: ActorRefHandle) -> Result<NodeId, E>;
fn actor_is_feature_enabled(
&mut self,
state_handle: ActorStateHandle,
feature: &str,
) -> Result<bool, E>;
fn actor_open_field(
&mut self,
state_handle: ActorStateHandle,
field: FieldIndex,
flags: LockFlags,
) -> Result<FieldHandle, E>;
fn actor_emit_event(
&mut self,
event_name: String,
event_data: Vec<u8>,
event_flags: EventFlags,
) -> Result<(), E>;
}