export type CollectionResolver = (collectionName: string, query?: Record) => Promise[]>; export type StageOperatorFn = (input: Record[], stageExpr: Record, resolver?: CollectionResolver) => Record[] | Promise[]>; export type AccumulatorFn = (collection: Record[], expr: unknown) => unknown; export type ExpressionFn = (doc: Record, expr: unknown) => unknown; export interface RegisteredOperator { type: "stage" | "accumulator" | "expression"; name: string; fn: StageOperatorFn | AccumulatorFn | ExpressionFn; }