import { CommandParser } from '../client/parser';
import { RedisArgument, ArrayReply, NumberReply } from '../RESP/types';
import { Tail } from './generic-transformers';
export declare const AR_PREDICATE_TYPES: {
    readonly EXACT: "EXACT";
    readonly MATCH: "MATCH";
    readonly GLOB: "GLOB";
    readonly RE: "RE";
};
export type ArPredicateType = typeof AR_PREDICATE_TYPES[keyof typeof AR_PREDICATE_TYPES];
export declare const AR_PREDICATE_COMBINATORS: {
    readonly AND: "AND";
    readonly OR: "OR";
};
export type ArPredicateCombinator = typeof AR_PREDICATE_COMBINATORS[keyof typeof AR_PREDICATE_COMBINATORS];
export type ArGrepPredicate = [type: ArPredicateType, value: RedisArgument];
/**
 * Bound for an ARGREP range: a numeric index, the literal `'-'` (open-ended
 * lower bound), the literal `'+'` (open-ended upper bound), or a decimal
 * string (use this when an index would exceed `Number.MAX_SAFE_INTEGER`).
 */
export type ArGrepBound = number | '-' | '+' | string;
export interface ArGrepOptions {
    COMBINATOR?: ArPredicateCombinator;
    LIMIT?: number;
    NOCASE?: boolean;
}
export declare function parseArGrepArguments(parser: CommandParser, key: RedisArgument, start: ArGrepBound, end: ArGrepBound, predicates: Array<ArGrepPredicate>, options?: ArGrepOptions): void;
export type ArGrepArguments = Tail<Parameters<typeof parseArGrepArguments>>;
declare const _default: {
    readonly IS_READ_ONLY: true;
    readonly parseCommand: (this: void, parser: CommandParser, key: RedisArgument, start: ArGrepBound, end: ArGrepBound, predicates: ArGrepPredicate[], options?: ArGrepOptions | undefined) => void;
    readonly transformReply: () => ArrayReply<NumberReply>;
};
export default _default;
//# sourceMappingURL=ARGREP.d.ts.map