import { Optional } from "../interfaces";
import { Resource } from "../resource";
import { APIBaseRecommendation, ContextType, RecommendationType, StoreBaseRecommendation, TimePeriodUnit } from "./interfaces";
export declare abstract class BaseRecommendation extends Resource {
    /**
     * The name/title of the recommendation.
     */
    name: string;
    /**
     * Slug for the recommendation.
     */
    slug: string;
    /**
     * The recommendation type.
     */
    recommendationType: RecommendationType;
    /**
     * The recommendation context.
     */
    context: ContextType;
    /**
     * Flag to determine if the recommendation is to avoid something.
     */
    isAvoidanceRecommendation: boolean;
    /**
     * Flag to determine if the recommendation is to treat something.
     */
    isTreatment: boolean;
    /**
     * Flag to determine if recommendation is to prevent something.
     */
    isPrevention: boolean;
    /**
     * The default frequency of the recommendation when added to "My Regimen"
     */
    defaultFrequencyValue: number | null;
    /**
     * The default unit for the "defaultFrequencyValue"
     */
    defaultFrequencyUnit: TimePeriodUnit | null;
    /**
     * The default duration of the recommendation when added to "My Regimen"
     */
    defaultDurationValue: number | null;
    /**
     * The default unit for the "defaultDurationValue"
     */
    defaultDurationUnit: TimePeriodUnit | null;
    /**
     * Recommendation image.
     */
    illustration: string | null;
    /**
     * Conflicting slugs.
     */
    conflictingSlugs: string[];
    constructor(name: string, slug: string, recommendationType: RecommendationType, context: ContextType, isAvoidanceRecommendation: boolean, isTreatment: boolean, isPrevention: boolean, defaultFrequencyValue: number | null, defaultFrequencyUnit: TimePeriodUnit | null, defaultDurationValue: number | null, defaultDurationUnit: TimePeriodUnit | null, illustration: string | null, conflictingSlugs: string[]);
    /**
     * Convert the recommendation into a JSON serializable object for the API server.
     */
    serializeAPI(): Optional<APIBaseRecommendation, "id">;
    /**
     * Deserialize the data from the API server.
     *
     * @param data The recommendation data from the API server.
     */
    deserializeAPI(data: APIBaseRecommendation): void;
    /**
     * Serialize the recommendation into a format for storing in the Redux store.
     */
    serializeRedux(): StoreBaseRecommendation;
}
