import { EntityPath } from './EntityHeader';
import { EntityType } from './EntityType';
export declare type SearchQuery = {
    queryTerm?: string[];
    booleanQuery?: KeyValue[];
    rangeQuery?: KeyRange[];
    facetOptions?: SearchFacetOption[];
    returnFields?: string[];
    start?: number;
    size?: number;
};
export declare type SearchResults = {
    found: number;
    start: number;
    hits: Hit[];
    facets: Facet[];
};
export declare type KeyValue = {
    key: string;
    value: string;
    not: boolean;
};
export declare type KeyRange = {
    key: string;
    min: string;
    max: string;
};
export declare type SearchFacetOption = {
    name: SearchFieldName;
    maxResultCount: number;
    sortType: SearchFacetSort;
};
export declare enum SearchFieldName {
    ID = "Id",
    NAME = "Name",
    DESCRIPTION = "Description",
    ENTITY_TYPE = "EntityType",
    MODIFIED_BY = "ModifiedBy",
    MODIFIED_ON = "ModifiedOn",
    CREATED_BY = "CreatedBy",
    CREATED_ON = "CreatedOn",
    CONSORTIUM = "Consortium",
    DIAGNOSIS = "Diagnosis",
    ORGAN = "Organ",
    TISSUE = "Tissue"
}
export declare enum SearchFacetSort {
    ALPHA = "ALPHA",
    COUNT = "COUNT"
}
export declare type Hit = {
    id: string;
    etag: string;
    name: string;
    alias: string;
    path: EntityPath;
    description: string;
    node_type: EntityType;
    created_on: number;
    modified_on: number;
    created_by: string;
    modified_by: string;
    diagnosis: string;
    tissue: string;
    consortium: string;
    organ: string;
};
export declare type Facet = {
    name: string;
    type: FacetTypeNames;
    min: number;
    max: number;
    constraints: FacetConstraint[];
};
export declare enum FacetTypeNames {
    LITERAL = "LITERAL",
    DATE = "DATE",
    CONTINUOUS = "CONTINUOUS"
}
export declare type FacetConstraint = {
    value: string;
    count: number;
};
