use std::collections::HashMap;
use std::future::IntoFuture;
use super::types::*;
use crate::proof::BatchRequest;
use crate::proof::BatchResponse;
use crate::proof::ProofIdx;
pub trait NoxCCPApi: Send {
type Error: Send;
type CommitmentError;
type CommitmentReadiness: IntoFuture<Output = Result<(), Self::CommitmentError>>;
fn on_active_commitment(
&mut self,
epoch_parameters: EpochParameters,
cu_allocation: CUAllocation,
) -> impl std::future::Future<Output = Result<Self::CommitmentReadiness, Self::Error>> + Send;
fn on_no_active_commitment(
&mut self,
) -> impl std::future::Future<Output = Result<(), Self::Error>> + Send;
fn get_proofs_after(
&self,
last_known_proofs: HashMap<CUID, ProofIdx>,
limit: usize,
) -> impl std::future::Future<Output = Result<Vec<BatchResponse>, Self::Error>> + Send;
fn get_batch_proofs_after(
&self,
reqs: HashMap<CUID, BatchRequest>,
min_batch_count: usize,
max_batch_count: usize,
) -> impl std::future::Future<Output = Result<Vec<BatchResponse>, Self::Error>> + Send;
fn realloc_utility_cores(
&self,
utility_core_ids: Vec<LogicalCoreId>,
) -> impl std::future::Future<Output = ()> + Send;
}