import { CollectionQuery, FilterGroup, FilterStatement, Operator, RelationshipExistsFilter, SubQueryFilter, WhereFilter } from '@triplit/db'; import { Entity } from './types.js'; import { EntityStoreQueryEngine } from './query-engine.js'; import { DBSchema } from './db.js'; /** * During query execution, determine if an entity satisfies a filter */ export declare function satisfiesFilter(execution: EntityStoreQueryEngine, entity: { collectionName: string; data: Entity; }, filter: WhereFilter): Promise; export declare function satisfiesNonRelationalFilter(collectionName: string, entity: Entity, filter: WhereFilter, schema?: DBSchema): boolean; export declare function satisfiesRelationalFilter(execution: EntityStoreQueryEngine, entity: { collectionName: string; data: Entity; }, filter: SubQueryFilter): Promise; export declare function satisfiesSetFilter(setValue: Record, op: Operator, filterValue: any): boolean; export declare function satisfiesRegisterFilter(value: any, op: Operator, filterValue: any): boolean; export declare function isFilterStatement(filter: WhereFilter): filter is FilterStatement; export declare function isFilterGroup(filter: WhereFilter): filter is FilterGroup; export declare function isSubQueryFilter(filter: WhereFilter): filter is SubQueryFilter; export declare function isExistsFilter(filter: WhereFilter): filter is RelationshipExistsFilter; export declare function isBooleanFilter(filter: WhereFilter): filter is boolean; export declare function isWhereFilter(filter: any): filter is WhereFilter; /** * Based on the type of filter, determine its priority in execution * 1. Boolean filters * 2. Basic filters * 3. Group filters (which are then ordered by their own priority) * 4. Relational filters (subqueries, will take the longest to execute) */ export declare function getFilterPriorityOrder(where: CollectionQuery['where']): number[];