1#![no_std]
2
3type RegisterId = u64;
5type MemoryAddress = u64;
7type ReturnCode = u64;
8
9extern "C" {
10 pub fn read_register(register_id: RegisterId, result_addr: MemoryAddress);
14 pub fn register_len(register_id: RegisterId) -> u64;
15 pub fn write_register(register_id: RegisterId, data_addr: MemoryAddress, data_len: u64);
16 pub fn storage_write(
21 key_addr: MemoryAddress,
22 key_len: u64,
23 value_addr: MemoryAddress,
24 value_len: u64,
25 evicted_register_id: RegisterId,
26 ) -> ReturnCode;
27 pub fn storage_read(
29 key_addr: MemoryAddress,
30 key_len: u64,
31 register_id: RegisterId,
32 ) -> ReturnCode;
33 pub fn storage_remove(
35 key_addr: MemoryAddress,
36 key_len: u64,
37 register_id: RegisterId,
38 ) -> ReturnCode;
39 pub fn storage_write_perm() -> ReturnCode;
41 pub fn current_runtime_version() -> u64;
45 pub fn input(result_register_id: RegisterId);
46 pub fn output(output_addr: MemoryAddress, output_len: u64);
47 pub fn contract_owner_address(register_id: u64);
48 pub fn caller_address(register_id: u64);
49 pub fn contract_instance_address(register_id: u64);
50 pub fn contract_owner_address_of(
51 address_ptr: MemoryAddress,
52 len: u64,
53 result_register_id: RegisterId,
54 );
55 pub fn contract_code_owner_address_of(
56 address_ptr: MemoryAddress,
57 len: u64,
58 result_register_id: RegisterId,
59 );
60 pub fn contract_code_address_of(
61 address_ptr: MemoryAddress,
62 len: u64,
63 result_register_id: RegisterId,
64 );
65 pub fn block_hash(output_addr: MemoryAddress, output_len: u64);
66 pub fn block_number(output_addr: MemoryAddress, output_len: u64);
67 pub fn block_timestamp(output_addr: MemoryAddress, output_len: u64);
68 pub fn gas_limit() -> u64;
69 pub fn gas_left() -> u64;
70 pub fn deposit(output_addr: MemoryAddress, output_len: u64);
71
72 pub fn address_balance(
76 address_ptr: MemoryAddress,
77 address_len: u64,
78 result_register_id: RegisterId,
79 );
80 pub fn transfer_to(
81 to_address_ptr: MemoryAddress,
82 to_address_len: u64,
83 amount_ptr: MemoryAddress,
84 amount_len: u64,
85 ) -> ReturnCode;
86 pub fn transfer_from_caller(amount_ptr: MemoryAddress, amount_len: u64) -> ReturnCode;
87 pub fn panic() -> !;
91 pub fn panic_msg(msg_addr: MemoryAddress, msg_len: u64) -> !;
92 pub fn msg(addr: MemoryAddress, len: u64);
93
94 pub fn call_contract(
95 call_addr: MemoryAddress,
96 len: u64,
97 result_register_id: RegisterId,
98 ) -> ReturnCode;
99 pub fn call_contract2(
100 call_addr: MemoryAddress,
101 len: u64,
102 result_register_id: RegisterId,
103 ) -> ReturnCode;
104
105 pub fn emit_event_experimental(data_addr: MemoryAddress, len: u64) -> ReturnCode;
106}