import { CommandParser } from '@redis/client/dist/lib/client/parser';
import { RedisArgument } from '@redis/client/dist/lib/RESP/types';
import { Timestamp, TsRangeCommonOptions, SamplesRawReply } from './helpers';
import { TimeSeriesAggregationType } from './CREATERULE';
export declare const TIME_SERIES_BUCKET_TIMESTAMP: {
    LOW: string;
    MIDDLE: string;
    END: string;
};
export type TimeSeriesBucketTimestamp = typeof TIME_SERIES_BUCKET_TIMESTAMP[keyof typeof TIME_SERIES_BUCKET_TIMESTAMP];
export interface TsRangeOptions extends TsRangeCommonOptions {
    ALIGN?: Timestamp;
    AGGREGATION?: {
        ALIGN?: Timestamp;
        type: TimeSeriesAggregationType;
        timeBucket: Timestamp;
        BUCKETTIMESTAMP?: TimeSeriesBucketTimestamp;
        EMPTY?: boolean;
    };
}
/**
 * `TS.MRANGE`/`TS.MREVRANGE` (non-`GROUPBY`) options: the single-key range options
 * plus the multi-range-only `EXCLUDEEMPTY` flag.
 */
export interface TsMRangeOptions extends TsRangeOptions {
    /**
     * Omit matching series whose reported samples array is empty from the reply.
     * Cannot be combined with `GROUPBY`.
     *
     * @since Redis 8.10
     */
    EXCLUDEEMPTY?: boolean;
}
export declare function parseRangeArguments(parser: CommandParser, fromTimestamp: Timestamp, toTimestamp: Timestamp, options?: TsRangeOptions): void;
export declare function transformRangeArguments(parser: CommandParser, key: RedisArgument, fromTimestamp: Timestamp, toTimestamp: Timestamp, options?: TsRangeOptions): void;
declare const _default: {
    readonly parseCommand: (this: void, parser: CommandParser, key: RedisArgument, fromTimestamp: Timestamp, toTimestamp: Timestamp, options?: TsRangeOptions | undefined) => void;
    readonly transformReply: {
        readonly 2: (this: void, reply: import("@redis/client/dist/lib/RESP/types").RespType<42, import("@redis/client/dist/lib/RESP/types").RespType<42, [import("@redis/client/dist/lib/RESP/types").NumberReply<number>, import("@redis/client/dist/lib/RESP/types").BlobStringReply<string>], never, [import("@redis/client/dist/lib/RESP/types").NumberReply<number>, import("@redis/client/dist/lib/RESP/types").BlobStringReply<string>]>[], never, import("@redis/client/dist/lib/RESP/types").RespType<42, [import("@redis/client/dist/lib/RESP/types").NumberReply<number>, import("@redis/client/dist/lib/RESP/types").BlobStringReply<string>], never, [import("@redis/client/dist/lib/RESP/types").NumberReply<number>, import("@redis/client/dist/lib/RESP/types").BlobStringReply<string>]>[]>) => {
            timestamp: import("@redis/client/dist/lib/RESP/types").NumberReply<number>;
            value: number;
        }[];
        readonly 3: (this: void, reply: SamplesRawReply) => {
            timestamp: import("@redis/client/dist/lib/RESP/types").NumberReply<number>;
            value: import("@redis/client/dist/lib/RESP/types").DoubleReply<number>;
        }[];
    };
};
export default _default;
//# sourceMappingURL=RANGE.d.ts.map