import { AliasNode } from '../operation-node/alias-node.js'; import { TableNode } from '../operation-node/table-node.js'; import { AliasedExpressionOrFactory } from './expression-parser.js'; import { OperationNode } from '../operation-node/operation-node.js'; import { AliasedExpression } from '../expression/expression.js'; import { DrainOuterGeneric, ShallowRecord } from '../util/type-utils.js'; export type TableExpression = AnyAliasedTable | AnyTable | AliasedExpressionOrFactory; export type TableExpressionOrList = TableExpression | ReadonlyArray>; export type TableReference = SimpleTableReference | AliasedExpression; export type SimpleTableReference = AnyAliasedTable | AnyTable; export type AnyAliasedTable = `${AnyTable} as ${string}`; export type TableReferenceOrList = TableReference | ReadonlyArray>; export type From = DrainOuterGeneric<{ [C in keyof DB | ExtractAliasFromTableExpression]: C extends ExtractAliasFromTableExpression ? ExtractRowTypeFromTableExpression : C extends keyof DB ? DB[C] : never; }>; export type FromTables = DrainOuterGeneric>; export type ExtractTableAlias = TE extends `${string} as ${infer TA}` ? TA extends keyof DB ? TA : never : TE extends keyof DB ? TE : never; export type PickTableWithAlias> = T extends `${infer TB} as ${infer A}` ? TB extends keyof DB ? ShallowRecord : never : never; type ExtractAliasFromTableExpression = TE extends string ? TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : never : TE extends AliasedExpression ? QA : TE extends (qb: any) => AliasedExpression ? QA : never; type ExtractRowTypeFromTableExpression = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedExpression ? QA extends A ? O : never : TE extends (qb: any) => AliasedExpression ? QA extends A ? O : never : never; type AnyTable = keyof DB & string; export declare function parseTableExpressionOrList(table: TableExpressionOrList): OperationNode[]; export declare function parseTableExpression(table: TableExpression): OperationNode; export declare function parseAliasedTable(from: string): TableNode | AliasNode; export declare function parseTable(from: string): TableNode; export {};