use std::collections::{BTreeMap, HashMap};
use serde::{Deserialize, Serialize};
use crate::{OracleDutyConfig, OracleId, OracleUpdateResult};
pub type ProtocolKeyBytes = [u8; 32];
pub type OracleDutiesMap = BTreeMap<OracleDutiesMapKey, OracleDutiesMapValue>;
#[derive(Clone, Copy, Debug, Serialize, Deserialize, Ord, PartialOrd, Eq, PartialEq, Hash)]
pub struct OracleDutiesMapKey {
pub proposal_round: u64,
pub oracle_id: OracleId,
}
#[derive(Clone, Debug, Serialize, Deserialize, Default)]
pub struct OracleDutiesMapValue {
pub updates: HashMap<ProtocolKeyBytes, Option<OracleUpdateResult>>,
pub config: OracleDutyConfig,
pub retries_made: u32,
}