chainhook_types/
processors.rs1use std::collections::BTreeMap;
2
3use super::{BitcoinBlockData, BitcoinTransactionData, StacksBlockData, StacksTransactionData};
4use serde_json::Value as JsonValue;
5
6pub struct ProcessedStacksTransaction {
7 pub tx: StacksTransactionData,
8 pub metadata: BTreeMap<String, JsonValue>,
9}
10
11pub struct ProcessedStacksBlock {
12 pub tx: StacksBlockData,
13 pub metadata: BTreeMap<String, JsonValue>,
14}
15
16pub struct ProcessedBitcoinTransaction {
17 pub tx: BitcoinTransactionData,
18 pub metadata: BTreeMap<String, JsonValue>,
19}
20
21pub struct ProcessedBitcoinBlock {
22 pub tx: BitcoinBlockData,
23 pub metadata: BTreeMap<String, JsonValue>,
24}
25
26pub enum ProcessingContext {
27 Scanning,
28 Streaming,
29}
30
31pub trait BitcoinProtocolProcessor {
32 fn register(&mut self);
33 fn process_block(
34 &mut self,
35 block: &mut ProcessedBitcoinBlock,
36 processing_context: ProcessingContext,
37 );
38 fn process_transaction(
39 &mut self,
40 transaction: &mut ProcessedBitcoinTransaction,
41 processing_context: ProcessingContext,
42 );
43}
44
45pub fn run_processor<P>(mut p: P)
46where
47 P: BitcoinProtocolProcessor,
48{
49 p.register();
50}