import { Optional, Resource } from "../../common";
import { Color } from "../range-category";
import { APIMarkerResult, MenstrualPhase, ResultType, StoreMarkerResult, TimeOfDay } from "./interfaces";
export declare class MarkerResultBase extends Resource {
    /**
     * The id of the profile that owns this result.
     */
    profileId: string;
    /**
     * The date of when the test was taken.
     */
    takenAt: string;
    /**
     * The id of the marker of this result.
     */
    markerId: string | null;
    /**
     * Number that corresponds to a menstrual phase (follicular, ovulation, luteal, postmenopausal).
     */
    menstrualPhase: MenstrualPhase | null;
    /**
     * Number that corresponds to a time of day (morning, afternoon, evening).
     */
    timeOfDay: TimeOfDay | null;
    /**
     * A note written by the user to keep track of some event related to this result.
     */
    note: string | null;
    /**
     * Whether marker result is archived.
     */
    archived: boolean;
    /**
     * Body mass index in Kg/m^2
     */
    bmi: number | null;
    /**
     * Type of resource
     */
    resultType: ResultType;
    /**
     * Chosen by user synonym.
     */
    synonym: string;
    /**
     * Id of the order (if purchased from our store)
     */
    labShopOrderId: string | null;
    /**
     * Color of the matching range category.
     */
    color: Color | null;
    /**
     * Whether marker result is stale.
     */
    isStale: boolean | null;
    /**
     * Whether marker result is the most recent.
     */
    isMostRecent: boolean | null;
    /**
     * Score showing deviation from normal.
     */
    score: number | null;
    /**
     * Ids of matched recommendations
     */
    recommendationIds: string[];
    /**
     * Slugs of matched recommendations (same order as ids)
     */
    recommendationSlugs: string[];
    constructor(profileId: string, takenAt: string, markerId: string | null, menstrualPhase: MenstrualPhase | null, timeOfDay: TimeOfDay | null, note: string | null, archived: boolean, resultType: ResultType, synonym: string, 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 marker result resource on the API server.
     */
    static get resourceName(): string;
    /**
     * The name of the service containing the marker result resource.
     */
    static get serviceName(): string;
    /**
     * Convert the marker result into a JSON serializable object for the API server.
     */
    serializeAPI(): Optional<APIMarkerResult, "id">;
    /**
     * Deserialize the data from the API server.
     *
     * @param data The marker result data from the API server.
     */
    deserializeAPI(data: APIMarkerResult): void;
    /**
     * Serialize the marker result into a format for storing in the Redux store.
     */
    serializeRedux(): StoreMarkerResult;
    /**
     * Create a marker result from the API server data.
     *
     * @param data Data from the api server.
     *
     * @returns The marker result object.
     */
    static apiFactory(data: APIMarkerResult): MarkerResultBase;
    /**
     * Create a marker result from the Redux store data.
     *
     * @param data Data from the api server.
     *
     * @returns The marker result object.
     */
    static reduxFactory(data: StoreMarkerResult): MarkerResultBase;
}
