import { OneOrMany } from '../util/types'; import { Operator } from '@google-cloud/datastore/build/src/query'; export type Filter = OneOrMany>; export interface ComplexFilter { op: Operator; value: T; } type FilterType = [T] extends [Date] ? Filter : [T] extends [object] ? Filters : Filter; type FilterArray = T[0] extends object ? Filters : FilterType; export type Filters = { [K in keyof T]?: T[K] extends any[] ? FilterArray : FilterType; }; export declare function isComplexFilter(filter: Filter): filter is ComplexFilter; interface Query { filter(path: string, operation: Operator, value: any): this; filter(path: string, value: any): this; } export declare const buildFilters: (query: Q, filters: Filters, pathPrefix?: string) => Q; export {};