mod binary;
pub use binary::*;
mod unary;
use std::fmt::Debug;
use glaredb_error::Result;
pub use unary::*;
use super::PutBuffer;
use crate::arrays::array::physical_type::AddressableMut;
pub trait AggregateState<Input, Output: ?Sized>: Debug + Sync + Send {
type BindState: Sync + Send;
fn merge(&mut self, state: &Self::BindState, other: &mut Self) -> Result<()>;
fn update(&mut self, state: &Self::BindState, input: Input) -> Result<()>;
fn finalize<M>(&mut self, state: &Self::BindState, output: PutBuffer<M>) -> Result<()>
where
M: AddressableMut<T = Output>;
}