import { Optional, Resource } from "../../common";
import { APIGene, StoreGene } from "./interfaces";
export declare class Gene extends Resource {
    /**
     * The name of the gene.
     */
    name: string;
    /**
     * The code of the gene.
     */
    code: string;
    /**
     * The list of related snps ids.
     */
    snps: string[];
    snpRsids: string[];
    /**
     * The gene protein names.
     */
    proteinNames: string[];
    /**
     * The gene description.
     */
    description: string;
    /**
     * Person who reviewed information about this gene
     */
    reviewer: string | null;
    constructor(name: string, code: string, snps: string[], snp_rsids: string[], proteinNames: string[], description: string, reviewer: string | null);
    /**
     * The name of the gene resource on the API server.
     */
    static get resourceName(): string;
    /**
     * The name of the service containing the gene resource.
     */
    static get serviceName(): string;
    /**
     * Convert the gene into a JSON serializable object for the API server.
     */
    serializeAPI(): Optional<APIGene, "id">;
    /**
     * Deserialize the data from the API server.
     *
     * @param data The gene data from the API server.
     */
    deserializeAPI(data: APIGene): void;
    /**
     * Serialize the gene into a format for storing in the Redux store.
     */
    serializeRedux(): StoreGene;
    /**
     * Create a gene from the API server data.
     *
     * @param data Data from the api server.
     *
     * @returns The gene object.
     */
    static apiFactory(data: APIGene): Gene;
    /**
     * Create a gene from the Redux store data.
     *
     * @param data Data from the api server.
     *
     * @returns The gene object.
     */
    static reduxFactory(data: StoreGene): Gene;
}
