import type { FTSearchParameters } from 'redis-modules-sdk';
import type { Selector } from 'reselect';
import type { Commit } from '../../types';
import type { OutputCommit } from './outputCommit';
declare type Pattern = 'COMMITS_BY_ENTITYNAME' | 'COMMITS_BY_ENTITYNAME_ENTITYID' | 'ENTITIES_BY_ENTITYNAME' | 'ENTITIES_BY_ENTITYNAME_ENTITYID';
export declare type RedisRepository<TItem = any, TItemInRedis = any, TResult = any> = {
    createIndex: () => Promise<'OK'>;
    deleteItemsByPattern: (pattern: string) => Promise<[any, number]>;
    dropIndex: (deleteHash?: boolean) => Promise<'OK'>;
    hmset: (item: any, history?: Commit[]) => Promise<'OK'>;
    hgetall: (key: string) => Promise<TResult>;
    getKey: (item: any) => string;
    getIndexName: () => string;
    getPattern: (pattern: Pattern, args: string[]) => string;
    getPreSelector: () => Selector<TItem, TItemInRedis>;
    getPostSelector: () => Selector<TItemInRedis, TResult>;
    queryCommitsByPattern: (pattern: string) => Promise<[any, OutputCommit[]] | null>;
    search: (option: {
        countTotalOnly?: boolean;
        kind: 'commit' | 'entity';
        index: string;
        query: string;
        param?: FTSearchParameters;
        restoreFn?: any;
    }) => Promise<[Error[], number, TResult[]]>;
};
export {};
