import * as core from '@prismamedia/graphql-platform'; import type { Merge } from 'type-fest'; import type { MariaDBBrokerSubscriptionsStateTable } from '../../../broker/table/subscriptions-state.js'; import type { Column, Table } from '../../../schema.js'; import { AuthorizedTableCTE, AuthorizedTableDerivedTable, Subquery, type AbstractSelectOptions } from '../query/select.js'; import { type WhereCondition } from './where-condition.js'; export declare class InlineTableAuthorization { readonly tableReference: TableReference; readonly filter: core.NodeFilter; readonly name: string; constructor(tableReference: TableReference, filter: core.NodeFilter); get condition(): WhereCondition; } export type TableAuthorization = AuthorizedTableCTE | AuthorizedTableDerivedTable | InlineTableAuthorization; export declare abstract class AbstractTableReference { readonly table: Table; readonly context?: core.OperationContext | undefined; abstract readonly root: TableFactor; abstract readonly source: TableAuthorization | Table; abstract readonly alias: string; readonly joinsByAlias: Map; readonly subqueries: Set; constructor(table: Table, context?: core.OperationContext | undefined); abstract toString(): string; isRoot(): boolean; authorize(tableReference: TableReference): TableAuthorization | Table; escapeColumnIdentifier(column: Column): string; escapeColumnIdentifierByLeaf(leaf: core.Leaf): string; getJoinConditions(edgeOrReverseEdge: core.Edge | core.ReverseEdge, head: TableReference): Array; join(edgeOrUniqueReverseEdge: core.Edge | core.UniqueReverseEdge): JoinTable; subquery(edgeOrReverseEdge: core.Edge | core.ReverseEdge, options?: Merge): Subquery; } export interface TableFactorOptions { readonly context?: core.OperationContext; readonly alias?: string; readonly parent?: TableReference; readonly useCommonTableExpression?: boolean; } export declare class TableFactor extends AbstractTableReference { #private; readonly useCommonTableExpression: boolean; readonly root: TableFactor; readonly alias: string; readonly source: TableAuthorization | Table; readonly authorizedTables: Map; constructor(table: Table, options?: TableFactorOptions); joinSubscriptionsState(subscriptionId: core.ChangesSubscriptionStream['id']): JoinSubscriptionsStateTable; toString(): string; } export declare enum JoinTableKind { LEFT = 0, INNER = 1 } export declare class JoinTable extends AbstractTableReference { readonly parent: TableReference; readonly edgeOrUniqueReverseEdge: core.Edge | core.UniqueReverseEdge; readonly root: TableFactor; readonly alias: string; readonly source: TableAuthorization | Table; constructor(parent: TableReference, edgeOrUniqueReverseEdge: core.Edge | core.UniqueReverseEdge); get kind(): JoinTableKind; get condition(): WhereCondition; toString(): string; } export declare class JoinSubscriptionsStateTable { readonly parent: TableReference; readonly table: MariaDBBrokerSubscriptionsStateTable; readonly subscriptionId: core.ChangesSubscriptionStream['id']; readonly alias: string; constructor(parent: TableReference, table: MariaDBBrokerSubscriptionsStateTable, subscriptionId: core.ChangesSubscriptionStream['id']); toString(): string; escapeColumnIdentifier(columnOrName: Column | Column['name']): string; } export type TableReference = TableFactor | JoinTable; export declare function isTableReference(maybeTableReference: unknown): maybeTableReference is TableReference; //# sourceMappingURL=table-reference.d.ts.map