miden_base_sys/bindings/
account.rs1use miden_stdlib_sys::{Felt, Word};
2
3use super::types::{AccountId, Asset};
4
5#[allow(improper_ctypes)]
6extern "C" {
7 #[link_name = "miden::account::get_id"]
8 pub fn extern_account_get_id(ptr: *mut AccountId);
9 #[link_name = "miden::account::remove_asset"]
10 pub fn extern_account_remove_asset(_: Felt, _: Felt, _: Felt, _: Felt, ptr: *mut Asset);
11 #[link_name = "miden::account::get_nonce"]
12 pub fn extern_account_get_nonce() -> Felt;
13 #[link_name = "miden::account::incr_nonce"]
14 pub fn extern_account_incr_nonce() -> Felt;
15 #[link_name = "miden::account::get_initial_commitment"]
16 pub fn extern_account_get_initial_commitment(ptr: *mut Word);
17 #[link_name = "miden::account::compute_current_commitment"]
18 pub fn extern_account_compute_current_commitment(ptr: *mut Word);
19 #[link_name = "miden::account::compute_delta_commitment"]
20 pub fn extern_account_compute_delta_commitment(ptr: *mut Word);
21 #[link_name = "miden::account::add_asset"]
23 pub fn extern_account_add_asset(_: Felt, _: Felt, _: Felt, _: Felt, ptr: *mut Asset);
24 #[link_name = "miden::account::get_balance"]
25 pub fn extern_account_get_balance(faucet_id_prefix: Felt, faucet_id_suffix: Felt) -> Felt;
26}
27
28pub fn get_id() -> AccountId {
30 unsafe {
31 let mut ret_area = ::core::mem::MaybeUninit::<AccountId>::uninit();
32
33 extern_account_get_id(ret_area.as_mut_ptr());
37 ret_area.assume_init()
38 }
39}
40
41pub fn add_asset(asset: Asset) -> Asset {
52 unsafe {
53 let mut ret_area = ::core::mem::MaybeUninit::<Asset>::uninit();
54 extern_account_add_asset(
55 asset.inner[3],
56 asset.inner[2],
57 asset.inner[1],
58 asset.inner[0],
59 ret_area.as_mut_ptr(),
60 );
61 ret_area.assume_init()
62 }
63}
64
65pub fn remove_asset(asset: Asset) -> Asset {
72 unsafe {
73 let mut ret_area = ::core::mem::MaybeUninit::<Asset>::uninit();
74 extern_account_remove_asset(
75 asset.inner[3],
76 asset.inner[2],
77 asset.inner[1],
78 asset.inner[0],
79 ret_area.as_mut_ptr(),
80 );
81 ret_area.assume_init().reverse()
82 }
83}
84
85#[inline]
87pub fn get_nonce() -> Felt {
88 unsafe { extern_account_get_nonce() }
89}
90
91#[inline]
93pub fn incr_nonce() -> Felt {
94 unsafe { extern_account_incr_nonce() }
95}
96
97#[inline]
99pub fn get_initial_commitment() -> Word {
100 unsafe {
101 let mut ret_area = ::core::mem::MaybeUninit::<Word>::uninit();
102 extern_account_get_initial_commitment(ret_area.as_mut_ptr());
103 ret_area.assume_init().reverse()
104 }
105}
106
107#[inline]
109pub fn compute_current_commitment() -> Word {
110 unsafe {
111 let mut ret_area = ::core::mem::MaybeUninit::<Word>::uninit();
112 extern_account_compute_current_commitment(ret_area.as_mut_ptr());
113 ret_area.assume_init().reverse()
114 }
115}
116
117#[inline]
119pub fn compute_delta_commitment() -> Word {
120 unsafe {
121 let mut ret_area = ::core::mem::MaybeUninit::<Word>::uninit();
122 extern_account_compute_delta_commitment(ret_area.as_mut_ptr());
123 ret_area.assume_init().reverse()
124 }
125}
126
127pub fn get_balance(faucet_id: AccountId) -> Felt {
134 unsafe { extern_account_get_balance(faucet_id.prefix, faucet_id.suffix) }
135}