1#![no_std]
7#![allow(non_camel_case_types, non_upper_case_globals)]
8
9use core::ffi::{c_char, c_int, c_uchar, c_uint, c_void};
10
11pub type btck_BlockCheckFlags = u32;
14pub type btck_BlockValidationResult = u32;
15pub type btck_ChainType = u8;
16pub type btck_LogCategory = u8;
17pub type btck_LogLevel = u8;
18pub type btck_ScriptVerificationFlags = u32;
19pub type btck_ScriptVerifyStatus = u8;
20pub type btck_SynchronizationState = u8;
21pub type btck_ValidationMode = u8;
22pub type btck_Warning = u8;
23
24pub const btck_BlockValidationResult_UNSET: btck_BlockValidationResult = 0;
27pub const btck_BlockValidationResult_CONSENSUS: btck_BlockValidationResult = 1;
28pub const btck_BlockValidationResult_CACHED_INVALID: btck_BlockValidationResult = 2;
29pub const btck_BlockValidationResult_INVALID_HEADER: btck_BlockValidationResult = 3;
30pub const btck_BlockValidationResult_MUTATED: btck_BlockValidationResult = 4;
31pub const btck_BlockValidationResult_MISSING_PREV: btck_BlockValidationResult = 5;
32pub const btck_BlockValidationResult_INVALID_PREV: btck_BlockValidationResult = 6;
33pub const btck_BlockValidationResult_TIME_FUTURE: btck_BlockValidationResult = 7;
34pub const btck_BlockValidationResult_HEADER_LOW_WORK: btck_BlockValidationResult = 8;
35
36pub const btck_ChainType_MAINNET: btck_ChainType = 0;
39pub const btck_ChainType_TESTNET: btck_ChainType = 1;
40pub const btck_ChainType_TESTNET_4: btck_ChainType = 2;
41pub const btck_ChainType_SIGNET: btck_ChainType = 3;
42pub const btck_ChainType_REGTEST: btck_ChainType = 4;
43
44pub const btck_LogCategory_ALL: btck_LogCategory = 0;
47pub const btck_LogCategory_BENCH: btck_LogCategory = 1;
48pub const btck_LogCategory_BLOCKSTORAGE: btck_LogCategory = 2;
49pub const btck_LogCategory_COINDB: btck_LogCategory = 3;
50pub const btck_LogCategory_LEVELDB: btck_LogCategory = 4;
51pub const btck_LogCategory_MEMPOOL: btck_LogCategory = 5;
52pub const btck_LogCategory_PRUNE: btck_LogCategory = 6;
53pub const btck_LogCategory_RAND: btck_LogCategory = 7;
54pub const btck_LogCategory_REINDEX: btck_LogCategory = 8;
55pub const btck_LogCategory_VALIDATION: btck_LogCategory = 9;
56pub const btck_LogCategory_KERNEL: btck_LogCategory = 10;
57
58pub const btck_LogLevel_TRACE: btck_LogLevel = 0;
61pub const btck_LogLevel_DEBUG: btck_LogLevel = 1;
62pub const btck_LogLevel_INFO: btck_LogLevel = 2;
63
64pub const btck_ScriptVerificationFlags_NONE: btck_ScriptVerificationFlags = 0;
67pub const btck_ScriptVerificationFlags_P2SH: btck_ScriptVerificationFlags = 1 << 0;
68pub const btck_ScriptVerificationFlags_DERSIG: btck_ScriptVerificationFlags = 1 << 2;
69pub const btck_ScriptVerificationFlags_NULLDUMMY: btck_ScriptVerificationFlags = 1 << 4;
70pub const btck_ScriptVerificationFlags_CHECKLOCKTIMEVERIFY: btck_ScriptVerificationFlags = 1 << 9;
71pub const btck_ScriptVerificationFlags_CHECKSEQUENCEVERIFY: btck_ScriptVerificationFlags = 1 << 10;
72pub const btck_ScriptVerificationFlags_WITNESS: btck_ScriptVerificationFlags = 1 << 11;
73pub const btck_ScriptVerificationFlags_TAPROOT: btck_ScriptVerificationFlags = 1 << 17;
74pub const btck_ScriptVerificationFlags_ALL: btck_ScriptVerificationFlags =
75 btck_ScriptVerificationFlags_P2SH
76 | btck_ScriptVerificationFlags_DERSIG
77 | btck_ScriptVerificationFlags_NULLDUMMY
78 | btck_ScriptVerificationFlags_CHECKLOCKTIMEVERIFY
79 | btck_ScriptVerificationFlags_CHECKSEQUENCEVERIFY
80 | btck_ScriptVerificationFlags_WITNESS
81 | btck_ScriptVerificationFlags_TAPROOT;
82
83pub const btck_ScriptVerifyStatus_OK: btck_ScriptVerifyStatus = 0;
86pub const btck_ScriptVerifyStatus_ERROR_INVALID_FLAGS_COMBINATION: btck_ScriptVerifyStatus = 1;
87pub const btck_ScriptVerifyStatus_ERROR_SPENT_OUTPUTS_REQUIRED: btck_ScriptVerifyStatus = 2;
88
89pub const btck_SynchronizationState_INIT_REINDEX: btck_SynchronizationState = 0;
92pub const btck_SynchronizationState_INIT_DOWNLOAD: btck_SynchronizationState = 1;
93pub const btck_SynchronizationState_POST_INIT: btck_SynchronizationState = 2;
94
95pub const btck_ValidationMode_VALID: btck_ValidationMode = 0;
98pub const btck_ValidationMode_INVALID: btck_ValidationMode = 1;
99pub const btck_ValidationMode_INTERNAL_ERROR: btck_ValidationMode = 2;
100
101pub const btck_Warning_UNKNOWN_NEW_RULES_ACTIVATED: btck_Warning = 0;
104pub const btck_Warning_LARGE_WORK_INVALID_CHAIN: btck_Warning = 1;
105
106#[repr(C)]
109pub struct btck_Block {
110 _unused: [u8; 0],
111}
112#[repr(C)]
113pub struct btck_BlockHash {
114 _unused: [u8; 0],
115}
116#[repr(C)]
117pub struct btck_BlockHeader {
118 _unused: [u8; 0],
119}
120#[repr(C)]
121pub struct btck_BlockSpentOutputs {
122 _unused: [u8; 0],
123}
124#[repr(C)]
125pub struct btck_BlockTreeEntry {
126 _unused: [u8; 0],
127}
128#[repr(C)]
129pub struct btck_BlockValidationState {
130 _unused: [u8; 0],
131}
132#[repr(C)]
133pub struct btck_Chain {
134 _unused: [u8; 0],
135}
136#[repr(C)]
137pub struct btck_ChainParameters {
138 _unused: [u8; 0],
139}
140#[repr(C)]
141pub struct btck_ChainstateManager {
142 _unused: [u8; 0],
143}
144#[repr(C)]
145pub struct btck_ChainstateManagerOptions {
146 _unused: [u8; 0],
147}
148#[repr(C)]
149pub struct btck_Coin {
150 _unused: [u8; 0],
151}
152#[repr(C)]
153pub struct btck_ConsensusParams {
154 _unused: [u8; 0],
155}
156#[repr(C)]
157pub struct btck_Context {
158 _unused: [u8; 0],
159}
160#[repr(C)]
161pub struct btck_ContextOptions {
162 _unused: [u8; 0],
163}
164#[repr(C)]
165pub struct btck_LoggingConnection {
166 _unused: [u8; 0],
167}
168#[repr(C)]
169pub struct btck_PrecomputedTransactionData {
170 _unused: [u8; 0],
171}
172#[repr(C)]
173pub struct btck_ScriptPubkey {
174 _unused: [u8; 0],
175}
176#[repr(C)]
177pub struct btck_Transaction {
178 _unused: [u8; 0],
179}
180#[repr(C)]
181pub struct btck_TransactionInput {
182 _unused: [u8; 0],
183}
184#[repr(C)]
185pub struct btck_TransactionOutPoint {
186 _unused: [u8; 0],
187}
188#[repr(C)]
189pub struct btck_TransactionOutput {
190 _unused: [u8; 0],
191}
192#[repr(C)]
193pub struct btck_TransactionSpentOutputs {
194 _unused: [u8; 0],
195}
196#[repr(C)]
197pub struct btck_Txid {
198 _unused: [u8; 0],
199}
200
201pub type btck_DestroyCallback = Option<unsafe extern "C" fn(user_data: *mut c_void)>;
204
205pub type btck_LogCallback = Option<
206 unsafe extern "C" fn(user_data: *mut c_void, message: *const c_char, message_len: usize),
207>;
208
209pub type btck_NotifyBlockTip = Option<
210 unsafe extern "C" fn(
211 user_data: *mut c_void,
212 state: btck_SynchronizationState,
213 entry: *const btck_BlockTreeEntry,
214 verification_progress: f64,
215 ),
216>;
217
218pub type btck_NotifyFatalError = Option<
219 unsafe extern "C" fn(user_data: *mut c_void, message: *const c_char, message_len: usize),
220>;
221
222pub type btck_NotifyFlushError = Option<
223 unsafe extern "C" fn(user_data: *mut c_void, message: *const c_char, message_len: usize),
224>;
225
226pub type btck_NotifyHeaderTip = Option<
227 unsafe extern "C" fn(
228 user_data: *mut c_void,
229 state: btck_SynchronizationState,
230 height: i64,
231 timestamp: i64,
232 presync: c_int,
233 ),
234>;
235
236pub type btck_NotifyProgress = Option<
237 unsafe extern "C" fn(
238 user_data: *mut c_void,
239 title: *const c_char,
240 title_len: usize,
241 progress_percent: c_int,
242 resume_possible: c_int,
243 ),
244>;
245
246pub type btck_NotifyWarningSet = Option<
247 unsafe extern "C" fn(
248 user_data: *mut c_void,
249 warning: btck_Warning,
250 message: *const c_char,
251 message_len: usize,
252 ),
253>;
254
255pub type btck_NotifyWarningUnset =
256 Option<unsafe extern "C" fn(user_data: *mut c_void, warning: btck_Warning)>;
257
258pub type btck_ValidationInterfaceBlockChecked = Option<
259 unsafe extern "C" fn(
260 user_data: *mut c_void,
261 block: *mut btck_Block,
262 state: *const btck_BlockValidationState,
263 ),
264>;
265
266pub type btck_ValidationInterfaceBlockConnected = Option<
267 unsafe extern "C" fn(
268 user_data: *mut c_void,
269 block: *mut btck_Block,
270 entry: *const btck_BlockTreeEntry,
271 ),
272>;
273
274pub type btck_ValidationInterfaceBlockDisconnected = Option<
275 unsafe extern "C" fn(
276 user_data: *mut c_void,
277 block: *mut btck_Block,
278 entry: *const btck_BlockTreeEntry,
279 ),
280>;
281
282pub type btck_ValidationInterfacePoWValidBlock = Option<
283 unsafe extern "C" fn(
284 user_data: *mut c_void,
285 block: *mut btck_Block,
286 entry: *const btck_BlockTreeEntry,
287 ),
288>;
289
290pub type btck_WriteBytes =
291 Option<unsafe extern "C" fn(bytes: *const c_void, size: usize, userdata: *mut c_void) -> c_int>;
292
293#[repr(C)]
297pub struct btck_LoggingOptions {
298 pub log_timestamps: c_int,
299 pub log_time_micros: c_int,
300 pub log_threadnames: c_int,
301 pub log_sourcelocations: c_int,
302 pub always_print_category_levels: c_int,
303}
304
305#[repr(C)]
306pub struct btck_NotificationInterfaceCallbacks {
307 pub user_data: *mut c_void,
308 pub user_data_destroy: btck_DestroyCallback,
309 pub block_tip: btck_NotifyBlockTip,
310 pub header_tip: btck_NotifyHeaderTip,
311 pub progress: btck_NotifyProgress,
312 pub warning_set: btck_NotifyWarningSet,
313 pub warning_unset: btck_NotifyWarningUnset,
314 pub flush_error: btck_NotifyFlushError,
315 pub fatal_error: btck_NotifyFatalError,
316}
317
318#[repr(C)]
319pub struct btck_ValidationInterfaceCallbacks {
320 pub user_data: *mut c_void,
321 pub user_data_destroy: btck_DestroyCallback,
322 pub block_checked: btck_ValidationInterfaceBlockChecked,
323 pub pow_valid_block: btck_ValidationInterfacePoWValidBlock,
324 pub block_connected: btck_ValidationInterfaceBlockConnected,
325 pub block_disconnected: btck_ValidationInterfaceBlockDisconnected,
326}
327
328const _: () = {
332 assert!(core::mem::size_of::<btck_LoggingOptions>() == 20);
333 assert!(core::mem::align_of::<btck_LoggingOptions>() == 4);
334 assert!(
335 core::mem::size_of::<btck_NotificationInterfaceCallbacks>()
336 == 9 * core::mem::size_of::<*const ()>()
337 );
338 assert!(
339 core::mem::align_of::<btck_NotificationInterfaceCallbacks>()
340 == core::mem::align_of::<*const ()>()
341 );
342 assert!(
343 core::mem::size_of::<btck_ValidationInterfaceCallbacks>()
344 == 6 * core::mem::size_of::<*const ()>()
345 );
346 assert!(
347 core::mem::align_of::<btck_ValidationInterfaceCallbacks>()
348 == core::mem::align_of::<*const ()>()
349 );
350};
351
352extern "C" {
355
356 pub fn btck_transaction_create(
359 raw_transaction: *const c_void,
360 raw_transaction_len: usize,
361 ) -> *mut btck_Transaction;
362
363 pub fn btck_transaction_copy(transaction: *const btck_Transaction) -> *mut btck_Transaction;
364
365 pub fn btck_transaction_to_bytes(
366 transaction: *const btck_Transaction,
367 writer: btck_WriteBytes,
368 user_data: *mut c_void,
369 ) -> c_int;
370
371 pub fn btck_transaction_count_outputs(transaction: *const btck_Transaction) -> usize;
372
373 pub fn btck_transaction_get_output_at(
374 transaction: *const btck_Transaction,
375 output_index: usize,
376 ) -> *const btck_TransactionOutput;
377
378 pub fn btck_transaction_get_input_at(
379 transaction: *const btck_Transaction,
380 input_index: usize,
381 ) -> *const btck_TransactionInput;
382
383 pub fn btck_transaction_count_inputs(transaction: *const btck_Transaction) -> usize;
384
385 pub fn btck_transaction_get_locktime(transaction: *const btck_Transaction) -> u32;
386
387 pub fn btck_transaction_get_txid(transaction: *const btck_Transaction) -> *const btck_Txid;
388
389 pub fn btck_transaction_destroy(transaction: *mut btck_Transaction);
390
391 pub fn btck_precomputed_transaction_data_create(
394 tx_to: *const btck_Transaction,
395 spent_outputs: *mut *const btck_TransactionOutput,
396 spent_outputs_len: usize,
397 ) -> *mut btck_PrecomputedTransactionData;
398
399 pub fn btck_precomputed_transaction_data_copy(
400 precomputed_txdata: *const btck_PrecomputedTransactionData,
401 ) -> *mut btck_PrecomputedTransactionData;
402
403 pub fn btck_precomputed_transaction_data_destroy(
404 precomputed_txdata: *mut btck_PrecomputedTransactionData,
405 );
406
407 pub fn btck_script_pubkey_create(
410 script_pubkey: *const c_void,
411 script_pubkey_len: usize,
412 ) -> *mut btck_ScriptPubkey;
413
414 pub fn btck_script_pubkey_copy(
415 script_pubkey: *const btck_ScriptPubkey,
416 ) -> *mut btck_ScriptPubkey;
417
418 pub fn btck_script_pubkey_verify(
419 script_pubkey: *const btck_ScriptPubkey,
420 amount: i64,
421 tx_to: *const btck_Transaction,
422 precomputed_txdata: *const btck_PrecomputedTransactionData,
423 input_index: c_uint,
424 flags: btck_ScriptVerificationFlags,
425 status: *mut btck_ScriptVerifyStatus,
426 ) -> c_int;
427
428 pub fn btck_script_pubkey_to_bytes(
429 script_pubkey: *const btck_ScriptPubkey,
430 writer: btck_WriteBytes,
431 user_data: *mut c_void,
432 ) -> c_int;
433
434 pub fn btck_script_pubkey_destroy(script_pubkey: *mut btck_ScriptPubkey);
435
436 pub fn btck_transaction_output_create(
439 script_pubkey: *const btck_ScriptPubkey,
440 amount: i64,
441 ) -> *mut btck_TransactionOutput;
442
443 pub fn btck_transaction_output_get_script_pubkey(
444 transaction_output: *const btck_TransactionOutput,
445 ) -> *const btck_ScriptPubkey;
446
447 pub fn btck_transaction_output_get_amount(
448 transaction_output: *const btck_TransactionOutput,
449 ) -> i64;
450
451 pub fn btck_transaction_output_copy(
452 transaction_output: *const btck_TransactionOutput,
453 ) -> *mut btck_TransactionOutput;
454
455 pub fn btck_transaction_output_destroy(transaction_output: *mut btck_TransactionOutput);
456
457 pub fn btck_logging_disable();
460
461 pub fn btck_logging_set_options(options: btck_LoggingOptions);
462
463 pub fn btck_logging_set_level_category(category: btck_LogCategory, level: btck_LogLevel);
464
465 pub fn btck_logging_enable_category(category: btck_LogCategory);
466
467 pub fn btck_logging_disable_category(category: btck_LogCategory);
468
469 pub fn btck_logging_connection_create(
470 log_callback: btck_LogCallback,
471 user_data: *mut c_void,
472 user_data_destroy_callback: btck_DestroyCallback,
473 ) -> *mut btck_LoggingConnection;
474
475 pub fn btck_logging_connection_destroy(logging_connection: *mut btck_LoggingConnection);
476
477 pub fn btck_chain_parameters_create(chain_type: btck_ChainType) -> *mut btck_ChainParameters;
480
481 pub fn btck_chain_parameters_copy(
482 chain_parameters: *const btck_ChainParameters,
483 ) -> *mut btck_ChainParameters;
484
485 pub fn btck_chain_parameters_get_consensus_params(
486 chain_parameters: *const btck_ChainParameters,
487 ) -> *const btck_ConsensusParams;
488
489 pub fn btck_chain_parameters_destroy(chain_parameters: *mut btck_ChainParameters);
490
491 pub fn btck_context_options_create() -> *mut btck_ContextOptions;
494
495 pub fn btck_context_options_set_chainparams(
496 context_options: *mut btck_ContextOptions,
497 chain_parameters: *const btck_ChainParameters,
498 );
499
500 pub fn btck_context_options_set_notifications(
501 context_options: *mut btck_ContextOptions,
502 notifications: btck_NotificationInterfaceCallbacks,
503 );
504
505 pub fn btck_context_options_set_validation_interface(
506 context_options: *mut btck_ContextOptions,
507 validation_interface_callbacks: btck_ValidationInterfaceCallbacks,
508 );
509
510 pub fn btck_context_options_destroy(context_options: *mut btck_ContextOptions);
511
512 pub fn btck_context_create(context_options: *const btck_ContextOptions) -> *mut btck_Context;
515
516 pub fn btck_context_copy(context: *const btck_Context) -> *mut btck_Context;
517
518 pub fn btck_context_interrupt(context: *mut btck_Context) -> c_int;
519
520 pub fn btck_context_destroy(context: *mut btck_Context);
521
522 pub fn btck_block_tree_entry_get_previous(
525 block_tree_entry: *const btck_BlockTreeEntry,
526 ) -> *const btck_BlockTreeEntry;
527
528 pub fn btck_block_tree_entry_get_ancestor(
529 block_tree_entry: *const btck_BlockTreeEntry,
530 height: i32,
531 ) -> *const btck_BlockTreeEntry;
532
533 pub fn btck_block_tree_entry_get_block_header(
534 block_tree_entry: *const btck_BlockTreeEntry,
535 ) -> *mut btck_BlockHeader;
536
537 pub fn btck_block_tree_entry_get_height(block_tree_entry: *const btck_BlockTreeEntry) -> i32;
538
539 pub fn btck_block_tree_entry_get_block_hash(
540 block_tree_entry: *const btck_BlockTreeEntry,
541 ) -> *const btck_BlockHash;
542
543 pub fn btck_block_tree_entry_equals(
544 entry1: *const btck_BlockTreeEntry,
545 entry2: *const btck_BlockTreeEntry,
546 ) -> c_int;
547
548 pub fn btck_chainstate_manager_options_create(
551 context: *const btck_Context,
552 data_directory: *const c_char,
553 data_directory_len: usize,
554 blocks_directory: *const c_char,
555 blocks_directory_len: usize,
556 ) -> *mut btck_ChainstateManagerOptions;
557
558 pub fn btck_chainstate_manager_options_set_worker_threads_num(
559 chainstate_manager_options: *mut btck_ChainstateManagerOptions,
560 worker_threads: c_int,
561 );
562
563 pub fn btck_chainstate_manager_options_set_wipe_dbs(
564 chainstate_manager_options: *mut btck_ChainstateManagerOptions,
565 wipe_block_tree_db: c_int,
566 wipe_chainstate_db: c_int,
567 ) -> c_int;
568
569 pub fn btck_chainstate_manager_options_update_block_tree_db_in_memory(
570 chainstate_manager_options: *mut btck_ChainstateManagerOptions,
571 block_tree_db_in_memory: c_int,
572 );
573
574 pub fn btck_chainstate_manager_options_update_chainstate_db_in_memory(
575 chainstate_manager_options: *mut btck_ChainstateManagerOptions,
576 chainstate_db_in_memory: c_int,
577 );
578
579 pub fn btck_chainstate_manager_options_destroy(
580 chainstate_manager_options: *mut btck_ChainstateManagerOptions,
581 );
582
583 pub fn btck_chainstate_manager_create(
586 chainstate_manager_options: *const btck_ChainstateManagerOptions,
587 ) -> *mut btck_ChainstateManager;
588
589 pub fn btck_chainstate_manager_get_best_entry(
590 chainstate_manager: *const btck_ChainstateManager,
591 ) -> *const btck_BlockTreeEntry;
592
593 pub fn btck_chainstate_manager_process_block_header(
594 chainstate_manager: *mut btck_ChainstateManager,
595 header: *const btck_BlockHeader,
596 block_validation_state: *mut btck_BlockValidationState,
597 ) -> c_int;
598
599 pub fn btck_chainstate_manager_import_blocks(
600 chainstate_manager: *mut btck_ChainstateManager,
601 block_file_paths_data: *mut *const c_char,
602 block_file_paths_lens: *mut usize,
603 block_file_paths_data_len: usize,
604 ) -> c_int;
605
606 pub fn btck_chainstate_manager_process_block(
607 chainstate_manager: *mut btck_ChainstateManager,
608 block: *const btck_Block,
609 new_block: *mut c_int,
610 ) -> c_int;
611
612 pub fn btck_chainstate_manager_get_active_chain(
613 chainstate_manager: *const btck_ChainstateManager,
614 ) -> *const btck_Chain;
615
616 pub fn btck_chainstate_manager_get_block_tree_entry_by_hash(
617 chainstate_manager: *const btck_ChainstateManager,
618 block_hash: *const btck_BlockHash,
619 ) -> *const btck_BlockTreeEntry;
620
621 pub fn btck_chainstate_manager_destroy(chainstate_manager: *mut btck_ChainstateManager);
622
623 pub fn btck_block_read(
626 chainstate_manager: *const btck_ChainstateManager,
627 block_tree_entry: *const btck_BlockTreeEntry,
628 ) -> *mut btck_Block;
629
630 pub fn btck_block_create(raw_block: *const c_void, raw_block_len: usize) -> *mut btck_Block;
631
632 pub fn btck_block_copy(block: *const btck_Block) -> *mut btck_Block;
633
634 pub fn btck_block_check(
635 block: *const btck_Block,
636 consensus_params: *const btck_ConsensusParams,
637 flags: btck_BlockCheckFlags,
638 validation_state: *mut btck_BlockValidationState,
639 ) -> c_int;
640
641 pub fn btck_block_count_transactions(block: *const btck_Block) -> usize;
642
643 pub fn btck_block_get_transaction_at(
644 block: *const btck_Block,
645 transaction_index: usize,
646 ) -> *const btck_Transaction;
647
648 pub fn btck_block_get_header(block: *const btck_Block) -> *mut btck_BlockHeader;
649
650 pub fn btck_block_get_hash(block: *const btck_Block) -> *mut btck_BlockHash;
651
652 pub fn btck_block_to_bytes(
653 block: *const btck_Block,
654 writer: btck_WriteBytes,
655 user_data: *mut c_void,
656 ) -> c_int;
657
658 pub fn btck_block_destroy(block: *mut btck_Block);
659
660 pub fn btck_block_validation_state_create() -> *mut btck_BlockValidationState;
663
664 pub fn btck_block_validation_state_get_validation_mode(
665 block_validation_state: *const btck_BlockValidationState,
666 ) -> btck_ValidationMode;
667
668 pub fn btck_block_validation_state_get_block_validation_result(
669 block_validation_state: *const btck_BlockValidationState,
670 ) -> btck_BlockValidationResult;
671
672 pub fn btck_block_validation_state_copy(
673 block_validation_state: *const btck_BlockValidationState,
674 ) -> *mut btck_BlockValidationState;
675
676 pub fn btck_block_validation_state_destroy(
677 block_validation_state: *mut btck_BlockValidationState,
678 );
679
680 pub fn btck_chain_get_height(chain: *const btck_Chain) -> i32;
683
684 pub fn btck_chain_get_by_height(
685 chain: *const btck_Chain,
686 block_height: i32,
687 ) -> *const btck_BlockTreeEntry;
688
689 pub fn btck_chain_contains(
690 chain: *const btck_Chain,
691 block_tree_entry: *const btck_BlockTreeEntry,
692 ) -> c_int;
693
694 pub fn btck_block_spent_outputs_read(
697 chainstate_manager: *const btck_ChainstateManager,
698 block_tree_entry: *const btck_BlockTreeEntry,
699 ) -> *mut btck_BlockSpentOutputs;
700
701 pub fn btck_block_spent_outputs_copy(
702 block_spent_outputs: *const btck_BlockSpentOutputs,
703 ) -> *mut btck_BlockSpentOutputs;
704
705 pub fn btck_block_spent_outputs_count(
706 block_spent_outputs: *const btck_BlockSpentOutputs,
707 ) -> usize;
708
709 pub fn btck_block_spent_outputs_get_transaction_spent_outputs_at(
710 block_spent_outputs: *const btck_BlockSpentOutputs,
711 transaction_spent_outputs_index: usize,
712 ) -> *const btck_TransactionSpentOutputs;
713
714 pub fn btck_block_spent_outputs_destroy(block_spent_outputs: *mut btck_BlockSpentOutputs);
715
716 pub fn btck_transaction_spent_outputs_copy(
719 transaction_spent_outputs: *const btck_TransactionSpentOutputs,
720 ) -> *mut btck_TransactionSpentOutputs;
721
722 pub fn btck_transaction_spent_outputs_count(
723 transaction_spent_outputs: *const btck_TransactionSpentOutputs,
724 ) -> usize;
725
726 pub fn btck_transaction_spent_outputs_get_coin_at(
727 transaction_spent_outputs: *const btck_TransactionSpentOutputs,
728 coin_index: usize,
729 ) -> *const btck_Coin;
730
731 pub fn btck_transaction_spent_outputs_destroy(
732 transaction_spent_outputs: *mut btck_TransactionSpentOutputs,
733 );
734
735 pub fn btck_transaction_input_copy(
738 transaction_input: *const btck_TransactionInput,
739 ) -> *mut btck_TransactionInput;
740
741 pub fn btck_transaction_input_get_out_point(
742 transaction_input: *const btck_TransactionInput,
743 ) -> *const btck_TransactionOutPoint;
744
745 pub fn btck_transaction_input_get_sequence(
746 transaction_input: *const btck_TransactionInput,
747 ) -> u32;
748
749 pub fn btck_transaction_input_destroy(transaction_input: *mut btck_TransactionInput);
750
751 pub fn btck_transaction_out_point_copy(
754 transaction_out_point: *const btck_TransactionOutPoint,
755 ) -> *mut btck_TransactionOutPoint;
756
757 pub fn btck_transaction_out_point_get_index(
758 transaction_out_point: *const btck_TransactionOutPoint,
759 ) -> u32;
760
761 pub fn btck_transaction_out_point_get_txid(
762 transaction_out_point: *const btck_TransactionOutPoint,
763 ) -> *const btck_Txid;
764
765 pub fn btck_transaction_out_point_destroy(transaction_out_point: *mut btck_TransactionOutPoint);
766
767 pub fn btck_txid_copy(txid: *const btck_Txid) -> *mut btck_Txid;
770
771 pub fn btck_txid_equals(txid1: *const btck_Txid, txid2: *const btck_Txid) -> c_int;
772
773 pub fn btck_txid_to_bytes(txid: *const btck_Txid, output: *mut c_uchar);
774
775 pub fn btck_txid_destroy(txid: *mut btck_Txid);
776
777 pub fn btck_coin_copy(coin: *const btck_Coin) -> *mut btck_Coin;
780
781 pub fn btck_coin_confirmation_height(coin: *const btck_Coin) -> u32;
782
783 pub fn btck_coin_is_coinbase(coin: *const btck_Coin) -> c_int;
784
785 pub fn btck_coin_get_output(coin: *const btck_Coin) -> *const btck_TransactionOutput;
786
787 pub fn btck_coin_destroy(coin: *mut btck_Coin);
788
789 pub fn btck_block_hash_create(block_hash: *const c_uchar) -> *mut btck_BlockHash;
792
793 pub fn btck_block_hash_equals(
794 hash1: *const btck_BlockHash,
795 hash2: *const btck_BlockHash,
796 ) -> c_int;
797
798 pub fn btck_block_hash_copy(block_hash: *const btck_BlockHash) -> *mut btck_BlockHash;
799
800 pub fn btck_block_hash_to_bytes(block_hash: *const btck_BlockHash, output: *mut c_uchar);
801
802 pub fn btck_block_hash_destroy(block_hash: *mut btck_BlockHash);
803
804 pub fn btck_block_header_create(
807 raw_block_header: *const c_void,
808 raw_block_header_len: usize,
809 ) -> *mut btck_BlockHeader;
810
811 pub fn btck_block_header_copy(header: *const btck_BlockHeader) -> *mut btck_BlockHeader;
812
813 pub fn btck_block_header_get_hash(header: *const btck_BlockHeader) -> *mut btck_BlockHash;
814
815 pub fn btck_block_header_get_prev_hash(
816 header: *const btck_BlockHeader,
817 ) -> *const btck_BlockHash;
818
819 pub fn btck_block_header_get_timestamp(header: *const btck_BlockHeader) -> u32;
820
821 pub fn btck_block_header_get_bits(header: *const btck_BlockHeader) -> u32;
822
823 pub fn btck_block_header_get_version(header: *const btck_BlockHeader) -> i32;
824
825 pub fn btck_block_header_get_nonce(header: *const btck_BlockHeader) -> u32;
826
827 pub fn btck_block_header_to_bytes(
828 header: *const btck_BlockHeader,
829 output: *mut c_uchar,
830 ) -> c_int;
831
832 pub fn btck_block_header_destroy(header: *mut btck_BlockHeader);
833
834}