import Parser, { type TokenReader } from './stream-parser';
import { type ColumnMetadata } from './colmetadata-token-parser';
import { RowToken } from './token';
import { PLPReader } from '../value-parser';
export interface Column {
    value: unknown;
    metadata: ColumnMetadata;
}
/**
 * Reads the column values of a row one by one. Column values - especially PLP
 * values - can be arbitrarily large, so the progress is kept across chunks.
 */
export declare class ColumnValuesReader {
    columns: Column[];
    plpReader: PLPReader | undefined;
    constructor();
    /**
     * Read the remaining column values. Columns flagged in the `nullBitmap`
     * have no data and are `null`.
     */
    readColumns(parser: Parser, nullBitmap: Buffer | undefined): void;
}
/**
 * Reads a `ROW` token.
 */
export declare class RowTokenReader extends ColumnValuesReader implements TokenReader {
    read(parser: Parser): RowToken;
}
/**
 * Map columns by name. If multiple columns share a name, the first one wins.
 */
export declare function toColumnsMap(columns: Column[]): {
    [key: string]: Column;
};
