<?php

namespace Illuminate\Support\Facades;

/**
 * @method static \Illuminate\Redis\Connections\Connection connection(\UnitEnum|string|null $name = null)
 * @method static \Illuminate\Redis\Connections\Connection resolve(string|null $name = null)
 * @method static array connections()
 * @method static void enableEvents()
 * @method static void disableEvents()
 * @method static void setDriver(string $driver)
 * @method static void purge(string|null $name = null)
 * @method static \Illuminate\Redis\RedisManager extend(string $driver, \Closure $callback)
 * @method static void createSubscription(array|string $channels, \Closure $callback, string $method = 'subscribe')
 * @method static \Illuminate\Redis\Limiters\ConcurrencyLimiterBuilder funnel(string $name)
 * @method static \Illuminate\Redis\Limiters\DurationLimiterBuilder throttle(string $name)
 * @method static mixed client()
 * @method static void subscribe(array|string $channels, \Closure $callback)
 * @method static void psubscribe(array|string $channels, \Closure $callback)
 * @method static mixed command(string $method, array $parameters = [])
 * @method static void listen(\Closure $callback)
 * @method static void listenForFailures(\Closure $callback)
 * @method static string|null getName()
 * @method static \Illuminate\Redis\Connections\Connection setName(string $name)
 * @method static \Illuminate\Contracts\Events\Dispatcher|null getEventDispatcher()
 * @method static void setEventDispatcher(\Illuminate\Contracts\Events\Dispatcher $events)
 * @method static void unsetEventDispatcher()
 * @method static void macro(string $name, object|callable $macro)
 * @method static void mixin(object $mixin, bool $replace = true)
 * @method static bool hasMacro(string $name)
 * @method static void flushMacros()
 * @method static mixed macroCall(string $method, array $parameters)
 * @method static string _compress(string $value)
 * @method static string _uncompress(string $value)
 * @method static string _prefix(string $key)
 * @method static string _serialize(mixed $value)
 * @method static mixed _unserialize(string $value)
 * @method static string _pack(mixed $value)
 * @method static mixed _unpack(string $value)
 * @method static mixed acl(string $subcmd, string ...$args)
 * @method static \Redis|int|false append(string $key, mixed $value)
 * @method static \Redis|bool auth(mixed $credentials)
 * @method static \Redis|bool bgSave()
 * @method static \Redis|bool bgrewriteaof()
 * @method static \Redis|array|false waitaof(int $numlocal, int $numreplicas, int $timeout)
 * @method static \Redis|int|false bitcount(string $key, int $start = 0, int $end = -1, bool $bybit = false)
 * @method static \Redis|int|false bitop(string $operation, string $deskey, string $srckey, string ...$other_keys)
 * @method static \Redis|int|false bitpos(string $key, bool $bit, int $start = 0, int $end = -1, bool $bybit = false)
 * @method static \Redis|array|false|null blPop(array|string $key_or_keys, string|int|float $timeout_or_key, mixed ...$extra_args)
 * @method static \Redis|array|false|null brPop(array|string $key_or_keys, string|int|float $timeout_or_key, mixed ...$extra_args)
 * @method static \Redis|string|false brpoplpush(string $src, string $dst, int|float $timeout)
 * @method static \Redis|array|false bzPopMax(array|string $key, string|int $timeout_or_key, mixed ...$extra_args)
 * @method static \Redis|array|false bzPopMin(array|string $key, string|int $timeout_or_key, mixed ...$extra_args)
 * @method static \Redis|array|false|null bzmpop(float $timeout, array $keys, string $from, int $count = 1)
 * @method static \Redis|array|false|null zmpop(array $keys, string $from, int $count = 1)
 * @method static \Redis|array|false|null blmpop(float $timeout, array $keys, string $from, int $count = 1)
 * @method static \Redis|array|false|null lmpop(array $keys, string $from, int $count = 1)
 * @method static bool clearLastError()
 * @method static bool close()
 * @method static mixed config(string $operation, array|string|null $key_or_settings = null, string|null $value = null)
 * @method static bool connect(string $host, int $port = 6379, float $timeout = 0, string|null $persistent_id = null, int $retry_interval = 0, float $read_timeout = 0, array|null $context = null)
 * @method static \Redis|bool copy(string $src, string $dst, array|null $options = null)
 * @method static \Redis|int|false dbSize()
 * @method static \Redis|string debug(string $key)
 * @method static \Redis|int|false decr(string $key, int $by = 1)
 * @method static \Redis|int|false decrBy(string $key, int $value)
 * @method static \Redis|int|false del(array|string $key, string ...$other_keys)
 * @method static \Redis|int|false delifeq(string $key, mixed $value)
 * @method static \Redis|bool discard()
 * @method static \Redis|string|false dump(string $key)
 * @method static \Redis|string|false echo(string $str)
 * @method static mixed eval(string $script, array $args = [], int $num_keys = 0)
 * @method static mixed eval_ro(string $script_sha, array $args = [], int $num_keys = 0)
 * @method static mixed evalsha(string $sha1, array $args = [], int $num_keys = 0)
 * @method static mixed evalsha_ro(string $sha1, array $args = [], int $num_keys = 0)
 * @method static \Redis|array|false exec()
 * @method static \Redis|int|bool exists(mixed $key, mixed ...$other_keys)
 * @method static \Redis|bool expire(string $key, int $timeout, string|null $mode = null)
 * @method static \Redis|bool expireAt(string $key, int $timestamp, string|null $mode = null)
 * @method static \Redis|bool failover(array|null $to = null, bool $abort = false, int $timeout = 0)
 * @method static \Redis|int|false expiretime(string $key)
 * @method static \Redis|int|false pexpiretime(string $key)
 * @method static mixed fcall(string $fn, array $keys = [], array $args = [])
 * @method static mixed fcall_ro(string $fn, array $keys = [], array $args = [])
 * @method static \Redis|bool flushAll(bool|null $sync = null)
 * @method static \Redis|bool flushDB(bool|null $sync = null)
 * @method static \Redis|array|string|bool function(string $operation, mixed ...$args)
 * @method static \Redis|int|false geoadd(string $key, float $lng, float $lat, string $member, mixed ...$other_triples_and_options)
 * @method static \Redis|float|false geodist(string $key, string $src, string $dst, string|null $unit = null)
 * @method static \Redis|array|false geohash(string $key, string $member, string ...$other_members)
 * @method static \Redis|array|false geopos(string $key, string $member, string ...$other_members)
 * @method static mixed georadius(string $key, float $lng, float $lat, float $radius, string $unit, array $options = [])
 * @method static mixed georadius_ro(string $key, float $lng, float $lat, float $radius, string $unit, array $options = [])
 * @method static mixed georadiusbymember(string $key, string $member, float $radius, string $unit, array $options = [])
 * @method static mixed georadiusbymember_ro(string $key, string $member, float $radius, string $unit, array $options = [])
 * @method static array geosearch(string $key, array|string $position, array|int|float $shape, string $unit, array $options = [])
 * @method static \Redis|array|int|false geosearchstore(string $dst, string $src, array|string $position, array|int|float $shape, string $unit, array $options = [])
 * @method static mixed get(string $key)
 * @method static \Redis|array|false getWithMeta(string $key)
 * @method static mixed getAuth()
 * @method static \Redis|int|false getBit(string $key, int $idx)
 * @method static \Redis|string|bool getEx(string $key, array $options = [])
 * @method static int getDBNum()
 * @method static \Redis|string|bool getDel(string $key)
 * @method static string getHost()
 * @method static string|null getLastError()
 * @method static int getMode()
 * @method static mixed getOption(int $option)
 * @method static string|null getPersistentID()
 * @method static int getPort()
 * @method static string|false serverName()
 * @method static string|false serverVersion()
 * @method static \Redis|string|false getRange(string $key, int $start, int $end)
 * @method static \Redis|array|string|int|false lcs(string $key1, string $key2, array|null $options = null)
 * @method static float getReadTimeout()
 * @method static \Redis|string|false getset(string $key, mixed $value)
 * @method static float|false getTimeout()
 * @method static array getTransferredBytes()
 * @method static void clearTransferredBytes()
 * @method static \Redis|int|false hDel(string $key, string $field, string ...$other_fields)
 * @method static \Redis|bool hExists(string $key, string $field)
 * @method static mixed hGet(string $key, string $member)
 * @method static \Redis|array|false hGetAll(string $key)
 * @method static mixed hGetWithMeta(string $key, string $member)
 * @method static \Redis|int|false hIncrBy(string $key, string $field, int $value)
 * @method static \Redis|float|false hIncrByFloat(string $key, string $field, float $value)
 * @method static \Redis|array|false hKeys(string $key)
 * @method static \Redis|int|false hLen(string $key)
 * @method static \Redis|array|false hMget(string $key, array $fields)
 * @method static \Redis|array|false hgetex(string $key, array $fields, array|string|null $expiry = null)
 * @method static \Redis|int|false hsetex(string $key, array $fields, array|null $expiry = null)
 * @method static \Redis|array|false hgetdel(string $key, array $fields)
 * @method static \Redis|bool hMset(string $key, array $fieldvals)
 * @method static \Redis|array|string|false hRandField(string $key, array|null $options = null)
 * @method static \Redis|int|false hSet(string $key, mixed ...$fields_and_vals)
 * @method static \Redis|bool hSetNx(string $key, string $field, mixed $value)
 * @method static \Redis|int|false hStrLen(string $key, string $field)
 * @method static \Redis|array|false hVals(string $key)
 * @method static \Redis|array|false hexpire(string $key, int $ttl, array $fields, string|null $mode = null)
 * @method static \Redis|array|false hpexpire(string $key, int $ttl, array $fields, string|null $mode = null)
 * @method static \Redis|array|false hexpireat(string $key, int $time, array $fields, string|null $mode = null)
 * @method static \Redis|array|false hpexpireat(string $key, int $mstime, array $fields, string|null $mode = null)
 * @method static \Redis|array|false httl(string $key, array $fields)
 * @method static \Redis|array|false hpttl(string $key, array $fields)
 * @method static \Redis|array|false hexpiretime(string $key, array $fields)
 * @method static \Redis|array|false hpexpiretime(string $key, array $fields)
 * @method static \Redis|array|false hpersist(string $key, array $fields)
 * @method static \Redis|array|bool hscan(string $key, string|int|null $iterator, string|null $pattern = null, int $count = 0)
 * @method static \Redis|int|false expiremember(string $key, string $field, int $ttl, string|null $unit = null)
 * @method static \Redis|int|false expirememberat(string $key, string $field, int $timestamp)
 * @method static \Redis|int|false incr(string $key, int $by = 1)
 * @method static \Redis|int|false incrBy(string $key, int $value)
 * @method static \Redis|float|false incrByFloat(string $key, float $value)
 * @method static \Redis|array|false info(string ...$sections)
 * @method static bool isConnected()
 * @method static void keys(string $pattern)
 * @method static void lInsert(string $key, string $pos, mixed $pivot, mixed $value)
 * @method static \Redis|int|false lLen(string $key)
 * @method static \Redis|string|false lMove(string $src, string $dst, string $wherefrom, string $whereto)
 * @method static \Redis|string|false blmove(string $src, string $dst, string $wherefrom, string $whereto, float $timeout)
 * @method static \Redis|array|string|bool lPop(string $key, int $count = 0)
 * @method static \Redis|array|int|bool|null lPos(string $key, mixed $value, array|null $options = null)
 * @method static \Redis|int|false lPush(string $key, mixed ...$elements)
 * @method static \Redis|int|false rPush(string $key, mixed ...$elements)
 * @method static \Redis|int|false lPushx(string $key, mixed $value)
 * @method static \Redis|int|false rPushx(string $key, mixed $value)
 * @method static \Redis|bool lSet(string $key, int $index, mixed $value)
 * @method static int lastSave()
 * @method static mixed lindex(string $key, int $index)
 * @method static \Redis|array|false lrange(string $key, int $start, int $end)
 * @method static \Redis|int|false lrem(string $key, mixed $value, int $count = 0)
 * @method static \Redis|bool ltrim(string $key, int $start, int $end)
 * @method static \Redis|array|false mget(array $keys)
 * @method static \Redis|bool migrate(string $host, int $port, array|string $key, int $dstdb, int $timeout, bool $copy = false, bool $replace = false, mixed $credentials = null)
 * @method static \Redis|bool move(string $key, int $index)
 * @method static \Redis|bool mset(array $key_values)
 * @method static \Redis|bool msetnx(array $key_values)
 * @method static \Redis|bool multi(int $value = 1)
 * @method static \Redis|string|int|false object(string $subcommand, string $key)
 * @method static bool pconnect(string $host, int $port = 6379, float $timeout = 0, string|null $persistent_id = null, int $retry_interval = 0, float $read_timeout = 0, array|null $context = null)
 * @method static \Redis|bool persist(string $key)
 * @method static bool pexpire(string $key, int $timeout, string|null $mode = null)
 * @method static \Redis|bool pexpireAt(string $key, int $timestamp, string|null $mode = null)
 * @method static \Redis|int pfadd(string $key, array $elements)
 * @method static \Redis|int|false pfcount(array|string $key_or_keys)
 * @method static \Redis|bool pfmerge(string $dst, array $srckeys)
 * @method static \Redis|string|bool ping(string|null $message = null)
 * @method static \Redis|bool pipeline()
 * @method static \Redis|bool psetex(string $key, int $expire, mixed $value)
 * @method static \Redis|int|false pttl(string $key)
 * @method static \Redis|int|false publish(string $channel, string $message)
 * @method static mixed pubsub(string $command, mixed $arg = null)
 * @method static \Redis|array|bool punsubscribe(array $patterns)
 * @method static \Redis|array|string|bool rPop(string $key, int $count = 0)
 * @method static \Redis|string|false randomKey()
 * @method static mixed rawcommand(string $command, mixed ...$args)
 * @method static \Redis|bool rename(string $old_name, string $new_name)
 * @method static \Redis|bool renameNx(string $key_src, string $key_dst)
 * @method static \Redis|bool reset()
 * @method static \Redis|bool restore(string $key, int $ttl, string $value, array|null $options = null)
 * @method static mixed role()
 * @method static \Redis|string|false rpoplpush(string $srckey, string $dstkey)
 * @method static \Redis|int|false sAdd(string $key, mixed $value, mixed ...$other_values)
 * @method static int sAddArray(string $key, array $values)
 * @method static \Redis|array|false sDiff(string $key, string ...$other_keys)
 * @method static \Redis|int|false sDiffStore(string $dst, string $key, string ...$other_keys)
 * @method static \Redis|array|false sInter(array|string $key, string ...$other_keys)
 * @method static \Redis|int|false sintercard(array $keys, int $limit = -1)
 * @method static \Redis|int|false sInterStore(array|string $key, string ...$other_keys)
 * @method static \Redis|array|false sMembers(string $key)
 * @method static \Redis|array|false sMisMember(string $key, string $member, string ...$other_members)
 * @method static \Redis|bool sMove(string $src, string $dst, mixed $value)
 * @method static \Redis|array|string|false sPop(string $key, int $count = 0)
 * @method static mixed sRandMember(string $key, int $count = 0)
 * @method static \Redis|array|false sUnion(string $key, string ...$other_keys)
 * @method static \Redis|int|false sUnionStore(string $dst, string $key, string ...$other_keys)
 * @method static \Redis|bool save()
 * @method static array|false scan(string|int|null $iterator, string|null $pattern = null, int $count = 0, string|null $type = null)
 * @method static \Redis|int|false scard(string $key)
 * @method static mixed script(string $command, mixed ...$args)
 * @method static \Redis|bool select(int $db)
 * @method static \Redis|string|bool set(string $key, mixed $value, mixed $options = null)
 * @method static \Redis|int|false setBit(string $key, int $idx, bool $value)
 * @method static \Redis|int|false setRange(string $key, int $index, string $value)
 * @method static bool setOption(int $option, mixed $value)
 * @method static void setex(string $key, int $expire, mixed $value)
 * @method static \Redis|bool setnx(string $key, mixed $value)
 * @method static \Redis|bool sismember(string $key, mixed $value)
 * @method static \Redis|bool replicaof(string|null $host = null, int $port = 6379)
 * @method static \Redis|int|false touch(array|string $key_or_array, string ...$more_keys)
 * @method static mixed slowlog(string $operation, int $length = 0)
 * @method static mixed sort(string $key, array|null $options = null)
 * @method static mixed sort_ro(string $key, array|null $options = null)
 * @method static \Redis|int|false srem(string $key, mixed $value, mixed ...$other_values)
 * @method static array|false sscan(string $key, string|int|null $iterator, string|null $pattern = null, int $count = 0)
 * @method static bool ssubscribe(array $channels, callable $cb)
 * @method static \Redis|int|false strlen(string $key)
 * @method static \Redis|array|bool sunsubscribe(array $channels)
 * @method static \Redis|bool swapdb(int $src, int $dst)
 * @method static \Redis|array time()
 * @method static \Redis|int|false ttl(string $key)
 * @method static \Redis|int|false type(string $key)
 * @method static \Redis|int|false unlink(array|string $key, string ...$other_keys)
 * @method static \Redis|array|bool unsubscribe(array $channels)
 * @method static \Redis|bool unwatch()
 * @method static \Redis|bool watch(array|string $key, string ...$other_keys)
 * @method static int|false wait(int $numreplicas, int $timeout)
 * @method static int|false xack(string $key, string $group, array $ids)
 * @method static \Redis|string|false xadd(string $key, string $id, array $values, int $maxlen = 0, bool $approx = false, bool $nomkstream = false)
 * @method static \Redis|array|bool xautoclaim(string $key, string $group, string $consumer, int $min_idle, string $start, int $count = -1, bool $justid = false)
 * @method static \Redis|array|bool xclaim(string $key, string $group, string $consumer, int $min_idle, array $ids, array $options)
 * @method static \Redis|int|false xdel(string $key, array $ids)
 * @method static mixed xgroup(string $operation, string|null $key = null, string|null $group = null, string|null $id_or_consumer = null, bool $mkstream = false, int $entries_read = -2)
 * @method static mixed xinfo(string $operation, string|null $arg1 = null, string|null $arg2 = null, int $count = -1)
 * @method static \Redis|int|false xlen(string $key)
 * @method static \Redis|array|false xpending(string $key, string $group, string|null $start = null, string|null $end = null, int $count = -1, string|null $consumer = null)
 * @method static \Redis|array|bool xrange(string $key, string $start, string $end, int $count = -1)
 * @method static \Redis|array|bool xread(array $streams, int $count = -1, int $block = -1)
 * @method static \Redis|array|bool xreadgroup(string $group, string $consumer, array $streams, int $count = 1, int $block = 1)
 * @method static \Redis|array|bool xrevrange(string $key, string $end, string $start, int $count = -1)
 * @method static \Redis|int|false vadd(string $key, array $values, mixed $element, array|null $options = null)
 * @method static \Redis|array|false vsim(string $key, mixed $member, array|null $options = null)
 * @method static \Redis|int|false vcard(string $key)
 * @method static \Redis|int|false vdim(string $key)
 * @method static \Redis|array|false vinfo(string $key)
 * @method static \Redis|bool vismember(string $key, mixed $member)
 * @method static \Redis|array|false vemb(string $key, mixed $member, bool $raw = false)
 * @method static \Redis|array|string|false vrandmember(string $key, int $count = 0)
 * @method static \Redis|array|false vrange(string $key, string $min, string $max, int $count = -1)
 * @method static \Redis|int|false vrem(string $key, mixed $member)
 * @method static \Redis|int|false vsetattr(string $key, mixed $member, array|string $attributes)
 * @method static \Redis|array|string|false vgetattr(string $key, mixed $member, bool $decode = true)
 * @method static \Redis|array|false vlinks(string $key, mixed $member, bool $withscores = false)
 * @method static \Redis|int|false xtrim(string $key, string $threshold, bool $approx = false, bool $minid = false, int $limit = -1)
 * @method static \Redis|int|float|false zAdd(string $key, array|float $score_or_options, mixed ...$more_scores_and_mems)
 * @method static \Redis|int|false zCard(string $key)
 * @method static \Redis|int|false zCount(string $key, string|int $start, string|int $end)
 * @method static \Redis|float|false zIncrBy(string $key, float $value, mixed $member)
 * @method static \Redis|int|false zLexCount(string $key, string $min, string $max)
 * @method static \Redis|array|false zMscore(string $key, mixed $member, mixed ...$other_members)
 * @method static \Redis|array|false zPopMax(string $key, int|null $count = null)
 * @method static \Redis|array|false zPopMin(string $key, int|null $count = null)
 * @method static \Redis|array|false zRange(string $key, string|int $start, string|int $end, array|bool|null $options = null)
 * @method static \Redis|array|false zRangeByLex(string $key, string $min, string $max, int $offset = -1, int $count = -1)
 * @method static \Redis|array|false zRangeByScore(string $key, string $start, string $end, array $options = [])
 * @method static \Redis|int|false zrangestore(string $dstkey, string $srckey, string $start, string $end, array|bool|null $options = null)
 * @method static \Redis|array|string zRandMember(string $key, array|null $options = null)
 * @method static \Redis|int|false zRank(string $key, mixed $member)
 * @method static \Redis|int|false zRem(mixed $key, mixed $member, mixed ...$other_members)
 * @method static \Redis|int|false zRemRangeByLex(string $key, string $min, string $max)
 * @method static \Redis|int|false zRemRangeByRank(string $key, int $start, int $end)
 * @method static \Redis|int|false zRemRangeByScore(string $key, string $start, string $end)
 * @method static \Redis|array|false zRevRange(string $key, int $start, int $end, mixed $scores = null)
 * @method static \Redis|array|false zRevRangeByLex(string $key, string $max, string $min, int $offset = -1, int $count = -1)
 * @method static \Redis|array|false zRevRangeByScore(string $key, string $max, string $min, array|bool $options = [])
 * @method static \Redis|int|false zRevRank(string $key, mixed $member)
 * @method static \Redis|float|false zScore(string $key, mixed $member)
 * @method static \Redis|array|false zdiff(array $keys, array|null $options = null)
 * @method static \Redis|int|false zdiffstore(string $dst, array $keys)
 * @method static \Redis|array|false zinter(array $keys, array|null $weights = null, array|null $options = null)
 * @method static \Redis|int|false zintercard(array $keys, int $limit = -1)
 * @method static \Redis|int|false zinterstore(string $dst, array $keys, array|null $weights = null, string|null $aggregate = null)
 * @method static \Redis|array|false zscan(string $key, string|int|null $iterator, string|null $pattern = null, int $count = 0)
 * @method static \Redis|array|false zunion(array $keys, array|null $weights = null, array|null $options = null)
 * @method static \Redis|int|false zunionstore(string $dst, array $keys, array|null $weights = null, string|null $aggregate = null)
 *
 * @see \Illuminate\Redis\RedisManager
 */
class Redis extends Facade
{
    /**
     * Get the registered name of the component.
     *
     * @return string
     */
    protected static function getFacadeAccessor()
    {
        return 'redis';
    }
}
