import type { GeoJsonDataType } from './types';
import { DataPrimitive, TypedValue, DataType, IDataPoint } from './DataPrimitive';
import { TypeSafeValue } from './TypeSafeValue';
/**
 * Base DataPoint class and associated DataPoint selectors
 * @implements {DataPrimitive}
 * @implements {IDataPoint}
 */
export declare class DataPoint<T extends DataType = DataType> implements DataPrimitive<T>, IDataPoint<T> {
    private value;
    field: string;
    static count: number;
    static isDataPoint(o: any): o is DataPoint;
    static fromRaw(value: any): DataPoint;
    /**
     *
     * @param {string} field data field
     * @param {object} value data value + it's type (number, string, time, color, geojson)
     */
    constructor(field: string, value: TypedValue<T>);
    getValue(): TypeSafeValue<T>;
    /**
     * Sets the data point's value to a static TypedValue.
     * @param {TypedValue} v
     */
    setValue(v: TypedValue<T>): void;
    /**
     * Get only value of the data point.
     * @returns {string|number|GeoJsonDataType|null}
     */
    getRawValue(): string | number | GeoJsonDataType | null;
    /**
     * Get only the coerced value of the data point.
     * @returns {string|number|null}
     */
    getCoercedValue(): string | number | GeoJsonDataType | null;
    /**
     * Returns the data field of the point.
     * @public
     * @returns {DataPoint<'string'>}
     */
    getField(): DataPoint<'string'>;
    /**
     * Returns the data type of the point.
     * @public
     * @returns {string}
     */
    getType(): string;
}
