pub mod gguf;
pub use gguf::LoaderGguf;
pub mod safetensors;
pub use safetensors::LoaderSafetensors;
use crate::device::DeviceConfig;
use crate::error::CallmError;
use crate::models::ModelImpl;
use crate::templates::TemplateImpl;
use std::sync::{Arc, Mutex};
use tokenizers::tokenizer::Tokenizer;
pub trait LoaderImpl: Send {
fn set_device(&mut self, device: Arc<DeviceConfig>);
fn load(&mut self) -> Result<Arc<Mutex<dyn ModelImpl>>, CallmError>;
fn tokenizer(&mut self) -> Result<Tokenizer, CallmError>;
fn template(&mut self) -> Result<Box<dyn TemplateImpl>, CallmError>;
}