import { TimeSeriesDuplicatePolicies, TimeSeriesAggregationType } from "redis";
import type { RedisClientType, RedisDefaultModules, RedisModules, RedisFunctions, RedisScripts } from "redis";
import type { Clock } from "@substreams/core/proto";
import type { ActionOptions } from "../bin/cli.js";
export type Redis = RedisClientType<RedisDefaultModules & RedisModules, RedisFunctions, RedisScripts>;
export declare type Labels = {
    [label: string]: string;
};
export declare function TS_CREATE(client: Redis, key: string, labels: Labels, kvRetentionPeriod: number): Promise<"OK">;
export declare function TS_CREATERULE(client: Redis, sourceKey: string, destinationKey: string, options: ActionOptions): Promise<"OK">;
export declare function TS_ADD(client: Redis, key: string, value: number, clock: Clock, labels: Labels, options: ActionOptions): Promise<number | undefined>;
export declare function SET(client: Redis, key: string, value: string | number): Promise<string | null>;
export declare function GET(client: Redis, params: URLSearchParams): Promise<string | null>;
export declare function INFO(client: Redis): Promise<string>;
export declare function TS_INFO(client: Redis, params: URLSearchParams): Promise<{
    totalSamples: number;
    memoryUsage: number;
    firstTimestamp: number;
    lastTimestamp: number;
    retentionTime: number;
    chunkCount: number;
    chunkSize: number;
    chunkType: string;
    duplicatePolicy: TimeSeriesDuplicatePolicies | null;
    labels: {
        name: string;
        value: string;
    }[];
    sourceKey: string | null;
    rules: {
        key: string;
        timeBucket: number;
        aggregationType: TimeSeriesAggregationType;
    }[];
}>;
export declare function TS_RANGE(client: Redis, params: URLSearchParams): Promise<{
    timestamp: number;
    value: number;
}[]>;
//# sourceMappingURL=redis.d.ts.map