import { BooleanField, DateField, Field, JSONField, NumberField, SQLNativeField, StringField, TimestampField } from '../fields';
import { CellBase } from './base';
import { Cell, NestCell } from '.';
import type * as Malloy from '@malloydata/malloy-interfaces';
export declare class NullCell extends CellBase {
    readonly cell: Malloy.CellWithNullCell;
    readonly field: Field;
    readonly parent: NestCell | undefined;
    constructor(cell: Malloy.CellWithNullCell, field: Field, parent: NestCell | undefined);
    get value(): null;
    get literalValue(): Malloy.LiteralValue | undefined;
}
/**
 * Unified cell for all numeric values.
 * Handles both regular numbers and big numbers (bigint/bigdecimal).
 */
export declare class NumberCell extends CellBase {
    readonly cell: Malloy.CellWithNumberCell;
    readonly field: NumberField;
    readonly parent: NestCell | undefined;
    constructor(cell: Malloy.CellWithNumberCell, field: NumberField, parent: NestCell | undefined);
    /**
     * Returns the numeric value as a JS number.
     * May be lossy for bigint/bigdecimal values > 2^53.
     */
    get value(): number;
    /**
     * Returns the precise string representation for large values.
     * Undefined for regular numbers that fit in JS number.
     */
    get stringValue(): string | undefined;
    /**
     * Returns the number subtype from the schema.
     * 'integer' | 'decimal' | 'bigint' | future 'bigdecimal'
     */
    get subtype(): Malloy.NumberSubtype | undefined;
    /**
     * Returns true if this value needs string representation for precision.
     */
    needsStringPrecision(): boolean;
    /**
     * Returns the numeric value as a JS number.
     * Alias for .value for API consistency.
     */
    numberValue(): number;
    /**
     * Returns the value as a JS BigInt for precise integer arithmetic.
     * Only valid when stringValue is defined and subtype is 'bigint'.
     */
    bigint(): bigint;
    compareTo(other: Cell): 1 | 0 | -1;
    get literalValue(): Malloy.LiteralValue | undefined;
}
export declare class DateCell extends CellBase {
    readonly cell: Malloy.CellWithDateCell;
    readonly field: DateField;
    readonly parent: NestCell | undefined;
    constructor(cell: Malloy.CellWithDateCell, field: DateField, parent: NestCell | undefined);
    get value(): Date;
    get timeframe(): Malloy.DateTimeframe | undefined;
    compareTo(other: Cell): 1 | 0 | -1;
    get literalValue(): Malloy.LiteralValue | undefined;
}
export declare class TimestampCell extends CellBase {
    readonly cell: Malloy.CellWithTimestampCell;
    readonly field: TimestampField;
    readonly parent: NestCell | undefined;
    constructor(cell: Malloy.CellWithTimestampCell, field: TimestampField, parent: NestCell | undefined);
    get value(): Date;
    get timeframe(): Malloy.TimestampTimeframe | undefined;
    compareTo(other: Cell): 1 | 0 | -1;
    get literalValue(): Malloy.LiteralValue | undefined;
}
export declare class JSONCell extends CellBase {
    readonly cell: Malloy.CellWithJSONCell;
    readonly field: JSONField;
    readonly parent: NestCell | undefined;
    constructor(cell: Malloy.CellWithJSONCell, field: JSONField, parent: NestCell | undefined);
    get value(): any;
    compareTo(other: Cell): 1 | 0 | -1;
}
export declare class SQLNativeCell extends CellBase {
    readonly cell: Malloy.CellWithSQLNativeCell;
    readonly field: SQLNativeField;
    readonly parent: NestCell | undefined;
    constructor(cell: Malloy.CellWithSQLNativeCell, field: SQLNativeField, parent: NestCell | undefined);
    get value(): any;
    compareTo(other: Cell): 1 | 0 | -1;
}
export declare class StringCell extends CellBase {
    readonly cell: Malloy.CellWithStringCell;
    readonly field: StringField;
    readonly parent: NestCell | undefined;
    constructor(cell: Malloy.CellWithStringCell, field: StringField, parent: NestCell | undefined);
    get value(): string;
    compareTo(other: Cell): number;
    get literalValue(): Malloy.LiteralValue | undefined;
}
export declare class BooleanCell extends CellBase {
    readonly cell: Malloy.CellWithBooleanCell;
    readonly field: BooleanField;
    readonly parent: NestCell | undefined;
    constructor(cell: Malloy.CellWithBooleanCell, field: BooleanField, parent: NestCell | undefined);
    get value(): boolean;
    compareTo(other: Cell): 1 | 0 | -1;
    get literalValue(): Malloy.LiteralValue | undefined;
}
