import { CollectionQuery, ModelFilterStatement, OrderStatement, QueryOrder, QuerySelectionFromQuery, QueryWhere, RefCollectionName, RefSubquery, RelationshipRef, RelationSubquery, SchemaQuery, ValueCursor, WithInclusion, WithInclusionRaw, WithSelection } from './types/index.js'; import { CollectionNameFromModels, Models } from '../schema/index.js'; import { Writeable } from '../types.js'; export declare function queryBuilder = Models, CN extends CollectionNameFromModels = CollectionNameFromModels>(collectionName: CN): QueryBuilder, {}>>; export declare class QueryBuilder = Models, CN extends CollectionNameFromModels = CollectionNameFromModels, Q extends CollectionQuery = WithInclusion, {}>> implements CollectionQuery { collectionName: CN; select: Q['select']; where: Q['where']; limit: Q['limit']; order: Q['order']; include: Q['include']; after: Q['after']; vars: Q['vars']; constructor(collectionName: CN, query?: Omit); Select>(value: ReadonlyArray | undefined): QueryBuilder>; Where(...args: FilterInput): QueryBuilder; Id(value: string): QueryBuilder; Limit(value: number): QueryBuilder; Order(...args: OrderInput): QueryBuilder; After(value: AfterInput, inclusive?: boolean): QueryBuilder; Vars(value: Record): QueryBuilder; Include, RQ extends RefSubquery>(alias: Alias, queryExt: RQ): QueryBuilder>; Include>(alias: Alias, builder: (rel: >(ref: Ref) => RelationBuilder) => RQ): QueryBuilder>; Include>(alias: Alias): QueryBuilder>; SubqueryOne>(alias: Alias, subquery: SQ): QueryBuilder; }>>; SubqueryOne>(alias: Alias, subquery: (sub: >(collectionName: CName) => QueryBuilder) => SQ): QueryBuilder; }>>; SubqueryMany>(alias: Alias, subquery: SQ): QueryBuilder; }>>; SubqueryMany>(alias: Alias, subquery: (sub: >(collectionName: CName) => QueryBuilder) => SQ): QueryBuilder; }>>; } export declare function relationBuilder, CN extends CollectionNameFromModels, Ref extends RelationshipRef>(ref: Ref): RelationBuilder, {}>>; export declare class RelationBuilder = Models, CN extends CollectionNameFromModels = CollectionNameFromModels, Ref extends RelationshipRef = RelationshipRef, RQ extends RefSubquery = WithInclusionRaw, {}>> implements RefSubquery { _extends: Ref; select: RQ['select']; where: RQ['where']; limit: RQ['limit']; order: RQ['order']; include: RQ['include']; constructor(ref: Ref, query?: RQ); Select[number]>(value: Selection[]): RelationBuilder>; Where(...args: FilterInput>): RelationBuilder; Id(id: string): RelationBuilder; Limit(value: number): RelationBuilder; Order(...args: OrderInput>): RelationBuilder; Include>>(alias: Alias, queryExt: NextRQ): RelationBuilder>; Include>>(alias: Alias, builder: (rel: >>(ref: NextRef) => RelationBuilder, NextRef>) => NextRQ): RelationBuilder>; Include>>(alias: Alias): RelationBuilder>; SubqueryOne>(alias: Alias, subquery: SQ): RelationBuilder; }>>; SubqueryOne>(alias: Alias, subquery: (sub: >(collectionName: CName) => QueryBuilder) => SQ): RelationBuilder; }>>; SubqueryMany>(alias: Alias, subquery: SQ): RelationBuilder; }>>; SubqueryMany>(alias: Alias, subquery: (sub: >(collectionName: CName) => QueryBuilder) => SQ): RelationBuilder; }>>; } /** * Input for builder where() clauses */ export type FilterInput, CN extends CollectionNameFromModels> = [typeof undefined] | Writeable> | QueryWhere | [QueryWhere[number] | undefined] | [QueryWhere]; /** * Input for builder order() clauses */ export type OrderInput, CN extends CollectionNameFromModels> = [typeof undefined] | OrderStatement | QueryOrder | [QueryOrder[number] | undefined] | [QueryOrder]; /** * Input for builder after() clauses */ export type AfterInput, CN extends CollectionNameFromModels> = ValueCursor | undefined; export declare const QUERY_INPUT_TRANSFORMERS: , CN extends CollectionNameFromModels>() => { where: >(q: Pick, "where">, ...args: A) => QueryWhere; order: (q: Pick, "order">, ...args: OrderInput) => QueryOrder | undefined; include(q: Pick, "include">, alias: Alias, query?: any): Record; after(q: Pick, "after" | "order">, after: AfterInput, inclusive?: boolean): [ValueCursor, boolean] | undefined; };