1#![doc(html_favicon_url = "https://zfnd.org/wp-content/uploads/2022/03/zebra-favicon-128.png")]
12#![doc(html_logo_url = "https://zfnd.org/wp-content/uploads/2022/03/zebra-icon.png")]
13#![doc(html_root_url = "https://docs.rs/zebra_state")]
14#![allow(unknown_lints)]
16#![allow(clippy::manual_is_multiple_of)]
17
18#[macro_use]
19extern crate tracing;
20
21pub mod config;
23pub mod constants;
25
26#[cfg(any(test, feature = "proptest-impl"))]
28pub mod arbitrary;
29
30mod error;
31mod request;
32mod response;
33mod service;
34
35#[cfg(test)]
36mod tests;
37
38pub use config::{
39 check_and_delete_old_databases, check_and_delete_old_state_databases,
40 database_format_version_on_disk, state_database_format_version_on_disk, Config,
41};
42pub use constants::{
43 state_database_format_version_in_code, MAX_BLOCK_REORG_HEIGHT, MAX_NON_FINALIZED_CHAIN_FORKS,
44};
45pub use error::{
46 BoxError, CloneError, CommitBlockError, CommitCheckpointVerifiedError,
47 CommitSemanticallyVerifiedError, DuplicateNullifierError, StateInitError, ValidateContextError,
48};
49pub use request::{
50 CheckpointVerifiedBlock, CommitSemanticallyVerifiedBlockRequest, HashOrHeight, MappedRequest,
51 ReadRequest, Request, SemanticallyVerifiedBlock,
52};
53
54#[cfg(feature = "indexer")]
55pub use request::Spend;
56
57pub use response::{
58 AnyTx, GetBlockTemplateChainInfo, KnownBlock, MinedTx, NonFinalizedBlocksListener,
59 ReadResponse, Response,
60};
61pub use service::{
62 chain_tip::{ChainTipBlock, ChainTipChange, ChainTipSender, LatestChainTip, TipAction},
63 check,
64 finalized_state::FinalizedState,
65 init, init_read_only,
66 non_finalized_state::NonFinalizedState,
67 spawn_init_read_only,
68 watch_receiver::WatchReceiver,
69 OutputLocation, ReadState, State, TransactionIndex, TransactionLocation,
70};
71
72#[cfg(any(test, feature = "proptest-impl"))]
74pub use service::finalized_state::{ReadDisk, TypedColumnFamily, WriteTypedBatch};
75
76pub use service::{
77 finalized_state::{DiskWriteBatch, FromDisk, IntoDisk, WriteDisk, ZebraDb},
78 ReadStateService,
79};
80
81#[cfg(any(test, feature = "proptest-impl"))]
83pub use service::{
84 arbitrary::{populated_state, CHAIN_TIP_UPDATE_WAIT_LIMIT},
85 finalized_state::{RawBytes, KV, MAX_ON_DISK_HEIGHT},
86 init_test, init_test_services,
87};
88
89#[cfg(any(test, feature = "proptest-impl"))]
90pub use config::hidden::{
91 write_database_format_version_to_disk, write_state_database_format_version_to_disk,
92};
93
94#[cfg(not(any(test, feature = "proptest-impl")))]
96#[allow(unused_imports)]
97pub(crate) use config::hidden::{
98 write_database_format_version_to_disk, write_state_database_format_version_to_disk,
99};
100
101pub use request::ContextuallyVerifiedBlock;