import type { JSONPatchDocument, JSONPath } from 'immutable-json-patch'; import type { DocumentState, ExtendedSearchResultItem, JSONParser, JSONSelection, RecursiveStateFactory, SearchOptions, SearchResultDetails, SearchResultItem, SearchResults } from '../types'; import { SearchField } from '../types.js'; export declare function updateSearchResult(newResultItems: SearchResultItem[], previousResult: SearchResultDetails | undefined): SearchResultDetails; export declare function searchNext(searchResult: SearchResultDetails): SearchResultDetails; export declare function searchPrevious(searchResult: SearchResultDetails): SearchResultDetails; export declare function search(searchText: string, json: unknown, options?: SearchOptions): SearchResultItem[]; /** * Do a case-insensitive search for a search text in a text */ export declare function findCaseInsensitiveMatches(text: string, searchTextLowerCase: string, path: JSONPath, field: SearchField, onMatch: (searchResultItem: SearchResultItem) => void): void; /** * Replace a search result item with a replacement text */ export declare function replaceText(text: string, replacementText: string, start: number, end: number): string; /** * Replace all matches with a replacement text */ export declare function replaceAllText(text: string, replacementText: string, occurrences: Array<{ start: number; end: number; }>): string; export declare function createSearchAndReplaceOperations(json: unknown, documentState: DocumentState | undefined, replacementText: string, searchResultItem: SearchResultItem, parser: JSONParser): { newSelection: JSONSelection | undefined; operations: JSONPatchDocument; }; export declare function createSearchAndReplaceAllOperations(json: unknown, documentState: DocumentState | undefined, searchText: string, replacementText: string, parser: JSONParser): { newSelection: JSONSelection | undefined; operations: JSONPatchDocument; }; export interface SplitValuePart { text: string; type: 'normal' | 'highlight'; resultIndex: number | undefined; active: boolean; } /** * Split the text into separate parts for each search result and the text * in between. */ export declare function splitValue(text: string, matches: ExtendedSearchResultItem[]): SplitValuePart[]; /** * Filter key search results. * Returns a non-empty array, or undefined if there are no key search results */ export declare function filterKeySearchResults(searchResult: SearchResults | undefined): ExtendedSearchResultItem[] | undefined; /** * Filter value search results. * Returns a non-empty array, or undefined if there are no value search results */ export declare function filterValueSearchResults(searchResult: SearchResults | undefined): ExtendedSearchResultItem[] | undefined; export declare const searchResultsFactory: RecursiveStateFactory; export declare function updateInSearchResults(json: unknown, searchResults: SearchResults | undefined, path: JSONPath, transform: (value: unknown, state: SearchResults) => SearchResults): SearchResults; export declare function toRecursiveSearchResults(json: unknown, searchResultItems: ExtendedSearchResultItem[]): SearchResults | undefined; export declare function flattenSearchResults(node: SearchResults | undefined): ExtendedSearchResultItem[];