1use ergo_lib_c_core::{
4 box_builder::*,
5 constant::{ConstConstantPtr, ConstantPtr},
6 contract::ConstContractPtr,
7 ergo_box::{BoxValuePtr, ConstBoxValuePtr, ErgoBoxCandidatePtr, NonMandatoryRegisterId},
8 token::{ConstTokenAmountPtr, ConstTokenIdPtr, ConstTokenPtr},
9 Error,
10};
11use std::{ffi::CStr, os::raw::c_char};
12
13use crate::{delete_ptr, ErrorPtr, ReturnNum, ReturnOption};
14
15#[no_mangle]
22pub unsafe extern "C" fn ergo_lib_ergo_box_candidate_builder_new(
23 value_ptr: ConstBoxValuePtr,
24 contract_ptr: ConstContractPtr,
25 creation_height: u32,
26 builder_out: *mut ErgoBoxCandidateBuilderPtr,
27) {
28 #[allow(clippy::unwrap_used)]
29 ergo_box_candidate_builder_new(value_ptr, contract_ptr, creation_height, builder_out).unwrap()
30}
31
32#[no_mangle]
34pub unsafe extern "C" fn ergo_lib_ergo_box_candidate_builder_set_min_box_value_per_byte(
35 builder_mut: ErgoBoxCandidateBuilderPtr,
36 new_min_value_per_byte: u32,
37) {
38 #[allow(clippy::unwrap_used)]
39 ergo_box_candidate_builder_set_min_box_value_per_byte(builder_mut, new_min_value_per_byte)
40 .unwrap();
41}
42
43#[no_mangle]
45pub unsafe extern "C" fn ergo_lib_ergo_box_candidate_builder_min_box_value_per_byte(
46 builder_ptr: ConstErgoBoxCandidateBuilderPtr,
47) -> u32 {
48 #[allow(clippy::unwrap_used)]
49 ergo_box_candidate_builder_min_box_value_per_byte(builder_ptr).unwrap()
50}
51
52#[no_mangle]
54pub unsafe extern "C" fn ergo_lib_ergo_box_candidate_builder_set_value(
55 builder_mut: ErgoBoxCandidateBuilderPtr,
56 value_ptr: ConstBoxValuePtr,
57) {
58 #[allow(clippy::unwrap_used)]
59 ergo_box_candidate_builder_set_value(builder_mut, value_ptr).unwrap();
60}
61
62#[no_mangle]
64pub unsafe extern "C" fn ergo_lib_ergo_box_candidate_builder_value(
65 builder_ptr: ConstErgoBoxCandidateBuilderPtr,
66 value_out: *mut BoxValuePtr,
67) {
68 #[allow(clippy::unwrap_used)]
69 ergo_box_candidate_builder_value(builder_ptr, value_out).unwrap();
70}
71
72#[no_mangle]
74pub unsafe extern "C" fn ergo_lib_ergo_box_candidate_builder_calc_box_size_bytes(
75 builder_ptr: ConstErgoBoxCandidateBuilderPtr,
76) -> ReturnNum<usize> {
77 match ergo_box_candidate_builder_calc_box_size_bytes(builder_ptr) {
78 Ok(value) => ReturnNum {
79 value,
80 error: std::ptr::null_mut(),
81 },
82 Err(e) => ReturnNum {
83 value: 0, error: Error::c_api_from(Err(e)),
85 },
86 }
87}
88
89#[no_mangle]
91pub unsafe extern "C" fn ergo_lib_ergo_box_candidate_calc_min_box_value(
92 builder_ptr: ConstErgoBoxCandidateBuilderPtr,
93 value_out: *mut BoxValuePtr,
94) -> ErrorPtr {
95 let res = ergo_box_candidate_builder_calc_min_box_value(builder_ptr, value_out);
96 Error::c_api_from(res)
97}
98
99#[no_mangle]
101pub unsafe extern "C" fn ergo_lib_ergo_box_candidate_builder_set_register_value(
102 builder_mut: ErgoBoxCandidateBuilderPtr,
103 register_id: NonMandatoryRegisterId,
104 constant_ptr: ConstConstantPtr,
105) {
106 #[allow(clippy::unwrap_used)]
107 ergo_box_candidate_builder_set_register_value(builder_mut, register_id, constant_ptr).unwrap();
108}
109
110#[no_mangle]
112pub unsafe extern "C" fn ergo_lib_ergo_box_candidate_builder_register_value(
113 builder_ptr: ConstErgoBoxCandidateBuilderPtr,
114 register_id: NonMandatoryRegisterId,
115 constant_out: *mut ConstantPtr,
116) -> ReturnOption {
117 match ergo_box_candidate_builder_register_value(builder_ptr, register_id, constant_out) {
118 Ok(is_some) => ReturnOption {
119 is_some,
120 error: std::ptr::null_mut(),
121 },
122 Err(e) => ReturnOption {
123 is_some: false, error: Error::c_api_from(Err(e)),
125 },
126 }
127}
128
129#[no_mangle]
131pub unsafe extern "C" fn ergo_lib_ergo_box_candidate_builder_delete_register_value(
132 builder_mut: ErgoBoxCandidateBuilderPtr,
133 register_id: NonMandatoryRegisterId,
134) {
135 #[allow(clippy::unwrap_used)]
136 ergo_box_candidate_builder_delete_register_value(builder_mut, register_id).unwrap();
137}
138
139#[no_mangle]
145pub unsafe extern "C" fn ergo_lib_ergo_box_candidate_builder_mint_token(
146 builder_mut: ErgoBoxCandidateBuilderPtr,
147 token_ptr: ConstTokenPtr,
148 token_name: *const c_char,
149 token_desc: *const c_char,
150 num_decimals: usize,
151) {
152 let token_name = CStr::from_ptr(token_name).to_string_lossy();
153 let token_desc = CStr::from_ptr(token_desc).to_string_lossy();
154 #[allow(clippy::unwrap_used)]
155 ergo_box_candidate_builder_mint_token(
156 builder_mut,
157 token_ptr,
158 &token_name,
159 &token_desc,
160 num_decimals,
161 )
162 .unwrap();
163}
164
165#[no_mangle]
167pub unsafe extern "C" fn ergo_lib_ergo_box_candidate_builder_add_token(
168 builder_mut: ErgoBoxCandidateBuilderPtr,
169 token_id_ptr: ConstTokenIdPtr,
170 token_amount_ptr: ConstTokenAmountPtr,
171) {
172 #[allow(clippy::unwrap_used)]
173 ergo_box_candidate_builder_add_token(builder_mut, token_id_ptr, token_amount_ptr).unwrap();
174}
175
176#[no_mangle]
178pub unsafe extern "C" fn ergo_lib_ergo_box_candidate_builder_build(
179 builder_ptr: ConstErgoBoxCandidateBuilderPtr,
180 ergo_box_candidate_out: *mut ErgoBoxCandidatePtr,
181) -> ErrorPtr {
182 let res = ergo_box_candidate_builder_build(builder_ptr, ergo_box_candidate_out);
183 Error::c_api_from(res)
184}
185
186#[no_mangle]
188pub unsafe extern "C" fn ergo_lib_ergo_box_candidate_builder_delete(
189 ptr: ErgoBoxCandidateBuilderPtr,
190) {
191 delete_ptr(ptr)
192}