import { Resource } from "../../common";
import { APIGenomeFileV2 as APIGenomeFile, AthenaStatus, GenomeFileStatusV2 as GenomeFileStatus, StoreGenomeFileV2 as StoreGenomeFile, GenomeFileUploadResponse } from "./interfaces";
export declare class GenomeFile extends Resource {
    /**
     * The status.
     */
    status: GenomeFileStatus;
    /**
     * Status of the Athena ingestion.
     */
    athenaStatus: AthenaStatus;
    /**
     * The id of the profile this file belongs to.
     */
    profileId: string;
    /**
     * The Amazon S3 url of the file
     */
    downloadUrl: string;
    /**
     * Version of file processing service used to scan the file.
     */
    fileProcessingVersion: string | null;
    /**
     * Start time of last scan job for the file.
     */
    lastScanStartedAt?: string;
    /**
     * Start time of last scan job for the file.
     */
    lastScanEndedAt?: string;
    /**
     * Flag indicating this file is v2.
     */
    readonly isV2 = true;
    constructor(status: GenomeFileStatus, athenaStatus: AthenaStatus, profileId: string, downloadUrl: string, fileProcessingVersion: string | null, lastScanStartedAt?: string, lastScanEndedAt?: string);
    /**
     * The name of the GenomeFile resource on the API server.
     */
    static get resourceName(): string;
    /**
     * The name of the service containing the GenomeFile resource.
     */
    static get serviceName(): string;
    /**
     * Convert the GenomeFile into a JSON serializable object for the API server.
     */
    serializeAPI(): APIGenomeFile;
    /**
     * Deserialize the data from the API server.
     *
     * @param data The GenomeFile data from the API server.
     */
    deserializeAPI(data: APIGenomeFile): void;
    /**
     * Serialize the GenomeFile into a format for storing in the Redux store.
     */
    serializeRedux(): StoreGenomeFile;
    /**
     * Create a GenomeFile from the API server data.
     *
     * @param data Data from the api server.
     *
     * @returns The GenomeFile object.
     */
    static apiFactory(data: APIGenomeFile): GenomeFile;
    /**
     * Create a GenomeFile from the Redux store data.
     *
     * @param data Data from the api server.
     *
     * @returns The GenomeFile object.
     */
    static reduxFactory(data: StoreGenomeFile): GenomeFile;
    /**
     * Call to create genome file for profile.
     *
     * @param profileId Id of the profile.
     * @return Genome file id.
     */
    static createGenomeFile(profileId: string): Promise<string>;
    /**
     * Returns upload url for specified genome file.
     *
     * @param genomeFileId Id of genome file.
     * @param filename File name.
     */
    static getUploadUrl(genomeFileId: string, filename: string): Promise<GenomeFileUploadResponse>;
    /**
     * Notified genome file service about successful genome file upload to S3.
     *
     * @param uploadId Id of the uploaded file.
     */
    static notifyAboutUpload(uploadId: string): Promise<void>;
}
