@upstash/redis 1.37.0-rc.8 → 1.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -204,67 +204,6 @@ declare class Command<TResult, TData> {
204
204
  exec(client: Requester): Promise<TData>;
205
205
  }
206
206
 
207
- type ZUnionStoreCommandOptions = {
208
- aggregate?: "sum" | "min" | "max";
209
- } & ({
210
- weight: number;
211
- weights?: never;
212
- } | {
213
- weight?: never;
214
- weights: number[];
215
- } | {
216
- weight?: never;
217
- weights?: never;
218
- });
219
- /**
220
- * @see https://redis.io/commands/zunionstore
221
- */
222
- declare class ZUnionStoreCommand extends Command<number, number> {
223
- constructor(cmd: [destination: string, numKeys: 1, key: string, opts?: ZUnionStoreCommandOptions], cmdOpts?: CommandOptions<number, number>);
224
- constructor(cmd: [destination: string, numKeys: number, keys: string[], opts?: ZUnionStoreCommandOptions], cmdOpts?: CommandOptions<number, number>);
225
- }
226
-
227
- type ZUnionCommandOptions = {
228
- withScores?: boolean;
229
- aggregate?: "sum" | "min" | "max";
230
- } & ({
231
- weight: number;
232
- weights?: never;
233
- } | {
234
- weight?: never;
235
- weights: number[];
236
- } | {
237
- weight?: never;
238
- weights?: never;
239
- });
240
- /**
241
- * @see https://redis.io/commands/zunion
242
- */
243
- declare class ZUnionCommand<TData extends unknown[]> extends Command<string[], TData> {
244
- constructor(cmd: [numKeys: 1, key: string, opts?: ZUnionCommandOptions], cmdOpts?: CommandOptions<string[], TData>);
245
- constructor(cmd: [numKeys: number, keys: string[], opts?: ZUnionCommandOptions], cmdOpts?: CommandOptions<string[], TData>);
246
- }
247
-
248
- type ZInterStoreCommandOptions = {
249
- aggregate?: "sum" | "min" | "max";
250
- } & ({
251
- weight: number;
252
- weights?: never;
253
- } | {
254
- weight?: never;
255
- weights: number[];
256
- } | {
257
- weight?: never;
258
- weights?: never;
259
- });
260
- /**
261
- * @see https://redis.io/commands/zInterstore
262
- */
263
- declare class ZInterStoreCommand extends Command<number, number> {
264
- constructor(cmd: [destination: string, numKeys: 1, key: string, opts?: ZInterStoreCommandOptions], cmdOpts?: CommandOptions<number, number>);
265
- constructor(cmd: [destination: string, numKeys: number, keys: string[], opts?: ZInterStoreCommandOptions], cmdOpts?: CommandOptions<number, number>);
266
- }
267
-
268
207
  type Type = "string" | "list" | "set" | "zset" | "hash" | "none";
269
208
  /**
270
209
  * @see https://redis.io/commands/type
@@ -273,59 +212,7 @@ declare class TypeCommand extends Command<Type, Type> {
273
212
  constructor(cmd: [key: string], opts?: CommandOptions<Type, Type>);
274
213
  }
275
214
 
276
- type ScriptFlushCommandOptions = {
277
- sync: true;
278
- async?: never;
279
- } | {
280
- sync?: never;
281
- async: true;
282
- };
283
- /**
284
- * @see https://redis.io/commands/script-flush
285
- */
286
- declare class ScriptFlushCommand extends Command<"OK", "OK"> {
287
- constructor([opts]: [opts?: ScriptFlushCommandOptions], cmdOpts?: CommandOptions<"OK", "OK">);
288
- }
289
-
290
- type GeoAddCommandOptions = {
291
- nx?: boolean;
292
- xx?: never;
293
- } | ({
294
- nx?: never;
295
- xx?: boolean;
296
- } & {
297
- ch?: boolean;
298
- });
299
- type GeoMember<TMemberType> = {
300
- latitude: number;
301
- longitude: number;
302
- member: TMemberType;
303
- };
304
- /**
305
- * @see https://redis.io/commands/geoadd
306
- */
307
- declare class GeoAddCommand<TMemberType = string> extends Command<number | null, number | null> {
308
- constructor([key, arg1, ...arg2]: [
309
- string,
310
- GeoMember<TMemberType> | GeoAddCommandOptions,
311
- ...GeoMember<TMemberType>[]
312
- ], opts?: CommandOptions<number | null, number | null>);
313
- }
314
-
315
- type ExpireOption = "NX" | "nx" | "XX" | "xx" | "GT" | "gt" | "LT" | "lt";
316
- declare class ExpireCommand extends Command<"0" | "1", 0 | 1> {
317
- constructor(cmd: [key: string, seconds: number, option?: ExpireOption], opts?: CommandOptions<"0" | "1", 0 | 1>);
318
- }
319
-
320
- type ClientSetInfoAttribute = "LIB-NAME" | "lib-name" | "LIB-VER" | "lib-ver";
321
- /**
322
- * @see https://redis.io/commands/client-setinfo
323
- */
324
- declare class ClientSetInfoCommand extends Command<string, string> {
325
- constructor([attribute, value]: [attribute: ClientSetInfoAttribute, value: string], opts?: CommandOptions<string, string>);
326
- }
327
-
328
- declare const FIELD_TYPES: readonly ["TEXT", "U64", "I64", "F64", "BOOL", "DATE", "KEYWORD"];
215
+ declare const FIELD_TYPES: readonly ["TEXT", "U64", "I64", "F64", "BOOL", "DATE", "KEYWORD", "FACET"];
329
216
  type FieldType = (typeof FIELD_TYPES)[number];
330
217
  type TextField = {
331
218
  type: "TEXT";
@@ -351,7 +238,10 @@ type DateField = {
351
238
  type KeywordField = {
352
239
  type: "KEYWORD";
353
240
  };
354
- type DetailedField = TextField | NumericField | BoolField | DateField | KeywordField;
241
+ type FacetField = {
242
+ type: "FACET";
243
+ };
244
+ type DetailedField = TextField | NumericField | BoolField | DateField | KeywordField | FacetField;
355
245
  type NestedIndexSchema = {
356
246
  [key: string]: FieldType | DetailedField | NestedIndexSchema;
357
247
  };
@@ -365,7 +255,7 @@ type ExtractFieldType<T> = T extends FieldType ? T : T extends {
365
255
  type: infer U;
366
256
  } ? U extends FieldType ? U : never : never;
367
257
  type GetFieldAtPath<TSchema, Path extends string> = Path extends `${infer First}.${infer Rest}` ? First extends keyof TSchema ? GetFieldAtPath<TSchema[First], Rest> : never : Path extends keyof TSchema ? TSchema[Path] : never;
368
- type FieldValueType<T extends FieldType> = T extends "TEXT" ? string : T extends "U64" | "I64" | "F64" ? number : T extends "BOOL" ? boolean : T extends "DATE" ? string : T extends "KEYWORD" ? string : never;
258
+ type FieldValueType<T extends FieldType> = T extends "TEXT" ? string : T extends "U64" | "I64" | "F64" ? number : T extends "BOOL" ? boolean : T extends "DATE" ? string : T extends "KEYWORD" ? string : T extends "FACET" ? string : never;
369
259
  type GetFieldValueType<TSchema, Path extends string> = GetFieldAtPath<TSchema, Path> extends infer Field ? Field extends FieldType | DetailedField ? FieldValueType<ExtractFieldType<Field>> : never : never;
370
260
  type HasFrom<T> = T extends {
371
261
  from: string;
@@ -376,7 +266,19 @@ type AsAnyIfUnknown<T> = unknown extends T ? any : T;
376
266
  type InferSchemaData<TSchema> = IsDefaultSchema<TSchema> extends true ? any : {
377
267
  [K in keyof TSchema as TSchema[K] extends DetailedField ? HasFrom<TSchema[K]> extends true ? never : K : K]: AsAnyIfUnknown<InferSchemaDataField<TSchema[K]>>;
378
268
  };
379
- type QueryOptions<TSchema extends NestedIndexSchema | FlatIndexSchema> = {
269
+ type QueryOptions<TSchema extends NestedIndexSchema | FlatIndexSchema> = IsDefaultSchema<TSchema> extends true ? {
270
+ filter?: Record<string, any>;
271
+ limit?: number;
272
+ offset?: number;
273
+ select?: Record<string, true>;
274
+ highlight?: {
275
+ fields: string[];
276
+ preTag?: string;
277
+ postTag?: string;
278
+ };
279
+ orderBy?: Record<string, "ASC" | "DESC">;
280
+ scoreFunc?: ScoreBy<string>;
281
+ } : {
380
282
  filter?: RootQueryFilter<TSchema>;
381
283
  /** Maximum number of results to return */
382
284
  limit?: number;
@@ -460,12 +362,12 @@ type PublicQueryResult<TSchema extends NestedIndexSchema | FlatIndexSchema, TSel
460
362
  } : undefined>;
461
363
  type StringOperationMap<T extends string> = {
462
364
  $eq: T;
463
- $ne: T;
464
365
  $in: T[];
465
366
  $fuzzy: T | {
466
367
  value: T;
467
368
  distance?: number;
468
369
  transpositionCostOne?: boolean;
370
+ prefix?: boolean;
469
371
  };
470
372
  $phrase: T | {
471
373
  value: T;
@@ -483,7 +385,14 @@ type StringOperationMap<T extends string> = {
483
385
  };
484
386
  type NumberOperationMap<T extends number> = {
485
387
  $eq: T;
486
- $ne: T;
388
+ $in: T[];
389
+ $gt: T;
390
+ $gte: T;
391
+ $lt: T;
392
+ $lte: T;
393
+ };
394
+ type KeywordOperationMap<T extends string> = {
395
+ $eq: T;
487
396
  $in: T[];
488
397
  $gt: T;
489
398
  $gte: T;
@@ -492,18 +401,20 @@ type NumberOperationMap<T extends number> = {
492
401
  };
493
402
  type BooleanOperationMap<T extends boolean> = {
494
403
  $eq: T;
495
- $ne: T;
496
404
  $in: T[];
497
405
  };
498
406
  type DateOperationMap<T extends string | Date> = {
499
407
  $eq: T;
500
- $ne: T;
501
408
  $in: T[];
502
409
  $gt: T;
503
410
  $gte: T;
504
411
  $lte: T;
505
412
  $lt: T;
506
413
  };
414
+ type FacetOperationMap<T extends string> = {
415
+ $eq: T;
416
+ $in: T[];
417
+ };
507
418
  type StringOperations = {
508
419
  [K in keyof StringOperationMap<string>]: {
509
420
  [P in K]: StringOperationMap<string>[K];
@@ -532,7 +443,21 @@ type DateOperations = {
532
443
  $boost?: number;
533
444
  };
534
445
  }[keyof DateOperationMap<string | Date>];
535
- type OperationsForFieldType<T extends FieldType> = T extends "TEXT" ? StringOperations : T extends "U64" | "I64" | "F64" ? NumberOperations : T extends "BOOL" ? BooleanOperations : T extends "DATE" ? DateOperations : T extends "KEYWORD" ? StringOperations : never;
446
+ type KeywordOperations = {
447
+ [K in keyof KeywordOperationMap<string>]: {
448
+ [P in K]: KeywordOperationMap<string>[K];
449
+ } & {
450
+ $boost?: number;
451
+ };
452
+ }[keyof KeywordOperationMap<string>];
453
+ type FacetOperations = {
454
+ [K in keyof FacetOperationMap<string>]: {
455
+ [P in K]: FacetOperationMap<string>[K];
456
+ } & {
457
+ $boost?: number;
458
+ };
459
+ }[keyof FacetOperationMap<string>];
460
+ type OperationsForFieldType<T extends FieldType> = T extends "TEXT" ? StringOperations : T extends "U64" | "I64" | "F64" ? NumberOperations : T extends "BOOL" ? BooleanOperations : T extends "DATE" ? DateOperations : T extends "KEYWORD" ? KeywordOperations : T extends "FACET" ? FacetOperations : never;
536
461
  type PathOperations<TSchema, TPath extends string> = GetFieldAtPath<TSchema, TPath> extends infer Field ? Field extends FieldType | DetailedField ? OperationsForFieldType<ExtractFieldType<Field>> | FieldValueType<ExtractFieldType<Field>> : never : never;
537
462
  type QueryLeaf<TSchema> = {
538
463
  [K in SchemaPaths<TSchema>]?: PathOperations<TSchema, K>;
@@ -633,8 +558,8 @@ type BoolNode<TSchema extends NestedIndexSchema | FlatIndexSchema> = BoolBase<TS
633
558
  $and?: never;
634
559
  $or?: never;
635
560
  };
636
- type QueryFilter<TSchema extends NestedIndexSchema | FlatIndexSchema> = QueryLeaf<TSchema> | AndNode<TSchema> | OrNode<TSchema> | MustNode<TSchema> | ShouldNode<TSchema> | MustShouldNode<TSchema> | NotNode<TSchema> | AndNotNode<TSchema> | OrNotNode<TSchema> | ShouldNotNode<TSchema> | MustNotNode<TSchema> | BoolNode<TSchema>;
637
- type RootQueryFilter<TSchema extends NestedIndexSchema | FlatIndexSchema> = QueryLeaf<TSchema> | AndNode<TSchema> | RootOrNode<TSchema> | MustNode<TSchema> | ShouldNode<TSchema> | MustShouldNode<TSchema> | AndNotNode<TSchema> | ShouldNotNode<TSchema> | BoolNode<TSchema>;
561
+ type QueryFilter<TSchema extends NestedIndexSchema | FlatIndexSchema> = IsDefaultSchema<TSchema> extends true ? Record<string, any> : QueryLeaf<TSchema> | AndNode<TSchema> | OrNode<TSchema> | MustNode<TSchema> | ShouldNode<TSchema> | MustShouldNode<TSchema> | NotNode<TSchema> | AndNotNode<TSchema> | OrNotNode<TSchema> | ShouldNotNode<TSchema> | MustNotNode<TSchema> | BoolNode<TSchema>;
562
+ type RootQueryFilter<TSchema extends NestedIndexSchema | FlatIndexSchema> = IsDefaultSchema<TSchema> extends true ? Record<string, any> : QueryLeaf<TSchema> | AndNode<TSchema> | RootOrNode<TSchema> | MustNode<TSchema> | ShouldNode<TSchema> | MustShouldNode<TSchema> | AndNotNode<TSchema> | ShouldNotNode<TSchema> | BoolNode<TSchema>;
638
563
  type RootOrNode<TSchema extends NestedIndexSchema | FlatIndexSchema> = {
639
564
  [P in SchemaPaths<TSchema>]?: never;
640
565
  } & {
@@ -643,30 +568,40 @@ type RootOrNode<TSchema extends NestedIndexSchema | FlatIndexSchema> = {
643
568
  $and?: never;
644
569
  $must?: never;
645
570
  $should?: never;
646
- $mustNot?: never;
571
+ $mustNot?: QueryFilter<TSchema> | QueryFilter<TSchema>[];
647
572
  };
648
573
  type DescribeFieldInfo = {
649
574
  type: FieldType;
650
575
  noTokenize?: boolean;
651
576
  noStem?: boolean;
652
577
  fast?: boolean;
578
+ from?: string;
653
579
  };
654
580
  type IndexDescription<TSchema extends NestedIndexSchema | FlatIndexSchema> = {
655
581
  name: string;
656
582
  dataType: "hash" | "string" | "json";
657
583
  prefixes: string[];
658
584
  language?: Language;
659
- schema: Record<SchemaPaths<TSchema>, DescribeFieldInfo>;
585
+ schema: IsDefaultSchema<TSchema> extends true ? Record<string, DescribeFieldInfo> : Record<SchemaPaths<TSchema>, DescribeFieldInfo>;
660
586
  };
661
587
  type Language = "english" | "arabic" | "danish" | "dutch" | "finnish" | "french" | "german" | "greek" | "hungarian" | "italian" | "norwegian" | "portuguese" | "romanian" | "russian" | "spanish" | "swedish" | "tamil" | "turkish";
662
- type AggregateOptions<TSchema extends NestedIndexSchema | FlatIndexSchema> = {
588
+ type FacetPaths<T, Prefix extends string = ""> = {
589
+ [K in keyof T]: K extends string ? T[K] extends "FACET" | {
590
+ type: "FACET";
591
+ } ? Prefix extends "" ? K : `${Prefix}${K}` : T[K] extends FieldType | DetailedField ? never : T[K] extends object ? FacetPaths<T[K], `${Prefix}${K}.`> : never : never;
592
+ }[keyof T];
593
+ type AggregateOptions<TSchema extends NestedIndexSchema | FlatIndexSchema> = IsDefaultSchema<TSchema> extends true ? {
594
+ filter?: Record<string, any>;
595
+ aggregations: {
596
+ [key: string]: Record<string, any>;
597
+ };
598
+ } : {
663
599
  filter?: RootQueryFilter<TSchema>;
664
- limit?: number;
665
600
  aggregations: {
666
601
  [key: string]: Aggregation<TSchema>;
667
602
  };
668
603
  };
669
- type Aggregation<TSchema extends NestedIndexSchema | FlatIndexSchema> = TermsAggregation<TSchema> | RangeAggregation<TSchema> | HistogramAggregation<TSchema> | StatsAggregation<TSchema> | AvgAggregation<TSchema> | SumAggregation<TSchema> | MinAggregation<TSchema> | MaxAggregation<TSchema> | CountAggregation<TSchema> | ExtendedStatsAggregation<TSchema> | PercentilesAggregation<TSchema> | CardinalityAggregation<TSchema>;
604
+ type Aggregation<TSchema extends NestedIndexSchema | FlatIndexSchema> = IsDefaultSchema<TSchema> extends true ? Record<string, any> : TermsAggregation<TSchema> | RangeAggregation<TSchema> | HistogramAggregation<TSchema> | StatsAggregation<TSchema> | AvgAggregation<TSchema> | SumAggregation<TSchema> | MinAggregation<TSchema> | MaxAggregation<TSchema> | CountAggregation<TSchema> | ExtendedStatsAggregation<TSchema> | PercentilesAggregation<TSchema> | CardinalityAggregation<TSchema> | FacetAggregation<TSchema>;
670
605
  type BaseAggregation<TSchema extends NestedIndexSchema | FlatIndexSchema> = {
671
606
  $aggs?: {
672
607
  [key: string]: Aggregation<TSchema>;
@@ -748,11 +683,25 @@ type CardinalityAggregation<TSchema extends NestedIndexSchema | FlatIndexSchema>
748
683
  field: SchemaPaths<TSchema>;
749
684
  };
750
685
  };
751
- type AggregateResult<TSchema extends NestedIndexSchema | FlatIndexSchema, TOpts extends AggregateOptions<TSchema>> = TOpts["limit"] extends number ? [BuildAggregateResult<TSchema, TOpts["aggregations"]>, QueryResult<TSchema, undefined>[]] : BuildAggregateResult<TSchema, TOpts["aggregations"]>;
686
+ type FacetAggregation<TSchema extends NestedIndexSchema | FlatIndexSchema> = BaseAggregation<TSchema> & {
687
+ $facet: {
688
+ field: FacetPaths<TSchema>;
689
+ path: string;
690
+ depth?: number;
691
+ size?: number;
692
+ minDocCount?: number;
693
+ order?: {
694
+ count: "desc" | "asc";
695
+ };
696
+ };
697
+ };
698
+ type AggregateResult<TSchema extends NestedIndexSchema | FlatIndexSchema, TOpts extends AggregateOptions<TSchema>> = IsDefaultSchema<TSchema> extends true ? Record<string, any> : BuildAggregateResult<TSchema, Extract<TOpts["aggregations"], {
699
+ [key: string]: Aggregation<TSchema>;
700
+ }>>;
752
701
  type BuildAggregateResult<TSchema extends NestedIndexSchema | FlatIndexSchema, TAggs extends {
753
702
  [key: string]: Aggregation<TSchema>;
754
703
  }> = {
755
- [K in keyof TAggs]: TAggs[K] extends TermsAggregation<TSchema> ? TermsResult<TSchema, TAggs[K]> : TAggs[K] extends RangeAggregation<TSchema> ? RangeResult<TSchema, TAggs[K]> : TAggs[K] extends HistogramAggregation<TSchema> ? HistogramResult<TSchema, TAggs[K]> : TAggs[K] extends StatsAggregation<TSchema> ? StatsResult : TAggs[K] extends AvgAggregation<TSchema> ? MetricValueResult : TAggs[K] extends SumAggregation<TSchema> ? MetricValueResult : TAggs[K] extends MinAggregation<TSchema> ? MetricValueResult : TAggs[K] extends MaxAggregation<TSchema> ? MetricValueResult : TAggs[K] extends CountAggregation<TSchema> ? MetricValueResult : TAggs[K] extends CardinalityAggregation<TSchema> ? MetricValueResult : TAggs[K] extends ExtendedStatsAggregation<TSchema> ? ExtendedStatsResult<TAggs[K]> : TAggs[K] extends PercentilesAggregation<TSchema> ? PercentilesResult<TAggs[K]> : never;
704
+ [K in keyof TAggs]: TAggs[K] extends TermsAggregation<TSchema> ? TermsResult<TSchema, TAggs[K]> : TAggs[K] extends RangeAggregation<TSchema> ? RangeResult<TSchema, TAggs[K]> : TAggs[K] extends HistogramAggregation<TSchema> ? HistogramResult<TSchema, TAggs[K]> : TAggs[K] extends StatsAggregation<TSchema> ? StatsResult : TAggs[K] extends AvgAggregation<TSchema> ? MetricValueResult : TAggs[K] extends SumAggregation<TSchema> ? MetricValueResult : TAggs[K] extends MinAggregation<TSchema> ? MetricValueResult : TAggs[K] extends MaxAggregation<TSchema> ? MetricValueResult : TAggs[K] extends CountAggregation<TSchema> ? MetricValueResult : TAggs[K] extends CardinalityAggregation<TSchema> ? MetricValueResult : TAggs[K] extends ExtendedStatsAggregation<TSchema> ? ExtendedStatsResult<TAggs[K]> : TAggs[K] extends PercentilesAggregation<TSchema> ? PercentilesResult<TAggs[K]> : TAggs[K] extends FacetAggregation<TSchema> ? FacetResult : never;
756
705
  };
757
706
  type Bucket<T> = {
758
707
  key: T;
@@ -764,8 +713,12 @@ type TermsResult<TSchema extends NestedIndexSchema | FlatIndexSchema, TAgg exten
764
713
  [key: string]: Aggregation<TSchema>;
765
714
  } ? {
766
715
  buckets: (Bucket<GetFieldValueType<TSchema, TAgg["$terms"]["field"]>> & BuildAggregateResult<TSchema, TAgg["$aggs"]>)[];
716
+ sumOtherDocCount: number;
717
+ docCountErrorUpperBound: number;
767
718
  } : {
768
719
  buckets: Bucket<GetFieldValueType<TSchema, TAgg["$terms"]["field"]>>[];
720
+ sumOtherDocCount: number;
721
+ docCountErrorUpperBound: number;
769
722
  };
770
723
  type RangeResult<TSchema extends NestedIndexSchema | FlatIndexSchema, TAgg extends RangeAggregation<TSchema>> = TAgg["$aggs"] extends {
771
724
  [key: string]: Aggregation<TSchema>;
@@ -827,6 +780,17 @@ type PercentilesResult<TAgg> = TAgg extends {
827
780
  [key: string]: number;
828
781
  };
829
782
  };
783
+ type FacetChildNode = {
784
+ path: string;
785
+ docCount: number;
786
+ sumOtherDocCount: number;
787
+ children?: FacetChildNode[];
788
+ };
789
+ type FacetResult = {
790
+ path: string;
791
+ sumOtherDocCount: number;
792
+ children: FacetChildNode[];
793
+ };
830
794
 
831
795
  type CreateIndexParameters<TSchema extends NestedIndexSchema | FlatIndexSchema> = {
832
796
  name: string;
@@ -858,8 +822,8 @@ declare class SearchIndex<TSchema extends NestedIndexSchema | FlatIndexSchema> {
858
822
  readonly schema?: TSchema;
859
823
  private client;
860
824
  constructor({ name, schema, client }: SearchIndexParameters<TSchema>);
861
- waitIndexing(): Promise<void>;
862
- describe(): Promise<IndexDescription<TSchema>>;
825
+ waitIndexing(): Promise<0 | 1>;
826
+ describe(): Promise<IndexDescription<TSchema> | null>;
863
827
  query<TOpts extends QueryOptions<TSchema>>(options?: TOpts): Promise<QueryResult<TSchema, TOpts>[]>;
864
828
  aggregate<TOpts extends AggregateOptions<TSchema>>(options: TOpts): Promise<AggregateResult<TSchema, TOpts>>;
865
829
  count({ filter }: {
@@ -962,6 +926,14 @@ declare class BitPosCommand extends Command<number, number> {
962
926
  constructor(cmd: [key: string, bit: 0 | 1, start?: number, end?: number], opts?: CommandOptions<number, number>);
963
927
  }
964
928
 
929
+ type ClientSetInfoAttribute = "LIB-NAME" | "lib-name" | "LIB-VER" | "lib-ver";
930
+ /**
931
+ * @see https://redis.io/commands/client-setinfo
932
+ */
933
+ declare class ClientSetInfoCommand extends Command<string, string> {
934
+ constructor([attribute, value]: [attribute: ClientSetInfoAttribute, value: string], opts?: CommandOptions<string, string>);
935
+ }
936
+
965
937
  /**
966
938
  * @see https://redis.io/commands/copy
967
939
  */
@@ -1041,6 +1013,11 @@ declare class ExistsCommand extends Command<number, number> {
1041
1013
  constructor(cmd: [...keys: string[]], opts?: CommandOptions<number, number>);
1042
1014
  }
1043
1015
 
1016
+ type ExpireOption = "NX" | "nx" | "XX" | "xx" | "GT" | "gt" | "LT" | "lt";
1017
+ declare class ExpireCommand extends Command<"0" | "1", 0 | 1> {
1018
+ constructor(cmd: [key: string, seconds: number, option?: ExpireOption], opts?: CommandOptions<"0" | "1", 0 | 1>);
1019
+ }
1020
+
1044
1021
  /**
1045
1022
  * @see https://redis.io/commands/expireat
1046
1023
  */
@@ -1066,6 +1043,31 @@ declare class FlushDBCommand extends Command<"OK", "OK"> {
1066
1043
  }], cmdOpts?: CommandOptions<"OK", "OK">);
1067
1044
  }
1068
1045
 
1046
+ type GeoAddCommandOptions = {
1047
+ nx?: boolean;
1048
+ xx?: never;
1049
+ } | ({
1050
+ nx?: never;
1051
+ xx?: boolean;
1052
+ } & {
1053
+ ch?: boolean;
1054
+ });
1055
+ type GeoMember<TMemberType> = {
1056
+ latitude: number;
1057
+ longitude: number;
1058
+ member: TMemberType;
1059
+ };
1060
+ /**
1061
+ * @see https://redis.io/commands/geoadd
1062
+ */
1063
+ declare class GeoAddCommand<TMemberType = string> extends Command<number | null, number | null> {
1064
+ constructor([key, arg1, ...arg2]: [
1065
+ string,
1066
+ GeoMember<TMemberType> | GeoAddCommandOptions,
1067
+ ...GeoMember<TMemberType>[]
1068
+ ], opts?: CommandOptions<number | null, number | null>);
1069
+ }
1070
+
1069
1071
  /**
1070
1072
  * @see https://redis.io/commands/geodist
1071
1073
  */
@@ -1851,6 +1853,19 @@ declare class LMoveCommand<TData = string> extends Command<TData, TData> {
1851
1853
  ], opts?: CommandOptions<TData, TData>);
1852
1854
  }
1853
1855
 
1856
+ /**
1857
+ * @see https://redis.io/commands/lmpop
1858
+ */
1859
+ declare class LmPopCommand<TValues> extends Command<[
1860
+ string,
1861
+ TValues[]
1862
+ ] | null, [
1863
+ string,
1864
+ TValues[]
1865
+ ] | null> {
1866
+ constructor(cmd: [numkeys: number, keys: string[], "LEFT" | "RIGHT", count?: number], opts?: CommandOptions<[string, TValues[]] | null, [string, TValues[]] | null>);
1867
+ }
1868
+
1854
1869
  /**
1855
1870
  * @see https://redis.io/commands/lpop
1856
1871
  */
@@ -1858,6 +1873,17 @@ declare class LPopCommand<TData = string> extends Command<unknown | null, TData
1858
1873
  constructor(cmd: [key: string, count?: number], opts?: CommandOptions<unknown | null, TData | null>);
1859
1874
  }
1860
1875
 
1876
+ /**
1877
+ * @see https://redis.io/commands/lpos
1878
+ */
1879
+ declare class LPosCommand<TData = number> extends Command<TData, TData> {
1880
+ constructor(cmd: [key: string, element: unknown, opts?: {
1881
+ rank?: number;
1882
+ count?: number;
1883
+ maxLen?: number;
1884
+ }], opts?: CommandOptions<TData, TData>);
1885
+ }
1886
+
1861
1887
  /**
1862
1888
  * @see https://redis.io/commands/lpush
1863
1889
  */
@@ -1930,6 +1956,27 @@ declare class PExpireAtCommand extends Command<"0" | "1", 0 | 1> {
1930
1956
  constructor(cmd: [key: string, unix: number, option?: ExpireOption], opts?: CommandOptions<"0" | "1", 0 | 1>);
1931
1957
  }
1932
1958
 
1959
+ /**
1960
+ * @see https://redis.io/commands/pfadd
1961
+ */
1962
+ declare class PfAddCommand<TData = string> extends Command<number, number> {
1963
+ constructor(cmd: [string, ...TData[]], opts?: CommandOptions<number, number>);
1964
+ }
1965
+
1966
+ /**
1967
+ * @see https://redis.io/commands/pfcount
1968
+ */
1969
+ declare class PfCountCommand extends Command<number, number> {
1970
+ constructor(cmd: [string, ...string[]], opts?: CommandOptions<number, number>);
1971
+ }
1972
+
1973
+ /**
1974
+ * @see https://redis.io/commands/pfmerge
1975
+ */
1976
+ declare class PfMergeCommand extends Command<"OK", "OK"> {
1977
+ constructor(cmd: [destination_key: string, ...string[]], opts?: CommandOptions<"OK", "OK">);
1978
+ }
1979
+
1933
1980
  /**
1934
1981
  * @see https://redis.io/commands/ping
1935
1982
  */
@@ -2021,6 +2068,20 @@ declare class ScriptExistsCommand<T extends string[]> extends Command<string[],
2021
2068
  constructor(hashes: T, opts?: CommandOptions<string[], number[]>);
2022
2069
  }
2023
2070
 
2071
+ type ScriptFlushCommandOptions = {
2072
+ sync: true;
2073
+ async?: never;
2074
+ } | {
2075
+ sync?: never;
2076
+ async: true;
2077
+ };
2078
+ /**
2079
+ * @see https://redis.io/commands/script-flush
2080
+ */
2081
+ declare class ScriptFlushCommand extends Command<"OK", "OK"> {
2082
+ constructor([opts]: [opts?: ScriptFlushCommandOptions], cmdOpts?: CommandOptions<"OK", "OK">);
2083
+ }
2084
+
2024
2085
  /**
2025
2086
  * @see https://redis.io/commands/script-load
2026
2087
  */
@@ -2132,6 +2193,15 @@ declare class SInterCommand<TData = string> extends Command<unknown[], TData[]>
2132
2193
  constructor(cmd: [key: string, ...keys: string[]], opts?: CommandOptions<unknown[], TData[]>);
2133
2194
  }
2134
2195
 
2196
+ /**
2197
+ * @see https://redis.io/commands/sintercard
2198
+ */
2199
+ declare class SInterCardCommand extends Command<number, number> {
2200
+ constructor(cmd: [keys: string[], opts?: {
2201
+ limit?: number;
2202
+ }], cmdOpts?: CommandOptions<number, number>);
2203
+ }
2204
+
2135
2205
  /**
2136
2206
  * @see https://redis.io/commands/sinterstore
2137
2207
  */
@@ -2250,6 +2320,13 @@ declare class UnlinkCommand extends Command<number, number> {
2250
2320
  constructor(cmd: [...keys: string[]], opts?: CommandOptions<number, number>);
2251
2321
  }
2252
2322
 
2323
+ /**
2324
+ * @see https://redis.io/commands/xack
2325
+ */
2326
+ declare class XAckCommand extends Command<number, number> {
2327
+ constructor([key, group, id]: [key: string, group: string, id: string | string[]], opts?: CommandOptions<number, number>);
2328
+ }
2329
+
2253
2330
  type XAckDelOption = "KEEPREF" | "keepref" | "DELREF" | "delref" | "ACKED" | "acked";
2254
2331
  /**
2255
2332
  * @see https://redis.io/commands/xackdel
@@ -2291,6 +2368,51 @@ declare class XAddCommand extends Command<string, string> {
2291
2368
  ], commandOptions?: CommandOptions<string, string>);
2292
2369
  }
2293
2370
 
2371
+ /**
2372
+ * @see https://redis.io/commands/xautoclaim
2373
+ */
2374
+ declare class XAutoClaim extends Command<unknown[], unknown[]> {
2375
+ constructor([key, group, consumer, minIdleTime, start, options]: [
2376
+ key: string,
2377
+ group: string,
2378
+ consumer: string,
2379
+ minIdleTime: number,
2380
+ start: string,
2381
+ options?: {
2382
+ count?: number;
2383
+ justId?: boolean;
2384
+ }
2385
+ ], opts?: CommandOptions<unknown[], unknown[]>);
2386
+ }
2387
+
2388
+ /**
2389
+ * @see https://redis.io/commands/xclaim
2390
+ */
2391
+ declare class XClaimCommand extends Command<unknown[], unknown[]> {
2392
+ constructor([key, group, consumer, minIdleTime, id, options]: [
2393
+ key: string,
2394
+ group: string,
2395
+ consumer: string,
2396
+ minIdleTime: number,
2397
+ id: string | string[],
2398
+ options?: {
2399
+ idleMS?: number;
2400
+ timeMS?: number;
2401
+ retryCount?: number;
2402
+ force?: boolean;
2403
+ justId?: boolean;
2404
+ lastId?: number;
2405
+ }
2406
+ ], opts?: CommandOptions<unknown[], unknown[]>);
2407
+ }
2408
+
2409
+ /**
2410
+ * @see https://redis.io/commands/xdel
2411
+ */
2412
+ declare class XDelCommand extends Command<number, number> {
2413
+ constructor([key, ids]: [key: string, ids: string[] | string], opts?: CommandOptions<number, number>);
2414
+ }
2415
+
2294
2416
  type XDelExOption = "KEEPREF" | "keepref" | "DELREF" | "delref" | "ACKED" | "acked";
2295
2417
  /**
2296
2418
  * @see https://redis.io/commands/xdelex
@@ -2299,6 +2421,78 @@ declare class XDelExCommand extends Command<number[], number[]> {
2299
2421
  constructor([key, opts, ...ids]: [key: string, opts?: XDelExOption, ...ids: string[]], cmdOpts?: CommandOptions<number[], number[]>);
2300
2422
  }
2301
2423
 
2424
+ type XGroupCommandType = {
2425
+ type: "CREATE";
2426
+ group: string;
2427
+ id: `$` | string;
2428
+ options?: {
2429
+ MKSTREAM?: boolean;
2430
+ ENTRIESREAD?: number;
2431
+ };
2432
+ } | {
2433
+ type: "CREATECONSUMER";
2434
+ group: string;
2435
+ consumer: string;
2436
+ } | {
2437
+ type: "DELCONSUMER";
2438
+ group: string;
2439
+ consumer: string;
2440
+ } | {
2441
+ type: "DESTROY";
2442
+ group: string;
2443
+ } | {
2444
+ type: "SETID";
2445
+ group: string;
2446
+ id: `$` | string;
2447
+ options?: {
2448
+ ENTRIESREAD?: number;
2449
+ };
2450
+ };
2451
+ type XGroupReturnType<T extends XGroupCommandType> = T["type"] extends "CREATE" ? string : T["type"] extends "CREATECONSUMER" ? 0 | 1 : T["type"] extends "DELCONSUMER" ? number : T["type"] extends "DESTROY" ? 0 | 1 : T["type"] extends "SETID" ? string : never;
2452
+ /**
2453
+ * @see https://redis.io/commands/xgroup
2454
+ */
2455
+ declare class XGroupCommand<TOptions extends XGroupCommandType = XGroupCommandType> extends Command<any, XGroupReturnType<TOptions>> {
2456
+ constructor([key, opts]: [key: string, opts: TOptions], commandOptions?: CommandOptions<any, any>);
2457
+ }
2458
+
2459
+ type XInfoCommands = {
2460
+ type: "CONSUMERS";
2461
+ group: string;
2462
+ } | {
2463
+ type: "GROUPS";
2464
+ };
2465
+ /**
2466
+ * @see https://redis.io/commands/xinfo
2467
+ */
2468
+ declare class XInfoCommand extends Command<number, unknown[]> {
2469
+ constructor([key, options]: [key: string, options: XInfoCommands], opts?: CommandOptions<number, unknown[]>);
2470
+ }
2471
+
2472
+ /**
2473
+ * @see https://redis.io/commands/xlen
2474
+ */
2475
+ declare class XLenCommand extends Command<number, number> {
2476
+ constructor(cmd: [key: string], opts?: CommandOptions<number, number>);
2477
+ }
2478
+
2479
+ /**
2480
+ * @see https://redis.io/commands/xpending
2481
+ */
2482
+ declare class XPendingCommand extends Command<unknown[], unknown[]> {
2483
+ constructor([key, group, start, end, count, options]: [
2484
+ key: string,
2485
+ group: string,
2486
+ start: string,
2487
+ end: string,
2488
+ count: number,
2489
+ options?: {
2490
+ idleTime?: number;
2491
+ consumer?: string | string[];
2492
+ }
2493
+ ], opts?: CommandOptions<unknown[], unknown[]>);
2494
+ }
2495
+
2302
2496
  declare class XRangeCommand<TData extends Record<string, Record<string, unknown>>> extends Command<string[][], TData> {
2303
2497
  constructor([key, start, end, count]: [key: string, start: string, end: string, count?: number], opts?: CommandOptions<unknown[], TData[]>);
2304
2498
  }
@@ -2371,6 +2565,23 @@ declare class XReadGroupCommand extends Command<number, unknown[]> {
2371
2565
  constructor([group, consumer, key, id, options]: XReadGroupOptions, opts?: CommandOptions<number, unknown[]>);
2372
2566
  }
2373
2567
 
2568
+ declare class XRevRangeCommand<TData extends Record<string, Record<string, unknown>>> extends Command<string[][], TData> {
2569
+ constructor([key, end, start, count]: [key: string, end: string, start: string, count?: number], opts?: CommandOptions<unknown[], TData[]>);
2570
+ }
2571
+
2572
+ /**
2573
+ * @see https://redis.io/commands/xtrim
2574
+ */
2575
+ type XTrimOptions = {
2576
+ strategy: "MAXLEN" | "MINID";
2577
+ exactness?: "~" | "=";
2578
+ threshold: number | string;
2579
+ limit?: number;
2580
+ };
2581
+ declare class XTrimCommand extends Command<number, number> {
2582
+ constructor([key, options]: [key: string, options: XTrimOptions], opts?: CommandOptions<number, number>);
2583
+ }
2584
+
2374
2585
  type NXAndXXOptions = {
2375
2586
  nx: true;
2376
2587
  xx?: never;
@@ -2429,6 +2640,26 @@ declare class ZIncrByCommand<TData> extends Command<number, number> {
2429
2640
  constructor(cmd: [key: string, increment: number, member: TData], opts?: CommandOptions<number, number>);
2430
2641
  }
2431
2642
 
2643
+ type ZInterStoreCommandOptions = {
2644
+ aggregate?: "sum" | "min" | "max";
2645
+ } & ({
2646
+ weight: number;
2647
+ weights?: never;
2648
+ } | {
2649
+ weight?: never;
2650
+ weights: number[];
2651
+ } | {
2652
+ weight?: never;
2653
+ weights?: never;
2654
+ });
2655
+ /**
2656
+ * @see https://redis.io/commands/zInterstore
2657
+ */
2658
+ declare class ZInterStoreCommand extends Command<number, number> {
2659
+ constructor(cmd: [destination: string, numKeys: 1, key: string, opts?: ZInterStoreCommandOptions], cmdOpts?: CommandOptions<number, number>);
2660
+ constructor(cmd: [destination: string, numKeys: number, keys: string[], opts?: ZInterStoreCommandOptions], cmdOpts?: CommandOptions<number, number>);
2661
+ }
2662
+
2432
2663
  /**
2433
2664
  * @see https://redis.io/commands/zlexcount
2434
2665
  */
@@ -2558,6 +2789,47 @@ declare class ZScoreCommand<TData> extends Command<string | null, number | null>
2558
2789
  constructor(cmd: [key: string, member: TData], opts?: CommandOptions<string | null, number | null>);
2559
2790
  }
2560
2791
 
2792
+ type ZUnionCommandOptions = {
2793
+ withScores?: boolean;
2794
+ aggregate?: "sum" | "min" | "max";
2795
+ } & ({
2796
+ weight: number;
2797
+ weights?: never;
2798
+ } | {
2799
+ weight?: never;
2800
+ weights: number[];
2801
+ } | {
2802
+ weight?: never;
2803
+ weights?: never;
2804
+ });
2805
+ /**
2806
+ * @see https://redis.io/commands/zunion
2807
+ */
2808
+ declare class ZUnionCommand<TData extends unknown[]> extends Command<string[], TData> {
2809
+ constructor(cmd: [numKeys: 1, key: string, opts?: ZUnionCommandOptions], cmdOpts?: CommandOptions<string[], TData>);
2810
+ constructor(cmd: [numKeys: number, keys: string[], opts?: ZUnionCommandOptions], cmdOpts?: CommandOptions<string[], TData>);
2811
+ }
2812
+
2813
+ type ZUnionStoreCommandOptions = {
2814
+ aggregate?: "sum" | "min" | "max";
2815
+ } & ({
2816
+ weight: number;
2817
+ weights?: never;
2818
+ } | {
2819
+ weight?: never;
2820
+ weights: number[];
2821
+ } | {
2822
+ weight?: never;
2823
+ weights?: never;
2824
+ });
2825
+ /**
2826
+ * @see https://redis.io/commands/zunionstore
2827
+ */
2828
+ declare class ZUnionStoreCommand extends Command<number, number> {
2829
+ constructor(cmd: [destination: string, numKeys: 1, key: string, opts?: ZUnionStoreCommandOptions], cmdOpts?: CommandOptions<number, number>);
2830
+ constructor(cmd: [destination: string, numKeys: number, keys: string[], opts?: ZUnionStoreCommandOptions], cmdOpts?: CommandOptions<number, number>);
2831
+ }
2832
+
2561
2833
  type BaseMessageData<TMessage> = {
2562
2834
  channel: string;
2563
2835
  message: TMessage;
@@ -2595,6 +2867,20 @@ declare class Subscriber<TMessage = any> extends EventTarget {
2595
2867
  getSubscribedChannels(): string[];
2596
2868
  }
2597
2869
 
2870
+ /**
2871
+ * @see https://redis.io/commands/zdiffstore
2872
+ */
2873
+ declare class ZDiffStoreCommand extends Command<number, number> {
2874
+ constructor(cmd: [destination: string, numkeys: number, ...keys: string[]], opts?: CommandOptions<number, number>);
2875
+ }
2876
+
2877
+ /**
2878
+ * @see https://redis.io/commands/zmscore
2879
+ */
2880
+ declare class ZMScoreCommand<TData> extends Command<string[] | null, number[] | null> {
2881
+ constructor(cmd: [key: string, members: TData[]], opts?: CommandOptions<string[] | null, number[] | null>);
2882
+ }
2883
+
2598
2884
  type InferResponseData<T extends unknown[]> = {
2599
2885
  [K in keyof T]: T[K] extends Command<any, infer TData> ? TData : unknown;
2600
2886
  };
@@ -2692,11 +2978,11 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
2692
2978
  /**
2693
2979
  * @see https://redis.io/commands/append
2694
2980
  */
2695
- append: (key: string, value: string) => Pipeline<[...TCommands, Command<any, number>]>;
2981
+ append: (...args: CommandArgs<typeof AppendCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
2696
2982
  /**
2697
2983
  * @see https://redis.io/commands/bitcount
2698
2984
  */
2699
- bitcount: (key: string, start: number, end: number) => Pipeline<[...TCommands, Command<any, number>]>;
2985
+ bitcount: (...args: CommandArgs<typeof BitCountCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
2700
2986
  /**
2701
2987
  * Returns an instance that can be used to execute `BITFIELD` commands on one key.
2702
2988
  *
@@ -2713,7 +2999,7 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
2713
2999
  *
2714
3000
  * @see https://redis.io/commands/bitfield
2715
3001
  */
2716
- bitfield: (key: string) => BitFieldCommand<Pipeline<[...TCommands, Command<any, number[]>]>>;
3002
+ bitfield: (...args: CommandArgs<typeof BitFieldCommand>) => BitFieldCommand<Pipeline<[...TCommands, Command<any, number[]>]>>;
2717
3003
  /**
2718
3004
  * @see https://redis.io/commands/bitop
2719
3005
  */
@@ -2726,21 +3012,19 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
2726
3012
  /**
2727
3013
  * @see https://redis.io/commands/bitpos
2728
3014
  */
2729
- bitpos: (key: string, bit: 0 | 1, start?: number | undefined, end?: number | undefined) => Pipeline<[...TCommands, Command<any, number>]>;
3015
+ bitpos: (...args: CommandArgs<typeof BitPosCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
2730
3016
  /**
2731
3017
  * @see https://redis.io/commands/client-setinfo
2732
3018
  */
2733
- clientSetinfo: (attribute: ClientSetInfoAttribute, value: string) => Pipeline<[...TCommands, Command<any, string>]>;
3019
+ clientSetinfo: (...args: CommandArgs<typeof ClientSetInfoCommand>) => Pipeline<[...TCommands, Command<any, string>]>;
2734
3020
  /**
2735
3021
  * @see https://redis.io/commands/copy
2736
3022
  */
2737
- copy: (key: string, destinationKey: string, opts?: {
2738
- replace: boolean;
2739
- } | undefined) => Pipeline<[...TCommands, Command<any, "COPIED" | "NOT_COPIED">]>;
3023
+ copy: (...args: CommandArgs<typeof CopyCommand>) => Pipeline<[...TCommands, Command<any, "COPIED" | "NOT_COPIED">]>;
2740
3024
  /**
2741
3025
  * @see https://redis.io/commands/zdiffstore
2742
3026
  */
2743
- zdiffstore: (destination: string, numkeys: number, ...keys: string[]) => Pipeline<[...TCommands, Command<any, number>]>;
3027
+ zdiffstore: (...args: CommandArgs<typeof ZDiffStoreCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
2744
3028
  /**
2745
3029
  * @see https://redis.io/commands/dbsize
2746
3030
  */
@@ -2748,11 +3032,11 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
2748
3032
  /**
2749
3033
  * @see https://redis.io/commands/decr
2750
3034
  */
2751
- decr: (key: string) => Pipeline<[...TCommands, Command<any, number>]>;
3035
+ decr: (...args: CommandArgs<typeof DecrCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
2752
3036
  /**
2753
3037
  * @see https://redis.io/commands/decrby
2754
3038
  */
2755
- decrby: (key: string, decrement: number) => Pipeline<[...TCommands, Command<any, number>]>;
3039
+ decrby: (...args: CommandArgs<typeof DecrByCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
2756
3040
  /**
2757
3041
  * @see https://redis.io/commands/del
2758
3042
  */
@@ -2760,23 +3044,23 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
2760
3044
  /**
2761
3045
  * @see https://redis.io/commands/echo
2762
3046
  */
2763
- echo: (message: string) => Pipeline<[...TCommands, Command<any, string>]>;
3047
+ echo: (...args: CommandArgs<typeof EchoCommand>) => Pipeline<[...TCommands, Command<any, string>]>;
2764
3048
  /**
2765
3049
  * @see https://redis.io/commands/eval_ro
2766
3050
  */
2767
- evalRo: <TArgs extends unknown[], TData = unknown>(script: string, keys: string[], args: TArgs) => Pipeline<[...TCommands, Command<any, TData>]>;
3051
+ evalRo: <TArgs extends unknown[], TData = unknown>(...args: [script: string, keys: string[], args: TArgs]) => Pipeline<[...TCommands, Command<any, TData>]>;
2768
3052
  /**
2769
3053
  * @see https://redis.io/commands/eval
2770
3054
  */
2771
- eval: <TArgs extends unknown[], TData = unknown>(script: string, keys: string[], args: TArgs) => Pipeline<[...TCommands, Command<any, TData>]>;
3055
+ eval: <TArgs extends unknown[], TData = unknown>(...args: [script: string, keys: string[], args: TArgs]) => Pipeline<[...TCommands, Command<any, TData>]>;
2772
3056
  /**
2773
3057
  * @see https://redis.io/commands/evalsha_ro
2774
3058
  */
2775
- evalshaRo: <TArgs extends unknown[], TData = unknown>(sha1: string, keys: string[], args: TArgs) => Pipeline<[...TCommands, Command<any, TData>]>;
3059
+ evalshaRo: <TArgs extends unknown[], TData = unknown>(...args: [sha1: string, keys: string[], args: TArgs]) => Pipeline<[...TCommands, Command<any, TData>]>;
2776
3060
  /**
2777
3061
  * @see https://redis.io/commands/evalsha
2778
3062
  */
2779
- evalsha: <TArgs extends unknown[], TData = unknown>(sha1: string, keys: string[], args: TArgs) => Pipeline<[...TCommands, Command<any, TData>]>;
3063
+ evalsha: <TArgs extends unknown[], TData = unknown>(...args: [sha1: string, keys: string[], args: TArgs]) => Pipeline<[...TCommands, Command<any, TData>]>;
2780
3064
  /**
2781
3065
  * @see https://redis.io/commands/exists
2782
3066
  */
@@ -2784,11 +3068,11 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
2784
3068
  /**
2785
3069
  * @see https://redis.io/commands/expire
2786
3070
  */
2787
- expire: (key: string, seconds: number, option?: ExpireOption | undefined) => Pipeline<[...TCommands, Command<any, 0 | 1>]>;
3071
+ expire: (...args: CommandArgs<typeof ExpireCommand>) => Pipeline<[...TCommands, Command<any, 0 | 1>]>;
2788
3072
  /**
2789
3073
  * @see https://redis.io/commands/expireat
2790
3074
  */
2791
- expireat: (key: string, unix: number, option?: ExpireOption | undefined) => Pipeline<[...TCommands, Command<any, 0 | 1>]>;
3075
+ expireat: (...args: CommandArgs<typeof ExpireAtCommand>) => Pipeline<[...TCommands, Command<any, 0 | 1>]>;
2792
3076
  /**
2793
3077
  * @see https://redis.io/commands/flushall
2794
3078
  */
@@ -2796,60 +3080,30 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
2796
3080
  /**
2797
3081
  * @see https://redis.io/commands/flushdb
2798
3082
  */
2799
- flushdb: (opts?: {
2800
- async?: boolean;
2801
- } | undefined) => Pipeline<[...TCommands, Command<any, "OK">]>;
3083
+ flushdb: (...args: CommandArgs<typeof FlushDBCommand>) => Pipeline<[...TCommands, Command<any, "OK">]>;
2802
3084
  /**
2803
3085
  * @see https://redis.io/commands/geoadd
2804
3086
  */
2805
- geoadd: <TData>(args_0: string, args_1: GeoAddCommandOptions | GeoMember<TData>, ...args_2: GeoMember<TData>[]) => Pipeline<[...TCommands, Command<any, number | null>]>;
3087
+ geoadd: <TData>(...args: CommandArgs<typeof GeoAddCommand<TData>>) => Pipeline<[...TCommands, Command<any, number | null>]>;
2806
3088
  /**
2807
3089
  * @see https://redis.io/commands/geodist
2808
3090
  */
2809
- geodist: <TData>(key: string, member1: TData, member2: TData, unit?: "M" | "KM" | "FT" | "MI" | undefined) => Pipeline<[...TCommands, Command<any, number | null>]>;
3091
+ geodist: <TData>(...args: CommandArgs<typeof GeoDistCommand<TData>>) => Pipeline<[...TCommands, Command<any, number | null>]>;
2810
3092
  /**
2811
3093
  * @see https://redis.io/commands/geopos
2812
3094
  */
2813
- geopos: <TData>(args_0: string, ...args_1: TData[]) => Pipeline<[...TCommands, Command<any, {
3095
+ geopos: <TData>(...args: CommandArgs<typeof GeoPosCommand<TData>>) => Pipeline<[...TCommands, Command<any, {
2814
3096
  lng: number;
2815
3097
  lat: number;
2816
3098
  }[]>]>;
2817
3099
  /**
2818
3100
  * @see https://redis.io/commands/geohash
2819
3101
  */
2820
- geohash: <TData>(args_0: string, ...args_1: TData[]) => Pipeline<[...TCommands, Command<any, (string | null)[]>]>;
3102
+ geohash: <TData>(...args: CommandArgs<typeof GeoHashCommand<TData>>) => Pipeline<[...TCommands, Command<any, (string | null)[]>]>;
2821
3103
  /**
2822
3104
  * @see https://redis.io/commands/geosearch
2823
3105
  */
2824
- geosearch: <TData>(key: string, centerPoint: {
2825
- type: "FROMLONLAT" | "fromlonlat";
2826
- coordinate: {
2827
- lon: number;
2828
- lat: number;
2829
- };
2830
- } | {
2831
- type: "FROMMEMBER" | "frommember";
2832
- member: TData;
2833
- }, shape: {
2834
- type: "BYRADIUS" | "byradius";
2835
- radius: number;
2836
- radiusType: "M" | "KM" | "FT" | "MI";
2837
- } | {
2838
- type: "BYBOX" | "bybox";
2839
- rect: {
2840
- width: number;
2841
- height: number;
2842
- };
2843
- rectType: "M" | "KM" | "FT" | "MI";
2844
- }, order: "ASC" | "DESC" | "asc" | "desc", opts?: {
2845
- count?: {
2846
- limit: number;
2847
- any?: boolean;
2848
- };
2849
- withCoord?: boolean;
2850
- withDist?: boolean;
2851
- withHash?: boolean;
2852
- } | undefined) => Pipeline<[...TCommands, Command<any, ({
3106
+ geosearch: <TData>(...args: CommandArgs<typeof GeoSearchCommand<TData>>) => Pipeline<[...TCommands, Command<any, ({
2853
3107
  member: TData;
2854
3108
  } & {
2855
3109
  coord?: {
@@ -2862,89 +3116,27 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
2862
3116
  /**
2863
3117
  * @see https://redis.io/commands/geosearchstore
2864
3118
  */
2865
- geosearchstore: <TData>(destination: string, key: string, centerPoint: {
2866
- type: "FROMLONLAT" | "fromlonlat";
2867
- coordinate: {
2868
- lon: number;
2869
- lat: number;
2870
- };
2871
- } | {
2872
- type: "FROMMEMBER" | "frommember";
2873
- member: TData;
2874
- }, shape: {
2875
- type: "BYRADIUS" | "byradius";
2876
- radius: number;
2877
- radiusType: "M" | "KM" | "FT" | "MI";
2878
- } | {
2879
- type: "BYBOX" | "bybox";
2880
- rect: {
2881
- width: number;
2882
- height: number;
2883
- };
2884
- rectType: "M" | "KM" | "FT" | "MI";
2885
- }, order: "ASC" | "DESC" | "asc" | "desc", opts?: {
2886
- count?: {
2887
- limit: number;
2888
- any?: boolean;
2889
- };
2890
- storeDist?: boolean;
2891
- } | undefined) => Pipeline<[...TCommands, Command<any, number>]>;
3119
+ geosearchstore: <TData>(...args: CommandArgs<typeof GeoSearchStoreCommand<TData>>) => Pipeline<[...TCommands, Command<any, number>]>;
2892
3120
  /**
2893
3121
  * @see https://redis.io/commands/get
2894
3122
  */
2895
- get: <TData>(key: string) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3123
+ get: <TData>(...args: CommandArgs<typeof GetCommand>) => Pipeline<[...TCommands, Command<any, TData | null>]>;
2896
3124
  /**
2897
3125
  * @see https://redis.io/commands/getbit
2898
3126
  */
2899
- getbit: (key: string, offset: number) => Pipeline<[...TCommands, Command<any, 0 | 1>]>;
3127
+ getbit: (...args: CommandArgs<typeof GetBitCommand>) => Pipeline<[...TCommands, Command<any, 0 | 1>]>;
2900
3128
  /**
2901
3129
  * @see https://redis.io/commands/getdel
2902
3130
  */
2903
- getdel: <TData>(key: string) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3131
+ getdel: <TData>(...args: CommandArgs<typeof GetDelCommand>) => Pipeline<[...TCommands, Command<any, TData | null>]>;
2904
3132
  /**
2905
3133
  * @see https://redis.io/commands/getex
2906
3134
  */
2907
- getex: <TData>(key: string, opts?: ({
2908
- ex: number;
2909
- px?: never;
2910
- exat?: never;
2911
- pxat?: never;
2912
- persist?: never;
2913
- } | {
2914
- ex?: never;
2915
- px: number;
2916
- exat?: never;
2917
- pxat?: never;
2918
- persist?: never;
2919
- } | {
2920
- ex?: never;
2921
- px?: never;
2922
- exat: number;
2923
- pxat?: never;
2924
- persist?: never;
2925
- } | {
2926
- ex?: never;
2927
- px?: never;
2928
- exat?: never;
2929
- pxat: number;
2930
- persist?: never;
2931
- } | {
2932
- ex?: never;
2933
- px?: never;
2934
- exat?: never;
2935
- pxat?: never;
2936
- persist: true;
2937
- } | {
2938
- ex?: never;
2939
- px?: never;
2940
- exat?: never;
2941
- pxat?: never;
2942
- persist?: never;
2943
- }) | undefined) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3135
+ getex: <TData>(...args: CommandArgs<typeof GetExCommand>) => Pipeline<[...TCommands, Command<any, TData | null>]>;
2944
3136
  /**
2945
3137
  * @see https://redis.io/commands/getrange
2946
3138
  */
2947
- getrange: (key: string, start: number, end: number) => Pipeline<[...TCommands, Command<any, string>]>;
3139
+ getrange: (...args: CommandArgs<typeof GetRangeCommand>) => Pipeline<[...TCommands, Command<any, string>]>;
2948
3140
  /**
2949
3141
  * @see https://redis.io/commands/getset
2950
3142
  */
@@ -2952,113 +3144,83 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
2952
3144
  /**
2953
3145
  * @see https://redis.io/commands/hdel
2954
3146
  */
2955
- hdel: (key: string, ...fields: string[]) => Pipeline<[...TCommands, Command<any, 0 | 1>]>;
3147
+ hdel: (...args: CommandArgs<typeof HDelCommand>) => Pipeline<[...TCommands, Command<any, 0 | 1>]>;
2956
3148
  /**
2957
3149
  * @see https://redis.io/commands/hexists
2958
3150
  */
2959
- hexists: (key: string, field: string) => Pipeline<[...TCommands, Command<any, number>]>;
3151
+ hexists: (...args: CommandArgs<typeof HExistsCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
2960
3152
  /**
2961
3153
  * @see https://redis.io/commands/hexpire
2962
3154
  */
2963
- hexpire: (key: string, fields: string | number | (string | number)[], seconds: number, option?: ExpireOption | undefined) => Pipeline<[...TCommands, Command<any, (0 | 1 | 2 | -2)[]>]>;
3155
+ hexpire: (...args: CommandArgs<typeof HExpireCommand>) => Pipeline<[...TCommands, Command<any, (0 | 1 | 2 | -2)[]>]>;
2964
3156
  /**
2965
3157
  * @see https://redis.io/commands/hexpireat
2966
3158
  */
2967
- hexpireat: (key: string, fields: string | number | (string | number)[], timestamp: number, option?: ExpireOption | undefined) => Pipeline<[...TCommands, Command<any, (0 | 1 | 2 | -2)[]>]>;
3159
+ hexpireat: (...args: CommandArgs<typeof HExpireAtCommand>) => Pipeline<[...TCommands, Command<any, (0 | 1 | 2 | -2)[]>]>;
2968
3160
  /**
2969
3161
  * @see https://redis.io/commands/hexpiretime
2970
3162
  */
2971
- hexpiretime: (key: string, fields: string | number | (string | number)[]) => Pipeline<[...TCommands, Command<any, number[]>]>;
3163
+ hexpiretime: (...args: CommandArgs<typeof HExpireTimeCommand>) => Pipeline<[...TCommands, Command<any, number[]>]>;
2972
3164
  /**
2973
3165
  * @see https://redis.io/commands/httl
2974
3166
  */
2975
- httl: (key: string, fields: string | number | (string | number)[]) => Pipeline<[...TCommands, Command<any, number[]>]>;
3167
+ httl: (...args: CommandArgs<typeof HTtlCommand>) => Pipeline<[...TCommands, Command<any, number[]>]>;
2976
3168
  /**
2977
3169
  * @see https://redis.io/commands/hpexpire
2978
3170
  */
2979
- hpexpire: (key: string, fields: string | number | (string | number)[], milliseconds: number, option?: ExpireOption | undefined) => Pipeline<[...TCommands, Command<any, (0 | 1 | 2 | -2)[]>]>;
3171
+ hpexpire: (...args: CommandArgs<typeof HPExpireCommand>) => Pipeline<[...TCommands, Command<any, (0 | 1 | 2 | -2)[]>]>;
2980
3172
  /**
2981
3173
  * @see https://redis.io/commands/hpexpireat
2982
3174
  */
2983
- hpexpireat: (key: string, fields: string | number | (string | number)[], timestamp: number, option?: ExpireOption | undefined) => Pipeline<[...TCommands, Command<any, (0 | 1 | 2 | -2)[]>]>;
3175
+ hpexpireat: (...args: CommandArgs<typeof HPExpireAtCommand>) => Pipeline<[...TCommands, Command<any, (0 | 1 | 2 | -2)[]>]>;
2984
3176
  /**
2985
3177
  * @see https://redis.io/commands/hpexpiretime
2986
3178
  */
2987
- hpexpiretime: (key: string, fields: string | number | (string | number)[]) => Pipeline<[...TCommands, Command<any, number[]>]>;
3179
+ hpexpiretime: (...args: CommandArgs<typeof HPExpireTimeCommand>) => Pipeline<[...TCommands, Command<any, number[]>]>;
2988
3180
  /**
2989
3181
  * @see https://redis.io/commands/hpttl
2990
3182
  */
2991
- hpttl: (key: string, fields: string | number | (string | number)[]) => Pipeline<[...TCommands, Command<any, number[]>]>;
3183
+ hpttl: (...args: CommandArgs<typeof HPTtlCommand>) => Pipeline<[...TCommands, Command<any, number[]>]>;
2992
3184
  /**
2993
3185
  * @see https://redis.io/commands/hpersist
2994
3186
  */
2995
- hpersist: (key: string, fields: string | number | (string | number)[]) => Pipeline<[...TCommands, Command<any, (1 | -2 | -1)[]>]>;
3187
+ hpersist: (...args: CommandArgs<typeof HPersistCommand>) => Pipeline<[...TCommands, Command<any, (1 | -2 | -1)[]>]>;
2996
3188
  /**
2997
3189
  * @see https://redis.io/commands/hget
2998
3190
  */
2999
- hget: <TData>(key: string, field: string) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3191
+ hget: <TData>(...args: CommandArgs<typeof HGetCommand>) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3000
3192
  /**
3001
3193
  * @see https://redis.io/commands/hgetall
3002
3194
  */
3003
- hgetall: <TData extends Record<string, unknown>>(key: string) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3195
+ hgetall: <TData extends Record<string, unknown>>(...args: CommandArgs<typeof HGetAllCommand>) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3004
3196
  /**
3005
3197
  * @see https://redis.io/commands/hgetdel
3006
3198
  */
3007
- hgetdel: <TData extends Record<string, unknown>>(key: string, ...fields: (string | number)[]) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3199
+ hgetdel: <TData extends Record<string, unknown>>(...args: CommandArgs<typeof HGetDelCommand>) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3008
3200
  /**
3009
3201
  * @see https://redis.io/commands/hgetex
3010
3202
  */
3011
- hgetex: <TData extends Record<string, unknown>>(key: string, opts: {
3012
- ex: number;
3013
- px?: never;
3014
- exat?: never;
3015
- pxat?: never;
3016
- persist?: never;
3017
- } | {
3018
- ex?: never;
3019
- px: number;
3020
- exat?: never;
3021
- pxat?: never;
3022
- persist?: never;
3023
- } | {
3024
- ex?: never;
3025
- px?: never;
3026
- exat: number;
3027
- pxat?: never;
3028
- persist?: never;
3029
- } | {
3030
- ex?: never;
3031
- px?: never;
3032
- exat?: never;
3033
- pxat: number;
3034
- persist?: never;
3035
- } | {
3036
- ex?: never;
3037
- px?: never;
3038
- exat?: never;
3039
- pxat?: never;
3040
- persist: true;
3041
- }, ...fields: (string | number)[]) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3203
+ hgetex: <TData extends Record<string, unknown>>(...args: CommandArgs<typeof HGetExCommand>) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3042
3204
  /**
3043
3205
  * @see https://redis.io/commands/hincrby
3044
3206
  */
3045
- hincrby: (key: string, field: string, increment: number) => Pipeline<[...TCommands, Command<any, number>]>;
3207
+ hincrby: (...args: CommandArgs<typeof HIncrByCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3046
3208
  /**
3047
3209
  * @see https://redis.io/commands/hincrbyfloat
3048
3210
  */
3049
- hincrbyfloat: (key: string, field: string, increment: number) => Pipeline<[...TCommands, Command<any, number>]>;
3211
+ hincrbyfloat: (...args: CommandArgs<typeof HIncrByFloatCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3050
3212
  /**
3051
3213
  * @see https://redis.io/commands/hkeys
3052
3214
  */
3053
- hkeys: (key: string) => Pipeline<[...TCommands, Command<any, string[]>]>;
3215
+ hkeys: (...args: CommandArgs<typeof HKeysCommand>) => Pipeline<[...TCommands, Command<any, string[]>]>;
3054
3216
  /**
3055
3217
  * @see https://redis.io/commands/hlen
3056
3218
  */
3057
- hlen: (key: string) => Pipeline<[...TCommands, Command<any, number>]>;
3219
+ hlen: (...args: CommandArgs<typeof HLenCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3058
3220
  /**
3059
3221
  * @see https://redis.io/commands/hmget
3060
3222
  */
3061
- hmget: <TData extends Record<string, unknown>>(key: string, ...fields: string[]) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3223
+ hmget: <TData extends Record<string, unknown>>(...args: CommandArgs<typeof HMGetCommand>) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3062
3224
  /**
3063
3225
  * @see https://redis.io/commands/hmset
3064
3226
  */
@@ -3070,7 +3232,7 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3070
3232
  /**
3071
3233
  * @see https://redis.io/commands/hscan
3072
3234
  */
3073
- hscan: (key: string, cursor: string | number, cmdOpts?: ScanCommandOptions | undefined) => Pipeline<[...TCommands, Command<any, [string, (string | number)[]]>]>;
3235
+ hscan: (...args: CommandArgs<typeof HScanCommand>) => Pipeline<[...TCommands, Command<any, [string, (string | number)[]]>]>;
3074
3236
  /**
3075
3237
  * @see https://redis.io/commands/hset
3076
3238
  */
@@ -3078,46 +3240,7 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3078
3240
  /**
3079
3241
  * @see https://redis.io/commands/hsetex
3080
3242
  */
3081
- hsetex: <TData>(key: string, opts: {
3082
- conditional?: "FNX" | "fnx" | "FXX" | "fxx";
3083
- expiration?: {
3084
- ex: number;
3085
- px?: never;
3086
- exat?: never;
3087
- pxat?: never;
3088
- keepttl?: never;
3089
- } | {
3090
- ex?: never;
3091
- px: number;
3092
- exat?: never;
3093
- pxat?: never;
3094
- keepttl?: never;
3095
- } | {
3096
- ex?: never;
3097
- px?: never;
3098
- exat: number;
3099
- pxat?: never;
3100
- keepttl?: never;
3101
- } | {
3102
- ex?: never;
3103
- px?: never;
3104
- exat?: never;
3105
- pxat: number;
3106
- keepttl?: never;
3107
- } | {
3108
- ex?: never;
3109
- px?: never;
3110
- exat?: never;
3111
- pxat?: never;
3112
- keepttl: true;
3113
- } | {
3114
- ex?: never;
3115
- px?: never;
3116
- exat?: never;
3117
- pxat?: never;
3118
- keepttl?: never;
3119
- };
3120
- }, kv: Record<string, TData>) => Pipeline<[...TCommands, Command<any, number>]>;
3243
+ hsetex: <TData>(...args: CommandArgs<typeof HSetExCommand<TData>>) => Pipeline<[...TCommands, Command<any, number>]>;
3121
3244
  /**
3122
3245
  * @see https://redis.io/commands/hsetnx
3123
3246
  */
@@ -3125,31 +3248,31 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3125
3248
  /**
3126
3249
  * @see https://redis.io/commands/hstrlen
3127
3250
  */
3128
- hstrlen: (key: string, field: string) => Pipeline<[...TCommands, Command<any, number>]>;
3251
+ hstrlen: (...args: CommandArgs<typeof HStrLenCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3129
3252
  /**
3130
3253
  * @see https://redis.io/commands/hvals
3131
3254
  */
3132
- hvals: (key: string) => Pipeline<[...TCommands, Command<any, any>]>;
3255
+ hvals: (...args: CommandArgs<typeof HValsCommand>) => Pipeline<[...TCommands, Command<any, any>]>;
3133
3256
  /**
3134
3257
  * @see https://redis.io/commands/incr
3135
3258
  */
3136
- incr: (key: string) => Pipeline<[...TCommands, Command<any, number>]>;
3259
+ incr: (...args: CommandArgs<typeof IncrCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3137
3260
  /**
3138
3261
  * @see https://redis.io/commands/incrby
3139
3262
  */
3140
- incrby: (key: string, value: number) => Pipeline<[...TCommands, Command<any, number>]>;
3263
+ incrby: (...args: CommandArgs<typeof IncrByCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3141
3264
  /**
3142
3265
  * @see https://redis.io/commands/incrbyfloat
3143
3266
  */
3144
- incrbyfloat: (key: string, value: number) => Pipeline<[...TCommands, Command<any, number>]>;
3267
+ incrbyfloat: (...args: CommandArgs<typeof IncrByFloatCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3145
3268
  /**
3146
3269
  * @see https://redis.io/commands/keys
3147
3270
  */
3148
- keys: (pattern: string) => Pipeline<[...TCommands, Command<any, string[]>]>;
3271
+ keys: (...args: CommandArgs<typeof KeysCommand>) => Pipeline<[...TCommands, Command<any, string[]>]>;
3149
3272
  /**
3150
3273
  * @see https://redis.io/commands/lindex
3151
3274
  */
3152
- lindex: (key: string, index: number) => Pipeline<[...TCommands, Command<any, any>]>;
3275
+ lindex: (...args: CommandArgs<typeof LIndexCommand>) => Pipeline<[...TCommands, Command<any, any>]>;
3153
3276
  /**
3154
3277
  * @see https://redis.io/commands/linsert
3155
3278
  */
@@ -3157,27 +3280,23 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3157
3280
  /**
3158
3281
  * @see https://redis.io/commands/llen
3159
3282
  */
3160
- llen: (key: string) => Pipeline<[...TCommands, Command<any, number>]>;
3283
+ llen: (...args: CommandArgs<typeof LLenCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3161
3284
  /**
3162
3285
  * @see https://redis.io/commands/lmove
3163
3286
  */
3164
- lmove: <TData = string>(source: string, destination: string, whereFrom: "left" | "right", whereTo: "left" | "right") => Pipeline<[...TCommands, Command<any, TData>]>;
3287
+ lmove: <TData = string>(...args: CommandArgs<typeof LMoveCommand>) => Pipeline<[...TCommands, Command<any, TData>]>;
3165
3288
  /**
3166
3289
  * @see https://redis.io/commands/lpop
3167
3290
  */
3168
- lpop: <TData>(key: string, count?: number | undefined) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3291
+ lpop: <TData>(...args: CommandArgs<typeof LPopCommand>) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3169
3292
  /**
3170
3293
  * @see https://redis.io/commands/lmpop
3171
3294
  */
3172
- lmpop: <TData>(numkeys: number, keys: string[], args_2: "LEFT" | "RIGHT", count?: number | undefined) => Pipeline<[...TCommands, Command<any, [string, TData[]] | null>]>;
3295
+ lmpop: <TData>(...args: CommandArgs<typeof LmPopCommand>) => Pipeline<[...TCommands, Command<any, [string, TData[]] | null>]>;
3173
3296
  /**
3174
3297
  * @see https://redis.io/commands/lpos
3175
3298
  */
3176
- lpos: <TData>(key: string, element: unknown, opts?: {
3177
- rank?: number;
3178
- count?: number;
3179
- maxLen?: number;
3180
- } | undefined) => Pipeline<[...TCommands, Command<any, TData>]>;
3299
+ lpos: <TData>(...args: CommandArgs<typeof LPosCommand>) => Pipeline<[...TCommands, Command<any, TData>]>;
3181
3300
  /**
3182
3301
  * @see https://redis.io/commands/lpush
3183
3302
  */
@@ -3189,7 +3308,7 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3189
3308
  /**
3190
3309
  * @see https://redis.io/commands/lrange
3191
3310
  */
3192
- lrange: <TResult = string>(key: string, start: number, end: number) => Pipeline<[...TCommands, Command<any, TResult[]>]>;
3311
+ lrange: <TResult = string>(...args: CommandArgs<typeof LRangeCommand>) => Pipeline<[...TCommands, Command<any, TResult[]>]>;
3193
3312
  /**
3194
3313
  * @see https://redis.io/commands/lrem
3195
3314
  */
@@ -3201,7 +3320,7 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3201
3320
  /**
3202
3321
  * @see https://redis.io/commands/ltrim
3203
3322
  */
3204
- ltrim: (key: string, start: number, end: number) => Pipeline<[...TCommands, Command<any, "OK">]>;
3323
+ ltrim: (...args: CommandArgs<typeof LTrimCommand>) => Pipeline<[...TCommands, Command<any, "OK">]>;
3205
3324
  /**
3206
3325
  * @see https://redis.io/commands/mget
3207
3326
  */
@@ -3217,27 +3336,27 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3217
3336
  /**
3218
3337
  * @see https://redis.io/commands/persist
3219
3338
  */
3220
- persist: (key: string) => Pipeline<[...TCommands, Command<any, 0 | 1>]>;
3339
+ persist: (...args: CommandArgs<typeof PersistCommand>) => Pipeline<[...TCommands, Command<any, 0 | 1>]>;
3221
3340
  /**
3222
3341
  * @see https://redis.io/commands/pexpire
3223
3342
  */
3224
- pexpire: (key: string, milliseconds: number, option?: ExpireOption | undefined) => Pipeline<[...TCommands, Command<any, 0 | 1>]>;
3343
+ pexpire: (...args: CommandArgs<typeof PExpireCommand>) => Pipeline<[...TCommands, Command<any, 0 | 1>]>;
3225
3344
  /**
3226
3345
  * @see https://redis.io/commands/pexpireat
3227
3346
  */
3228
- pexpireat: (key: string, unix: number, option?: ExpireOption | undefined) => Pipeline<[...TCommands, Command<any, 0 | 1>]>;
3347
+ pexpireat: (...args: CommandArgs<typeof PExpireAtCommand>) => Pipeline<[...TCommands, Command<any, 0 | 1>]>;
3229
3348
  /**
3230
3349
  * @see https://redis.io/commands/pfadd
3231
3350
  */
3232
- pfadd: (args_0: string, ...args_1: unknown[]) => Pipeline<[...TCommands, Command<any, number>]>;
3351
+ pfadd: (...args: CommandArgs<typeof PfAddCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3233
3352
  /**
3234
3353
  * @see https://redis.io/commands/pfcount
3235
3354
  */
3236
- pfcount: (args_0: string, ...args_1: string[]) => Pipeline<[...TCommands, Command<any, number>]>;
3355
+ pfcount: (...args: CommandArgs<typeof PfCountCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3237
3356
  /**
3238
3357
  * @see https://redis.io/commands/pfmerge
3239
3358
  */
3240
- pfmerge: (destination_key: string, ...args_1: string[]) => Pipeline<[...TCommands, Command<any, "OK">]>;
3359
+ pfmerge: (...args: CommandArgs<typeof PfMergeCommand>) => Pipeline<[...TCommands, Command<any, "OK">]>;
3241
3360
  /**
3242
3361
  * @see https://redis.io/commands/ping
3243
3362
  */
@@ -3249,11 +3368,11 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3249
3368
  /**
3250
3369
  * @see https://redis.io/commands/pttl
3251
3370
  */
3252
- pttl: (key: string) => Pipeline<[...TCommands, Command<any, number>]>;
3371
+ pttl: (...args: CommandArgs<typeof PTtlCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3253
3372
  /**
3254
3373
  * @see https://redis.io/commands/publish
3255
3374
  */
3256
- publish: (channel: string, message: unknown) => Pipeline<[...TCommands, Command<any, number>]>;
3375
+ publish: (...args: CommandArgs<typeof PublishCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3257
3376
  /**
3258
3377
  * @see https://redis.io/commands/randomkey
3259
3378
  */
@@ -3261,15 +3380,15 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3261
3380
  /**
3262
3381
  * @see https://redis.io/commands/rename
3263
3382
  */
3264
- rename: (source: string, destination: string) => Pipeline<[...TCommands, Command<any, "OK">]>;
3383
+ rename: (...args: CommandArgs<typeof RenameCommand>) => Pipeline<[...TCommands, Command<any, "OK">]>;
3265
3384
  /**
3266
3385
  * @see https://redis.io/commands/renamenx
3267
3386
  */
3268
- renamenx: (source: string, destination: string) => Pipeline<[...TCommands, Command<any, 0 | 1>]>;
3387
+ renamenx: (...args: CommandArgs<typeof RenameNXCommand>) => Pipeline<[...TCommands, Command<any, 0 | 1>]>;
3269
3388
  /**
3270
3389
  * @see https://redis.io/commands/rpop
3271
3390
  */
3272
- rpop: <TData = string>(key: string, count?: number | undefined) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3391
+ rpop: <TData = string>(...args: CommandArgs<typeof RPopCommand>) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3273
3392
  /**
3274
3393
  * @see https://redis.io/commands/rpush
3275
3394
  */
@@ -3285,11 +3404,11 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3285
3404
  /**
3286
3405
  * @see https://redis.io/commands/scan
3287
3406
  */
3288
- scan: (cursor: string | number, opts?: ScanCommandOptions | undefined) => Pipeline<[...TCommands, Command<any, any>]>;
3407
+ scan: (...args: CommandArgs<typeof ScanCommand>) => Pipeline<[...TCommands, Command<any, any>]>;
3289
3408
  /**
3290
3409
  * @see https://redis.io/commands/scard
3291
3410
  */
3292
- scard: (key: string) => Pipeline<[...TCommands, Command<any, number>]>;
3411
+ scard: (...args: CommandArgs<typeof SCardCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3293
3412
  /**
3294
3413
  * @see https://redis.io/commands/script-exists
3295
3414
  */
@@ -3297,16 +3416,16 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3297
3416
  /**
3298
3417
  * @see https://redis.io/commands/script-flush
3299
3418
  */
3300
- scriptFlush: (opts?: ScriptFlushCommandOptions | undefined) => Pipeline<[...TCommands, Command<any, "OK">]>;
3419
+ scriptFlush: (...args: CommandArgs<typeof ScriptFlushCommand>) => Pipeline<[...TCommands, Command<any, "OK">]>;
3301
3420
  /**
3302
3421
  * @see https://redis.io/commands/script-load
3303
3422
  */
3304
- scriptLoad: (script: string) => Pipeline<[...TCommands, Command<any, string>]>;
3305
- sdiff: (key: string, ...keys: string[]) => Pipeline<[...TCommands, Command<any, unknown[]>]>;
3423
+ scriptLoad: (...args: CommandArgs<typeof ScriptLoadCommand>) => Pipeline<[...TCommands, Command<any, string>]>;
3424
+ sdiff: (...args: CommandArgs<typeof SDiffCommand>) => Pipeline<[...TCommands, Command<any, unknown[]>]>;
3306
3425
  /**
3307
3426
  * @see https://redis.io/commands/sdiffstore
3308
3427
  */
3309
- sdiffstore: (destination: string, ...keys: string[]) => Pipeline<[...TCommands, Command<any, number>]>;
3428
+ sdiffstore: (...args: CommandArgs<typeof SDiffStoreCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3310
3429
  /**
3311
3430
  * @see https://redis.io/commands/set
3312
3431
  */
@@ -3314,7 +3433,7 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3314
3433
  /**
3315
3434
  * @see https://redis.io/commands/setbit
3316
3435
  */
3317
- setbit: (key: string, offset: number, value: 0 | 1) => Pipeline<[...TCommands, Command<any, 0 | 1>]>;
3436
+ setbit: (...args: CommandArgs<typeof SetBitCommand>) => Pipeline<[...TCommands, Command<any, 0 | 1>]>;
3318
3437
  /**
3319
3438
  * @see https://redis.io/commands/setex
3320
3439
  */
@@ -3326,15 +3445,19 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3326
3445
  /**
3327
3446
  * @see https://redis.io/commands/setrange
3328
3447
  */
3329
- setrange: (key: string, offset: number, value: string) => Pipeline<[...TCommands, Command<any, number>]>;
3448
+ setrange: (...args: CommandArgs<typeof SetRangeCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3330
3449
  /**
3331
3450
  * @see https://redis.io/commands/sinter
3332
3451
  */
3333
- sinter: (key: string, ...keys: string[]) => Pipeline<[...TCommands, Command<any, string[]>]>;
3452
+ sinter: (...args: CommandArgs<typeof SInterCommand>) => Pipeline<[...TCommands, Command<any, string[]>]>;
3453
+ /**
3454
+ * @see https://redis.io/commands/sintercard
3455
+ */
3456
+ sintercard: (...args: CommandArgs<typeof SInterCardCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3334
3457
  /**
3335
3458
  * @see https://redis.io/commands/sinterstore
3336
3459
  */
3337
- sinterstore: (destination: string, key: string, ...keys: string[]) => Pipeline<[...TCommands, Command<any, number>]>;
3460
+ sinterstore: (...args: CommandArgs<typeof SInterStoreCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3338
3461
  /**
3339
3462
  * @see https://redis.io/commands/sismember
3340
3463
  */
@@ -3342,7 +3465,7 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3342
3465
  /**
3343
3466
  * @see https://redis.io/commands/smembers
3344
3467
  */
3345
- smembers: <TData extends unknown[] = string[]>(key: string) => Pipeline<[...TCommands, Command<any, TData>]>;
3468
+ smembers: <TData extends unknown[] = string[]>(...args: CommandArgs<typeof SMembersCommand>) => Pipeline<[...TCommands, Command<any, TData>]>;
3346
3469
  /**
3347
3470
  * @see https://redis.io/commands/smismember
3348
3471
  */
@@ -3354,11 +3477,11 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3354
3477
  /**
3355
3478
  * @see https://redis.io/commands/spop
3356
3479
  */
3357
- spop: <TData>(key: string, count?: number | undefined) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3480
+ spop: <TData>(...args: CommandArgs<typeof SPopCommand>) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3358
3481
  /**
3359
3482
  * @see https://redis.io/commands/srandmember
3360
3483
  */
3361
- srandmember: <TData>(key: string, count?: number | undefined) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3484
+ srandmember: <TData>(...args: CommandArgs<typeof SRandMemberCommand>) => Pipeline<[...TCommands, Command<any, TData | null>]>;
3362
3485
  /**
3363
3486
  * @see https://redis.io/commands/srem
3364
3487
  */
@@ -3366,19 +3489,19 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3366
3489
  /**
3367
3490
  * @see https://redis.io/commands/sscan
3368
3491
  */
3369
- sscan: (key: string, cursor: string | number, opts?: ScanCommandOptions | undefined) => Pipeline<[...TCommands, Command<any, [string, (string | number)[]]>]>;
3492
+ sscan: (...args: CommandArgs<typeof SScanCommand>) => Pipeline<[...TCommands, Command<any, [string, (string | number)[]]>]>;
3370
3493
  /**
3371
3494
  * @see https://redis.io/commands/strlen
3372
3495
  */
3373
- strlen: (key: string) => Pipeline<[...TCommands, Command<any, number>]>;
3496
+ strlen: (...args: CommandArgs<typeof StrLenCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3374
3497
  /**
3375
3498
  * @see https://redis.io/commands/sunion
3376
3499
  */
3377
- sunion: (key: string, ...keys: string[]) => Pipeline<[...TCommands, Command<any, unknown[]>]>;
3500
+ sunion: (...args: CommandArgs<typeof SUnionCommand>) => Pipeline<[...TCommands, Command<any, unknown[]>]>;
3378
3501
  /**
3379
3502
  * @see https://redis.io/commands/sunionstore
3380
3503
  */
3381
- sunionstore: (destination: string, key: string, ...keys: string[]) => Pipeline<[...TCommands, Command<any, number>]>;
3504
+ sunionstore: (...args: CommandArgs<typeof SUnionStoreCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3382
3505
  /**
3383
3506
  * @see https://redis.io/commands/time
3384
3507
  */
@@ -3390,11 +3513,11 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3390
3513
  /**
3391
3514
  * @see https://redis.io/commands/ttl
3392
3515
  */
3393
- ttl: (key: string) => Pipeline<[...TCommands, Command<any, number>]>;
3516
+ ttl: (...args: CommandArgs<typeof TtlCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3394
3517
  /**
3395
3518
  * @see https://redis.io/commands/type
3396
3519
  */
3397
- type: (key: string) => Pipeline<[...TCommands, Command<any, Type>]>;
3520
+ type: (...args: CommandArgs<typeof TypeCommand>) => Pipeline<[...TCommands, Command<any, Type>]>;
3398
3521
  /**
3399
3522
  * @see https://redis.io/commands/unlink
3400
3523
  */
@@ -3406,68 +3529,27 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3406
3529
  /**
3407
3530
  * @see https://redis.io/commands/xadd
3408
3531
  */
3409
- xadd: (key: string, id: string, entries: Record<string, unknown>, opts?: {
3410
- nomkStream?: boolean;
3411
- trim?: ({
3412
- type: "MAXLEN" | "maxlen";
3413
- threshold: number;
3414
- } | {
3415
- type: "MINID" | "minid";
3416
- threshold: string;
3417
- }) & ({
3418
- comparison: "~";
3419
- limit?: number;
3420
- } | {
3421
- comparison: "=";
3422
- limit?: never;
3423
- });
3424
- } | undefined) => Pipeline<[...TCommands, Command<any, string>]>;
3532
+ xadd: (...args: CommandArgs<typeof XAddCommand>) => Pipeline<[...TCommands, Command<any, string>]>;
3425
3533
  /**
3426
3534
  * @see https://redis.io/commands/xack
3427
3535
  */
3428
- xack: (key: string, group: string, id: string | string[]) => Pipeline<[...TCommands, Command<any, number>]>;
3536
+ xack: (...args: CommandArgs<typeof XAckCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3429
3537
  /**
3430
3538
  * @see https://redis.io/commands/xackdel
3431
3539
  */
3432
- xackdel: (key: string, group: string, opts: "KEEPREF" | "keepref" | "DELREF" | "delref" | "ACKED" | "acked", ...ids: string[]) => Pipeline<[...TCommands, Command<any, number[]>]>;
3540
+ xackdel: (...args: CommandArgs<typeof XAckDelCommand>) => Pipeline<[...TCommands, Command<any, number[]>]>;
3433
3541
  /**
3434
3542
  * @see https://redis.io/commands/xdel
3435
3543
  */
3436
- xdel: (key: string, ids: string | string[]) => Pipeline<[...TCommands, Command<any, number>]>;
3544
+ xdel: (...args: CommandArgs<typeof XDelCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3437
3545
  /**
3438
3546
  * @see https://redis.io/commands/xdelex
3439
3547
  */
3440
- xdelex: (key: string, opts?: ("KEEPREF" | "keepref" | "DELREF" | "delref" | "ACKED" | "acked") | undefined, ...ids: string[]) => Pipeline<[...TCommands, Command<any, number[]>]>;
3548
+ xdelex: (...args: CommandArgs<typeof XDelExCommand>) => Pipeline<[...TCommands, Command<any, number[]>]>;
3441
3549
  /**
3442
3550
  * @see https://redis.io/commands/xgroup
3443
3551
  */
3444
- xgroup: (key: string, opts: {
3445
- type: "CREATE";
3446
- group: string;
3447
- id: `$` | string;
3448
- options?: {
3449
- MKSTREAM?: boolean;
3450
- ENTRIESREAD?: number;
3451
- };
3452
- } | {
3453
- type: "CREATECONSUMER";
3454
- group: string;
3455
- consumer: string;
3456
- } | {
3457
- type: "DELCONSUMER";
3458
- group: string;
3459
- consumer: string;
3460
- } | {
3461
- type: "DESTROY";
3462
- group: string;
3463
- } | {
3464
- type: "SETID";
3465
- group: string;
3466
- id: `$` | string;
3467
- options?: {
3468
- ENTRIESREAD?: number;
3469
- };
3470
- }) => Pipeline<[...TCommands, Command<any, never>]>;
3552
+ xgroup: (...args: CommandArgs<typeof XGroupCommand>) => Pipeline<[...TCommands, Command<any, never>]>;
3471
3553
  /**
3472
3554
  * @see https://redis.io/commands/xread
3473
3555
  */
@@ -3479,66 +3561,43 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3479
3561
  /**
3480
3562
  * @see https://redis.io/commands/xinfo
3481
3563
  */
3482
- xinfo: (key: string, options: {
3483
- type: "CONSUMERS";
3484
- group: string;
3485
- } | {
3486
- type: "GROUPS";
3487
- }) => Pipeline<[...TCommands, Command<any, unknown[]>]>;
3564
+ xinfo: (...args: CommandArgs<typeof XInfoCommand>) => Pipeline<[...TCommands, Command<any, unknown[]>]>;
3488
3565
  /**
3489
3566
  * @see https://redis.io/commands/xlen
3490
3567
  */
3491
- xlen: (key: string) => Pipeline<[...TCommands, Command<any, number>]>;
3568
+ xlen: (...args: CommandArgs<typeof XLenCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3492
3569
  /**
3493
3570
  * @see https://redis.io/commands/xpending
3494
3571
  */
3495
- xpending: (key: string, group: string, start: string, end: string, count: number, options?: {
3496
- idleTime?: number;
3497
- consumer?: string | string[];
3498
- } | undefined) => Pipeline<[...TCommands, Command<any, unknown[]>]>;
3572
+ xpending: (...args: CommandArgs<typeof XPendingCommand>) => Pipeline<[...TCommands, Command<any, unknown[]>]>;
3499
3573
  /**
3500
3574
  * @see https://redis.io/commands/xclaim
3501
3575
  */
3502
- xclaim: (key: string, group: string, consumer: string, minIdleTime: number, id: string | string[], options?: {
3503
- idleMS?: number;
3504
- timeMS?: number;
3505
- retryCount?: number;
3506
- force?: boolean;
3507
- justId?: boolean;
3508
- lastId?: number;
3509
- } | undefined) => Pipeline<[...TCommands, Command<any, unknown[]>]>;
3576
+ xclaim: (...args: CommandArgs<typeof XClaimCommand>) => Pipeline<[...TCommands, Command<any, unknown[]>]>;
3510
3577
  /**
3511
3578
  * @see https://redis.io/commands/xautoclaim
3512
3579
  */
3513
- xautoclaim: (key: string, group: string, consumer: string, minIdleTime: number, start: string, options?: {
3514
- count?: number;
3515
- justId?: boolean;
3516
- } | undefined) => Pipeline<[...TCommands, Command<any, unknown[]>]>;
3580
+ xautoclaim: (...args: CommandArgs<typeof XAutoClaim>) => Pipeline<[...TCommands, Command<any, unknown[]>]>;
3517
3581
  /**
3518
3582
  * @see https://redis.io/commands/xtrim
3519
3583
  */
3520
- xtrim: (key: string, options: {
3521
- strategy: "MAXLEN" | "MINID";
3522
- exactness?: "~" | "=";
3523
- threshold: number | string;
3524
- limit?: number;
3525
- }) => Pipeline<[...TCommands, Command<any, number>]>;
3584
+ xtrim: (...args: CommandArgs<typeof XTrimCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3526
3585
  /**
3527
3586
  * @see https://redis.io/commands/xrange
3528
3587
  */
3529
- xrange: (key: string, start: string, end: string, count?: number | undefined) => Pipeline<[...TCommands, Command<any, Record<string, Record<string, unknown>>>]>;
3588
+ xrange: <TData extends Record<string, unknown>>(...args: CommandArgs<typeof XRangeCommand>) => Pipeline<[...TCommands, Command<any, Record<string, TData>>]>;
3530
3589
  /**
3531
3590
  * @see https://redis.io/commands/xrevrange
3532
3591
  */
3533
- xrevrange: (key: string, end: string, start: string, count?: number | undefined) => Pipeline<[...TCommands, Command<any, Record<string, Record<string, unknown>>>]>;
3592
+ xrevrange: <TData extends Record<string, unknown>>(...args: CommandArgs<typeof XRevRangeCommand>) => Pipeline<[...TCommands, Command<any, Record<string, TData>>]>;
3534
3593
  /**
3535
3594
  * @see https://redis.io/commands/zcard
3536
3595
  */
3537
- zcard: (key: string) => Pipeline<[...TCommands, Command<any, number>]>;
3596
+ zcard: (...args: CommandArgs<typeof ZCardCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3538
3597
  /**
3539
3598
  * @see https://redis.io/commands/zcount
3540
3599
  */
3541
- zcount: (key: string, min: string | number, max: string | number) => Pipeline<[...TCommands, Command<any, number>]>;
3600
+ zcount: (...args: CommandArgs<typeof ZCountCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3542
3601
  /**
3543
3602
  * @see https://redis.io/commands/zincrby
3544
3603
  */
@@ -3546,23 +3605,23 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3546
3605
  /**
3547
3606
  * @see https://redis.io/commands/zinterstore
3548
3607
  */
3549
- zinterstore: (destination: string, numKeys: number, keys: string[], opts?: ZInterStoreCommandOptions | undefined) => Pipeline<[...TCommands, Command<any, number>]>;
3608
+ zinterstore: (...args: CommandArgs<typeof ZInterStoreCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3550
3609
  /**
3551
3610
  * @see https://redis.io/commands/zlexcount
3552
3611
  */
3553
- zlexcount: (key: string, min: string, max: string) => Pipeline<[...TCommands, Command<any, number>]>;
3612
+ zlexcount: (...args: CommandArgs<typeof ZLexCountCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3554
3613
  /**
3555
3614
  * @see https://redis.io/commands/zmscore
3556
3615
  */
3557
- zmscore: (key: string, members: unknown[]) => Pipeline<[...TCommands, Command<any, number[] | null>]>;
3616
+ zmscore: (...args: CommandArgs<typeof ZMScoreCommand>) => Pipeline<[...TCommands, Command<any, number[] | null>]>;
3558
3617
  /**
3559
3618
  * @see https://redis.io/commands/zpopmax
3560
3619
  */
3561
- zpopmax: <TData>(key: string, count?: number | undefined) => Pipeline<[...TCommands, Command<any, TData[]>]>;
3620
+ zpopmax: <TData>(...args: CommandArgs<typeof ZPopMaxCommand>) => Pipeline<[...TCommands, Command<any, TData[]>]>;
3562
3621
  /**
3563
3622
  * @see https://redis.io/commands/zpopmin
3564
3623
  */
3565
- zpopmin: <TData>(key: string, count?: number | undefined) => Pipeline<[...TCommands, Command<any, TData[]>]>;
3624
+ zpopmin: <TData>(...args: CommandArgs<typeof ZPopMinCommand>) => Pipeline<[...TCommands, Command<any, TData[]>]>;
3566
3625
  /**
3567
3626
  * @see https://redis.io/commands/zrange
3568
3627
  */
@@ -3582,15 +3641,15 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3582
3641
  /**
3583
3642
  * @see https://redis.io/commands/zremrangebylex
3584
3643
  */
3585
- zremrangebylex: (key: string, min: string, max: string) => Pipeline<[...TCommands, Command<any, number>]>;
3644
+ zremrangebylex: (...args: CommandArgs<typeof ZRemRangeByLexCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3586
3645
  /**
3587
3646
  * @see https://redis.io/commands/zremrangebyrank
3588
3647
  */
3589
- zremrangebyrank: (key: string, start: number, stop: number) => Pipeline<[...TCommands, Command<any, number>]>;
3648
+ zremrangebyrank: (...args: CommandArgs<typeof ZRemRangeByRankCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3590
3649
  /**
3591
3650
  * @see https://redis.io/commands/zremrangebyscore
3592
3651
  */
3593
- zremrangebyscore: (key: string, min: number | `(${number}` | "-inf" | "+inf", max: number | `(${number}` | "-inf" | "+inf") => Pipeline<[...TCommands, Command<any, number>]>;
3652
+ zremrangebyscore: (...args: CommandArgs<typeof ZRemRangeByScoreCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3594
3653
  /**
3595
3654
  * @see https://redis.io/commands/zrevrank
3596
3655
  */
@@ -3598,7 +3657,7 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3598
3657
  /**
3599
3658
  * @see https://redis.io/commands/zscan
3600
3659
  */
3601
- zscan: (key: string, cursor: string | number, opts?: ScanCommandOptions | undefined) => Pipeline<[...TCommands, Command<any, [string, (string | number)[]]>]>;
3660
+ zscan: (...args: CommandArgs<typeof ZScanCommand>) => Pipeline<[...TCommands, Command<any, [string, (string | number)[]]>]>;
3602
3661
  /**
3603
3662
  * @see https://redis.io/commands/zscore
3604
3663
  */
@@ -3606,11 +3665,11 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3606
3665
  /**
3607
3666
  * @see https://redis.io/commands/zunionstore
3608
3667
  */
3609
- zunionstore: (destination: string, numKeys: number, keys: string[], opts?: ZUnionStoreCommandOptions | undefined) => Pipeline<[...TCommands, Command<any, number>]>;
3668
+ zunionstore: (...args: CommandArgs<typeof ZUnionStoreCommand>) => Pipeline<[...TCommands, Command<any, number>]>;
3610
3669
  /**
3611
3670
  * @see https://redis.io/commands/zunion
3612
3671
  */
3613
- zunion: (numKeys: number, keys: string[], opts?: ZUnionCommandOptions | undefined) => Pipeline<[...TCommands, Command<any, any>]>;
3672
+ zunion: (...args: CommandArgs<typeof ZUnionCommand>) => Pipeline<[...TCommands, Command<any, any>]>;
3614
3673
  /**
3615
3674
  * @see https://redis.io/commands/?group=json
3616
3675
  */
@@ -3746,8 +3805,8 @@ declare class Pipeline<TCommands extends Command<any, any>[] = []> {
3746
3805
  stats: () => Pipeline<[...TCommands, Command<any, {
3747
3806
  engines: {
3748
3807
  [k: string]: {
3749
- librariesCount: unknown;
3750
- functionsCount: unknown;
3808
+ librariesCount: any;
3809
+ functionsCount: any;
3751
3810
  };
3752
3811
  };
3753
3812
  }>]>;
@@ -3788,6 +3847,7 @@ declare class Script<TResult = unknown> {
3788
3847
  * future major release.
3789
3848
  */
3790
3849
  sha1: string;
3850
+ private initPromise;
3791
3851
  private readonly redis;
3792
3852
  constructor(redis: Redis, script: string);
3793
3853
  /**
@@ -3841,6 +3901,7 @@ declare class ScriptRO<TResult = unknown> {
3841
3901
  * future major release.
3842
3902
  */
3843
3903
  sha1: string;
3904
+ private initPromise;
3844
3905
  private readonly redis;
3845
3906
  constructor(redis: Redis, script: string);
3846
3907
  private init;
@@ -4021,8 +4082,8 @@ declare class Redis {
4021
4082
  stats: () => Promise<{
4022
4083
  engines: {
4023
4084
  [k: string]: {
4024
- librariesCount: unknown;
4025
- functionsCount: unknown;
4085
+ librariesCount: any;
4086
+ functionsCount: any;
4026
4087
  };
4027
4088
  };
4028
4089
  }>;
@@ -4082,10 +4143,10 @@ declare class Redis {
4082
4143
  add: ({ indexName, alias }: {
4083
4144
  indexName: string;
4084
4145
  alias: string;
4085
- }) => Promise<1>;
4146
+ }) => Promise<1 | 2>;
4086
4147
  delete: ({ alias }: {
4087
4148
  alias: string;
4088
- }) => Promise<1>;
4149
+ }) => Promise<0 | 1>;
4089
4150
  };
4090
4151
  };
4091
4152
  /**
@@ -4120,15 +4181,15 @@ declare class Redis {
4120
4181
  *
4121
4182
  * @see https://redis.io/commands/bitfield
4122
4183
  */
4123
- bitfield: (key: string) => BitFieldCommand<Promise<number[]>>;
4184
+ bitfield: (...args: CommandArgs<typeof BitFieldCommand>) => BitFieldCommand<Promise<number[]>>;
4124
4185
  /**
4125
4186
  * @see https://redis.io/commands/append
4126
4187
  */
4127
- append: (key: string, value: string) => Promise<number>;
4188
+ append: (...args: CommandArgs<typeof AppendCommand>) => Promise<number>;
4128
4189
  /**
4129
4190
  * @see https://redis.io/commands/bitcount
4130
4191
  */
4131
- bitcount: (key: string, start: number, end: number) => Promise<number>;
4192
+ bitcount: (...args: CommandArgs<typeof BitCountCommand>) => Promise<number>;
4132
4193
  /**
4133
4194
  * @see https://redis.io/commands/bitop
4134
4195
  */
@@ -4141,17 +4202,15 @@ declare class Redis {
4141
4202
  /**
4142
4203
  * @see https://redis.io/commands/bitpos
4143
4204
  */
4144
- bitpos: (key: string, bit: 0 | 1, start?: number | undefined, end?: number | undefined) => Promise<number>;
4205
+ bitpos: (...args: CommandArgs<typeof BitPosCommand>) => Promise<number>;
4145
4206
  /**
4146
4207
  * @see https://redis.io/commands/client-setinfo
4147
4208
  */
4148
- clientSetinfo: (attribute: ClientSetInfoAttribute, value: string) => Promise<string>;
4209
+ clientSetinfo: (...args: CommandArgs<typeof ClientSetInfoCommand>) => Promise<string>;
4149
4210
  /**
4150
4211
  * @see https://redis.io/commands/copy
4151
4212
  */
4152
- copy: (key: string, destinationKey: string, opts?: {
4153
- replace: boolean;
4154
- } | undefined) => Promise<"COPIED" | "NOT_COPIED">;
4213
+ copy: (...args: CommandArgs<typeof CopyCommand>) => Promise<"COPIED" | "NOT_COPIED">;
4155
4214
  /**
4156
4215
  * @see https://redis.io/commands/dbsize
4157
4216
  */
@@ -4159,11 +4218,11 @@ declare class Redis {
4159
4218
  /**
4160
4219
  * @see https://redis.io/commands/decr
4161
4220
  */
4162
- decr: (key: string) => Promise<number>;
4221
+ decr: (...args: CommandArgs<typeof DecrCommand>) => Promise<number>;
4163
4222
  /**
4164
4223
  * @see https://redis.io/commands/decrby
4165
4224
  */
4166
- decrby: (key: string, decrement: number) => Promise<number>;
4225
+ decrby: (...args: CommandArgs<typeof DecrByCommand>) => Promise<number>;
4167
4226
  /**
4168
4227
  * @see https://redis.io/commands/del
4169
4228
  */
@@ -4171,23 +4230,23 @@ declare class Redis {
4171
4230
  /**
4172
4231
  * @see https://redis.io/commands/echo
4173
4232
  */
4174
- echo: (message: string) => Promise<string>;
4233
+ echo: (...args: CommandArgs<typeof EchoCommand>) => Promise<string>;
4175
4234
  /**
4176
4235
  * @see https://redis.io/commands/eval_ro
4177
4236
  */
4178
- evalRo: <TArgs extends unknown[], TData = unknown>(script: string, keys: string[], args: TArgs) => Promise<TData>;
4237
+ evalRo: <TArgs extends unknown[], TData = unknown>(...args: [script: string, keys: string[], args: TArgs]) => Promise<TData>;
4179
4238
  /**
4180
4239
  * @see https://redis.io/commands/eval
4181
4240
  */
4182
- eval: <TArgs extends unknown[], TData = unknown>(script: string, keys: string[], args: TArgs) => Promise<TData>;
4241
+ eval: <TArgs extends unknown[], TData = unknown>(...args: [script: string, keys: string[], args: TArgs]) => Promise<TData>;
4183
4242
  /**
4184
4243
  * @see https://redis.io/commands/evalsha_ro
4185
4244
  */
4186
- evalshaRo: <TArgs extends unknown[], TData = unknown>(sha1: string, keys: string[], args: TArgs) => Promise<TData>;
4245
+ evalshaRo: <TArgs extends unknown[], TData = unknown>(...args: [sha1: string, keys: string[], args: TArgs]) => Promise<TData>;
4187
4246
  /**
4188
4247
  * @see https://redis.io/commands/evalsha
4189
4248
  */
4190
- evalsha: <TArgs extends unknown[], TData = unknown>(sha1: string, keys: string[], args: TArgs) => Promise<TData>;
4249
+ evalsha: <TArgs extends unknown[], TData = unknown>(...args: [sha1: string, keys: string[], args: TArgs]) => Promise<TData>;
4191
4250
  /**
4192
4251
  * Generic method to execute any Redis command.
4193
4252
  */
@@ -4199,11 +4258,11 @@ declare class Redis {
4199
4258
  /**
4200
4259
  * @see https://redis.io/commands/expire
4201
4260
  */
4202
- expire: (key: string, seconds: number, option?: ExpireOption | undefined) => Promise<0 | 1>;
4261
+ expire: (...args: CommandArgs<typeof ExpireCommand>) => Promise<0 | 1>;
4203
4262
  /**
4204
4263
  * @see https://redis.io/commands/expireat
4205
4264
  */
4206
- expireat: (key: string, unix: number, option?: ExpireOption | undefined) => Promise<0 | 1>;
4265
+ expireat: (...args: CommandArgs<typeof ExpireAtCommand>) => Promise<0 | 1>;
4207
4266
  /**
4208
4267
  * @see https://redis.io/commands/flushall
4209
4268
  */
@@ -4211,60 +4270,30 @@ declare class Redis {
4211
4270
  /**
4212
4271
  * @see https://redis.io/commands/flushdb
4213
4272
  */
4214
- flushdb: (opts?: {
4215
- async?: boolean;
4216
- } | undefined) => Promise<"OK">;
4273
+ flushdb: (...args: CommandArgs<typeof FlushDBCommand>) => Promise<"OK">;
4217
4274
  /**
4218
4275
  * @see https://redis.io/commands/geoadd
4219
4276
  */
4220
- geoadd: <TData>(args_0: string, args_1: GeoAddCommandOptions | GeoMember<TData>, ...args_2: GeoMember<TData>[]) => Promise<number | null>;
4277
+ geoadd: <TData>(...args: CommandArgs<typeof GeoAddCommand<TData>>) => Promise<number | null>;
4221
4278
  /**
4222
4279
  * @see https://redis.io/commands/geopos
4223
4280
  */
4224
- geopos: <TData>(args_0: string, ...args_1: TData[]) => Promise<{
4281
+ geopos: <TData>(...args: CommandArgs<typeof GeoPosCommand<TData>>) => Promise<{
4225
4282
  lng: number;
4226
4283
  lat: number;
4227
4284
  }[]>;
4228
4285
  /**
4229
4286
  * @see https://redis.io/commands/geodist
4230
4287
  */
4231
- geodist: <TData>(key: string, member1: TData, member2: TData, unit?: "M" | "KM" | "FT" | "MI" | undefined) => Promise<number | null>;
4288
+ geodist: <TData>(...args: CommandArgs<typeof GeoDistCommand<TData>>) => Promise<number | null>;
4232
4289
  /**
4233
4290
  * @see https://redis.io/commands/geohash
4234
4291
  */
4235
- geohash: <TData>(args_0: string, ...args_1: TData[]) => Promise<(string | null)[]>;
4292
+ geohash: <TData>(...args: CommandArgs<typeof GeoHashCommand<TData>>) => Promise<(string | null)[]>;
4236
4293
  /**
4237
4294
  * @see https://redis.io/commands/geosearch
4238
4295
  */
4239
- geosearch: <TData>(key: string, centerPoint: {
4240
- type: "FROMLONLAT" | "fromlonlat";
4241
- coordinate: {
4242
- lon: number;
4243
- lat: number;
4244
- };
4245
- } | {
4246
- type: "FROMMEMBER" | "frommember";
4247
- member: TData;
4248
- }, shape: {
4249
- type: "BYRADIUS" | "byradius";
4250
- radius: number;
4251
- radiusType: "M" | "KM" | "FT" | "MI";
4252
- } | {
4253
- type: "BYBOX" | "bybox";
4254
- rect: {
4255
- width: number;
4256
- height: number;
4257
- };
4258
- rectType: "M" | "KM" | "FT" | "MI";
4259
- }, order: "ASC" | "DESC" | "asc" | "desc", opts?: {
4260
- count?: {
4261
- limit: number;
4262
- any?: boolean;
4263
- };
4264
- withCoord?: boolean;
4265
- withDist?: boolean;
4266
- withHash?: boolean;
4267
- } | undefined) => Promise<({
4296
+ geosearch: <TData>(...args: CommandArgs<typeof GeoSearchCommand<TData>>) => Promise<({
4268
4297
  member: TData;
4269
4298
  } & {
4270
4299
  coord?: {
@@ -4277,89 +4306,27 @@ declare class Redis {
4277
4306
  /**
4278
4307
  * @see https://redis.io/commands/geosearchstore
4279
4308
  */
4280
- geosearchstore: <TData>(destination: string, key: string, centerPoint: {
4281
- type: "FROMLONLAT" | "fromlonlat";
4282
- coordinate: {
4283
- lon: number;
4284
- lat: number;
4285
- };
4286
- } | {
4287
- type: "FROMMEMBER" | "frommember";
4288
- member: TData;
4289
- }, shape: {
4290
- type: "BYRADIUS" | "byradius";
4291
- radius: number;
4292
- radiusType: "M" | "KM" | "FT" | "MI";
4293
- } | {
4294
- type: "BYBOX" | "bybox";
4295
- rect: {
4296
- width: number;
4297
- height: number;
4298
- };
4299
- rectType: "M" | "KM" | "FT" | "MI";
4300
- }, order: "ASC" | "DESC" | "asc" | "desc", opts?: {
4301
- count?: {
4302
- limit: number;
4303
- any?: boolean;
4304
- };
4305
- storeDist?: boolean;
4306
- } | undefined) => Promise<number>;
4309
+ geosearchstore: <TData>(...args: CommandArgs<typeof GeoSearchStoreCommand<TData>>) => Promise<number>;
4307
4310
  /**
4308
4311
  * @see https://redis.io/commands/get
4309
4312
  */
4310
- get: <TData>(key: string) => Promise<TData | null>;
4313
+ get: <TData>(...args: CommandArgs<typeof GetCommand>) => Promise<TData | null>;
4311
4314
  /**
4312
4315
  * @see https://redis.io/commands/getbit
4313
4316
  */
4314
- getbit: (key: string, offset: number) => Promise<0 | 1>;
4317
+ getbit: (...args: CommandArgs<typeof GetBitCommand>) => Promise<0 | 1>;
4315
4318
  /**
4316
4319
  * @see https://redis.io/commands/getdel
4317
4320
  */
4318
- getdel: <TData>(key: string) => Promise<TData | null>;
4321
+ getdel: <TData>(...args: CommandArgs<typeof GetDelCommand>) => Promise<TData | null>;
4319
4322
  /**
4320
4323
  * @see https://redis.io/commands/getex
4321
4324
  */
4322
- getex: <TData>(key: string, opts?: ({
4323
- ex: number;
4324
- px?: never;
4325
- exat?: never;
4326
- pxat?: never;
4327
- persist?: never;
4328
- } | {
4329
- ex?: never;
4330
- px: number;
4331
- exat?: never;
4332
- pxat?: never;
4333
- persist?: never;
4334
- } | {
4335
- ex?: never;
4336
- px?: never;
4337
- exat: number;
4338
- pxat?: never;
4339
- persist?: never;
4340
- } | {
4341
- ex?: never;
4342
- px?: never;
4343
- exat?: never;
4344
- pxat: number;
4345
- persist?: never;
4346
- } | {
4347
- ex?: never;
4348
- px?: never;
4349
- exat?: never;
4350
- pxat?: never;
4351
- persist: true;
4352
- } | {
4353
- ex?: never;
4354
- px?: never;
4355
- exat?: never;
4356
- pxat?: never;
4357
- persist?: never;
4358
- }) | undefined) => Promise<TData | null>;
4325
+ getex: <TData>(...args: CommandArgs<typeof GetExCommand>) => Promise<TData | null>;
4359
4326
  /**
4360
4327
  * @see https://redis.io/commands/getrange
4361
4328
  */
4362
- getrange: (key: string, start: number, end: number) => Promise<string>;
4329
+ getrange: (...args: CommandArgs<typeof GetRangeCommand>) => Promise<string>;
4363
4330
  /**
4364
4331
  * @see https://redis.io/commands/getset
4365
4332
  */
@@ -4367,113 +4334,83 @@ declare class Redis {
4367
4334
  /**
4368
4335
  * @see https://redis.io/commands/hdel
4369
4336
  */
4370
- hdel: (key: string, ...fields: string[]) => Promise<0 | 1>;
4337
+ hdel: (...args: CommandArgs<typeof HDelCommand>) => Promise<0 | 1>;
4371
4338
  /**
4372
4339
  * @see https://redis.io/commands/hexists
4373
4340
  */
4374
- hexists: (key: string, field: string) => Promise<number>;
4341
+ hexists: (...args: CommandArgs<typeof HExistsCommand>) => Promise<number>;
4375
4342
  /**
4376
4343
  * @see https://redis.io/commands/hexpire
4377
4344
  */
4378
- hexpire: (key: string, fields: string | number | (string | number)[], seconds: number, option?: ExpireOption | undefined) => Promise<(0 | 1 | 2 | -2)[]>;
4345
+ hexpire: (...args: CommandArgs<typeof HExpireCommand>) => Promise<(0 | 1 | 2 | -2)[]>;
4379
4346
  /**
4380
4347
  * @see https://redis.io/commands/hexpireat
4381
4348
  */
4382
- hexpireat: (key: string, fields: string | number | (string | number)[], timestamp: number, option?: ExpireOption | undefined) => Promise<(0 | 1 | 2 | -2)[]>;
4349
+ hexpireat: (...args: CommandArgs<typeof HExpireAtCommand>) => Promise<(0 | 1 | 2 | -2)[]>;
4383
4350
  /**
4384
4351
  * @see https://redis.io/commands/hexpiretime
4385
4352
  */
4386
- hexpiretime: (key: string, fields: string | number | (string | number)[]) => Promise<number[]>;
4353
+ hexpiretime: (...args: CommandArgs<typeof HExpireTimeCommand>) => Promise<number[]>;
4387
4354
  /**
4388
4355
  * @see https://redis.io/commands/httl
4389
4356
  */
4390
- httl: (key: string, fields: string | number | (string | number)[]) => Promise<number[]>;
4357
+ httl: (...args: CommandArgs<typeof HTtlCommand>) => Promise<number[]>;
4391
4358
  /**
4392
4359
  * @see https://redis.io/commands/hpexpire
4393
4360
  */
4394
- hpexpire: (key: string, fields: string | number | (string | number)[], milliseconds: number, option?: ExpireOption | undefined) => Promise<(0 | 1 | 2 | -2)[]>;
4361
+ hpexpire: (...args: CommandArgs<typeof HPExpireCommand>) => Promise<(0 | 1 | 2 | -2)[]>;
4395
4362
  /**
4396
4363
  * @see https://redis.io/commands/hpexpireat
4397
4364
  */
4398
- hpexpireat: (key: string, fields: string | number | (string | number)[], timestamp: number, option?: ExpireOption | undefined) => Promise<(0 | 1 | 2 | -2)[]>;
4365
+ hpexpireat: (...args: CommandArgs<typeof HPExpireAtCommand>) => Promise<(0 | 1 | 2 | -2)[]>;
4399
4366
  /**
4400
4367
  * @see https://redis.io/commands/hpexpiretime
4401
4368
  */
4402
- hpexpiretime: (key: string, fields: string | number | (string | number)[]) => Promise<number[]>;
4369
+ hpexpiretime: (...args: CommandArgs<typeof HPExpireTimeCommand>) => Promise<number[]>;
4403
4370
  /**
4404
4371
  * @see https://redis.io/commands/hpttl
4405
4372
  */
4406
- hpttl: (key: string, fields: string | number | (string | number)[]) => Promise<number[]>;
4373
+ hpttl: (...args: CommandArgs<typeof HPTtlCommand>) => Promise<number[]>;
4407
4374
  /**
4408
4375
  * @see https://redis.io/commands/hpersist
4409
4376
  */
4410
- hpersist: (key: string, fields: string | number | (string | number)[]) => Promise<(1 | -2 | -1)[]>;
4377
+ hpersist: (...args: CommandArgs<typeof HPersistCommand>) => Promise<(1 | -2 | -1)[]>;
4411
4378
  /**
4412
4379
  * @see https://redis.io/commands/hget
4413
4380
  */
4414
- hget: <TData>(key: string, field: string) => Promise<TData | null>;
4381
+ hget: <TData>(...args: CommandArgs<typeof HGetCommand>) => Promise<TData | null>;
4415
4382
  /**
4416
4383
  * @see https://redis.io/commands/hgetall
4417
4384
  */
4418
- hgetall: <TData extends Record<string, unknown>>(key: string) => Promise<TData | null>;
4385
+ hgetall: <TData extends Record<string, unknown>>(...args: CommandArgs<typeof HGetAllCommand>) => Promise<TData | null>;
4419
4386
  /**
4420
4387
  * @see https://redis.io/commands/hgetdel
4421
4388
  */
4422
- hgetdel: <TData extends Record<string, unknown>>(key: string, ...fields: (string | number)[]) => Promise<TData | null>;
4389
+ hgetdel: <TData extends Record<string, unknown>>(...args: CommandArgs<typeof HGetDelCommand>) => Promise<TData | null>;
4423
4390
  /**
4424
4391
  * @see https://redis.io/commands/hgetex
4425
4392
  */
4426
- hgetex: <TData extends Record<string, unknown>>(key: string, opts: {
4427
- ex: number;
4428
- px?: never;
4429
- exat?: never;
4430
- pxat?: never;
4431
- persist?: never;
4432
- } | {
4433
- ex?: never;
4434
- px: number;
4435
- exat?: never;
4436
- pxat?: never;
4437
- persist?: never;
4438
- } | {
4439
- ex?: never;
4440
- px?: never;
4441
- exat: number;
4442
- pxat?: never;
4443
- persist?: never;
4444
- } | {
4445
- ex?: never;
4446
- px?: never;
4447
- exat?: never;
4448
- pxat: number;
4449
- persist?: never;
4450
- } | {
4451
- ex?: never;
4452
- px?: never;
4453
- exat?: never;
4454
- pxat?: never;
4455
- persist: true;
4456
- }, ...fields: (string | number)[]) => Promise<TData | null>;
4393
+ hgetex: <TData extends Record<string, unknown>>(...args: CommandArgs<typeof HGetExCommand>) => Promise<TData | null>;
4457
4394
  /**
4458
4395
  * @see https://redis.io/commands/hincrby
4459
4396
  */
4460
- hincrby: (key: string, field: string, increment: number) => Promise<number>;
4397
+ hincrby: (...args: CommandArgs<typeof HIncrByCommand>) => Promise<number>;
4461
4398
  /**
4462
4399
  * @see https://redis.io/commands/hincrbyfloat
4463
4400
  */
4464
- hincrbyfloat: (key: string, field: string, increment: number) => Promise<number>;
4401
+ hincrbyfloat: (...args: CommandArgs<typeof HIncrByFloatCommand>) => Promise<number>;
4465
4402
  /**
4466
4403
  * @see https://redis.io/commands/hkeys
4467
4404
  */
4468
- hkeys: (key: string) => Promise<string[]>;
4405
+ hkeys: (...args: CommandArgs<typeof HKeysCommand>) => Promise<string[]>;
4469
4406
  /**
4470
4407
  * @see https://redis.io/commands/hlen
4471
4408
  */
4472
- hlen: (key: string) => Promise<number>;
4409
+ hlen: (...args: CommandArgs<typeof HLenCommand>) => Promise<number>;
4473
4410
  /**
4474
4411
  * @see https://redis.io/commands/hmget
4475
4412
  */
4476
- hmget: <TData extends Record<string, unknown>>(key: string, ...fields: string[]) => Promise<TData | null>;
4413
+ hmget: <TData extends Record<string, unknown>>(...args: CommandArgs<typeof HMGetCommand>) => Promise<TData | null>;
4477
4414
  /**
4478
4415
  * @see https://redis.io/commands/hmset
4479
4416
  */
@@ -4489,7 +4426,7 @@ declare class Redis {
4489
4426
  /**
4490
4427
  * @see https://redis.io/commands/hscan
4491
4428
  */
4492
- hscan: (key: string, cursor: string | number, cmdOpts?: ScanCommandOptions | undefined) => Promise<[string, (string | number)[]]>;
4429
+ hscan: (...args: CommandArgs<typeof HScanCommand>) => Promise<[string, (string | number)[]]>;
4493
4430
  /**
4494
4431
  * @see https://redis.io/commands/hset
4495
4432
  */
@@ -4497,46 +4434,7 @@ declare class Redis {
4497
4434
  /**
4498
4435
  * @see https://redis.io/commands/hsetex
4499
4436
  */
4500
- hsetex: <TData>(key: string, opts: {
4501
- conditional?: "FNX" | "fnx" | "FXX" | "fxx";
4502
- expiration?: {
4503
- ex: number;
4504
- px?: never;
4505
- exat?: never;
4506
- pxat?: never;
4507
- keepttl?: never;
4508
- } | {
4509
- ex?: never;
4510
- px: number;
4511
- exat?: never;
4512
- pxat?: never;
4513
- keepttl?: never;
4514
- } | {
4515
- ex?: never;
4516
- px?: never;
4517
- exat: number;
4518
- pxat?: never;
4519
- keepttl?: never;
4520
- } | {
4521
- ex?: never;
4522
- px?: never;
4523
- exat?: never;
4524
- pxat: number;
4525
- keepttl?: never;
4526
- } | {
4527
- ex?: never;
4528
- px?: never;
4529
- exat?: never;
4530
- pxat?: never;
4531
- keepttl: true;
4532
- } | {
4533
- ex?: never;
4534
- px?: never;
4535
- exat?: never;
4536
- pxat?: never;
4537
- keepttl?: never;
4538
- };
4539
- }, kv: Record<string, TData>) => Promise<number>;
4437
+ hsetex: <TData>(...args: CommandArgs<typeof HSetExCommand<TData>>) => Promise<number>;
4540
4438
  /**
4541
4439
  * @see https://redis.io/commands/hsetnx
4542
4440
  */
@@ -4544,31 +4442,31 @@ declare class Redis {
4544
4442
  /**
4545
4443
  * @see https://redis.io/commands/hstrlen
4546
4444
  */
4547
- hstrlen: (key: string, field: string) => Promise<number>;
4445
+ hstrlen: (...args: CommandArgs<typeof HStrLenCommand>) => Promise<number>;
4548
4446
  /**
4549
4447
  * @see https://redis.io/commands/hvals
4550
4448
  */
4551
- hvals: (key: string) => Promise<any>;
4449
+ hvals: (...args: CommandArgs<typeof HValsCommand>) => Promise<any>;
4552
4450
  /**
4553
4451
  * @see https://redis.io/commands/incr
4554
4452
  */
4555
- incr: (key: string) => Promise<number>;
4453
+ incr: (...args: CommandArgs<typeof IncrCommand>) => Promise<number>;
4556
4454
  /**
4557
4455
  * @see https://redis.io/commands/incrby
4558
4456
  */
4559
- incrby: (key: string, value: number) => Promise<number>;
4457
+ incrby: (...args: CommandArgs<typeof IncrByCommand>) => Promise<number>;
4560
4458
  /**
4561
4459
  * @see https://redis.io/commands/incrbyfloat
4562
4460
  */
4563
- incrbyfloat: (key: string, value: number) => Promise<number>;
4461
+ incrbyfloat: (...args: CommandArgs<typeof IncrByFloatCommand>) => Promise<number>;
4564
4462
  /**
4565
4463
  * @see https://redis.io/commands/keys
4566
4464
  */
4567
- keys: (pattern: string) => Promise<string[]>;
4465
+ keys: (...args: CommandArgs<typeof KeysCommand>) => Promise<string[]>;
4568
4466
  /**
4569
4467
  * @see https://redis.io/commands/lindex
4570
4468
  */
4571
- lindex: (key: string, index: number) => Promise<any>;
4469
+ lindex: (...args: CommandArgs<typeof LIndexCommand>) => Promise<any>;
4572
4470
  /**
4573
4471
  * @see https://redis.io/commands/linsert
4574
4472
  */
@@ -4576,27 +4474,23 @@ declare class Redis {
4576
4474
  /**
4577
4475
  * @see https://redis.io/commands/llen
4578
4476
  */
4579
- llen: (key: string) => Promise<number>;
4477
+ llen: (...args: CommandArgs<typeof LLenCommand>) => Promise<number>;
4580
4478
  /**
4581
4479
  * @see https://redis.io/commands/lmove
4582
4480
  */
4583
- lmove: <TData = string>(source: string, destination: string, whereFrom: "left" | "right", whereTo: "left" | "right") => Promise<TData>;
4481
+ lmove: <TData = string>(...args: CommandArgs<typeof LMoveCommand>) => Promise<TData>;
4584
4482
  /**
4585
4483
  * @see https://redis.io/commands/lpop
4586
4484
  */
4587
- lpop: <TData>(key: string, count?: number | undefined) => Promise<TData | null>;
4485
+ lpop: <TData>(...args: CommandArgs<typeof LPopCommand>) => Promise<TData | null>;
4588
4486
  /**
4589
4487
  * @see https://redis.io/commands/lmpop
4590
4488
  */
4591
- lmpop: <TData>(numkeys: number, keys: string[], args_2: "LEFT" | "RIGHT", count?: number | undefined) => Promise<[string, TData[]] | null>;
4489
+ lmpop: <TData>(...args: CommandArgs<typeof LmPopCommand>) => Promise<[string, TData[]] | null>;
4592
4490
  /**
4593
4491
  * @see https://redis.io/commands/lpos
4594
4492
  */
4595
- lpos: <TData = number>(key: string, element: unknown, opts?: {
4596
- rank?: number;
4597
- count?: number;
4598
- maxLen?: number;
4599
- } | undefined) => Promise<TData>;
4493
+ lpos: <TData = number>(...args: CommandArgs<typeof LPosCommand>) => Promise<TData>;
4600
4494
  /**
4601
4495
  * @see https://redis.io/commands/lpush
4602
4496
  */
@@ -4608,7 +4502,7 @@ declare class Redis {
4608
4502
  /**
4609
4503
  * @see https://redis.io/commands/lrange
4610
4504
  */
4611
- lrange: <TResult = string>(key: string, start: number, end: number) => Promise<TResult[]>;
4505
+ lrange: <TResult = string>(...args: CommandArgs<typeof LRangeCommand>) => Promise<TResult[]>;
4612
4506
  /**
4613
4507
  * @see https://redis.io/commands/lrem
4614
4508
  */
@@ -4620,7 +4514,7 @@ declare class Redis {
4620
4514
  /**
4621
4515
  * @see https://redis.io/commands/ltrim
4622
4516
  */
4623
- ltrim: (key: string, start: number, end: number) => Promise<"OK">;
4517
+ ltrim: (...args: CommandArgs<typeof LTrimCommand>) => Promise<"OK">;
4624
4518
  /**
4625
4519
  * @see https://redis.io/commands/mget
4626
4520
  */
@@ -4636,27 +4530,27 @@ declare class Redis {
4636
4530
  /**
4637
4531
  * @see https://redis.io/commands/persist
4638
4532
  */
4639
- persist: (key: string) => Promise<0 | 1>;
4533
+ persist: (...args: CommandArgs<typeof PersistCommand>) => Promise<0 | 1>;
4640
4534
  /**
4641
4535
  * @see https://redis.io/commands/pexpire
4642
4536
  */
4643
- pexpire: (key: string, milliseconds: number, option?: ExpireOption | undefined) => Promise<0 | 1>;
4537
+ pexpire: (...args: CommandArgs<typeof PExpireCommand>) => Promise<0 | 1>;
4644
4538
  /**
4645
4539
  * @see https://redis.io/commands/pexpireat
4646
4540
  */
4647
- pexpireat: (key: string, unix: number, option?: ExpireOption | undefined) => Promise<0 | 1>;
4541
+ pexpireat: (...args: CommandArgs<typeof PExpireAtCommand>) => Promise<0 | 1>;
4648
4542
  /**
4649
4543
  * @see https://redis.io/commands/pfadd
4650
4544
  */
4651
- pfadd: (args_0: string, ...args_1: unknown[]) => Promise<number>;
4545
+ pfadd: (...args: CommandArgs<typeof PfAddCommand>) => Promise<number>;
4652
4546
  /**
4653
4547
  * @see https://redis.io/commands/pfcount
4654
4548
  */
4655
- pfcount: (args_0: string, ...args_1: string[]) => Promise<number>;
4549
+ pfcount: (...args: CommandArgs<typeof PfCountCommand>) => Promise<number>;
4656
4550
  /**
4657
4551
  * @see https://redis.io/commands/pfmerge
4658
4552
  */
4659
- pfmerge: (destination_key: string, ...args_1: string[]) => Promise<"OK">;
4553
+ pfmerge: (...args: CommandArgs<typeof PfMergeCommand>) => Promise<"OK">;
4660
4554
  /**
4661
4555
  * @see https://redis.io/commands/ping
4662
4556
  */
@@ -4672,11 +4566,11 @@ declare class Redis {
4672
4566
  /**
4673
4567
  * @see https://redis.io/commands/pttl
4674
4568
  */
4675
- pttl: (key: string) => Promise<number>;
4569
+ pttl: (...args: CommandArgs<typeof PTtlCommand>) => Promise<number>;
4676
4570
  /**
4677
4571
  * @see https://redis.io/commands/publish
4678
4572
  */
4679
- publish: (channel: string, message: unknown) => Promise<number>;
4573
+ publish: (...args: CommandArgs<typeof PublishCommand>) => Promise<number>;
4680
4574
  /**
4681
4575
  * @see https://redis.io/commands/randomkey
4682
4576
  */
@@ -4684,15 +4578,15 @@ declare class Redis {
4684
4578
  /**
4685
4579
  * @see https://redis.io/commands/rename
4686
4580
  */
4687
- rename: (source: string, destination: string) => Promise<"OK">;
4581
+ rename: (...args: CommandArgs<typeof RenameCommand>) => Promise<"OK">;
4688
4582
  /**
4689
4583
  * @see https://redis.io/commands/renamenx
4690
4584
  */
4691
- renamenx: (source: string, destination: string) => Promise<0 | 1>;
4585
+ renamenx: (...args: CommandArgs<typeof RenameNXCommand>) => Promise<0 | 1>;
4692
4586
  /**
4693
4587
  * @see https://redis.io/commands/rpop
4694
4588
  */
4695
- rpop: <TData = string>(key: string, count?: number | undefined) => Promise<TData | null>;
4589
+ rpop: <TData = string>(...args: CommandArgs<typeof RPopCommand>) => Promise<TData | null>;
4696
4590
  /**
4697
4591
  * @see https://redis.io/commands/rpush
4698
4592
  */
@@ -4715,7 +4609,7 @@ declare class Redis {
4715
4609
  /**
4716
4610
  * @see https://redis.io/commands/scard
4717
4611
  */
4718
- scard: (key: string) => Promise<number>;
4612
+ scard: (...args: CommandArgs<typeof SCardCommand>) => Promise<number>;
4719
4613
  /**
4720
4614
  * @see https://redis.io/commands/script-exists
4721
4615
  */
@@ -4723,19 +4617,19 @@ declare class Redis {
4723
4617
  /**
4724
4618
  * @see https://redis.io/commands/script-flush
4725
4619
  */
4726
- scriptFlush: (opts?: ScriptFlushCommandOptions | undefined) => Promise<"OK">;
4620
+ scriptFlush: (...args: CommandArgs<typeof ScriptFlushCommand>) => Promise<"OK">;
4727
4621
  /**
4728
4622
  * @see https://redis.io/commands/script-load
4729
4623
  */
4730
- scriptLoad: (script: string) => Promise<string>;
4624
+ scriptLoad: (...args: CommandArgs<typeof ScriptLoadCommand>) => Promise<string>;
4731
4625
  /**
4732
4626
  * @see https://redis.io/commands/sdiff
4733
4627
  */
4734
- sdiff: (key: string, ...keys: string[]) => Promise<unknown[]>;
4628
+ sdiff: (...args: CommandArgs<typeof SDiffCommand>) => Promise<unknown[]>;
4735
4629
  /**
4736
4630
  * @see https://redis.io/commands/sdiffstore
4737
4631
  */
4738
- sdiffstore: (destination: string, ...keys: string[]) => Promise<number>;
4632
+ sdiffstore: (...args: CommandArgs<typeof SDiffStoreCommand>) => Promise<number>;
4739
4633
  /**
4740
4634
  * @see https://redis.io/commands/set
4741
4635
  */
@@ -4743,7 +4637,7 @@ declare class Redis {
4743
4637
  /**
4744
4638
  * @see https://redis.io/commands/setbit
4745
4639
  */
4746
- setbit: (key: string, offset: number, value: 0 | 1) => Promise<0 | 1>;
4640
+ setbit: (...args: CommandArgs<typeof SetBitCommand>) => Promise<0 | 1>;
4747
4641
  /**
4748
4642
  * @see https://redis.io/commands/setex
4749
4643
  */
@@ -4755,15 +4649,19 @@ declare class Redis {
4755
4649
  /**
4756
4650
  * @see https://redis.io/commands/setrange
4757
4651
  */
4758
- setrange: (key: string, offset: number, value: string) => Promise<number>;
4652
+ setrange: (...args: CommandArgs<typeof SetRangeCommand>) => Promise<number>;
4759
4653
  /**
4760
4654
  * @see https://redis.io/commands/sinter
4761
4655
  */
4762
- sinter: (key: string, ...keys: string[]) => Promise<string[]>;
4656
+ sinter: (...args: CommandArgs<typeof SInterCommand>) => Promise<string[]>;
4657
+ /**
4658
+ * @see https://redis.io/commands/sintercard
4659
+ */
4660
+ sintercard: (...args: CommandArgs<typeof SInterCardCommand>) => Promise<number>;
4763
4661
  /**
4764
4662
  * @see https://redis.io/commands/sinterstore
4765
4663
  */
4766
- sinterstore: (destination: string, key: string, ...keys: string[]) => Promise<number>;
4664
+ sinterstore: (...args: CommandArgs<typeof SInterStoreCommand>) => Promise<number>;
4767
4665
  /**
4768
4666
  * @see https://redis.io/commands/sismember
4769
4667
  */
@@ -4775,7 +4673,7 @@ declare class Redis {
4775
4673
  /**
4776
4674
  * @see https://redis.io/commands/smembers
4777
4675
  */
4778
- smembers: <TData extends unknown[] = string[]>(key: string) => Promise<TData>;
4676
+ smembers: <TData extends unknown[] = string[]>(...args: CommandArgs<typeof SMembersCommand>) => Promise<TData>;
4779
4677
  /**
4780
4678
  * @see https://redis.io/commands/smove
4781
4679
  */
@@ -4783,11 +4681,11 @@ declare class Redis {
4783
4681
  /**
4784
4682
  * @see https://redis.io/commands/spop
4785
4683
  */
4786
- spop: <TData>(key: string, count?: number | undefined) => Promise<TData | null>;
4684
+ spop: <TData>(...args: CommandArgs<typeof SPopCommand>) => Promise<TData | null>;
4787
4685
  /**
4788
4686
  * @see https://redis.io/commands/srandmember
4789
4687
  */
4790
- srandmember: <TData>(key: string, count?: number | undefined) => Promise<TData | null>;
4688
+ srandmember: <TData>(...args: CommandArgs<typeof SRandMemberCommand>) => Promise<TData | null>;
4791
4689
  /**
4792
4690
  * @see https://redis.io/commands/srem
4793
4691
  */
@@ -4795,11 +4693,11 @@ declare class Redis {
4795
4693
  /**
4796
4694
  * @see https://redis.io/commands/sscan
4797
4695
  */
4798
- sscan: (key: string, cursor: string | number, opts?: ScanCommandOptions | undefined) => Promise<[string, (string | number)[]]>;
4696
+ sscan: (...args: CommandArgs<typeof SScanCommand>) => Promise<[string, (string | number)[]]>;
4799
4697
  /**
4800
4698
  * @see https://redis.io/commands/strlen
4801
4699
  */
4802
- strlen: (key: string) => Promise<number>;
4700
+ strlen: (...args: CommandArgs<typeof StrLenCommand>) => Promise<number>;
4803
4701
  /**
4804
4702
  * @see https://redis.io/commands/subscribe
4805
4703
  */
@@ -4807,11 +4705,11 @@ declare class Redis {
4807
4705
  /**
4808
4706
  * @see https://redis.io/commands/sunion
4809
4707
  */
4810
- sunion: (key: string, ...keys: string[]) => Promise<unknown[]>;
4708
+ sunion: (...args: CommandArgs<typeof SUnionCommand>) => Promise<unknown[]>;
4811
4709
  /**
4812
4710
  * @see https://redis.io/commands/sunionstore
4813
4711
  */
4814
- sunionstore: (destination: string, key: string, ...keys: string[]) => Promise<number>;
4712
+ sunionstore: (...args: CommandArgs<typeof SUnionStoreCommand>) => Promise<number>;
4815
4713
  /**
4816
4714
  * @see https://redis.io/commands/time
4817
4715
  */
@@ -4823,11 +4721,11 @@ declare class Redis {
4823
4721
  /**
4824
4722
  * @see https://redis.io/commands/ttl
4825
4723
  */
4826
- ttl: (key: string) => Promise<number>;
4724
+ ttl: (...args: CommandArgs<typeof TtlCommand>) => Promise<number>;
4827
4725
  /**
4828
4726
  * @see https://redis.io/commands/type
4829
4727
  */
4830
- type: (key: string) => Promise<Type>;
4728
+ type: (...args: CommandArgs<typeof TypeCommand>) => Promise<Type>;
4831
4729
  /**
4832
4730
  * @see https://redis.io/commands/unlink
4833
4731
  */
@@ -4835,68 +4733,27 @@ declare class Redis {
4835
4733
  /**
4836
4734
  * @see https://redis.io/commands/xadd
4837
4735
  */
4838
- xadd: (key: string, id: string, entries: Record<string, unknown>, opts?: {
4839
- nomkStream?: boolean;
4840
- trim?: ({
4841
- type: "MAXLEN" | "maxlen";
4842
- threshold: number;
4843
- } | {
4844
- type: "MINID" | "minid";
4845
- threshold: string;
4846
- }) & ({
4847
- comparison: "~";
4848
- limit?: number;
4849
- } | {
4850
- comparison: "=";
4851
- limit?: never;
4852
- });
4853
- } | undefined) => Promise<string>;
4736
+ xadd: (...args: CommandArgs<typeof XAddCommand>) => Promise<string>;
4854
4737
  /**
4855
4738
  * @see https://redis.io/commands/xack
4856
4739
  */
4857
- xack: (key: string, group: string, id: string | string[]) => Promise<number>;
4740
+ xack: (...args: CommandArgs<typeof XAckCommand>) => Promise<number>;
4858
4741
  /**
4859
4742
  * @see https://redis.io/commands/xackdel
4860
4743
  */
4861
- xackdel: (key: string, group: string, opts: "KEEPREF" | "keepref" | "DELREF" | "delref" | "ACKED" | "acked", ...ids: string[]) => Promise<number[]>;
4744
+ xackdel: (...args: CommandArgs<typeof XAckDelCommand>) => Promise<number[]>;
4862
4745
  /**
4863
4746
  * @see https://redis.io/commands/xdel
4864
4747
  */
4865
- xdel: (key: string, ids: string | string[]) => Promise<number>;
4748
+ xdel: (...args: CommandArgs<typeof XDelCommand>) => Promise<number>;
4866
4749
  /**
4867
4750
  * @see https://redis.io/commands/xdelex
4868
4751
  */
4869
- xdelex: (key: string, opts?: ("KEEPREF" | "keepref" | "DELREF" | "delref" | "ACKED" | "acked") | undefined, ...ids: string[]) => Promise<number[]>;
4752
+ xdelex: (...args: CommandArgs<typeof XDelExCommand>) => Promise<number[]>;
4870
4753
  /**
4871
4754
  * @see https://redis.io/commands/xgroup
4872
4755
  */
4873
- xgroup: (key: string, opts: {
4874
- type: "CREATE";
4875
- group: string;
4876
- id: `$` | string;
4877
- options?: {
4878
- MKSTREAM?: boolean;
4879
- ENTRIESREAD?: number;
4880
- };
4881
- } | {
4882
- type: "CREATECONSUMER";
4883
- group: string;
4884
- consumer: string;
4885
- } | {
4886
- type: "DELCONSUMER";
4887
- group: string;
4888
- consumer: string;
4889
- } | {
4890
- type: "DESTROY";
4891
- group: string;
4892
- } | {
4893
- type: "SETID";
4894
- group: string;
4895
- id: `$` | string;
4896
- options?: {
4897
- ENTRIESREAD?: number;
4898
- };
4899
- }) => Promise<never>;
4756
+ xgroup: (...args: CommandArgs<typeof XGroupCommand>) => Promise<never>;
4900
4757
  /**
4901
4758
  * @see https://redis.io/commands/xread
4902
4759
  */
@@ -4908,58 +4765,35 @@ declare class Redis {
4908
4765
  /**
4909
4766
  * @see https://redis.io/commands/xinfo
4910
4767
  */
4911
- xinfo: (key: string, options: {
4912
- type: "CONSUMERS";
4913
- group: string;
4914
- } | {
4915
- type: "GROUPS";
4916
- }) => Promise<unknown[]>;
4768
+ xinfo: (...args: CommandArgs<typeof XInfoCommand>) => Promise<unknown[]>;
4917
4769
  /**
4918
4770
  * @see https://redis.io/commands/xlen
4919
4771
  */
4920
- xlen: (key: string) => Promise<number>;
4772
+ xlen: (...args: CommandArgs<typeof XLenCommand>) => Promise<number>;
4921
4773
  /**
4922
4774
  * @see https://redis.io/commands/xpending
4923
4775
  */
4924
- xpending: (key: string, group: string, start: string, end: string, count: number, options?: {
4925
- idleTime?: number;
4926
- consumer?: string | string[];
4927
- } | undefined) => Promise<unknown[]>;
4776
+ xpending: (...args: CommandArgs<typeof XPendingCommand>) => Promise<unknown[]>;
4928
4777
  /**
4929
4778
  * @see https://redis.io/commands/xclaim
4930
4779
  */
4931
- xclaim: (key: string, group: string, consumer: string, minIdleTime: number, id: string | string[], options?: {
4932
- idleMS?: number;
4933
- timeMS?: number;
4934
- retryCount?: number;
4935
- force?: boolean;
4936
- justId?: boolean;
4937
- lastId?: number;
4938
- } | undefined) => Promise<unknown[]>;
4780
+ xclaim: (...args: CommandArgs<typeof XClaimCommand>) => Promise<unknown[]>;
4939
4781
  /**
4940
4782
  * @see https://redis.io/commands/xautoclaim
4941
4783
  */
4942
- xautoclaim: (key: string, group: string, consumer: string, minIdleTime: number, start: string, options?: {
4943
- count?: number;
4944
- justId?: boolean;
4945
- } | undefined) => Promise<unknown[]>;
4784
+ xautoclaim: (...args: CommandArgs<typeof XAutoClaim>) => Promise<unknown[]>;
4946
4785
  /**
4947
4786
  * @see https://redis.io/commands/xtrim
4948
4787
  */
4949
- xtrim: (key: string, options: {
4950
- strategy: "MAXLEN" | "MINID";
4951
- exactness?: "~" | "=";
4952
- threshold: number | string;
4953
- limit?: number;
4954
- }) => Promise<number>;
4788
+ xtrim: (...args: CommandArgs<typeof XTrimCommand>) => Promise<number>;
4955
4789
  /**
4956
4790
  * @see https://redis.io/commands/xrange
4957
4791
  */
4958
- xrange: (key: string, start: string, end: string, count?: number | undefined) => Promise<Record<string, Record<string, unknown>>>;
4792
+ xrange: <TData extends Record<string, unknown>>(...args: CommandArgs<typeof XRangeCommand>) => Promise<Record<string, TData>>;
4959
4793
  /**
4960
4794
  * @see https://redis.io/commands/xrevrange
4961
4795
  */
4962
- xrevrange: (key: string, end: string, start: string, count?: number | undefined) => Promise<Record<string, Record<string, unknown>>>;
4796
+ xrevrange: <TData extends Record<string, unknown>>(...args: CommandArgs<typeof XRevRangeCommand>) => Promise<Record<string, TData>>;
4963
4797
  /**
4964
4798
  * @see https://redis.io/commands/zadd
4965
4799
  */
@@ -4967,15 +4801,15 @@ declare class Redis {
4967
4801
  /**
4968
4802
  * @see https://redis.io/commands/zcard
4969
4803
  */
4970
- zcard: (key: string) => Promise<number>;
4804
+ zcard: (...args: CommandArgs<typeof ZCardCommand>) => Promise<number>;
4971
4805
  /**
4972
4806
  * @see https://redis.io/commands/zcount
4973
4807
  */
4974
- zcount: (key: string, min: string | number, max: string | number) => Promise<number>;
4808
+ zcount: (...args: CommandArgs<typeof ZCountCommand>) => Promise<number>;
4975
4809
  /**
4976
4810
  * @see https://redis.io/commands/zdiffstore
4977
4811
  */
4978
- zdiffstore: (destination: string, numkeys: number, ...keys: string[]) => Promise<number>;
4812
+ zdiffstore: (...args: CommandArgs<typeof ZDiffStoreCommand>) => Promise<number>;
4979
4813
  /**
4980
4814
  * @see https://redis.io/commands/zincrby
4981
4815
  */
@@ -4983,23 +4817,23 @@ declare class Redis {
4983
4817
  /**
4984
4818
  * @see https://redis.io/commands/zinterstore
4985
4819
  */
4986
- zinterstore: (destination: string, numKeys: number, keys: string[], opts?: ZInterStoreCommandOptions | undefined) => Promise<number>;
4820
+ zinterstore: (...args: CommandArgs<typeof ZInterStoreCommand>) => Promise<number>;
4987
4821
  /**
4988
4822
  * @see https://redis.io/commands/zlexcount
4989
4823
  */
4990
- zlexcount: (key: string, min: string, max: string) => Promise<number>;
4824
+ zlexcount: (...args: CommandArgs<typeof ZLexCountCommand>) => Promise<number>;
4991
4825
  /**
4992
4826
  * @see https://redis.io/commands/zmscore
4993
4827
  */
4994
- zmscore: (key: string, members: unknown[]) => Promise<number[] | null>;
4828
+ zmscore: (...args: CommandArgs<typeof ZMScoreCommand>) => Promise<number[] | null>;
4995
4829
  /**
4996
4830
  * @see https://redis.io/commands/zpopmax
4997
4831
  */
4998
- zpopmax: <TData>(key: string, count?: number | undefined) => Promise<TData[]>;
4832
+ zpopmax: <TData>(...args: CommandArgs<typeof ZPopMaxCommand>) => Promise<TData[]>;
4999
4833
  /**
5000
4834
  * @see https://redis.io/commands/zpopmin
5001
4835
  */
5002
- zpopmin: <TData>(key: string, count?: number | undefined) => Promise<TData[]>;
4836
+ zpopmin: <TData>(...args: CommandArgs<typeof ZPopMinCommand>) => Promise<TData[]>;
5003
4837
  /**
5004
4838
  * @see https://redis.io/commands/zrange
5005
4839
  */
@@ -5019,15 +4853,15 @@ declare class Redis {
5019
4853
  /**
5020
4854
  * @see https://redis.io/commands/zremrangebylex
5021
4855
  */
5022
- zremrangebylex: (key: string, min: string, max: string) => Promise<number>;
4856
+ zremrangebylex: (...args: CommandArgs<typeof ZRemRangeByLexCommand>) => Promise<number>;
5023
4857
  /**
5024
4858
  * @see https://redis.io/commands/zremrangebyrank
5025
4859
  */
5026
- zremrangebyrank: (key: string, start: number, stop: number) => Promise<number>;
4860
+ zremrangebyrank: (...args: CommandArgs<typeof ZRemRangeByRankCommand>) => Promise<number>;
5027
4861
  /**
5028
4862
  * @see https://redis.io/commands/zremrangebyscore
5029
4863
  */
5030
- zremrangebyscore: (key: string, min: number | `(${number}` | "-inf" | "+inf", max: number | `(${number}` | "-inf" | "+inf") => Promise<number>;
4864
+ zremrangebyscore: (...args: CommandArgs<typeof ZRemRangeByScoreCommand>) => Promise<number>;
5031
4865
  /**
5032
4866
  * @see https://redis.io/commands/zrevrank
5033
4867
  */
@@ -5035,7 +4869,7 @@ declare class Redis {
5035
4869
  /**
5036
4870
  * @see https://redis.io/commands/zscan
5037
4871
  */
5038
- zscan: (key: string, cursor: string | number, opts?: ScanCommandOptions | undefined) => Promise<[string, (string | number)[]]>;
4872
+ zscan: (...args: CommandArgs<typeof ZScanCommand>) => Promise<[string, (string | number)[]]>;
5039
4873
  /**
5040
4874
  * @see https://redis.io/commands/zscore
5041
4875
  */
@@ -5043,11 +4877,11 @@ declare class Redis {
5043
4877
  /**
5044
4878
  * @see https://redis.io/commands/zunion
5045
4879
  */
5046
- zunion: (numKeys: number, keys: string[], opts?: ZUnionCommandOptions | undefined) => Promise<any>;
4880
+ zunion: (...args: CommandArgs<typeof ZUnionCommand>) => Promise<any>;
5047
4881
  /**
5048
4882
  * @see https://redis.io/commands/zunionstore
5049
4883
  */
5050
- zunionstore: (destination: string, numKeys: number, keys: string[], opts?: ZUnionStoreCommandOptions | undefined) => Promise<number>;
4884
+ zunionstore: (...args: CommandArgs<typeof ZUnionStoreCommand>) => Promise<number>;
5051
4885
  }
5052
4886
 
5053
4887
  type UpstashErrorOptions = Pick<NonNullable<ConstructorParameters<typeof Error>[1]>, "cause">;
@@ -5074,18 +4908,4 @@ declare namespace error {
5074
4908
  export { error_UpstashError as UpstashError, error_UpstashJSONParseError as UpstashJSONParseError, error_UrlError as UrlError };
5075
4909
  }
5076
4910
 
5077
- /**
5078
- * @see https://redis.io/commands/zdiffstore
5079
- */
5080
- declare class ZDiffStoreCommand extends Command<number, number> {
5081
- constructor(cmd: [destination: string, numkeys: number, ...keys: string[]], opts?: CommandOptions<number, number>);
5082
- }
5083
-
5084
- /**
5085
- * @see https://redis.io/commands/zmscore
5086
- */
5087
- declare class ZMScoreCommand<TData> extends Command<string[] | null, number[] | null> {
5088
- constructor(cmd: [key: string, members: TData[]], opts?: CommandOptions<string[] | null, number[] | null>);
5089
- }
5090
-
5091
- export { HPExpireCommand as $, AppendCommand as A, BitCountCommand as B, ClientSetInfoCommand as C, DBSizeCommand as D, EchoCommand as E, FlushAllCommand as F, GeoAddCommand as G, type HttpClientConfig as H, GeoPosCommand as I, GeoSearchCommand as J, GeoSearchStoreCommand as K, GetCommand as L, GetBitCommand as M, type NumericField as N, GetDelCommand as O, Pipeline as P, GetExCommand as Q, type RedisOptions as R, GetRangeCommand as S, GetSetCommand as T, type UpstashRequest as U, HDelCommand as V, HExistsCommand as W, HExpireCommand as X, HExpireAtCommand as Y, HExpireTimeCommand as Z, HTtlCommand as _, type NestedIndexSchema as a, PExpireAtCommand as a$, HPExpireAtCommand as a0, HPExpireTimeCommand as a1, HPTtlCommand as a2, HPersistCommand as a3, HGetCommand as a4, HGetAllCommand as a5, HGetDelCommand as a6, HGetExCommand as a7, HIncrByCommand as a8, HIncrByFloatCommand as a9, JsonNumIncrByCommand as aA, JsonNumMultByCommand as aB, JsonObjKeysCommand as aC, JsonObjLenCommand as aD, JsonRespCommand as aE, JsonSetCommand as aF, JsonStrAppendCommand as aG, JsonStrLenCommand as aH, JsonToggleCommand as aI, JsonTypeCommand as aJ, KeysCommand as aK, LIndexCommand as aL, LInsertCommand as aM, LLenCommand as aN, LMoveCommand as aO, LPopCommand as aP, LPushCommand as aQ, LPushXCommand as aR, LRangeCommand as aS, LRemCommand as aT, LSetCommand as aU, LTrimCommand as aV, MGetCommand as aW, MSetCommand as aX, MSetNXCommand as aY, PersistCommand as aZ, PExpireCommand as a_, HKeysCommand as aa, HLenCommand as ab, HMGetCommand as ac, HMSetCommand as ad, HRandFieldCommand as ae, HScanCommand as af, HSetCommand as ag, HSetExCommand as ah, HSetNXCommand as ai, HStrLenCommand as aj, HValsCommand as ak, IncrCommand as al, IncrByCommand as am, IncrByFloatCommand as an, JsonArrAppendCommand as ao, JsonArrIndexCommand as ap, JsonArrInsertCommand as aq, JsonArrLenCommand as ar, JsonArrPopCommand as as, JsonArrTrimCommand as at, JsonClearCommand as au, JsonDelCommand as av, JsonForgetCommand as aw, JsonGetCommand as ax, JsonMergeCommand as ay, JsonMGetCommand as az, type RequesterConfig as b, ZRankCommand as b$, PingCommand as b0, PSetEXCommand as b1, PTtlCommand as b2, PublishCommand as b3, RandomKeyCommand as b4, RenameCommand as b5, RenameNXCommand as b6, RPopCommand as b7, RPushCommand as b8, RPushXCommand as b9, SUnionCommand as bA, SUnionStoreCommand as bB, TimeCommand as bC, TouchCommand as bD, TtlCommand as bE, type Type as bF, TypeCommand as bG, UnlinkCommand as bH, XAddCommand as bI, XAckDelCommand as bJ, XDelExCommand as bK, XRangeCommand as bL, type ScoreMember as bM, type ZAddCommandOptions as bN, ZAddCommand as bO, ZCardCommand as bP, ZCountCommand as bQ, ZDiffStoreCommand as bR, ZIncrByCommand as bS, ZInterStoreCommand as bT, type ZInterStoreCommandOptions as bU, ZLexCountCommand as bV, ZMScoreCommand as bW, ZPopMaxCommand as bX, ZPopMinCommand as bY, ZRangeCommand as bZ, type ZRangeCommandOptions as b_, SAddCommand as ba, ScanCommand as bb, type ScanCommandOptions as bc, SCardCommand as bd, ScriptExistsCommand as be, ScriptFlushCommand as bf, ScriptLoadCommand as bg, SDiffCommand as bh, SDiffStoreCommand as bi, SetCommand as bj, type SetCommandOptions as bk, SetBitCommand as bl, SetExCommand as bm, SetNxCommand as bn, SetRangeCommand as bo, SInterCommand as bp, SInterStoreCommand as bq, SIsMemberCommand as br, SMembersCommand as bs, SMIsMemberCommand as bt, SMoveCommand as bu, SPopCommand as bv, SRandMemberCommand as bw, SRemCommand as bx, SScanCommand as by, StrLenCommand as bz, Redis as c, ZRemCommand as c0, ZRemRangeByLexCommand as c1, ZRemRangeByRankCommand as c2, ZRemRangeByScoreCommand as c3, ZRevRankCommand as c4, ZScanCommand as c5, ZScoreCommand as c6, ZUnionCommand as c7, type ZUnionCommandOptions as c8, ZUnionStoreCommand as c9, type ZUnionStoreCommandOptions as ca, SearchIndex as cb, type SearchIndexParameters as cc, type CreateIndexParameters as cd, type InferFilterFromSchema as ce, type FlatIndexSchema as cf, type PublicQueryResult as cg, type Requester as d, error as e, type UpstashResponse as f, BitOpCommand as g, BitPosCommand as h, type ClientSetInfoAttribute as i, CopyCommand as j, DecrCommand as k, DecrByCommand as l, DelCommand as m, EvalROCommand as n, EvalCommand as o, EvalshaROCommand as p, EvalshaCommand as q, ExistsCommand as r, ExpireCommand as s, type ExpireOption as t, ExpireAtCommand as u, FlushDBCommand as v, type GeoAddCommandOptions as w, type GeoMember as x, GeoDistCommand as y, GeoHashCommand as z };
4911
+ export { HMGetCommand as $, AppendCommand as A, BitCountCommand as B, type ClientSetInfoAttribute as C, DBSizeCommand as D, EchoCommand as E, FlushAllCommand as F, GeoAddCommand as G, type HttpClientConfig as H, GetCommand as I, GetDelCommand as J, GetExCommand as K, GetRangeCommand as L, GetSetCommand as M, HDelCommand as N, HExistsCommand as O, HExpireAtCommand as P, HExpireCommand as Q, Redis as R, HExpireTimeCommand as S, HGetAllCommand as T, HGetCommand as U, HGetDelCommand as V, HGetExCommand as W, HIncrByCommand as X, HIncrByFloatCommand as Y, HKeysCommand as Z, HLenCommand as _, type RedisOptions as a, RPushCommand as a$, HMSetCommand as a0, HPExpireAtCommand as a1, HPExpireCommand as a2, HPExpireTimeCommand as a3, HPTtlCommand as a4, HPersistCommand as a5, HRandFieldCommand as a6, HScanCommand as a7, HSetCommand as a8, HSetExCommand as a9, JsonStrLenCommand as aA, JsonToggleCommand as aB, JsonTypeCommand as aC, KeysCommand as aD, LIndexCommand as aE, LInsertCommand as aF, LLenCommand as aG, LMoveCommand as aH, LPopCommand as aI, LPushCommand as aJ, LPushXCommand as aK, LRangeCommand as aL, LRemCommand as aM, LSetCommand as aN, LTrimCommand as aO, MGetCommand as aP, MSetCommand as aQ, MSetNXCommand as aR, PExpireAtCommand as aS, PExpireCommand as aT, PSetEXCommand as aU, PTtlCommand as aV, PersistCommand as aW, PingCommand as aX, Pipeline as aY, PublishCommand as aZ, RPopCommand as a_, HSetNXCommand as aa, HStrLenCommand as ab, HTtlCommand as ac, HValsCommand as ad, IncrByCommand as ae, IncrByFloatCommand as af, IncrCommand as ag, JsonArrAppendCommand as ah, JsonArrIndexCommand as ai, JsonArrInsertCommand as aj, JsonArrLenCommand as ak, JsonArrPopCommand as al, JsonArrTrimCommand as am, JsonClearCommand as an, JsonDelCommand as ao, JsonForgetCommand as ap, JsonGetCommand as aq, JsonMGetCommand as ar, JsonMergeCommand as as, JsonNumIncrByCommand as at, JsonNumMultByCommand as au, JsonObjKeysCommand as av, JsonObjLenCommand as aw, JsonRespCommand as ax, JsonSetCommand as ay, JsonStrAppendCommand as az, type RequesterConfig as b, ZRemRangeByLexCommand as b$, RPushXCommand as b0, RandomKeyCommand as b1, RenameCommand as b2, RenameNXCommand as b3, type Requester as b4, SAddCommand as b5, SCardCommand as b6, SDiffCommand as b7, SDiffStoreCommand as b8, SInterCardCommand as b9, TouchCommand as bA, TtlCommand as bB, type Type as bC, TypeCommand as bD, UnlinkCommand as bE, type UpstashRequest as bF, type UpstashResponse as bG, XAckDelCommand as bH, XAddCommand as bI, XDelExCommand as bJ, XRangeCommand as bK, ZAddCommand as bL, type ZAddCommandOptions as bM, ZCardCommand as bN, ZCountCommand as bO, ZDiffStoreCommand as bP, ZIncrByCommand as bQ, ZInterStoreCommand as bR, type ZInterStoreCommandOptions as bS, ZLexCountCommand as bT, ZMScoreCommand as bU, ZPopMaxCommand as bV, ZPopMinCommand as bW, ZRangeCommand as bX, type ZRangeCommandOptions as bY, ZRankCommand as bZ, ZRemCommand as b_, SInterCommand as ba, SInterStoreCommand as bb, SIsMemberCommand as bc, SMIsMemberCommand as bd, SMembersCommand as be, SMoveCommand as bf, SPopCommand as bg, SRandMemberCommand as bh, SRemCommand as bi, SScanCommand as bj, SUnionCommand as bk, SUnionStoreCommand as bl, ScanCommand as bm, type ScanCommandOptions as bn, type ScoreMember as bo, ScriptExistsCommand as bp, ScriptFlushCommand as bq, ScriptLoadCommand as br, SetBitCommand as bs, SetCommand as bt, type SetCommandOptions as bu, SetExCommand as bv, SetNxCommand as bw, SetRangeCommand as bx, StrLenCommand as by, TimeCommand as bz, BitOpCommand as c, ZRemRangeByRankCommand as c0, ZRemRangeByScoreCommand as c1, ZRevRankCommand as c2, ZScanCommand as c3, ZScoreCommand as c4, ZUnionCommand as c5, type ZUnionCommandOptions as c6, ZUnionStoreCommand as c7, type ZUnionStoreCommandOptions as c8, error as c9, type NumericField as ca, type NestedIndexSchema as cb, type CreateIndexParameters as cc, type FlatIndexSchema as cd, type InferFilterFromSchema as ce, type PublicQueryResult as cf, SearchIndex as cg, type SearchIndexParameters as ch, BitPosCommand as d, ClientSetInfoCommand as e, CopyCommand as f, DecrByCommand as g, DecrCommand as h, DelCommand as i, EvalCommand as j, EvalROCommand as k, EvalshaCommand as l, EvalshaROCommand as m, ExistsCommand as n, ExpireAtCommand as o, ExpireCommand as p, type ExpireOption as q, FlushDBCommand as r, type GeoAddCommandOptions as s, GeoDistCommand as t, GeoHashCommand as u, type GeoMember as v, GeoPosCommand as w, GeoSearchCommand as x, GeoSearchStoreCommand as y, GetBitCommand as z };