import { Optional, Resource } from "../../common";
import { Gender } from "../../profiles";
import { ListingType, MembershipType } from "../report";
import { APIReportSummary, StoreReportSummary } from "./interfaces";
export declare class ReportSummary extends Resource {
    name: StoreReportSummary["name"];
    slug: StoreReportSummary["slug"];
    summary: StoreReportSummary["summary"];
    illustration: StoreReportSummary["illustration"];
    version: StoreReportSummary["version"];
    updatedAt: StoreReportSummary["updatedAt"];
    hasBeenUpdated: StoreReportSummary["hasBeenUpdated"];
    area: StoreReportSummary["area"];
    image: StoreReportSummary["image"];
    reportType: StoreReportSummary["reportType"];
    listingType: StoreReportSummary["listingType"];
    isSticky: StoreReportSummary["isSticky"];
    constructor(name: StoreReportSummary["name"], slug: StoreReportSummary["slug"], summary: StoreReportSummary["summary"], illustration: StoreReportSummary["illustration"], version: StoreReportSummary["version"], updatedAt: StoreReportSummary["updatedAt"], hasBeenUpdated: StoreReportSummary["hasBeenUpdated"], area: StoreReportSummary["area"], image: StoreReportSummary["image"], reportType: StoreReportSummary["reportType"], listingType: StoreReportSummary["listingType"], isSticky: StoreReportSummary["isSticky"]);
    /**
     * The name of the report-summary resource on the API server.
     */
    static get resourceName(): string;
    /**
     * The name of the service containing the report-summary resource.
     */
    static get serviceName(): string;
    /**
     * Convert the report-summary into a JSON serializable object for the API server.
     */
    serializeAPI(): Optional<APIReportSummary, "id">;
    /**
     * Deserialize the data from the API server.
     *
     * @param data The report-summary data from the API server.
     */
    deserializeAPI(data: APIReportSummary): void;
    /**
     * Serialize the report-summary into a format for storing in the Redux store.
     */
    serializeRedux(): StoreReportSummary;
    /**
     * Create a report-summary from the API server data.
     *
     * @param data Data from the api server.
     *
     * @returns The report-summary object.
     */
    static apiFactory(data: APIReportSummary): ReportSummary;
    /**
     * Create a report-summary from the Redux store data.
     *
     * @param data Data from the api server.
     *
     * @returns The report-summary object.
     */
    static reduxFactory(data: StoreReportSummary): ReportSummary;
    /**
     * Returns count of not generated reports for the specified profile.
     *
     * @param profileId Id of the profile.
     * @param visibleTo Membership type of the user.
     * @param visibleToGenders
     */
    static notGeneratedReportsCount(profileId: string, visibleTo: MembershipType, visibleToGenders?: Gender | Gender[], listingType?: ListingType): Promise<number>;
}
