import { MetaType } from '../metaTypeCreator'; import { QueryAllConstraints, QueryConstraints } from '../queryConstraints'; import { QueryConstraintLimitation, FlattenQueryCompositeFilterConstraint, ValidateTopLevelQueryCompositeFilterPartOne, ValidateTopLevelQueryCompositeFilterPartTwo, ValidateOrderByAndInequalityWhere } from '../queryConstraintsLimitations'; import { CollectionReference } from './collection'; import { CollectionGroup } from './collectionGroup'; declare const query: unique symbol; type QuerySymbol = typeof query; declare class QueryClass { protected 'Firelord_Do_Not_Access': QuerySymbol; } /** * A `Query` refers to a query which you can read or listen to. You can also * construct refined `Query` objects by adding filters and ordering. */ export interface Query extends QueryClass { } export type GeneralQuery = Query | CollectionReference | CollectionGroup; export type QueryFunction = , const QQCs extends readonly QueryAllConstraints[]>(query: Q extends never ? Q : GeneralQuery, ...queryConstraints: QQCs extends never ? QQCs : T extends infer V extends MetaType ? ValidateTopLevelQueryCompositeFilterPartOne extends infer B extends string ? B : ValidateTopLevelQueryCompositeFilterPartTwo extends infer C extends string ? C : FlattenQueryCompositeFilterConstraint extends infer AllFlattenQCs extends QueryConstraints[] ? ValidateOrderByAndInequalityWhere extends infer K extends string ? K : QueryConstraintLimitation : never : never) => Query; export {};