import { Tag } from '@malloydata/malloy-tag';
import { Field, NestField, RecordField, RecordOrRepeatedRecordField, BasicAtomicField, TimeField, RootField, ArrayField, BooleanField, DateField, JSONField, NumberField, RepeatedRecordField, SQLNativeField, StringField, TimestampField } from '.';
import { RenderPluginInstance } from '../../api/plugin-types';
import * as Malloy from '@malloydata/malloy-interfaces';
export declare abstract class FieldBase {
    readonly field: Malloy.DimensionInfo;
    readonly parent: Field | undefined;
    readonly tag: Tag;
    readonly path: string[];
    protected readonly metadataTag: Tag;
    readonly valueSet: Set<string | number | boolean>;
    protected plugins: RenderPluginInstance[];
    protected _renderAs: string;
    getPlugins(): RenderPluginInstance[];
    setPlugins(plugins: RenderPluginInstance[]): void;
    renderAs(): string;
    constructor(field: Malloy.DimensionInfo, parent: Field | undefined, 
    /**
     * Performance optimization: Skip metadata tag parsing for synthetic fields.
     * Used when creating internal RecordField instances that don't need metadata.
     */
    skipTagParsing?: boolean);
    isRoot(): boolean;
    root(): RootField;
    get drillStableExpression(): Malloy.Expression | undefined;
    get sourceName(): string;
    get sourceArguments(): Malloy.ParameterValue[] | undefined;
    get name(): string;
    fieldAt(path: string[] | string): Field;
    getParentRecord(levelsUp: number): RecordField;
    get key(): string;
    fieldAtPath(path: string[]): Field;
    registerNullValue(): void;
    get drillFilters(): string[];
    getStableDrillFilter(filter: Tag): Malloy.Filter | undefined;
    get stableDrillFilters(): Malloy.Filter[] | undefined;
    get referenceId(): string | undefined;
    private escapeIdentifier;
    private identifierCode;
    drillExpression(): string;
    wasDimension(): boolean;
    wasCalculation(): boolean;
    isHidden(): boolean;
    get minNumber(): number | undefined;
    get maxNumber(): number | undefined;
    get maxString(): string | undefined;
    asField(): Field;
    isArray(): this is ArrayField;
    isRepeatedRecord(): this is RepeatedRecordField;
    isRecord(): this is RecordField;
    isNumber(): this is NumberField;
    isBoolean(): this is BooleanField;
    isString(): this is StringField;
    isRecordOrRepeatedRecord(): this is RecordOrRepeatedRecordField;
    isDate(): this is DateField;
    isTimestamp(): this is TimestampField;
    isTime(): this is TimeField;
    isSQLNative(): this is SQLNativeField;
    isJSON(): this is JSONField;
    isBasic(): this is BasicAtomicField;
    isNest(): this is NestField;
    getLocationInParent(): any;
    isLastChild(): any;
    isFirstChild(): any;
    pathTo(childField: Field): string;
}
