use std::fmt;
use crate::pal::error::PalError;
use crate::pal::ids::PtyId;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub(crate) struct WindowSize {
pub cols: u16,
pub rows: u16,
}
#[cfg_attr(test, mockall::automock)]
pub(crate) trait Pseudoconsole: Send + Sync + fmt::Debug + 'static {
fn create(&self, size: WindowSize) -> Result<PtyId, PalError>;
fn resize(&self, pty: PtyId, size: WindowSize) -> Result<(), PalError>;
fn write_input(&self, pty: PtyId, data: &[u8]) -> Result<(), PalError>;
fn read_output(&self, pty: PtyId) -> Result<Vec<u8>, PalError>;
fn finish(&self, pty: PtyId);
fn close(&self, pty: PtyId);
}