diff --git a/crates/optimism/flashblocks/src/service.rs b/crates/optimism/flashblocks/src/service.rs index 59bd8d3c6fe..0a1e5dbae52 100644 --- a/crates/optimism/flashblocks/src/service.rs +++ b/crates/optimism/flashblocks/src/service.rs @@ -54,6 +54,11 @@ impl< Builder: PendingEnvBuilder, > FlashBlockService { + /// Constructs a new `FlashBlockService` that receives [`FlashBlock`]s from `rx` stream. + pub const fn new(rx: S, evm_config: EvmConfig, provider: Provider, builder: Builder) -> Self { + Self { rx, current: None, blocks: Vec::new(), evm_config, provider, builder } + } + /// Adds the `block` into the collection. /// /// Depending on its index and associated block number, it may: diff --git a/crates/optimism/flashblocks/src/ws/stream.rs b/crates/optimism/flashblocks/src/ws/stream.rs index 1c1c9237e96..7e63d95e536 100644 --- a/crates/optimism/flashblocks/src/ws/stream.rs +++ b/crates/optimism/flashblocks/src/ws/stream.rs @@ -28,6 +28,18 @@ pub struct FlashBlockWsStream { stream: Option>>>, } +impl FlashBlockWsStream { + /// Creates a new websocket stream over `ws_url`. + pub fn new(ws_url: Url) -> Self { + Self { + ws_url, + state: State::default(), + connect: Box::pin(async move { Err(Error::ConnectionClosed) }), + stream: None, + } + } +} + impl Stream for FlashBlockWsStream { type Item = eyre::Result;