import type { QueryOperationTypesBase, StorageTable } from '@prisma-next/sql-contract/types'; import type { AnyFromSource, SelectAst } from '@prisma-next/sql-relational-core/ast'; import type { CodecTypesBase, ScopeField } from '@prisma-next/sql-relational-core/expression'; export type { ScopeField }; export type TraitField = { traits: readonly string[]; nullable: boolean }; export type FieldSpec = ScopeField | TraitField; export type GatedMethod = Capabilities extends Required ? Method : never; export declare const JoinOuterScope: unique symbol; export declare const SubqueryMarker: unique symbol; export type Expand = { [K in keyof T]: T[K] } & unknown; export type EmptyRow = Record; export type ScopeTable = Record; export type Scope = { topLevel: ScopeTable; namespaces: Record; }; export type JoinSource = { readonly [JoinOuterScope]: { topLevel: Row; namespaces: Record; }; getJoinOuterScope(): Scope; buildAst(): AnyFromSource; }; export type DefaultScope = { topLevel: StorageTableToScopeTable; namespaces: { [K in Name]: StorageTableToScopeTable
; }; }; export type StorageTableToScopeTable = { [K in keyof T['columns']]: { codecId: T['columns'][K]['codecId']; nullable: T['columns'][K]['nullable']; } & (T['columns'][K] extends { many: true } ? { many: true } : Record); }; export type MergeScopes = { topLevel: Expand< Omit & Omit >; namespaces: Expand; }; export type RebindScope = { topLevel: S['topLevel']; namespaces: Expand & Record>; }; export type NullableScopeTable = { [K in keyof S]: { codecId: S[K]['codecId']; nullable: true }; }; export type NullableScope = { topLevel: NullableScopeTable; namespaces: { [TableName in keyof S['namespaces']]: NullableScopeTable; }; }; export type Subquery> = { [SubqueryMarker]: RowType; buildAst(): SelectAst; getRowFields(): Record; }; export type QueryContext = { readonly codecTypes: CodecTypesBase; readonly capabilities: Record>; readonly queryOperationTypes: QueryOperationTypesBase; readonly resolvedColumnOutputTypes: Record; }; export type { StorageTable };