import { SolrResponse } from './Data'; import { FacetValue } from '../component/facet/FacetTypes'; declare enum UrlParams { ID = "id", QUERY = "query", FQ = "fq", START = "start", TYPE = "type", HL = "highlight", } interface SavedSearch { type?: 'QUERY' | 'MLT' | 'DETAILS'; query?: string; boost?: string; sort?: string[]; facets?: { [key: string]: string[]; }; } interface SearchParams extends SavedSearch { start?: number; } declare type QueryParam = string | number; declare type NamespacedUrlParam = [UrlParams, QueryParam]; declare type UrlFragment = [UrlParams | NamespacedUrlParam, QueryParam | [string, QueryParam[]]] | null; declare class QueryBeingBuilt { solrUrlFragment: string; appUrlFragment: UrlFragment; constructor(solrUrlFragment: string, appUrlFragment: UrlFragment); } declare class SolrQueryBuilder { searchResponse?: SolrResponse; previous?: SolrQueryBuilder; op: () => QueryBeingBuilt; constructor(op: () => QueryBeingBuilt, previous?: SolrQueryBuilder); get(id: QueryParam): SolrQueryBuilder; select(): SolrQueryBuilder; moreLikeThis(handler: string, col: string, id: QueryParam, props: MoreLikeThisProps): SolrQueryBuilder; start(start: number): SolrQueryBuilder; jsonp(callback: string): SolrQueryBuilder; export(): SolrQueryBuilder; qt(qt: string): SolrQueryBuilder; q(searchFields: string[], value: QueryParam): SolrQueryBuilder; bq(query: string): SolrQueryBuilder; fq(field: string, values: QueryParam[]): SolrQueryBuilder; highlight(query: HighlightQuery): SolrQueryBuilder | null; fl(fields: QueryParam[]): SolrQueryBuilder; requestFacet(field: string): SolrQueryBuilder; rows(rows: number): SolrQueryBuilder; sort(fields: string[]): SolrQueryBuilder; schema(): SolrQueryBuilder; construct(): [string, Array]; buildCurrentParameters(): SearchParams; buildSolrUrl(): string; } interface PaginationData { numFound: number; start: number; pageSize: number; } declare type QueryEvent = (object: T[], paging: PaginationData) => void; declare type FacetEvent = (object: FacetValue[]) => void; declare type ErrorEvent = (error: object) => void; declare type GetEvent = (object: T) => void; declare type MoreLikeThisEvent = (object: T[]) => void; interface SolrGet { doGet: (id: string | number) => void; onGet: (cb: GetEvent) => void; } interface SolrUpdate { doUpdate: (id: string | number, attr: string, value: string) => void; } interface SolrQuery { doQuery: (q: GenericSolrQuery) => void; doExport: (q: GenericSolrQuery) => void; onQuery: (cb: QueryEvent) => void; registerFacet: (facet: string[]) => (cb: FacetEvent) => void; refine: (q: GenericSolrQuery) => SolrQuery; } interface SolrHighlight { onHighlight: (cb: QueryEvent) => void; } interface SolrMoreLikeThis { doMoreLikeThis: (id: string | number, props: MoreLikeThisProps) => void; onMoreLikeThis: (cb: MoreLikeThisEvent) => void; } interface SolrTransitions { clearEvents: () => void; getCoreConfig: () => SolrConfig; getNamespace: () => string; getCurrentParameters: () => SearchParams; stateTransition: (v: SearchParams) => void; } declare type SolrSchemaFieldDefinition = { type: string; schema: string; dynamicBase: string; docs: number; }; declare type SolrSchemaDefinition = { responseHeader: { status: number; QTime: number; }; index: { numDocs: number; maxDoc: number; deletedDocs: number; indexHeapUsageBytes: number; version: number; segmentCount: number; current: boolean; hasDeletions: boolean; directory: string; segmentsFile: string; segmentsFileSizeInBytes: number; userData: { commitTimeMSec: string; commitCommandVer: string; }; lastModified: string; }; fields: { [key: string]: SolrSchemaFieldDefinition; }; info: object; }; interface SolrSchema { getSchema: () => SolrSchemaDefinition; } interface GenericSolrQuery { query: string; boost?: string; sort?: string[]; rows?: number; } interface HighlightQuery { method?: 'unified' | 'original' | 'fastVector' | 'postings'; fields: string[]; query?: string; qparser?: string; requireFieldMatch?: boolean; usePhraseHighlighter?: boolean; highlightMultiTerm?: boolean; snippets?: number; fragsize?: number; pre?: string; post?: string; encoder?: string; maxAnalyzedChars?: number; } interface SolrConfig { url: string; core: string; primaryKey: string; defaultSearchFields: string[]; fields: string[]; pageSize: number; prefix: string; fq?: [string, string]; qt?: string; } interface MoreLikeThisProps { fl: string[]; mintf: number; mindf: number; maxdf: number; minwl: number; maxwl: number; maxqt: number; maxntp: number; boost: number; qf: string[]; } declare class SolrCore implements SolrTransitions { solrConfig: SolrConfig; private events; private currentParameters; private query?; private getCache; private mltCache; private refinements; constructor(solrConfig: SolrConfig); clearEvents(): void; getCoreConfig(): SolrConfig; onQuery(op: QueryEvent): void; refine(query: GenericSolrQuery): SolrCore; registerFacet(facetNames: string[]): (cb: FacetEvent) => void; onError(op: ErrorEvent): void; doMoreLikeThis(id: string | number, mltProps: MoreLikeThisProps): void; getNamespace(): string; prefetchMoreLikeThis(id: string | number, mltProps: MoreLikeThisProps, prefetch: boolean): void; onMoreLikeThis(op: (v: T[]) => void): void; onGet(op: GetEvent): void; doGet(id: string | number): void; doQuery(desiredQuery: GenericSolrQuery, cb?: (qb: SolrQueryBuilder<{}>) => SolrQueryBuilder<{}>): void; doUpdate(id: string | number, attr: string, value: string): void; doExport(): void; next(op: (event: SolrQueryBuilder) => SolrQueryBuilder): void; stateTransition(newState: SearchParams): void; getCurrentParameters(): SearchParams; } declare class DataStore { cores: { [keys: string]: SolrCore; }; clearEvents(): void; registerCore(config: SolrConfig): SolrCore; } declare class AutoConfiguredDataStore extends DataStore { private core; private facets; private fields; getCore(): SolrCore & SolrGet & SolrQuery; getFacets(): string[]; getFields(): string[]; autoconfigure(config: SolrConfig, complete: () => void, useFacet: (facet: string) => boolean): void; } declare type SingleComponent = (data: T, index?: number) => object | null | undefined; export { MoreLikeThisProps, ErrorEvent, UrlParams, QueryParam, HighlightQuery, NamespacedUrlParam, UrlFragment, PaginationData, SavedSearch, SearchParams, QueryBeingBuilt, SolrQueryBuilder, SingleComponent, MoreLikeThisEvent, GetEvent, GenericSolrQuery, QueryEvent, FacetEvent, SolrConfig, SolrGet, SolrUpdate, SolrMoreLikeThis, SolrQuery, SolrHighlight, SolrTransitions, SolrCore, SolrSchemaFieldDefinition, SolrSchemaDefinition, SolrSchema, DataStore, AutoConfiguredDataStore };