import * as S from "effect/Schema";
import type { PaginatedTrait } from "../traits.ts";
export declare namespace Operation {
    type Input<Op extends Operation> = S.Schema.Type<Op["input"]>;
    type Output<Op extends Operation> = S.Schema.Type<Op["output"]>;
    type Error<Op extends Operation> = Instance<Op["errors"][number]>;
}
type Instance<T> = T extends new (...args: any) => infer U ? U : T;
export interface Operation<Input extends S.Top = S.Any, Output extends S.Top = S.Top, Error = any> {
    input: Input;
    output: Output;
    errors: Error[];
    /** Pagination metadata for paginated operations */
    pagination?: PaginatedTrait;
}
export {};
//# sourceMappingURL=operation.d.ts.map