import { IndexedClass } from '../types'; export declare type StringType = 'text' | 'keyword' | 'search_as_you_type'; export declare type NumericType = 'long' | 'integer' | 'short' | 'byte' | 'double' | 'float' | 'half_float' | 'scaled_float'; export declare type DateType = 'date'; export declare type BooleanType = 'boolean'; export declare type BinaryType = 'binary'; export declare type RangeType = 'integer_range' | 'float_range' | 'long_range' | 'double_range' | 'date_range'; export declare type GeoType = 'geo_point' | 'geo_shape'; export declare type SpecialisedType = 'ip' | 'completion' | 'token_count' | 'murmur3'; export declare type FieldType = StringType | NumericType | DateType | BooleanType | BinaryType | RangeType | GeoType | SpecialisedType; export interface IDisabledFieldOptions { enabled: false; } export interface IFieldOptions { type: FieldType; index?: boolean; boost?: number; coerce?: boolean; copy_to?: string; doc_values?: boolean; dynamic?: true | false | 'strict'; enabled?: true; ignore_malformed?: boolean; index_options?: 'docs' | 'freqs' | 'positions' | 'offsets'; norms?: boolean; null_value?: any; similarity?: string; store?: boolean; } export interface IStringFieldOptions extends IFieldOptions { type: StringType; analyzer?: string; search_analyzer?: string; normalizer?: string; fielddata?: boolean; fielddata_frequency_filter?: any; eager_global_ordinals?: boolean; ignore_above?: number; position_increment_gap?: number; term_vector?: 'no' | 'yes' | 'with_positions' | 'with_offsets' | 'with_positions_offsets'; fields?: { [name: string]: IStringFieldOptions; }; } export interface IDateFieldOptions extends IFieldOptions { type: 'date'; format?: string; } export interface IObjectOptions { object: IndexedClass; } export interface INestedOptions { nested: IndexedClass; } export interface IESFieldOptions { type?: string; index?: boolean; boost?: number; coerce?: boolean; copy_to?: string; doc_values?: boolean; dynamic?: true | false | 'strict'; enabled?: boolean; ignore_malformed?: boolean; index_options?: string; norms?: boolean; null_value?: any; similarity?: string; store?: boolean; format?: string; analyzer?: string; search_analyzer?: string; normalizer?: string; fielddata?: boolean; fielddata_frequency_filter?: any; eager_global_ordinals?: boolean; ignore_above?: number; position_increment_gap?: number; term_vector?: string; fields?: { [name: string]: IStringFieldOptions; }; properties?: IPropertiesMetadata; } export declare type FieldOptions = IDisabledFieldOptions | IFieldOptions | IStringFieldOptions | IDateFieldOptions | IObjectOptions | INestedOptions | IStringFieldOptions; export interface IFieldStructure extends IESFieldOptions { _cls?: IndexedClass; } export interface IPropertiesMetadata { [name: string]: IFieldStructure; } export declare const Field: (typeOrOptions: "boolean" | "text" | "keyword" | "search_as_you_type" | "long" | "integer" | "short" | "byte" | "double" | "float" | "half_float" | "scaled_float" | "date" | "binary" | "integer_range" | "float_range" | "long_range" | "double_range" | "date_range" | "geo_point" | "geo_shape" | "ip" | "completion" | "token_count" | "murmur3" | IDisabledFieldOptions | IFieldOptions | IStringFieldOptions | IDateFieldOptions | IObjectOptions | INestedOptions) => (target: any, key: string) => void;