diff --git a/common/src/attestations/dispute_manager.rs b/common/src/attestations/dispute_manager.rs
index 2cdc0fa34..3ddb2f5ea 100644
--- a/common/src/attestations/dispute_manager.rs
+++ b/common/src/attestations/dispute_manager.rs
@@ -1,16 +1,15 @@
// Copyright 2023-, Edge & Node, GraphOps, and Semiotic Labs.
// SPDX-License-Identifier: Apache-2.0
-use std::time::Duration;
-
+use crate::subgraph_client::SubgraphClient;
use alloy::primitives::Address;
-use eventuals::{timer, Eventual, EventualExt};
+use anyhow::Error;
use graphql_client::GraphQLQuery;
-use tokio::time::sleep;
+use std::time::Duration;
+use tokio::sync::watch::{self, Receiver};
+use tokio::time::{self, sleep};
use tracing::warn;
-use crate::subgraph_client::SubgraphClient;
-
type Bytes = Address;
#[derive(GraphQLQuery)]
@@ -25,27 +24,41 @@ struct DisputeManager;
pub fn dispute_manager(
network_subgraph: &'static SubgraphClient,
interval: Duration,
-) -> Eventual
{
- timer(interval).map_with_retry(
- move |_| async move {
- let response = network_subgraph
- .query::(dispute_manager::Variables {})
- .await
- .map_err(|e| e.to_string())?;
-
- response.map_err(|e| e.to_string()).and_then(|data| {
- data.graph_network
+) -> Receiver