import COMMANDS from './commands'; import { RedisCommand, RedisCommandArgument, RedisCommandArguments, RedisCommandRawReply, RedisFunctions, RedisModules, RedisExtensions, RedisScript, RedisScripts, ExcludeMappedString, RedisFunction } from '../commands'; import { RedisMultiQueuedCommand } from '../multi-command'; type RedisClusterMultiCommandSignature = (...args: Parameters) => RedisClusterMultiCommandType; type WithCommands = { [P in keyof typeof COMMANDS]: RedisClusterMultiCommandSignature<(typeof COMMANDS)[P], M, F, S>; }; type WithModules = { [P in keyof M as ExcludeMappedString

]: { [C in keyof M[P] as ExcludeMappedString]: RedisClusterMultiCommandSignature; }; }; type WithFunctions = { [P in keyof F as ExcludeMappedString

]: { [FF in keyof F[P] as ExcludeMappedString]: RedisClusterMultiCommandSignature; }; }; type WithScripts = { [P in keyof S as ExcludeMappedString

]: RedisClusterMultiCommandSignature; }; export type RedisClusterMultiCommandType = RedisClusterMultiCommand & WithCommands & WithModules & WithFunctions & WithScripts; export type InstantiableRedisClusterMultiCommandType = new (...args: ConstructorParameters) => RedisClusterMultiCommandType; export type RedisClusterMultiExecutor = (queue: Array, firstKey?: RedisCommandArgument, chainId?: symbol) => Promise>; export default class RedisClusterMultiCommand { #private; static extend(extensions?: RedisExtensions): InstantiableRedisClusterMultiCommandType; constructor(executor: RedisClusterMultiExecutor, firstKey?: RedisCommandArgument); commandsExecutor(command: RedisCommand, args: Array): this; addCommand(firstKey: RedisCommandArgument | undefined, args: RedisCommandArguments, transformReply?: RedisCommand['transformReply']): this; functionsExecutor(fn: RedisFunction, args: Array, name: string): this; scriptsExecutor(script: RedisScript, args: Array): this; exec(execAsPipeline?: boolean): Promise>; EXEC: (execAsPipeline?: boolean) => Promise>; execAsPipeline(): Promise>; } export {};