import { OperatorOption, Operation, OperationOperand } from '../expression.cjs'; import '@fajarnugraha37/error'; declare class OperationBuilder { private _operator; private _args; static create(operator: OperatorOption): OperationBuilder; static fromOperation(operation: Operation): OperationBuilder; arg(...items: OperationOperand[]): this; nest(builder: OperationBuilder): this; var(name: string, defaultValue?: unknown): this; literal(value: unknown): this; val(values: readonly string[]): this; ref(id: string): this; clear(): this; get operator(): OperatorOption; get args(): readonly OperationOperand[]; get argCount(): number; get hasArgs(): boolean; clone(): OperationBuilder; validate(): boolean; build(): Operation; toJSON(): string; toString(): string; } declare class MathOperationBuilder extends OperationBuilder { static add(): MathOperationBuilder; static subtract(): MathOperationBuilder; static multiply(): MathOperationBuilder; static divide(): MathOperationBuilder; static modulo(): MathOperationBuilder; static power(): MathOperationBuilder; static min(): MathOperationBuilder; static max(): MathOperationBuilder; private setOperator; numbers(...values: number[]): this; variables(...names: string[]): this; } declare class ComparisonOperationBuilder extends OperationBuilder { static eq(): ComparisonOperationBuilder; static strictEq(): ComparisonOperationBuilder; static neq(): ComparisonOperationBuilder; static strictNeq(): ComparisonOperationBuilder; static gt(): ComparisonOperationBuilder; static gte(): ComparisonOperationBuilder; static lt(): ComparisonOperationBuilder; static lte(): ComparisonOperationBuilder; private setOperator; compare(left: OperationOperand, right: OperationOperand): this; } declare class LogicOperationBuilder extends OperationBuilder { static and(): LogicOperationBuilder; static or(): LogicOperationBuilder; static not(): LogicOperationBuilder; static xor(): LogicOperationBuilder; private setOperator; conditions(...conditions: OperationOperand[]): this; condition(condition: OperationOperand): this; } declare class ArrayOperationBuilder extends OperationBuilder { static map(): ArrayOperationBuilder; static filter(): ArrayOperationBuilder; static reduce(): ArrayOperationBuilder; static find(): ArrayOperationBuilder; static every(): ArrayOperationBuilder; static some(): ArrayOperationBuilder; private setOperator; array(array: OperationOperand): this; callback(callback: OperationOperand): this; initialValue(value: OperationOperand): this; } declare class BuilderFactory { static math: typeof MathOperationBuilder; static comparison: typeof ComparisonOperationBuilder; static logic: typeof LogicOperationBuilder; static array: typeof ArrayOperationBuilder; static operation(operator: OperatorOption): OperationBuilder; static fromOperation(operation: Operation): OperationBuilder; } export { ArrayOperationBuilder, BuilderFactory, ComparisonOperationBuilder, LogicOperationBuilder, MathOperationBuilder, OperationBuilder };