import { Optional } from "../../common";
import { MarkerResultBase, MenstrualPhase, TimeOfDay } from "../marker-result-base";
import { Color } from "../range-category";
import { APINumericResult, StoreNumericResult } from "./interfaces";
export declare class NumericResult extends MarkerResultBase {
    /**
     * The value of this marker result measured using unit specified by user.
     */
    value: number;
    /**
     * The value of this marker result measured using base unit for the marker (calculated).
     */
    baseValue: number | null;
    /**
     * The id of the unit of this marker result.
     */
    unitId: string;
    /**
     * Unit string.
     */
    unitStr: string | null;
    /**
     * Ids of the numeric ranges that match this marker RangeCondition (calculated).
     */
    ranges: string[] | null;
    /**
     * Id of the numeric range that matches this result (calculated).
     */
    matchedRangeId: string | null;
    constructor(profileId: string, takenAt: string, value: number, baseValue: number | null, unitId: string, unitStr: string | null, markerId: string | null, menstrualPhase: MenstrualPhase | null, timeOfDay: TimeOfDay | null, note: string | null, archived: boolean, synonym: string, ranges: string[] | null, matchedRange: string | null, bmi: number | null, labShopOrderId: string | null, isStale: boolean | null, isMostRecent: boolean | null, score: number | null, color: Color | null, recommendationIds: string[], recommendationSlugs: string[]);
    /**
     * The name of the numeric result resource on the API server.
     */
    static get resourceName(): string;
    /**
     * The name of the service containing the numeric result resource.
     */
    static get serviceName(): string;
    /**
     * Convert the numeric result into a JSON serializable object for the API server.
     */
    serializeAPI(): Optional<APINumericResult, "id">;
    /**
     * Deserialize the data from the API server.
     *
     * @param data The numeric result data from the API server.
     */
    deserializeAPI(data: APINumericResult): void;
    /**
     * Serialize the numeric result into a format for storing in the Redux store.
     */
    serializeRedux(): StoreNumericResult;
    /**
     * Create a numeric result from the API server data.
     *
     * @param data Data from the api server.
     *
     * @returns The numeric result object.
     */
    static apiFactory(data: APINumericResult): NumericResult;
    /**
     * Create a numeric result from the Redux store data.
     *
     * @param data Data from the api server.
     *
     * @returns The numeric result object.
     */
    static reduxFactory(data: StoreNumericResult): NumericResult;
}
