use crate::hf_pipeline::error::Result;
use ndarray::Array2;
use super::MemoryEstimate;
pub trait TeacherModel: Send + Sync {
fn forward(&self, input: &Array2<f32>) -> Result<Array2<f32>>;
fn hidden_states(&self, input: &Array2<f32>) -> Result<Vec<Array2<f32>>>;
fn attention_weights(&self, input: &Array2<f32>) -> Result<Vec<Array2<f32>>>;
fn estimate_memory(&self, batch_size: usize, seq_len: usize) -> MemoryEstimate;
fn param_count(&self) -> u64;
fn num_layers(&self) -> usize;
fn hidden_size(&self) -> usize;
}