import { Optional, Resource } from "../../common";
import { APIPublicFile, PublicFileType, StorePublicFile } from "./interfaces";
export declare class PublicFile extends Resource {
    profileId: string;
    version: number;
    file: string;
    fileType: PublicFileType;
    createdAt: string;
    constructor(profileId: string, version: number, file: string, fileType: PublicFileType, createdAt: string);
    /**
     * The name of the file resource on the API server.
     */
    static get resourceName(): string;
    /**
     * The name of the service containing the file resource.
     */
    static get serviceName(): string;
    /**
     * Convert the file into a JSON serializable object for the API server.
     */
    serializeAPI(): Optional<APIPublicFile, "id">;
    /**
     * Deserialize the data from the API server.
     *
     * @param data The file data from the API server.
     */
    deserializeAPI(data: APIPublicFile): void;
    /**
     * Serialize the file into a format for storing in the Redux store.
     */
    serializeRedux(): StorePublicFile;
    /**
     * Create a file from the API server data.
     *
     * @param data Data from the api server.
     *
     * @returns The file object.
     */
    static apiFactory(data: APIPublicFile): PublicFile;
    /**
     * Create a file from the Redux store data.
     *
     * @param data Data from the api server.
     *
     * @returns The file object.
     */
    static reduxFactory(data: StorePublicFile): PublicFile;
    /**
     * Create new public file
     */
    static create(profileId: string, version: number, fileType: PublicFileType, file: File): Promise<PublicFile>;
}
