haxiomic / dts2hx

Converts TypeScript definition files (d.ts) to haxe externs (.hx) via the TypeScript compiler API
MIT License
131 stars 8 forks source link

Issues with redis #119

Open vladimirvelikov opened 1 year ago

vladimirvelikov commented 1 year ago

Hi @haxiomic, Could you point me to what might be wrong/missing for a successful conversion of the redis node module?

After runing dts2hx on the latest version I get the following:

From:

export declare type RedisClientType<M extends RedisModules = Record<string, never>, F extends RedisFunctions = Record<string, never>, S extends RedisScripts = Record<string, never>> = RedisClient<M, F, S> & WithCommands & WithModules<M> & WithFunctions<F> & WithScripts<S>;

which is found in .\node_modules\@redis\client\dist\lib\client\index.d.ts

I get

typedef RedisClientType<M, F, S> = Dynamic;

in .haxelib\redis-client\1,2,0\redis\client\RedisClientType.hx

Tried downlevel-dts but it doesn't seem to change much of the code.

Will be happy to try and contribute a solution if one is needed/possible.

haxiomic commented 1 year ago

Hey, there's a few secret options that are off by default because they bug out on some packages try adding --allowIntersectionRasterization

With that I get this big output, it has to convert the type intersection list into a single type of its own

typedef RedisClientType<M, F, S> = {
    @:native("private")
    var private_ : Dynamic;
    dynamic function commandOptions<T>(options:T):redis.client.dist.lib.command_options.CommandOptions<T>;
    final options : Null<RedisClientOptions<M, F, S>>;
    final isOpen : Bool;
    final isReady : Bool;
    final v4 : haxe.DynamicAccess<Dynamic>;
    function duplicate(?overrides:{ @:optional var url : String; @:optional var socket : Dynamic; @:optional var username : String; @:optional var password : String; @:optional var name : String; @:optional var database : Float; @:optional var commandsQueueMaxLength : Float; @:optional var disableOfflineQueue : Bool; @:optional var readonly : Bool; @:optional var legacyMode : Bool; @:optional var isolationPoolOptions : generic_pool.Options; @:optional var modules : M; @:optional var functions : F; @:optional var scripts : S; }):RedisClientType<M, F, S>;
    function connect():js.lib.Promise<ts.Undefined>;
    function commandsExecutor<C>(command:C, args:Array<Any>):js.lib.Promise<redis.client.dist.lib.commands.index.RedisCommandReply<C>>;
    function sendCommand<T>(args:redis.client.dist.lib.commands.index.RedisCommandArguments, ?options:redis.client.dist.lib.client.index.ClientCommandOptions):js.lib.Promise<T>;
    function functionsExecuter<F>(fn:F, args:Array<Any>, name:String):js.lib.Promise<redis.client.dist.lib.commands.index.RedisCommandReply<F>>;
    function executeFunction(name:String, fn:redis.client.dist.lib.commands.index.RedisFunction, args:redis.client.dist.lib.commands.index.RedisCommandArguments, ?options:redis.client.dist.lib.client.index.ClientCommandOptions):js.lib.Promise<Dynamic>;
    function scriptsExecuter<S>(script:S, args:Array<Any>):js.lib.Promise<redis.client.dist.lib.commands.index.RedisCommandReply<S>>;
    function executeScript(script:redis.client.dist.lib.lua_script.RedisScriptConfig & redis.client.dist.lib.lua_script.SHA1, args:redis.client.dist.lib.commands.index.RedisCommandArguments, ?options:redis.client.dist.lib.client.index.ClientCommandOptions):js.lib.Promise<Dynamic>;
    @:overload(function(options:redis.client.dist.lib.command_options.CommandOptions<redis.client.dist.lib.client.index.ClientCommandOptions>, db:Float):js.lib.Promise<ts.Undefined> { })
    function SELECT(db:Float):js.lib.Promise<ts.Undefined>;
    @:overload(function(options:redis.client.dist.lib.command_options.CommandOptions<redis.client.dist.lib.client.index.ClientCommandOptions>, db:Float):js.lib.Promise<ts.Undefined> { })
    dynamic function select(db:Float):js.lib.Promise<ts.Undefined>;
    function SUBSCRIBE<T>(channels:ts.AnyOf2<String, Array<String>>, listener:redis.client.dist.lib.client.commands_queue.PubSubListener<T, Dynamic>, ?bufferMode:T):js.lib.Promise<ts.Undefined>;
    dynamic function subscribe<T>(channels:ts.AnyOf2<String, Array<String>>, listener:redis.client.dist.lib.client.commands_queue.PubSubListener<T, Dynamic>, ?bufferMode:T):js.lib.Promise<ts.Undefined>;
    function PSUBSCRIBE<T>(patterns:ts.AnyOf2<String, Array<String>>, listener:redis.client.dist.lib.client.commands_queue.PubSubListener<T, Dynamic>, ?bufferMode:T):js.lib.Promise<ts.Undefined>;
    dynamic function pSubscribe<T>(patterns:ts.AnyOf2<String, Array<String>>, listener:redis.client.dist.lib.client.commands_queue.PubSubListener<T, Dynamic>, ?bufferMode:T):js.lib.Promise<ts.Undefined>;
    function UNSUBSCRIBE<T>(?channels:ts.AnyOf2<String, Array<String>>, ?listener:redis.client.dist.lib.client.commands_queue.PubSubListener<T, Dynamic>, ?bufferMode:T):js.lib.Promise<ts.Undefined>;
    dynamic function unsubscribe<T>(?channels:ts.AnyOf2<String, Array<String>>, ?listener:redis.client.dist.lib.client.commands_queue.PubSubListener<T, Dynamic>, ?bufferMode:T):js.lib.Promise<ts.Undefined>;
    function PUNSUBSCRIBE<T>(?patterns:ts.AnyOf2<String, Array<String>>, ?listener:redis.client.dist.lib.client.commands_queue.PubSubListener<T, Dynamic>, ?bufferMode:T):js.lib.Promise<ts.Undefined>;
    dynamic function pUnsubscribe<T>(?patterns:ts.AnyOf2<String, Array<String>>, ?listener:redis.client.dist.lib.client.commands_queue.PubSubListener<T, Dynamic>, ?bufferMode:T):js.lib.Promise<ts.Undefined>;
    function QUIT():js.lib.Promise<ts.Undefined>;
    dynamic function quit():js.lib.Promise<ts.Undefined>;
    function executeIsolated<T>(fn:(client:RedisClientType<M, F, S>) -> ts.AnyOf2<js.lib.Promise<T>, T>):js.lib.Promise<T>;
    function multi():redis.client.dist.lib.client.multi_command.RedisClientMultiCommandType<M, F, S>;
    function multiExecutor(commands:Array<redis.client.dist.lib.multi_command.RedisMultiQueuedCommand>, ?selectedDB:Float, ?chainId:js.lib.Symbol):js.lib.Promise<Array<Dynamic>>;
    function scanIterator(?options:redis.client.dist.lib.commands.scan.ScanCommandOptions):Dynamic;
    function hScanIterator(key:String, ?options:redis.client.dist.lib.commands.generic_transformers.ScanOptions):Dynamic;
    function sScanIterator(key:String, ?options:redis.client.dist.lib.commands.generic_transformers.ScanOptions):Dynamic;
    function zScanIterator(key:String, ?options:redis.client.dist.lib.commands.generic_transformers.ScanOptions):Dynamic;
    function disconnect():js.lib.Promise<ts.Undefined>;
    dynamic function ACL_CAT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function aclCat<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ACL_DELUSER<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function aclDelUser<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ACL_DRYRUN<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function aclDryRun<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ACL_GENPASS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function aclGenPass<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ACL_GETUSER<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function aclGetUser<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ACL_LIST<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function aclList<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ACL_LOAD<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function aclLoad<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ACL_LOG_RESET<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function aclLogReset<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ACL_LOG<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function aclLog<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ACL_SAVE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function aclSave<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ACL_SETUSER<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function aclSetUser<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ACL_USERS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function aclUsers<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ACL_WHOAMI<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function aclWhoAmI<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ASKING<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function asking<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function AUTH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function auth<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function BGREWRITEAOF<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function bgRewriteAof<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function BGSAVE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function bgSave<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLIENT_CACHING<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clientCaching<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLIENT_GETNAME<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clientGetName<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLIENT_GETREDIR<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clientGetRedir<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLIENT_ID<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clientId<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLIENT_KILL<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clientKill<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    @:native("CLIENT_NO-EVICT")
    dynamic function CLIENT_NO_EVICT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clientNoEvict<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLIENT_PAUSE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clientPause<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLIENT_SETNAME<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clientSetName<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLIENT_TRACKING<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clientTracking<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLIENT_TRACKINGINFO<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clientTrackingInfo<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLIENT_UNPAUSE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clientUnpause<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLIENT_INFO<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clientInfo<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_ADDSLOTS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterAddSlots<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_ADDSLOTSRANGE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterAddSlotsRange<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_BUMPEPOCH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterBumpEpoch<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_COUNT_FAILURE_REPORTS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterCountFailureReports<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_COUNTKEYSINSLOT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterCountKeysInSlot<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_DELSLOTS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterDelSlots<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_DELSLOTSRANGE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterDelSlotsRange<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_FAILOVER<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterFailover<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_FLUSHSLOTS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterFlushSlots<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_FORGET<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterForget<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_GETKEYSINSLOT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterGetKeysInSlot<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_INFO<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterInfo<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_KEYSLOT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterKeySlot<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_LINKS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterLinks<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_MEET<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterMeet<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_MYID<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterMyId<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_NODES<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterNodes<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_REPLICAS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterReplicas<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_REPLICATE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterReplicate<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_RESET<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterReset<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_SAVECONFIG<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterSaveConfig<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_SET_CONFIG_EPOCH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterSetConfigEpoch<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_SETSLOT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterSetSlot<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CLUSTER_SLOTS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function clusterSlots<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function COMMAND_COUNT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function commandCount<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function COMMAND_GETKEYS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function commandGetKeys<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function COMMAND_GETKEYSANDFLAGS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function commandGetKeysAndFlags<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function COMMAND_INFO<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function commandInfo<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function COMMAND_LIST<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function commandList<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function COMMAND<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function command<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CONFIG_GET<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function configGet<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CONFIG_RESETASTAT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function configResetStat<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CONFIG_REWRITE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function configRewrite<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function CONFIG_SET<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function configSet<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function DBSIZE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function dbSize<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function DISCARD<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function discard<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ECHO<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function echo<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function FAILOVER<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function failover<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function FLUSHALL<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function flushAll<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function FLUSHDB<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function flushDb<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function FUNCTION_DELETE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function functionDelete<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function FUNCTION_DUMP<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function functionDump<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function FUNCTION_FLUSH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function functionFlush<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function FUNCTION_KILL<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function functionKill<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function FUNCTION_LIST_WITHCODE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function functionListWithCode<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function FUNCTION_LIST<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function functionList<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function FUNCTION_LOAD<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function functionLoad<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function FUNCTION_RESTORE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function functionRestore<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function FUNCTION_STATS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function functionStats<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function HELLO<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function hello<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function INFO<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function info<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function KEYS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function keys<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LASTSAVE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lastSave<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LATENCY_DOCTOR<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function latencyDoctor<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LOLWUT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lolwut<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function MEMORY_DOCTOR<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function memoryDoctor<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    @:native("MEMORY_MALLOC-STATS")
    dynamic function MEMORY_MALLOC_STATS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function memoryMallocStats<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function MEMORY_PURGE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function memoryPurge<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function MEMORY_STATS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function memoryStats<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function MEMORY_USAGE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function memoryUsage<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function MODULE_LIST<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function moduleList<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function MODULE_LOAD<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function moduleLoad<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function MODULE_UNLOAD<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function moduleUnload<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function MOVE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function move<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function PING<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ping<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function PUBSUB_CHANNELS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function pubSubChannels<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function PUBSUB_NUMPAT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function pubSubNumPat<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function PUBSUB_NUMSUB<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function pubSubNumSub<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function RANDOMKEY<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function randomKey<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function READONLY<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function readonly<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function READWRITE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function readwrite<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function REPLICAOF<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function replicaOf<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    @:native("RESTORE-ASKING")
    dynamic function RESTORE_ASKING<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function restoreAsking<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ROLE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function role<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SAVE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function save<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SCAN<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function scan<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SCRIPT_DEBUG<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function scriptDebug<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SCRIPT_EXISTS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function scriptExists<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SCRIPT_FLUSH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function scriptFlush<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SCRIPT_KILL<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function scriptKill<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SCRIPT_LOAD<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function scriptLoad<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SHUTDOWN<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function shutdown<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SWAPDB<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function swapDb<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function TIME<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function time<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function UNWATCH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function unwatch<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function WAIT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function wait<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function APPEND<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function append<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function BITCOUNT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function bitCount<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function BITFIELD_RO<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function bitFieldRo<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function BITFIELD<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function bitField<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function BITOP<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function bitOp<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function BITPOS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function bitPos<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function BLMOVE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function blMove<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function BLMPOP<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function blmPop<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function BLPOP<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function blPop<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function BRPOP<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function brPop<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function BRPOPLPUSH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function brPopLPush<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function BZMPOP<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function bzmPop<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function BZPOPMAX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function bzPopMax<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function BZPOPMIN<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function bzPopMin<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function COPY<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function copy<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function DECR<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function decr<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function DECRBY<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function decrBy<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function DEL<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function del<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function DUMP<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function dump<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function EVAL_RO<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function evalRo<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function EVAL<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function eval<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function EVALSHA<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function evalSha<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function EVALSHA_RO<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function evalShaRo<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function EXISTS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function exists<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function EXPIRE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function expire<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function EXPIREAT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function expireAt<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function EXPIRETIME<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function expireTime<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function FCALL_RO<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function fCallRo<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function FCALL<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function fCall<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GEOADD<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function geoAdd<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GEODIST<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function geoDist<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GEOHASH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function geoHash<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GEOPOS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function geoPos<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GEORADIUS_RO_WITH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function geoRadiusRoWith<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GEORADIUS_RO<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function geoRadiusRo<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GEORADIUS_WITH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function geoRadiusWith<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GEORADIUS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function geoRadius<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GEORADIUSBYMEMBER_RO_WITH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function geoRadiusByMemberRoWith<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GEORADIUSBYMEMBER_RO<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function geoRadiusByMemberRo<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GEORADIUSBYMEMBER_WITH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function geoRadiusByMemberWith<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GEORADIUSBYMEMBER<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function geoRadiusByMember<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GEORADIUSBYMEMBERSTORE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function geoRadiusByMemberStore<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GEORADIUSSTORE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function geoRadiusStore<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GEOSEARCH_WITH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function geoSearchWith<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GEOSEARCH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function geoSearch<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GEOSEARCHSTORE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function geoSearchStore<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GET<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function get<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GETBIT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function getBit<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GETDEL<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function getDel<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GETEX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function getEx<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GETRANGE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function getRange<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function GETSET<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function getSet<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function HDEL<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function hDel<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function HEXISTS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function hExists<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function HGET<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function hGet<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function HGETALL<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function hGetAll<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function HINCRBY<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function hIncrBy<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function HINCRBYFLOAT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function hIncrByFloat<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function HKEYS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function hKeys<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function HLEN<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function hLen<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function HMGET<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function hmGet<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function HRANDFIELD_COUNT_WITHVALUES<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function hRandFieldCountWithValues<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function HRANDFIELD_COUNT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function hRandFieldCount<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function HRANDFIELD<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function hRandField<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function HSCAN<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function hScan<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function HSET<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function hSet<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function HSETNX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function hSetNX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function HSTRLEN<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function hStrLen<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function HVALS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function hVals<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function INCR<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function incr<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function INCRBY<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function incrBy<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function INCRBYFLOAT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function incrByFloat<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LCS_IDX_WITHMATCHLEN<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lcsIdxWithMatchLen<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LCS_IDX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lcsIdx<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LCS_LEN<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lcsLen<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LCS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lcs<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LINDEX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lIndex<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LINSERT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lInsert<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LLEN<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lLen<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LMOVE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lMove<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LMPOP<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lmPop<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LPOP_COUNT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lPopCount<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LPOP<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lPop<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LPOS_COUNT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lPosCount<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LPOS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lPos<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LPUSH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lPush<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LPUSHX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lPushX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LRANGE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lRange<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LREM<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lRem<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LSET<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lSet<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function LTRIM<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function lTrim<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function MGET<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function mGet<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function MIGRATE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function migrate<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function MSET<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function mSet<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function MSETNX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function mSetNX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function OBJECT_ENCODING<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function objectEncoding<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function OBJECT_FREQ<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function objectFreq<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function OBJECT_IDLETIME<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function objectIdleTime<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function OBJECT_REFCOUNT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function objectRefCount<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function PERSIST<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function persist<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function PEXPIRE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function pExpire<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function PEXPIREAT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function pExpireAt<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function PEXPIRETIME<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function pExpireTime<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function PFADD<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function pfAdd<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function PFCOUNT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function pfCount<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function PFMERGE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function pfMerge<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function PSETEX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function pSetEx<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function PTTL<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function pTTL<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function PUBLISH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function publish<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function RENAME<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function rename<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function RENAMENX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function renameNX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function RPOP_COUNT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function rPopCount<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function RPOP<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function rPop<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function RPOPLPUSH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function rPopLPush<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function RPUSH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function rPush<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function RPUSHX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function rPushX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SADD<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sAdd<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SCARD<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sCard<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SDIFF<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sDiff<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SDIFFSTORE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sDiffStore<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SINTER<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sInter<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SINTERCARD<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sInterCard<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SINTERSTORE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sInterStore<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SET<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function set<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SETBIT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function setBit<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SETEX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function setEx<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SETNX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function setNX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SETRANGE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function setRange<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SISMEMBER<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sIsMember<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SMEMBERS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sMembers<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SMISMEMBER<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function smIsMember<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SMOVE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sMove<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SORT_RO<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sortRo<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SORT_STORE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sortStore<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SORT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sort<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SPOP<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sPop<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SRANDMEMBER_COUNT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sRandMemberCount<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SRANDMEMBER<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sRandMember<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SREM<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sRem<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SSCAN<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sScan<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function STRLEN<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function strLen<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SUNION<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sUnion<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function SUNIONSTORE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function sUnionStore<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function TOUCH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function touch<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function TTL<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ttl<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function TYPE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function type<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function UNLINK<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function unlink<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function WATCH<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function watch<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XACK<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xAck<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XADD<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xAdd<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XAUTOCLAIM_JUSTID<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xAutoClaimJustId<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XAUTOCLAIM<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xAutoClaim<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XCLAIM<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xClaim<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XCLAIM_JUSTID<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xClaimJustId<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XDEL<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xDel<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XGROUP_CREATE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xGroupCreate<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XGROUP_CREATECONSUMER<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xGroupCreateConsumer<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XGROUP_DELCONSUMER<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xGroupDelConsumer<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XGROUP_DESTROY<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xGroupDestroy<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XGROUP_SETID<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xGroupSetId<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XINFO_CONSUMERS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xInfoConsumers<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XINFO_GROUPS<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xInfoGroups<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XINFO_STREAM<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xInfoStream<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XLEN<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xLen<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XPENDING_RANGE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xPendingRange<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XPENDING<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xPending<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XRANGE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xRange<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XREAD<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xRead<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XREADGROUP<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xReadGroup<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XREVRANGE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xRevRange<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XSETID<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xSetId<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function XTRIM<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function xTrim<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZADD<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zAdd<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZCARD<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zCard<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZCOUNT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zCount<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZDIFF_WITHSCORES<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zDiffWithScores<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZDIFF<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zDiff<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZDIFFSTORE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zDiffStore<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZINCRBY<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zIncrBy<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZINTER_WITHSCORES<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zInterWithScores<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZINTER<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zInter<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZINTERCARD<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zInterCard<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZINTERSTORE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zInterStore<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZLEXCOUNT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zLexCount<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZMPOP<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zmPop<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZMSCORE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zmScore<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZPOPMAX_COUNT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zPopMaxCount<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZPOPMAX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zPopMax<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZPOPMIN_COUNT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zPopMinCount<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZPOPMIN<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zPopMin<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZRANDMEMBER_COUNT_WITHSCORES<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zRandMemberCountWithScores<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZRANDMEMBER_COUNT<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zRandMemberCount<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZRANDMEMBER<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zRandMember<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZRANGE_WITHSCORES<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zRangeWithScores<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZRANGE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zRange<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZRANGEBYLEX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zRangeByLex<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZRANGEBYSCORE_WITHSCORES<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zRangeByScoreWithScores<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZRANGEBYSCORE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zRangeByScore<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZRANGESTORE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zRangeStore<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZRANK<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zRank<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZREM<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zRem<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZREMRANGEBYLEX<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zRemRangeByLex<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZREMRANGEBYRANK<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zRemRangeByRank<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZREMRANGEBYSCORE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zRemRangeByScore<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZREVRANK<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zRevRank<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZSCAN<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zScan<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZSCORE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zScore<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZUNION_WITHSCORES<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zUnionWithScores<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZUNION<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zUnion<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function ZUNIONSTORE<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
    dynamic function zUnionStore<Options>(args:haxe.extern.Rest<Any>):js.lib.Promise<Dynamic>;
};