import type { Config, SearchResponse, SearchParams, IndexObject, IndexOptions, IndexStats, DocumentsQuery, DocumentQuery, DocumentOptions, Settings, Synonyms, StopWords, RankingRules, DistinctAttribute, FilterableAttributes, SortableAttributes, SearchableAttributes, DisplayedAttributes, TypoTolerance, PaginationSettings, Faceting, ResourceResults, RawDocumentAdditionOptions, ContentType, DocumentsIds, DocumentsDeletionQuery, SearchForFacetValuesParams, SearchForFacetValuesResponse, SeparatorTokens, NonSeparatorTokens, Dictionary, ProximityPrecision, Embedders, SearchCutoffMs, SearchSimilarDocumentsParams, LocalizedAttributes, UpdateDocumentsByFunctionOptions, TaskEnqueueOptions, ExtraRequestInit, PrefixSearch, RecordAny, EnqueuedTaskPromise, ChatSettings, ChatSettingsPayload, FieldsQuery, FieldsResults } from "./types/index.js";
import { HttpRequests } from "./http-requests.js";
import { TaskClient } from "./task.js";
export declare class Index<T extends RecordAny = RecordAny> {
    #private;
    uid: string;
    primaryKey: string | undefined;
    createdAt: Date | undefined;
    updatedAt: Date | undefined;
    httpRequest: HttpRequests;
    tasks: TaskClient;
    /**
     * @param config - Request configuration options
     * @param uid - UID of the index
     * @param primaryKey - Primary Key of the index
     */
    constructor(config: Config, uid: string, primaryKey?: string);
    /**
     * Search for documents into an index
     *
     * @param query - Query string
     * @param options - Search options
     * @param config - Additional request configuration options
     * @returns Promise containing the search response
     */
    search<D extends RecordAny = T, S extends SearchParams = SearchParams>(query?: string | null, options?: S, extraRequestInit?: ExtraRequestInit): Promise<SearchResponse<D, S>>;
    /**
     * Search for documents into an index using the GET method
     *
     * @param query - Query string
     * @param options - Search options
     * @param config - Additional request configuration options
     * @returns Promise containing the search response
     */
    searchGet<D extends RecordAny = T, S extends SearchParams = SearchParams>(query?: string | null, options?: S, extraRequestInit?: ExtraRequestInit): Promise<SearchResponse<D, S>>;
    /**
     * Search for facet values
     *
     * @param params - Parameters used to search on the facets
     * @param config - Additional request configuration options
     * @returns Promise containing the search response
     */
    searchForFacetValues(params: SearchForFacetValuesParams, extraRequestInit?: ExtraRequestInit): Promise<SearchForFacetValuesResponse>;
    /**
     * Search for similar documents
     *
     * @param params - Parameters used to search for similar documents
     * @returns Promise containing the search response
     */
    searchSimilarDocuments<D extends RecordAny = T, S extends SearchParams = SearchParams>(params: SearchSimilarDocumentsParams): Promise<SearchResponse<D, S>>;
    /**
     * Get index information.
     *
     * @returns Promise containing index information
     */
    getRawInfo(): Promise<IndexObject>;
    /**
     * Fetch and update Index information.
     *
     * @returns Promise to the current Index object with updated information
     */
    fetchInfo(): Promise<this>;
    /**
     * Get Primary Key.
     *
     * @returns Promise containing the Primary Key of the index
     */
    fetchPrimaryKey(): Promise<string | undefined>;
    /**
     * Create an index.
     *
     * @param uid - Unique identifier of the Index
     * @param options - Index options
     * @param config - Request configuration options
     * @returns Newly created Index object
     */
    static create(uid: string, options: IndexOptions | undefined, config: Config): EnqueuedTaskPromise;
    /**
     * Update an index.
     *
     * @param data - Data to update
     * @returns Promise to the current Index object with updated information
     */
    update(data?: IndexOptions): EnqueuedTaskPromise;
    /**
     * Delete an index.
     *
     * @returns Promise which resolves when index is deleted successfully
     */
    delete(): EnqueuedTaskPromise;
    /**
     * Get stats of an index
     *
     * @returns Promise containing object with stats of the index
     */
    getStats(): Promise<IndexStats>;
    /**
     * Get documents of an index.
     *
     * @param params - Parameters to browse the documents. Parameters can contain
     *   the `filter` field only available in Meilisearch v1.2 and newer, and the
     *   `sort` field available in Meilisearch v1.16 and newer
     * @returns Promise containing the returned documents
     */
    getDocuments<D extends RecordAny = T>(params?: DocumentsQuery<D>): Promise<ResourceResults<D[]>>;
    /**
     * Get one document
     *
     * @param documentId - Document ID
     * @param parameters - Parameters applied on a document
     * @returns Promise containing Document response
     */
    getDocument<D extends RecordAny = T>(documentId: string | number, parameters?: DocumentQuery<T>): Promise<D>;
    /**
     * Add or replace multiples documents to an index
     *
     * @param documents - Array of Document objects to add/replace
     * @param options - Options on document addition
     * @returns Promise containing an EnqueuedTask
     */
    addDocuments(documents: T[], options?: DocumentOptions): EnqueuedTaskPromise;
    /**
     * Add or replace multiples documents in a string format to an index. It only
     * supports csv, ndjson and json formats.
     *
     * @param documents - Documents provided in a string to add/replace
     * @param contentType - Content type of your document:
     *   'text/csv'|'application/x-ndjson'|'application/json'
     * @param options - Options on document addition
     * @returns Promise containing an EnqueuedTask
     */
    addDocumentsFromString(documents: string, contentType: ContentType, queryParams?: RawDocumentAdditionOptions): EnqueuedTaskPromise;
    /**
     * Add or replace multiples documents to an index in batches
     *
     * @param documents - Array of Document objects to add/replace
     * @param batchSize - Size of the batch
     * @param options - Options on document addition
     * @returns Promise containing array of enqueued task objects for each batch
     */
    addDocumentsInBatches(documents: T[], batchSize?: number, options?: DocumentOptions): EnqueuedTaskPromise[];
    /**
     * Add or update multiples documents to an index
     *
     * @param documents - Array of Document objects to add/update
     * @param options - Options on document update
     * @returns Promise containing an EnqueuedTask
     */
    updateDocuments(documents: Partial<T>[], options?: DocumentOptions): EnqueuedTaskPromise;
    /**
     * Add or update multiples documents to an index in batches
     *
     * @param documents - Array of Document objects to add/update
     * @param batchSize - Size of the batch
     * @param options - Options on document update
     * @returns Promise containing array of enqueued task objects for each batch
     */
    updateDocumentsInBatches(documents: Partial<T>[], batchSize?: number, options?: DocumentOptions): EnqueuedTaskPromise[];
    /**
     * Add or update multiples documents in a string format to an index. It only
     * supports csv, ndjson and json formats.
     *
     * @param documents - Documents provided in a string to add/update
     * @param contentType - Content type of your document:
     *   'text/csv'|'application/x-ndjson'|'application/json'
     * @param queryParams - Options on raw document addition
     * @returns Promise containing an EnqueuedTask
     */
    updateDocumentsFromString(documents: string, contentType: ContentType, queryParams?: RawDocumentAdditionOptions): EnqueuedTaskPromise;
    /**
     * Delete one document
     *
     * @param documentId - Id of Document to delete
     * @param options - Task enqueue options (e.g. customMetadata)
     * @returns Promise containing an EnqueuedTask
     */
    deleteDocument(documentId: string | number, options?: TaskEnqueueOptions): EnqueuedTaskPromise;
    /**
     * Delete multiples documents of an index.
     *
     * @param params - Params value can be:
     *
     *   - DocumentsDeletionQuery: An object containing the parameters to customize
     *       your document deletion. Only available in Meilisearch v1.2 and newer
     *   - DocumentsIds: An array of document ids to delete
     *
     * @returns Promise containing an EnqueuedTask
     */
    deleteDocuments(params: DocumentsDeletionQuery | DocumentsIds, options?: TaskEnqueueOptions): EnqueuedTaskPromise;
    /**
     * Delete all documents of an index
     *
     * @returns Promise containing an EnqueuedTask
     */
    deleteAllDocuments(options?: TaskEnqueueOptions): EnqueuedTaskPromise;
    /**
     * This is an EXPERIMENTAL feature, which may break without a major version.
     * It's available after Meilisearch v1.10.
     *
     * More info about the feature:
     * https://github.com/orgs/meilisearch/discussions/762 More info about
     * experimental features in general:
     * https://www.meilisearch.com/docs/reference/api/experimental-features
     *
     * @param options - Object containing the function string and related options
     * @returns Promise containing an EnqueuedTask
     */
    updateDocumentsByFunction(options: UpdateDocumentsByFunctionOptions, taskOptions?: TaskEnqueueOptions): EnqueuedTaskPromise;
    /**
     * Retrieve all settings
     *
     * @returns Promise containing Settings object
     */
    getSettings(): Promise<Settings>;
    /**
     * Update all settings Any parameters not provided will be left unchanged.
     *
     * @param settings - Object containing parameters with their updated values
     * @returns Promise containing an EnqueuedTask
     */
    updateSettings(settings: Settings): EnqueuedTaskPromise;
    /**
     * Reset settings.
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetSettings(): EnqueuedTaskPromise;
    /**
     * Get the pagination settings.
     *
     * @returns Promise containing object of pagination settings
     */
    getPagination(): Promise<PaginationSettings>;
    /**
     * Update the pagination settings.
     *
     * @param pagination - Pagination object
     * @returns Promise containing an EnqueuedTask
     */
    updatePagination(pagination: PaginationSettings): EnqueuedTaskPromise;
    /**
     * Reset the pagination settings.
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetPagination(): EnqueuedTaskPromise;
    /**
     * Get the list of all synonyms
     *
     * @returns Promise containing record of synonym mappings
     */
    getSynonyms(): Promise<Record<string, string[]>>;
    /**
     * Update the list of synonyms. Overwrite the old list.
     *
     * @param synonyms - Mapping of synonyms with their associated words
     * @returns Promise containing an EnqueuedTask
     */
    updateSynonyms(synonyms: Synonyms): EnqueuedTaskPromise;
    /**
     * Reset the synonym list to be empty again
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetSynonyms(): EnqueuedTaskPromise;
    /**
     * Get the list of all stop-words
     *
     * @returns Promise containing array of stop-words
     */
    getStopWords(): Promise<string[]>;
    /**
     * Update the list of stop-words. Overwrite the old list.
     *
     * @param stopWords - Array of strings that contains the stop-words.
     * @returns Promise containing an EnqueuedTask
     */
    updateStopWords(stopWords: StopWords): EnqueuedTaskPromise;
    /**
     * Reset the stop-words list to be empty again
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetStopWords(): EnqueuedTaskPromise;
    /**
     * Get the list of all ranking-rules
     *
     * @returns Promise containing array of ranking-rules
     */
    getRankingRules(): Promise<string[]>;
    /**
     * Update the list of ranking-rules. Overwrite the old list.
     *
     * @param rankingRules - Array that contain ranking rules sorted by order of
     *   importance.
     * @returns Promise containing an EnqueuedTask
     */
    updateRankingRules(rankingRules: RankingRules): EnqueuedTaskPromise;
    /**
     * Reset the ranking rules list to its default value
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetRankingRules(): EnqueuedTaskPromise;
    /**
     * Get the distinct-attribute
     *
     * @returns Promise containing the distinct-attribute of the index
     */
    getDistinctAttribute(): Promise<DistinctAttribute>;
    /**
     * Update the distinct-attribute.
     *
     * @param distinctAttribute - Field name of the distinct-attribute
     * @returns Promise containing an EnqueuedTask
     */
    updateDistinctAttribute(distinctAttribute: DistinctAttribute): EnqueuedTaskPromise;
    /**
     * Reset the distinct-attribute.
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetDistinctAttribute(): EnqueuedTaskPromise;
    /**
     * Get the filterable-attributes
     *
     * @returns Promise containing an array of filterable-attributes
     */
    getFilterableAttributes(): Promise<FilterableAttributes>;
    /**
     * Update the filterable-attributes.
     *
     * @param filterableAttributes - Array of strings containing the attributes
     *   that can be used as filters at query time
     * @returns Promise containing an EnqueuedTask
     */
    updateFilterableAttributes(filterableAttributes: FilterableAttributes): EnqueuedTaskPromise;
    /**
     * Reset the filterable-attributes.
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetFilterableAttributes(): EnqueuedTaskPromise;
    /**
     * Get the sortable-attributes
     *
     * @returns Promise containing array of sortable-attributes
     */
    getSortableAttributes(): Promise<string[]>;
    /**
     * Update the sortable-attributes.
     *
     * @param sortableAttributes - Array of strings containing the attributes that
     *   can be used to sort search results at query time
     * @returns Promise containing an EnqueuedTask
     */
    updateSortableAttributes(sortableAttributes: SortableAttributes): EnqueuedTaskPromise;
    /**
     * Reset the sortable-attributes.
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetSortableAttributes(): EnqueuedTaskPromise;
    /**
     * Get the searchable-attributes
     *
     * @returns Promise containing array of searchable-attributes
     */
    getSearchableAttributes(): Promise<string[]>;
    /**
     * Update the searchable-attributes.
     *
     * @param searchableAttributes - Array of strings that contains searchable
     *   attributes sorted by order of importance(most to least important)
     * @returns Promise containing an EnqueuedTask
     */
    updateSearchableAttributes(searchableAttributes: SearchableAttributes): EnqueuedTaskPromise;
    /**
     * Reset the searchable-attributes.
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetSearchableAttributes(): EnqueuedTaskPromise;
    /**
     * Get the displayed-attributes
     *
     * @returns Promise containing array of displayed-attributes
     */
    getDisplayedAttributes(): Promise<string[]>;
    /**
     * Update the displayed-attributes.
     *
     * @param displayedAttributes - Array of strings that contains attributes of
     *   an index to display
     * @returns Promise containing an EnqueuedTask
     */
    updateDisplayedAttributes(displayedAttributes: DisplayedAttributes): EnqueuedTaskPromise;
    /**
     * Reset the displayed-attributes.
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetDisplayedAttributes(): EnqueuedTaskPromise;
    /**
     * Get the typo tolerance settings.
     *
     * @returns Promise containing the typo tolerance settings.
     */
    getTypoTolerance(): Promise<TypoTolerance>;
    /**
     * Update the typo tolerance settings.
     *
     * @param typoTolerance - Object containing the custom typo tolerance
     *   settings.
     * @returns Promise containing object of the enqueued update
     */
    updateTypoTolerance(typoTolerance: TypoTolerance): EnqueuedTaskPromise;
    /**
     * Reset the typo tolerance settings.
     *
     * @returns Promise containing object of the enqueued update
     */
    resetTypoTolerance(): EnqueuedTaskPromise;
    /**
     * Get the faceting settings.
     *
     * @returns Promise containing object of faceting index settings
     */
    getFaceting(): Promise<Faceting>;
    /**
     * Update the faceting settings.
     *
     * @param faceting - Faceting index settings object
     * @returns Promise containing an EnqueuedTask
     */
    updateFaceting(faceting: Faceting): EnqueuedTaskPromise;
    /**
     * Reset the faceting settings.
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetFaceting(): EnqueuedTaskPromise;
    /**
     * Get the list of all separator tokens.
     *
     * @returns Promise containing array of separator tokens
     */
    getSeparatorTokens(): Promise<string[]>;
    /**
     * Update the list of separator tokens. Overwrite the old list.
     *
     * @param separatorTokens - Array that contains separator tokens.
     * @returns Promise containing an EnqueuedTask or null
     */
    updateSeparatorTokens(separatorTokens: SeparatorTokens): EnqueuedTaskPromise;
    /**
     * Reset the separator tokens list to its default value
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetSeparatorTokens(): EnqueuedTaskPromise;
    /**
     * Get the list of all non-separator tokens.
     *
     * @returns Promise containing array of non-separator tokens
     */
    getNonSeparatorTokens(): Promise<string[]>;
    /**
     * Update the list of non-separator tokens. Overwrite the old list.
     *
     * @param nonSeparatorTokens - Array that contains non-separator tokens.
     * @returns Promise containing an EnqueuedTask or null
     */
    updateNonSeparatorTokens(nonSeparatorTokens: NonSeparatorTokens): EnqueuedTaskPromise;
    /**
     * Reset the non-separator tokens list to its default value
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetNonSeparatorTokens(): EnqueuedTaskPromise;
    /**
     * Get the dictionary settings of a Meilisearch index.
     *
     * @returns Promise containing the dictionary settings
     */
    getDictionary(): Promise<string[]>;
    /**
     * Update the dictionary settings. Overwrite the old settings.
     *
     * @param dictionary - Array that contains the new dictionary settings.
     * @returns Promise containing an EnqueuedTask or null
     */
    updateDictionary(dictionary: Dictionary): EnqueuedTaskPromise;
    /**
     * Reset the dictionary settings to its default value
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetDictionary(): EnqueuedTaskPromise;
    /**
     * Get the proximity precision settings of a Meilisearch index.
     *
     * @returns Promise containing the proximity precision settings
     */
    getProximityPrecision(): Promise<ProximityPrecision>;
    /**
     * Update the proximity precision settings. Overwrite the old settings.
     *
     * @param proximityPrecision - String that contains the new proximity
     *   precision settings.
     * @returns Promise containing an EnqueuedTask or null
     */
    updateProximityPrecision(proximityPrecision: ProximityPrecision): EnqueuedTaskPromise;
    /**
     * Reset the proximity precision settings to its default value
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetProximityPrecision(): EnqueuedTaskPromise;
    /**
     * Get the embedders settings of a Meilisearch index.
     *
     * @returns Promise containing the embedders settings
     */
    getEmbedders(): Promise<Embedders>;
    /**
     * Update the embedders settings. Overwrite the old settings.
     *
     * @param embedders - Object that contains the new embedders settings.
     * @returns Promise containing an EnqueuedTask or null
     */
    updateEmbedders(embedders: Embedders): EnqueuedTaskPromise;
    /**
     * Reset the embedders settings to its default value
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetEmbedders(): EnqueuedTaskPromise;
    /**
     * Get the SearchCutoffMs settings.
     *
     * @returns Promise containing object of SearchCutoffMs settings
     */
    getSearchCutoffMs(): Promise<SearchCutoffMs>;
    /**
     * Update the SearchCutoffMs settings.
     *
     * @param searchCutoffMs - Object containing SearchCutoffMsSettings
     * @returns Promise containing an EnqueuedTask
     */
    updateSearchCutoffMs(searchCutoffMs: SearchCutoffMs): EnqueuedTaskPromise;
    /**
     * Reset the SearchCutoffMs settings.
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetSearchCutoffMs(): EnqueuedTaskPromise;
    /**
     * Get the localized attributes settings.
     *
     * @returns Promise containing object of localized attributes settings
     */
    getLocalizedAttributes(): Promise<LocalizedAttributes>;
    /**
     * Update the localized attributes settings.
     *
     * @param localizedAttributes - Localized attributes object
     * @returns Promise containing an EnqueuedTask
     */
    updateLocalizedAttributes(localizedAttributes: LocalizedAttributes): EnqueuedTaskPromise;
    /**
     * Reset the localized attributes settings.
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetLocalizedAttributes(): EnqueuedTaskPromise;
    /**
     * Get the facet search settings.
     *
     * @returns Promise containing object of facet search settings
     */
    getFacetSearch(): Promise<boolean>;
    /**
     * Update the facet search settings.
     *
     * @param facetSearch - Boolean value
     * @returns Promise containing an EnqueuedTask
     */
    updateFacetSearch(facetSearch: boolean): EnqueuedTaskPromise;
    /**
     * Reset the facet search settings.
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetFacetSearch(): EnqueuedTaskPromise;
    /**
     * Get the prefix search settings.
     *
     * @returns Promise containing object of prefix search settings
     */
    getPrefixSearch(): Promise<PrefixSearch>;
    /**
     * Update the prefix search settings.
     *
     * @param prefixSearch - PrefixSearch value
     * @returns Promise containing an EnqueuedTask
     */
    updatePrefixSearch(prefixSearch: PrefixSearch): EnqueuedTaskPromise;
    /**
     * Reset the prefix search settings.
     *
     * @returns Promise containing an EnqueuedTask
     */
    resetPrefixSearch(): EnqueuedTaskPromise;
    /**
     * Get the index's chat settings.
     *
     * @returns Promise containing a ChatSettings object
     */
    getChat(): Promise<ChatSettings>;
    /**
     * Update the index's chat settings.
     *
     * @param chatSettings - ChatSettingsPayload object
     * @returns Promise containing an EnqueuedTask
     */
    updateChat(chatSettings: ChatSettingsPayload): EnqueuedTaskPromise;
    /**
     * Retrieve fields from an index with optional filtering and pagination. This
     * endpoint allows you to query fields based on their properties (searchable,
     * filterable, displayed, sortable, distinct, rankingRule, and localized).
     *
     * @param params - Query parameters including pagination and filter options
     * @param extraRequestInit - Additional request configuration options
     * @returns Promise containing the fields results with pagination info
     */
    getFields(params?: FieldsQuery, extraRequestInit?: ExtraRequestInit): Promise<FieldsResults>;
}
//# sourceMappingURL=indexes.d.ts.map