1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//! Event scanner, its builders, and scanner mode marker types.
//!
//! This module defines [`EventScannerBuilder`] and the mode marker types used to configure an
//! [`EventScanner`]. Calling [`EventScannerBuilder::historic`], [`EventScannerBuilder::live`],
//! [`EventScannerBuilder::latest`] or [`EventScannerBuilder::sync`] selects a mode and exposes the
//! mode-specific configuration methods.
//!
//! # Streams
//!
//! Consumers register event subscriptions via [`EventScanner::subscribe`]. Each subscription
//! produces an independent stream of [`EventScannerResult`].
//!
//! ## Ordering
//!
//! Ordering is preserved *per subscription stream*. There is no global ordering guarantee across
//! different subscriptions.
//!
//! ## Backpressure and lag
//!
//! Subscription streams are buffered. If a consumer processes events too slowly and the
//! internal buffer fills up, the stream yields [`ScannerError::Lagged`] and some events
//! may be skipped.
//!
//! # Reorgs and finality
//!
//! When scanning non-finalized blocks, the scanner may detect chain reorganizations and will emit
//! [`Notification::ReorgDetected`]. Consumers should assume the same events might be delivered more
//! than once around reorgs (i.e. benign duplicates are possible).
//!
//! In live mode, `block_confirmations` delays emission so that shallow reorganizations that do not
//! affect the confirmed boundary do not trigger reorg notifications.
//!
//! [`Notification::ReorgDetected`]: crate::Notification::ReorgDetected
pub use ;
pub use EventFilter;
pub use ;
pub use ;