import { Area, Resource } from "../../common";
import { Gender } from "../../profiles";
import { APIReport, ListingType, MembershipType, ReportType, StoreReport } from "./interfaces";
export declare class Report extends Resource {
    /**
     * The report's name.
     */
    name: string;
    /**
     * The report's slug.
     */
    slug: string;
    /**
     * The report's summary.
     */
    summary: string;
    /**
     * The report's text.
     */
    text: string;
    /**
     * The report's image.
     */
    image: string;
    /**
     * The report's color.
     */
    color: string;
    /**
     * The report's priority.
     */
    priority: number;
    /**
     * Current report version.
     */
    version: string;
    /**
     * Link for report's detail page.
     */
    learnMoreLink?: string;
    /**
     * Report area.
     */
    area: Area[];
    /**
     * Type of the report.
     */
    reportType: ReportType;
    /**
     * List of membership types to which report is visible.
     */
    visibleTo: MembershipType[];
    /**
     * Illustration image.
     */
    illustration: string | null;
    /**
     * Report text header.
     */
    textHeader: string;
    /**
     * List of genders for which the report will be displayed.
     */
    visibleToGenders: Gender[];
    /**
     * Date of last update
     */
    updatedAt: string;
    /**
     * Whether or not report has been updated
     * (show published on vs updated on)
     */
    hasBeenUpdated: boolean;
    /**
     * Whether or not report has verified translations
     */
    translationVerified: boolean;
    listingType: ListingType;
    isSticky: boolean;
    constructor(name: string, summary: string, text: string, image: string, color: string, priority: number, version: string, slug: string, area: Area[], reportType: ReportType, visibleTo: MembershipType[], illustration: string | null, textHeader: string, visibleToGenders: Gender[], updatedAt: string, hasBeenUpdated: boolean, translationVerified: boolean, listingType: ListingType, isSticky: boolean, learnMoreLink?: string);
    /**
     * The name of the Report resource on the API server.
     */
    static get resourceName(): string;
    /**
     * The name of the service containing the report resource.
     */
    static get serviceName(): string;
    /**
     * Convert the report into a JSON serializable object for the API server.
     */
    serializeAPI(): APIReport;
    /**
     * Deserialize the data from the API server.
     *
     * @param data The report data from the API server.
     */
    deserializeAPI(data: APIReport): void;
    /**
     * Serialize the report into a format for storing in the Redux store.
     */
    serializeRedux(): StoreReport;
    /**
     * Create a report from the API server data.
     *
     * @param data Data from the api server.
     *
     * @returns The report object.
     */
    static apiFactory(data: APIReport): Report;
    /**
     * Create a report from the Redux store data.
     *
     * @param data Data from the api server.
     *
     * @returns The report object.
     */
    static reduxFactory(data: StoreReport): Report;
}
