use crate::errors::*;
use ndarray::{Array2, ArrayView4};

pub mod mnn;
pub mod ort;

/// Common trait for face embedding backends
pub trait FaceEmbedder {
    /// Generate embeddings for a batch of face images
    fn run_models(&self, faces: ArrayView4<u8>) -> Result<Array2<f32>>;
}

// Convenience type aliases for different backends
pub mod facenet {
    pub use crate::faceembed::mnn::facenet as mnn;
    pub use crate::faceembed::ort::facenet as ort;
}

// Default to MNN implementation for backward compatibility
pub use mnn::facenet::EmbeddingGenerator;
