import { InsertQueryNode } from './insert-query-node.js'; import { SelectQueryNode } from './select-query-node.js'; import { UpdateQueryNode } from './update-query-node.js'; import { DeleteQueryNode } from './delete-query-node.js'; import { WhereNode } from './where-node.js'; import type { JoinNode } from './join-node.js'; import type { SelectionNode } from './selection-node.js'; import { ReturningNode } from './returning-node.js'; import type { OperationNode } from './operation-node.js'; import { ExplainNode } from './explain-node.js'; import type { ExplainFormat } from '../util/explainable.js'; import type { Expression } from '../expression/expression.js'; import { MergeQueryNode } from './merge-query-node.js'; import type { TopNode } from './top-node.js'; import { OutputNode } from './output-node.js'; import { OrderByNode } from './order-by-node.js'; import type { OrderByItemNode } from './order-by-item-node.js'; export type QueryNode = SelectQueryNode | InsertQueryNode | UpdateQueryNode | DeleteQueryNode | MergeQueryNode; type HasJoins = { joins?: ReadonlyArray; }; type HasWhere = { where?: WhereNode; }; type HasReturning = { returning?: ReturningNode; }; type HasExplain = { explain?: ExplainNode; }; type HasTop = { top?: TopNode; }; type HasOutput = { output?: OutputNode; }; type HasEndModifiers = { endModifiers?: ReadonlyArray; }; type HasOrderBy = { orderBy?: OrderByNode; }; type QueryNodeFactory = Readonly<{ is(node: OperationNode): node is QueryNode; cloneWithEndModifier(node: T, modifier: OperationNode): Readonly; cloneWithWhere(node: T, operation: OperationNode): Readonly; cloneWithJoin(node: T, join: JoinNode): Readonly; cloneWithReturning(node: T, selections: ReadonlyArray): Readonly; cloneWithoutReturning(node: T): Readonly; cloneWithoutWhere(node: T): Readonly; cloneWithExplain(node: T, format: ExplainFormat | undefined, options: Expression | undefined): Readonly; cloneWithTop(node: T, top: TopNode): Readonly; cloneWithOutput(node: T, selections: ReadonlyArray): Readonly; cloneWithOrderByItems(node: T, items: ReadonlyArray): Readonly; cloneWithoutOrderBy(node: T): Readonly; }>; /** * @internal */ export declare const QueryNode: QueryNodeFactory; export {};