import { ContextType, Resource } from "../../common";
import { APIProfileRegimenRecommendation, APIRegimensRecommendationSummary, DeleteBySlugPayload, EditBySlugPayload, RegimensRecommendationSummary, StoreProfileRegimenRecommendation, TimePeriodUnit } from "./interfaces";
export declare class ProfileRegimenRecommendation extends Resource {
    /**
     * The profile_regimen_recommendation's associated profile.
     */
    profileId: string;
    /**
     * The profile_regimen_recommendation's associated recommendation id.
     */
    recommendationId: string;
    /**
     * The profile_regimen_recommendation's associated recommendation slug.
     */
    recommendationSlug: string;
    /**
     * Start date of this regimen recommendation.
     */
    startDate: number | null;
    /**
     * Whether it's a lab recommendation or a report recommendation
     */
    context: ContextType;
    /**
     * How often this recommendation is needed to be done in a period of time.
     */
    frequencyValue: number | null;
    /**
     * Unit for the regimen recommendation frequency , e.g. day, week or month
     */
    frequencyUnit: TimePeriodUnit | null;
    /**
     * For how long this recommendation applies.
     */
    durationValue: number | null;
    /**
     * Unit for the regimen recommendation duration , e.g. day, week or month
     */
    durationUnit: TimePeriodUnit | null;
    /**
     * Whether current recommendation is ongoing.
     */
    isOngoing: boolean;
    /**
     * Custom dosage value.
     */
    customDosageValue: number | null;
    /**
     * Custom dosage unit.
     */
    customDosageUnit: string | null;
    /**
     * Associated recommendation data.
     */
    recommendation: RegimensRecommendationSummary;
    /**
     * Timezone offset between local and UTC in seconds
     */
    private _timezoneOffset;
    constructor(profileId: string, recommendationId: string, recommendationSlug: string, startDate: number | null, context: ContextType, frequencyValue: number | null, frequencyUnit: TimePeriodUnit | null, durationValue: number | null, durationUnit: TimePeriodUnit | null, isOngoing: boolean, customDosageValue: number | null, customDosageUnit: string | null, recommendation: RegimensRecommendationSummary);
    /**
     * The name of the ProfileRegimenRecommendation resource on the API server.
     */
    static get resourceName(): string;
    /**
     * The name of the service containing the ProfileRegimenRecommendation resource.
     */
    static get serviceName(): string;
    /**
     * Alter date timezone while maintaining the date value
     * i.e if given a date e.g 2021-3-21 in local/UTC, we want it to remain the same in UTC/local
     */
    private localDateToUTC;
    /**
     * Represent UTC date as local date
     */
    private localDateFromUTC;
    static regimensRecommendationSummarySerializeApi(data: RegimensRecommendationSummary): APIRegimensRecommendationSummary;
    static regimensRecommendationSummaryApiFactory(data: APIRegimensRecommendationSummary): RegimensRecommendationSummary;
    /**
     * Convert the profRegRec into a JSON serializable object for the API server.
     */
    serializeAPI(): APIProfileRegimenRecommendation;
    /**
     * Deserialize the data from the API server.
     *
     * @param data The profRegRec data from the API server.
     */
    deserializeAPI(data: APIProfileRegimenRecommendation): void;
    /**
     * Serialize the report into a format for storing in the Redux store.
     */
    serializeRedux(): StoreProfileRegimenRecommendation;
    /**
     * Create a ProfileRegimenRecommendation from the API server data.
     *
     * @param data Data from the api server.
     *
     * @returns The ProfileRegimenRecommendation object.
     */
    static apiFactory(data: APIProfileRegimenRecommendation): ProfileRegimenRecommendation;
    /**
     * Create a ProfileRegimenRecommendation from the Redux store data.
     *
     * @param data Data from the api server.
     *
     * @returns The ProfileRegimenRecommendation object.
     */
    static reduxFactory(data: StoreProfileRegimenRecommendation): ProfileRegimenRecommendation;
    static deleteBySlug(payload: DeleteBySlugPayload): Promise<void>;
    static editBySlug(payload: EditBySlugPayload): Promise<void>;
}
