radix_engine/system/
system_callback_api.rs1use crate::errors::RuntimeError;
2use crate::internal_prelude::*;
3use crate::kernel::kernel_api::{KernelNodeApi, KernelSubstateApi};
4use crate::system::system_callback::*;
5use radix_engine_interface::api::SystemApi;
6use radix_engine_interface::blueprints::package::PackageExport;
7
8pub trait SystemCallbackObject: Sized {
10 type Init: InitializationParameters<For = Self>;
12
13 fn init(init_input: Self::Init) -> Result<Self, BootloadingError>;
15
16 fn invoke<
18 Y: SystemApi<RuntimeError>
19 + SystemBasedKernelInternalApi<SystemCallback = Self>
20 + KernelNodeApi
21 + KernelSubstateApi<SystemLockData>,
22 >(
23 package_address: &PackageAddress,
24 package_export: PackageExport,
25 input: &IndexedScryptoValue,
26 api: &mut Y,
27 ) -> Result<IndexedScryptoValue, RuntimeError>;
28}