tempo_alloy/provider/
ext.rs

1use alloy_provider::{
2    Identity, ProviderBuilder,
3    fillers::{JoinFill, RecommendedFillers},
4};
5
6use crate::{TempoFillers, TempoNetwork, fillers::Random2DNonceFiller};
7
8/// Extension trait for [`ProviderBuilder`] with Tempo-specific functionality.
9pub trait TempoProviderBuilderExt {
10    /// Returns a provider builder with the recommended Tempo fillers and the random 2D nonce filler.
11    ///
12    /// See [`Random2DNonceFiller`] for more information on random 2D nonces.
13    fn with_random_2d_nonces(
14        self,
15    ) -> ProviderBuilder<
16        Identity,
17        JoinFill<Identity, TempoFillers<Random2DNonceFiller>>,
18        TempoNetwork,
19    >;
20}
21
22impl TempoProviderBuilderExt
23    for ProviderBuilder<
24        Identity,
25        JoinFill<Identity, <TempoNetwork as RecommendedFillers>::RecommendedFillers>,
26        TempoNetwork,
27    >
28{
29    fn with_random_2d_nonces(
30        self,
31    ) -> ProviderBuilder<
32        Identity,
33        JoinFill<Identity, TempoFillers<Random2DNonceFiller>>,
34        TempoNetwork,
35    > {
36        ProviderBuilder::default().filler(TempoFillers::default())
37    }
38}
39
40#[cfg(test)]
41mod tests {
42    use alloy_provider::{Identity, ProviderBuilder, fillers::JoinFill};
43
44    use crate::{
45        TempoFillers, TempoNetwork, fillers::Random2DNonceFiller,
46        provider::ext::TempoProviderBuilderExt,
47    };
48
49    #[test]
50    fn test_with_random_nonces() {
51        let _: ProviderBuilder<_, JoinFill<Identity, TempoFillers<Random2DNonceFiller>>, _> =
52            ProviderBuilder::new_with_network::<TempoNetwork>().with_random_2d_nonces();
53    }
54}