quantrs2-device 0.1.3

Quantum device connectors for the QuantRS2 framework
Documentation
//! Entanglement distribution and management protocols

use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::time::Duration;

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EntanglementGenerationConfig {
    pub source_type: String,
    pub generation_rate: f64,
    pub fidelity_target: f64,
    pub entanglement_type: String,
}

impl Default for EntanglementGenerationConfig {
    fn default() -> Self {
        Self {
            source_type: "SPDC".to_string(),
            generation_rate: 1000.0,
            fidelity_target: 0.95,
            entanglement_type: "Bell_state".to_string(),
        }
    }
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EntanglementPurificationConfig {
    pub purification_protocol: String,
    pub fidelity_target: f64,
    pub maximum_rounds: u32,
    pub resource_efficiency: f64,
}

impl Default for EntanglementPurificationConfig {
    fn default() -> Self {
        Self {
            purification_protocol: "DEJMPS".to_string(),
            fidelity_target: 0.99,
            maximum_rounds: 5,
            resource_efficiency: 0.8,
        }
    }
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EntanglementSwappingConfig {
    pub swapping_protocol: String,
    pub fidelity_preservation: f64,
    pub network_topology_aware: bool,
}

impl Default for EntanglementSwappingConfig {
    fn default() -> Self {
        Self {
            swapping_protocol: "standard".to_string(),
            fidelity_preservation: 0.95,
            network_topology_aware: true,
        }
    }
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EntanglementStorageConfig {
    pub storage_method: String,
    pub storage_time: Duration,
    pub retrieval_efficiency: f64,
}

impl Default for EntanglementStorageConfig {
    fn default() -> Self {
        Self {
            storage_method: "quantum_memory".to_string(),
            storage_time: Duration::from_millis(100),
            retrieval_efficiency: 0.9,
        }
    }
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EntanglementQualityConfig {
    pub fidelity_threshold: f64,
    pub entanglement_verification: String,
    pub quality_monitoring_interval: Duration,
}

impl Default for EntanglementQualityConfig {
    fn default() -> Self {
        Self {
            fidelity_threshold: 0.9,
            entanglement_verification: "process_tomography".to_string(),
            quality_monitoring_interval: Duration::from_secs(1),
        }
    }
}