import type { TypedArray } from "./types.ts"; export type DiscriminatorArray = Uint8Array | Uint16Array | Uint32Array; /** * Count discriminators and compute group indices in a single pass. * Returns counts (for decoding groups) and indices (for O(1) value access). */ export declare function countAndIndexDiscriminators(discriminators: DiscriminatorArray, nullValue: number): { counts: Map; indices: Uint32Array; }; /** * Base interface for all column types. * Supports virtual random access and iteration. */ export interface Column extends Iterable { readonly length: number; /** ClickHouse type string, e.g. "UInt32", "Tuple(Float64, Float64)" */ readonly type: string; /** Get value at index. */ get(index: number): unknown; } /** * Common implementation for iteration. */ declare abstract class AbstractColumn implements Column { abstract readonly length: number; abstract readonly type: string; abstract get(index: number): unknown; [Symbol.iterator](): Iterator; } export declare class DataColumn extends AbstractColumn { readonly type: string; readonly data: T; constructor(type: string, data: T); get length(): number; get(index: number): unknown; } export declare class EnumColumn extends AbstractColumn { readonly type: string; readonly data: Int8Array | Int16Array; readonly valueToName: Map; private enumAsNumber; constructor(type: string, data: Int8Array | Int16Array, valueToName: Map, enumAsNumber?: boolean); get length(): number; get(index: number): string | number; } export declare class TupleColumn extends AbstractColumn { readonly type: string; readonly elements: { name: string | null; }[]; readonly columns: Column[]; readonly isNamed: boolean; constructor(type: string, elements: { name: string | null; }[], columns: Column[], isNamed: boolean); get length(): number; get(index: number): unknown; } export declare class MapColumn extends AbstractColumn { readonly type: string; readonly offsets: BigUint64Array; readonly keys: Column; readonly values: Column; private mapAsArray; constructor(type: string, offsets: BigUint64Array, keys: Column, values: Column, mapAsArray?: boolean); get length(): number; get(index: number): Map | [unknown, unknown][]; } export declare class VariantColumn extends AbstractColumn { readonly type: string; readonly discriminators: Uint8Array; readonly groups: Map; private readonly groupIndices; constructor(type: string, discriminators: Uint8Array, groups: Map, groupIndices?: Uint32Array); get length(): number; get(index: number): [number, unknown] | null; } export declare class DynamicColumn extends AbstractColumn { readonly type: string; readonly types: string[]; readonly discriminators: DiscriminatorArray; readonly groups: Map; private readonly groupIndices; private readonly nullDisc; constructor(types: string[], discriminators: DiscriminatorArray, groups: Map, groupIndices?: Uint32Array); get length(): number; get(index: number): unknown; } export declare class JsonColumn extends AbstractColumn { readonly type: string; readonly paths: string[]; readonly pathColumns: Map; private _length; constructor(paths: string[], pathColumns: Map, length: number); get length(): number; get(index: number): Record; /** Get a specific JSON path as its own virtual column. */ getPath(path: string): Column | undefined; } export declare class NullableColumn extends AbstractColumn { readonly type: string; readonly nullFlags: Uint8Array; readonly inner: Column; constructor(type: string, nullFlags: Uint8Array, inner: Column); get length(): number; get(index: number): unknown; } export declare class ArrayColumn extends AbstractColumn { readonly type: string; readonly offsets: BigUint64Array; readonly inner: Column; constructor(type: string, offsets: BigUint64Array, inner: Column); get length(): number; get(index: number): unknown[]; } export {}; //# sourceMappingURL=columns.d.ts.map