openvm_continuations/circuit/subair/merkle_tree/
bus.rs1use openvm_recursion_circuit::define_typed_permutation_bus;
2use openvm_recursion_circuit_derive::AlignedBorrow;
3use openvm_stark_sdk::config::baby_bear_poseidon2::DIGEST_SIZE;
4
5#[repr(C)]
6#[derive(AlignedBorrow, Debug, Clone)]
7pub struct MerkleRootMessage<T> {
8 pub merkle_root: [T; DIGEST_SIZE],
9 pub idx: T,
10 pub num_rows_or_zero: T,
11}
12
13define_typed_permutation_bus!(MerkleRootBus, MerkleRootMessage);
14
15#[repr(C)]
16#[derive(AlignedBorrow, Debug, Clone)]
17pub struct MerkleTreeInternalMessage<T> {
18 pub child_value: [T; DIGEST_SIZE],
19 pub is_right_child: T,
20 pub parent_idx: T,
21}
22
23define_typed_permutation_bus!(MerkleTreeInternalBus, MerkleTreeInternalMessage);