/** * The declared type of an output column: `type="int64"`, `type="double|null"`, * `type="decimal(18,2)|null"` on a named ``. * * Pure parsing of the attribute into a structured type. The mapping onto a * concrete container (Parquet physical + logical type) lives with that writer — * this layer is format-agnostic, so a future Arrow/Avro writer reuses it. * Spec: docs/specs/2026-07-19-typed-output-and-parquet-writer.md §2. */ export declare const COLUMN_KINDS: readonly ["bool", "int32", "int64", "uint8", "uint16", "uint32", "uint64", "float", "float16", "double", "string", "enum", "date", "timestamp", "decimal", "uuid", "json"]; export type ColumnKind = (typeof COLUMN_KINDS)[number]; export interface ColumnType { readonly kind: ColumnKind; /** `|null` — the column may hold NULL (Parquet OPTIONAL). */ readonly nullable: boolean; /** decimal only: total digits. */ readonly precision?: number; /** decimal only: digits after the point. */ readonly scale?: number; } /** * A LIST column: `type="[]int64"`, or `type="[]int64|null"` where the `|null` * binds to the ELEMENT (read left to right: "a list of (int64 or nothing)"). * That binding is what `missing=` on a repeating generator needs — it blanks * individual elements, never the list as a whole. * * There is no nullable LIST: an empty cell is an empty list, and we have no way * to express "no list at all", so we do not pretend to. */ export interface ListColumnType { readonly kind: 'list'; readonly element: ColumnType; } /** * A MAP column: `type="{}int64"`, or `type="{}int64|null"` where the `|null` * binds to the VALUE — the same left-to-right reading a list has ("a map to * (int64 or nothing)"). * * The KEY is always text. Parquet requires map keys to be non-null, and a cell * arrives here as text anyway, so a second type parameter would buy a * conversion nobody asked for and a syntax twice as wide. * * There is no nullable MAP, for the reason a list has none: an empty cell is an * empty map, and there is no way to say "no map at all". */ export interface MapColumnType { readonly kind: 'map'; readonly value: ColumnType; } export type OutputColumnType = ColumnType | ListColumnType | MapColumnType; export declare function isListType(type: OutputColumnType): type is ListColumnType; export declare function isMapType(type: OutputColumnType): type is MapColumnType; /** A list or a map — the shapes that hold several values in one cell. */ export declare function isRepeatedType(type: OutputColumnType): boolean; /** * Parse a `type="…"` that may be a list. Everything else defers to * `parseColumnType`, so scalar behaviour is untouched. */ export declare function parseOutputColumnType(raw: string): OutputColumnType; /** Parse a `type="…"` attribute. Throws with a user-facing message on bad input. */ export declare function parseColumnType(raw: string): ColumnType; //# sourceMappingURL=column-type.d.ts.map