// import { RedisCommandArgument, RedisCommandArguments } from '.'; // interface CommonOptions { // REDIRECT?: number; // NOLOOP?: boolean; // } // interface BroadcastOptions { // BCAST?: boolean; // PREFIX?: RedisCommandArgument | Array; // } // interface OptInOptions { // OPTIN?: boolean; // } // interface OptOutOptions { // OPTOUT?: boolean; // } // type ClientTrackingOptions = CommonOptions & ( // BroadcastOptions | // OptInOptions | // OptOutOptions // ); // export function transformArguments( // mode: M, // options?: M extends true ? ClientTrackingOptions : undefined // ): RedisCommandArguments { // const args: RedisCommandArguments = [ // 'CLIENT', // 'TRACKING', // mode ? 'ON' : 'OFF' // ]; // if (mode) { // if (options?.REDIRECT) { // args.push( // 'REDIRECT', // options.REDIRECT.toString() // ); // } // if (isBroadcast(options)) { // args.push('BCAST'); // if (options?.PREFIX) { // if (Array.isArray(options.PREFIX)) { // for (const prefix of options.PREFIX) { // args.push('PREFIX', prefix); // } // } else { // args.push('PREFIX', options.PREFIX); // } // } // } else if (isOptIn(options)) { // args.push('OPTIN'); // } else if (isOptOut(options)) { // args.push('OPTOUT'); // } // if (options?.NOLOOP) { // args.push('NOLOOP'); // } // } // return args; // } // function isBroadcast(options?: ClientTrackingOptions): options is BroadcastOptions { // return (options as BroadcastOptions)?.BCAST === true; // } // function isOptIn(options?: ClientTrackingOptions): options is OptInOptions { // return (options as OptInOptions)?.OPTIN === true; // } // function isOptOut(options?: ClientTrackingOptions): options is OptOutOptions { // return (options as OptOutOptions)?.OPTOUT === true; // } // export declare function transformReply(): 'OK' | Buffer;