multiversx_sc/api/
storage_api.rs

1use super::HandleTypeInfo;
2
3pub trait StorageReadApi: HandleTypeInfo {
4    type StorageReadApiImpl: StorageReadApiImpl
5        + HandleTypeInfo<
6            ManagedBufferHandle = Self::ManagedBufferHandle,
7            BigIntHandle = Self::BigIntHandle,
8            BigFloatHandle = Self::BigFloatHandle,
9            EllipticCurveHandle = Self::EllipticCurveHandle,
10        >;
11
12    fn storage_read_api_impl() -> Self::StorageReadApiImpl;
13}
14
15pub trait StorageReadApiImpl: HandleTypeInfo {
16    fn storage_read_api_init(&self) {}
17
18    fn storage_load_managed_buffer_raw(
19        &self,
20        key_handle: Self::ManagedBufferHandle,
21        dest: Self::ManagedBufferHandle,
22    );
23
24    fn storage_load_from_address(
25        &self,
26        address_handle: Self::ManagedBufferHandle,
27        key_handle: Self::ManagedBufferHandle,
28        dest: Self::ManagedBufferHandle,
29    );
30}
31
32pub trait StorageWriteApi: HandleTypeInfo {
33    type StorageWriteApiImpl: StorageWriteApiImpl
34        + HandleTypeInfo<
35            ManagedBufferHandle = Self::ManagedBufferHandle,
36            BigIntHandle = Self::BigIntHandle,
37            BigFloatHandle = Self::BigFloatHandle,
38            EllipticCurveHandle = Self::EllipticCurveHandle,
39        >;
40
41    fn storage_write_api_impl() -> Self::StorageWriteApiImpl;
42}
43
44pub trait StorageWriteApiImpl: HandleTypeInfo {
45    fn storage_store_managed_buffer_raw(
46        &self,
47        key_handle: Self::ManagedBufferHandle,
48        value_handle: Self::ManagedBufferHandle,
49    );
50}