import { CommandOptions } from './command-options'; import { RedisCommand, RedisCommandArgument, RedisCommandArguments, RedisCommandRawReply, RedisCommandReply, RedisCommands, RedisModules, RedisScript, RedisScripts } from './commands'; declare type Instantiable = new (...args: Array) => T; interface ExtendWithCommandsConfig { BaseClass: T; commands: RedisCommands; executor(command: RedisCommand, args: Array): unknown; } export declare function extendWithCommands({ BaseClass, commands, executor }: ExtendWithCommandsConfig): void; interface ExtendWithModulesAndScriptsConfig { BaseClass: T; modules?: RedisModules; modulesCommandsExecutor(this: InstanceType, command: RedisCommand, args: Array): unknown; scripts?: RedisScripts; scriptsExecutor(this: InstanceType, script: RedisScript, args: Array): unknown; } export declare function extendWithModulesAndScripts(config: ExtendWithModulesAndScriptsConfig): T; export declare function transformCommandArguments(command: RedisCommand, args: Array): { args: RedisCommandArguments; options: CommandOptions | undefined; }; export declare function encodeCommand(args: RedisCommandArguments): IterableIterator; export declare function transformCommandReply(command: RedisCommand, rawReply: RedisCommandRawReply, preserved: unknown): RedisCommandReply; export {};