import { Area, Config } from "../../common";
import { APIDiscreteMarker, DiscreteMarker, StoreDiscreteMarker } from "../discrete-marker";
import { MarkerBase, ResourceType } from "../marker-base";
import { APINumericMarker, NumericMarker, StoreNumericMarker } from "../numeric-marker";
export declare class Marker extends MarkerBase {
    constructor(name: string, description: string, relatedMarkers: string[] | null, organs: string[], categories: string[] | null, conditions: string[] | null, genes: string[] | null, symptoms: string[] | null, reports: string[] | null, units: string[], synonyms: string[], needMenstrualPhase: boolean, needTimeOfDay: boolean, needBmi: boolean, needAge: boolean, resourceType: ResourceType, area: Area[]);
    /**
     * The name of the marker resource on the API server.
     */
    static get resourceName(): string;
    /**
     * The name of the service containing the marker resource.
     */
    static get serviceName(): string;
    /**
     * Create a marker from the API server data.
     *
     * @param data Data from the api server.
     *
     * @returns The marker object.
     */
    static apiFactory(data: APIDiscreteMarker): DiscreteMarker;
    static apiFactory(data: APINumericMarker): NumericMarker;
    /**
     * Create a marker from the Redux store data.
     *
     * @param data Data from the api server.
     *
     * @returns The marker object.
     */
    static reduxFactory(data: StoreDiscreteMarker): DiscreteMarker;
    static reduxFactory(data: StoreNumericMarker): NumericMarker;
    /**
     * Search markers by name or synonym.
     * Calls the Resource.list() method with search query params
     * @param query text which should be used for the search.
     * @param limit number of search results to fetch
     * @returns The list of markers from the server that matches the search.
     */
    static search(query: string, { limit }?: {
        limit?: number;
    }, { cancelToken }?: Config): Promise<(DiscreteMarker | NumericMarker)[]>;
}
