import { CommandParser } from '@redis/client/dist/lib/client/parser';
import { RedisArgument, ReplyUnion, TypeMapping } from '@redis/client/dist/lib/RESP/types';
import { RedisVariadicArgument } from '@redis/client/dist/lib/commands/generic-transformers';
import { RediSearchLanguage } from './CREATE';
export type FtSearchParams = Record<string, RedisArgument | number>;
export declare function parseParamsArgument(parser: CommandParser, params?: FtSearchParams): void;
export interface FtSearchOptions {
    VERBATIM?: boolean;
    NOSTOPWORDS?: boolean;
    INKEYS?: RedisVariadicArgument;
    INFIELDS?: RedisVariadicArgument;
    RETURN?: RedisVariadicArgument;
    SUMMARIZE?: boolean | {
        FIELDS?: RedisArgument | Array<RedisArgument>;
        FRAGS?: number;
        LEN?: number;
        SEPARATOR?: RedisArgument;
    };
    HIGHLIGHT?: boolean | {
        FIELDS?: RedisArgument | Array<RedisArgument>;
        TAGS?: {
            open: RedisArgument;
            close: RedisArgument;
        };
    };
    SLOP?: number;
    TIMEOUT?: number;
    INORDER?: boolean;
    LANGUAGE?: RediSearchLanguage;
    EXPANDER?: RedisArgument;
    SCORER?: RedisArgument;
    SORTBY?: RedisArgument | {
        BY: RedisArgument;
        DIRECTION?: 'ASC' | 'DESC';
    };
    LIMIT?: {
        from: number | RedisArgument;
        size: number | RedisArgument;
    };
    PARAMS?: FtSearchParams;
    DIALECT?: number;
}
export declare function parseSearchOptions(parser: CommandParser, options?: FtSearchOptions): void;
declare function transformSearchReplyResp2(reply: SearchRawReply, _preserve?: any, _typeMapping?: TypeMapping): SearchReply;
declare function transformSearchReplyResp3(rawReply: ReplyUnion, preserve?: any, typeMapping?: TypeMapping): SearchReply;
declare const _default: {
    readonly NOT_KEYED_COMMAND: true;
    readonly IS_READ_ONLY: true;
    readonly parseCommand: (this: void, parser: CommandParser, index: RedisArgument, query: RedisArgument, options?: FtSearchOptions) => void;
    readonly transformReply: {
        readonly 2: typeof transformSearchReplyResp2;
        readonly 3: typeof transformSearchReplyResp3;
    };
};
export default _default;
export type SearchRawReply = Array<unknown>;
interface SearchDocumentValue {
    [key: string]: string | number | null | Array<SearchDocumentValue> | SearchDocumentValue;
}
export interface SearchReply {
    total: number;
    documents: Array<{
        id: string;
        value: SearchDocumentValue;
    }>;
}
//# sourceMappingURL=SEARCH.d.ts.map