import { CommandParser } from '@redis/client/dist/lib/client/parser';
import { RedisArgument } from '@redis/client/dist/lib/RESP/types';
import { Timestamp, TsRangeCommonOptions, MultiAggregationSamplesRawReply } from './helpers';
import { TimeSeriesAggregationType } from './CREATERULE';
import { TimeSeriesBucketTimestamp } from './RANGE';
export type TimeSeriesAggregationTypeList = [TimeSeriesAggregationType, ...Array<TimeSeriesAggregationType>];
export interface TsRangeMultiAggrOptions extends TsRangeCommonOptions {
    ALIGN?: Timestamp;
    AGGREGATION: {
        types: TimeSeriesAggregationTypeList;
        timeBucket: Timestamp;
        BUCKETTIMESTAMP?: TimeSeriesBucketTimestamp;
        EMPTY?: boolean;
    };
}
/**
 * `TS.MRANGE`/`TS.MREVRANGE` multi-aggregation (non-`GROUPBY`) options: the
 * multi-aggregation range options plus the multi-range-only `EXCLUDEEMPTY` flag.
 */
export interface TsMRangeMultiAggrOptions extends TsRangeMultiAggrOptions {
    /**
     * 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 parseRangeMultiArguments(parser: CommandParser, fromTimestamp: Timestamp, toTimestamp: Timestamp, options: TsRangeMultiAggrOptions): void;
export declare function transformRangeMultiArguments(parser: CommandParser, key: RedisArgument, fromTimestamp: Timestamp, toTimestamp: Timestamp, options: TsRangeMultiAggrOptions): void;
declare const _default: {
    readonly parseCommand: (this: void, parser: CommandParser, key: RedisArgument, fromTimestamp: Timestamp, toTimestamp: Timestamp, options: TsRangeMultiAggrOptions) => 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>;
            values: number[];
        }[];
        readonly 3: (this: void, reply: MultiAggregationSamplesRawReply) => {
            timestamp: import("@redis/client/dist/lib/RESP/types").NumberReply<number>;
            values: import("@redis/client/dist/lib/RESP/types").DoubleReply<number>[];
        }[];
    };
};
export default _default;
//# sourceMappingURL=RANGE_MULTIAGGR.d.ts.map