#[cfg(feature = "alloc")]
use alloc::vec::Vec;
use crate::error::HpkeError;
pub trait Kem {
fn generate_keypair(&self) -> Result<(Vec<u8>, Vec<u8>), HpkeError>;
fn encapsulate(&self, public_key: &[u8]) -> Result<(Vec<u8>, Vec<u8>), HpkeError>;
fn decapsulate(&self, secret_key: &[u8], ciphertext: &[u8]) -> Result<Vec<u8>, HpkeError>;
}