1use ergo_lib_c_core::{
4 address::{AddressPtr, ConstAddressPtr},
5 box_selector::{BoxSelectionPtr, ConstBoxSelectionPtr},
6 collections::{CollectionPtr, ConstCollectionPtr},
7 context_extension::ContextExtensionPtr,
8 data_input::DataInput,
9 ergo_box::{BoxIdPtr, BoxValuePtr, ConstBoxValuePtr, ErgoBoxCandidate},
10 token::Token,
11 transaction::UnsignedTransactionPtr,
12 tx_builder::*,
13 Error, ErrorPtr,
14};
15
16use crate::delete_ptr;
17
18#[no_mangle]
20pub unsafe extern "C" fn ergo_lib_tx_builder_suggested_tx_fee(value_out: *mut BoxValuePtr) {
21 #[allow(clippy::unwrap_used)]
22 tx_builder_suggested_tx_fee(value_out).unwrap();
23}
24
25#[no_mangle]
33pub unsafe extern "C" fn ergo_lib_tx_builder_new(
34 box_selection_ptr: ConstBoxSelectionPtr,
35 output_candidates_ptr: ConstCollectionPtr<ErgoBoxCandidate>,
36 current_height: u32,
37 fee_amount_ptr: ConstBoxValuePtr,
38 change_address_ptr: ConstAddressPtr,
39 tx_builder_out: *mut TxBuilderPtr,
40) {
41 #[allow(clippy::unwrap_used)]
42 tx_builder_new(
43 box_selection_ptr,
44 output_candidates_ptr,
45 current_height,
46 fee_amount_ptr,
47 change_address_ptr,
48 tx_builder_out,
49 )
50 .unwrap();
51}
52
53#[no_mangle]
55pub unsafe extern "C" fn ergo_lib_tx_builder_set_data_inputs(
56 tx_builder_mut: TxBuilderPtr,
57 data_inputs_ptr: ConstCollectionPtr<DataInput>,
58) {
59 #[allow(clippy::unwrap_used)]
60 tx_builder_set_data_inputs(tx_builder_mut, data_inputs_ptr).unwrap();
61}
62
63#[no_mangle]
65pub unsafe extern "C" fn ergo_lib_tx_builder_set_context_extension(
66 tx_builder_mut: TxBuilderPtr,
67 box_id_ptr: BoxIdPtr,
68 ctx_ext_ptr: ContextExtensionPtr,
69) {
70 #[allow(clippy::unwrap_used)]
71 tx_builder_set_context_extension(tx_builder_mut, box_id_ptr, ctx_ext_ptr).unwrap();
72}
73
74#[no_mangle]
76pub unsafe extern "C" fn ergo_lib_tx_builder_set_token_burn_permit(
77 tx_builder_mut: TxBuilderPtr,
78 target_tokens_ptr: ConstCollectionPtr<Token>,
79) {
80 #[allow(clippy::unwrap_used)]
81 tx_builder_set_token_burn_permit(tx_builder_mut, target_tokens_ptr).unwrap();
82}
83
84#[no_mangle]
86pub unsafe extern "C" fn ergo_lib_tx_builder_build(
87 tx_builder_ptr: ConstTxBuilderPtr,
88 unsigned_transaction_out: *mut UnsignedTransactionPtr,
89) -> ErrorPtr {
90 let res = tx_builder_build(tx_builder_ptr, unsigned_transaction_out);
91 Error::c_api_from(res)
92}
93
94#[no_mangle]
96pub unsafe extern "C" fn ergo_lib_tx_builder_box_selection(
97 tx_builder_ptr: ConstTxBuilderPtr,
98 box_selection_out: *mut BoxSelectionPtr,
99) {
100 #[allow(clippy::unwrap_used)]
101 tx_builder_box_selection(tx_builder_ptr, box_selection_out).unwrap();
102}
103
104#[no_mangle]
106pub unsafe extern "C" fn ergo_lib_tx_builder_data_inputs(
107 tx_builder_ptr: ConstTxBuilderPtr,
108 data_inputs_out: *mut CollectionPtr<DataInput>,
109) {
110 #[allow(clippy::unwrap_used)]
111 tx_builder_data_inputs(tx_builder_ptr, data_inputs_out).unwrap();
112}
113
114#[no_mangle]
116pub unsafe extern "C" fn ergo_lib_tx_builder_output_candidates(
117 tx_builder_ptr: ConstTxBuilderPtr,
118 output_candidates_out: *mut CollectionPtr<ErgoBoxCandidate>,
119) {
120 #[allow(clippy::unwrap_used)]
121 tx_builder_output_candidates(tx_builder_ptr, output_candidates_out).unwrap();
122}
123
124#[no_mangle]
126pub unsafe extern "C" fn ergo_lib_tx_builder_current_height(
127 tx_builder_ptr: ConstTxBuilderPtr,
128) -> u32 {
129 #[allow(clippy::unwrap_used)]
130 tx_builder_current_height(tx_builder_ptr).unwrap()
131}
132
133#[no_mangle]
135pub unsafe extern "C" fn ergo_lib_tx_builder_fee_amount(
136 tx_builder_ptr: ConstTxBuilderPtr,
137 value_out: *mut BoxValuePtr,
138) {
139 #[allow(clippy::unwrap_used)]
140 tx_builder_fee_amount(tx_builder_ptr, value_out).unwrap();
141}
142
143#[no_mangle]
145pub unsafe extern "C" fn ergo_lib_tx_builder_change_address(
146 tx_builder_ptr: ConstTxBuilderPtr,
147 address_out: *mut AddressPtr,
148) {
149 #[allow(clippy::unwrap_used)]
150 tx_builder_change_address(tx_builder_ptr, address_out).unwrap();
151}
152
153#[no_mangle]
155pub unsafe extern "C" fn ergo_lib_tx_builder_delete(ptr: TxBuilderPtr) {
156 delete_ptr(ptr)
157}