import { Optional, Resource } from "../../common";
import { Ethnicity } from "../../profiles";
import { MenstrualPhase, TimeOfDay } from "../marker-result-base";
import { APIRangeCondition, Sex, StoreRangeCondition } from "./interfaces";
export declare class RangeCondition extends Resource {
    /**
     * The id of the marker.
     */
    markerId: string;
    /**
     * The biological sex of the person.
     */
    sex: Sex | null;
    /**
     * A number corresponding to an ethnicity.
     */
    ethnicity: Ethnicity | 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;
    /**
     * Object that defines the age range.
     */
    age: string | null;
    /**
     * Object that defines the body mass index range.
     */
    bmi: string | null;
    constructor(markerId: string, sex: Sex | null, ethnicity: Ethnicity | null, menstrualPhase: MenstrualPhase | null, timeOfDay: TimeOfDay | null, age: string | null, bmi: string | null);
    /**
     * The name of the range condition resource on the API server.
     */
    static get resourceName(): string;
    /**
     * The name of the service containing the range condition resource.
     */
    static get serviceName(): string;
    /**
     * Convert the range condition into a JSON serializable object for the API server.
     */
    serializeAPI(): Optional<APIRangeCondition, "id">;
    /**
     * Deserialize the data from the API server.
     *
     * @param data The range condition data from the API server.
     */
    deserializeAPI(data: APIRangeCondition): void;
    /**
     * Serialize the range condition into a format for storing in the Redux store.
     */
    serializeRedux(): StoreRangeCondition;
    /**
     * Create a range condition from the API server data.
     *
     * @param data Data from the api server.
     *
     * @returns The range condition object.
     */
    static apiFactory(data: APIRangeCondition): RangeCondition;
    /**
     * Create a range condition from the Redux store data.
     *
     * @param data Data from the api server.
     *
     * @returns The range condition object.
     */
    static reduxFactory(data: StoreRangeCondition): RangeCondition;
}
