import type { GeoJsonDataType } from './types'; import { DataType, TypedValue } from './DataPrimitive'; /** * @implements {TypedValue} * TypeSafeValue implements the TypedValue interface, and adds additional methods */ export declare class TypeSafeValue implements TypedValue { /** * isTypeSafe. This is a marker field. The presence of this field can be used at runtime to determine if TypedValue is rigorous, * loose. Loose TypedValue such as {type:'number', value:'cat'} are handy for testing, but can lie. Obviously 'cat' * is not a number. If the isTypeSafe field is present then the instance is a TypeSafeValue * @type {boolean} */ readonly isTypeSafe: boolean; /** * coercedValue. This field retains the value after coercion. */ readonly coercedValue: any; readonly type: T; readonly value: any; constructor(type: T, value: any, coercedValue: any); /** * returns a TypeSafeValue, either by converting the non TypeSafeValue to * a TypeSafeValue, or by simply returning the passed-in TypeSafeValue * @param {TypedValue} typedValue * @returns {TypeSafeValue} */ static from(typedValue: TypedValue): TypeSafeValue; /** * Creates a TypeSafeValue from a raw value * @param value * @returns {TypeSafeValue} */ static fromRaw(value: any): TypeSafeValue; /** * attempts to coerce the provided value to the provided type. Returns tuple * of the coerced value and a boolean telling if the coercion was clean (true) * or if the coercion was likely produced an unusable result, such as NaN for * a number, or '' for a color. * @param {TypedValue} typedValue * @returns {[any]} */ private static coerceValue; toRawCoercedValue(): string | number | null | GeoJsonDataType; toRawValue(): string | number | null | GeoJsonDataType; }