import { FilterTarget } from '../../proto/v1/base.js'; import { ExtractCrossReferenceType, NonRefKeys, RefKeys } from '../types/internal.js'; import { ContainsValue, CountRef, Filter, FilterByProperty, FilterValue, GeoRangeFilter, TargetRefs } from './types.js'; /** * Use this class when you want to chain filters together using logical operators. * * Since JS/TS has no native support for & and | as logical operators, you must use these methods and nest * the filters you want to combine. * * ANDs and ORs can be nested an arbitrary number of times. * * @example * ```ts * const filter = Filters.and( * collection.filter.byProperty('name').equal('John'), * collection.filter.byProperty('age').greaterThan(18), * ); * ``` */ export declare class Filters { /** * Combine filters using the logical AND operator. * * @param {FilterValue[]} filters The filters to combine. */ static and(...filters: FilterValue[]): FilterValue; /** * Combine filters using the logical OR operator. * * @param {FilterValue[]} filters The filters to combine. */ static or(...filters: FilterValue[]): FilterValue; /** * Negate a filter using the logical NOT operator. * * @param {FilterValue} filter The filter to negate. */ static not(filter: FilterValue): FilterValue; } export declare class FilterBase { protected target?: TargetRefs; protected property: string | CountRef; constructor(property: string | CountRef, target?: TargetRefs); protected targetPath(): FilterTarget; private resolveTargets; } export declare class FilterProperty extends FilterBase implements FilterByProperty { constructor(property: string, length: boolean, target?: TargetRefs); isNull(value: boolean): FilterValue; containsAny>(value: U[]): FilterValue; containsNone>(value: U[]): FilterValue; containsAll>(value: U[]): FilterValue; equal(value: V): FilterValue; notEqual(value: V): FilterValue; lessThan(value: U): FilterValue; lessOrEqual(value: U): FilterValue; greaterThan(value: U): FilterValue; greaterOrEqual(value: U): FilterValue; like(value: string): FilterValue; withinGeoRange(value: GeoRangeFilter): FilterValue; } export declare class FilterRef implements Filter { private target; constructor(target: TargetRefs); byRef & string>(linkOn: K): Filter>; byRefMultiTarget & string>(linkOn: K, targetCollection: string): FilterRef>; byProperty & string>(name: K, length?: boolean): FilterProperty; byRefCount & string>(linkOn: K): FilterCount; byId(): FilterId; byCreationTime(): FilterCreationTime; byUpdateTime(): FilterUpdateTime; } export declare class FilterCount extends FilterBase { constructor(linkOn: string, target?: TargetRefs); equal(value: number): FilterValue; notEqual(value: number): FilterValue; lessThan(value: number): FilterValue; lessOrEqual(value: number): FilterValue; greaterThan(value: number): FilterValue; greaterOrEqual(value: number): FilterValue; } export declare class FilterId extends FilterBase { constructor(target?: TargetRefs); equal(value: string): FilterValue; notEqual(value: string): FilterValue; containsAny(value: string[]): FilterValue; } export declare class FilterTime extends FilterBase { containsAny(value: (string | Date)[]): FilterValue; equal(value: string | Date): FilterValue; notEqual(value: string | Date): FilterValue; lessThan(value: string | Date): FilterValue; lessOrEqual(value: string | Date): FilterValue; greaterThan(value: string | Date): FilterValue; greaterOrEqual(value: string | Date): FilterValue; private toValue; } export declare class FilterCreationTime extends FilterTime { constructor(target?: TargetRefs); } export declare class FilterUpdateTime extends FilterTime { constructor(target?: TargetRefs); }