import { Resource } from "../../common";
import { APIProfileReport, ProfileReportStatus, StoreProfileReport } from "./interfaces";
export declare class ProfileReport extends Resource {
    /**
     * The profile_report's associated profile.
     */
    profileId: string;
    /**
     * The profile_report's associated report.
     */
    reportId: string;
    /**
     * The profile_report's status of generation.
     */
    status: ProfileReportStatus;
    /**
     * Whether the failure notification has been viewed by the user.
     */
    failNoticeViewed: boolean;
    /**
     * The current report version.
     */
    version: string;
    /**
     * Whether the user bought the report via a checkout (it
     * wasn't granted as a benefit of the user's subscription).
     * This field is read-only in the API
     */
    purchased: boolean;
    /**
     * Whether the user should have access to this report.
     * Will be true if the report was purchased or if the
     * user has an active paid subscription
     *
     * This field is read-only in the API
     */
    isReadable: boolean;
    /**
     * Whether or not the user has viewed the report
     */
    hasRead: boolean;
    /**
     * Whether or not report was previously
     * successfully generated (read-only)
     */
    wasGenerated: boolean;
    /**
     * Whether or not report is new to user
     */
    isNew: boolean;
    constructor(profileId: string, report_id: string, status: ProfileReportStatus, failNoticeViewed: boolean, version: string, purchased: boolean, isReadable: boolean, hasRead: boolean, wasGenerated: boolean, isNew: boolean);
    /**
     * The name of the ProfileReport resource on the API server.
     */
    static get resourceName(): string;
    /**
     * The name of the service containing the ProfileReport resource.
     */
    static get serviceName(): string;
    /**
     * Convert the report into a JSON serializable object for the API server.
     */
    serializeAPI(): APIProfileReport;
    /**
     * Deserialize the data from the API server.
     *
     * @param data The report data from the API server.
     */
    deserializeAPI(data: APIProfileReport): void;
    /**
     * Serialize the report into a format for storing in the Redux store.
     */
    serializeRedux(): StoreProfileReport;
    /**
     * Create a ProfileReport from the API server data.
     *
     * @param data Data from the api server.
     *
     * @returns The ProfileReport object.
     */
    static apiFactory(data: APIProfileReport): ProfileReport;
    /**
     * Create a ProfileReport from the Redux store data.
     *
     * @param data Data from the api server.
     *
     * @returns The ProfileReport object.
     */
    static reduxFactory(data: StoreProfileReport): ProfileReport;
    /**
     * Fetches list of profile ids with the specified report being
     * successfully generated.
     *
     * @param reportId Report id.
     * @param profileIds List of profile ids.
     * @param batchSize Size of the each batch.
     */
    static getProfilesWithReport(reportId: string, profileIds: string[], batchSize?: number): Promise<string[]>;
    /**
     * Toggles generation of all reports for specified profile.
     *
     * @param profileId Id of profile.
     */
    static generateAll(profileId: string): Promise<void>;
}
