import { IdType } from "./id-type"; export type WhereOperator = "eq" | "ne" | "gt" | "lt" | "gte" | "lte" | "in" | "nin" | "like" | "json_extract" | "full_text_search" | "array_contains" | "text_search"; export type LogicalOperator = "and" | "or"; export declare class ConditionWithManyKeys { readonly left: string[]; readonly operator: WhereOperator; readonly right: T; constructor(left: string[], operator: WhereOperator, right: T); } export declare class Condition { readonly left: string; readonly operator: WhereOperator; readonly right: T; constructor(left: string, operator: WhereOperator, right: T); } export declare class VariedCondition { readonly conditions: (Condition | VariedCondition)[]; readonly operator: LogicalOperator; constructor(conditions: (Condition | VariedCondition)[], operator: LogicalOperator); } export declare class NestedCondition { readonly result: Condition | VariedCondition; constructor(result: Condition | VariedCondition); } export declare class WhereCondition { private _result; private _operator; setLogicalOperator(operator: LogicalOperator): void; build(): VariedCondition | Condition; addCondition(condition: Condition | ConditionWithManyKeys | VariedCondition | NestedCondition): void; } export declare class Where { private _registry; private _result; private _keys; private addCondition; build(): Condition | VariedCondition; valueOf(key: string | IdType): Where; brackets(fn: (where: Where) => void): Where; isEq(value: any): Where; areEq(value: any): Where; isNotEq(value: any): Where; areNotEq(value: any): Where; isLt(value: any): Where; areLt(value: any): Where; isLte(value: any): Where; areLte(value: any): Where; isGt(value: any): Where; areGt(value: any): Where; isGte(value: any): Where; areGte(value: any): Where; isIn(value: any[]): Where; areIn(value: any[]): Where; isNotIn(value: any[]): Where; areNotIn(value: any[]): Where; like(value: string): Where; jsonExtract(path: string, value: any): Where; fullTextSearch(searchTerm: string): Where; arrayContains(values: any[]): Where; textSearch(searchTerm: string): Where; get and(): Where; get or(): Where; }