import { NumberTowardsMaxima, NumberTowardsMinima, RedisStyleAggregate, RedisStyleMatchString, RedisStyleRangeString, ValueAndScore, } from './index' export type SortedSetTheoryOperation = { sets: string[] sort?: 'ASC' | 'DESC' start?: number stop?: number weights?: number[] aggregate?: RedisStyleAggregate } export type SortedSetScanBaseParameters = { key: string match: RedisStyleMatchString limit?: number } export interface SortedSet { getSortedSetIntersect( params: SortedSetTheoryOperation & { withScores: true }, ): Promise getSortedSetIntersect( params: SortedSetTheoryOperation & { withScores?: false }, ): Promise getSortedSetMembers(key: string): Promise getSortedSetMembersWithScores(key: string): Promise getSortedSetRange( key: string | string[], start: number, stop: number, ): Promise getSortedSetRangeByLex( key: string | string[], min: RedisStyleRangeString | '-', max: RedisStyleRangeString | '+', start?: number, count?: number, ): Promise getSortedSetRangeByScore( key: string | string[], start: number, count: number, min: NumberTowardsMinima, max: NumberTowardsMaxima, ): Promise getSortedSetRangeByScoreWithScores( key: string | string[], start: number, count: number, min: NumberTowardsMinima, max: NumberTowardsMaxima, ): Promise getSortedSetRangeWithScores( key: string | string[], start: number, stop: number, ): Promise getSortedSetRevIntersect( params: SortedSetTheoryOperation & { withScores: true }, ): Promise getSortedSetRevIntersect( params: SortedSetTheoryOperation & { withScores?: false }, ): Promise getSortedSetRevRange( key: string | string[], start: number, stop: number, ): Promise getSortedSetRevRangeByLex( key: string, max: RedisStyleRangeString | '+', min: RedisStyleRangeString | '-', start?: number, count?: number, ): Promise getSortedSetRevRangeByScore( key: string, start: number, count: number, max: NumberTowardsMaxima | '+', min: NumberTowardsMinima | '-', ): Promise getSortedSetRevRangeByScoreWithScores( key: string, start: number, count: number, max: NumberTowardsMaxima, min: NumberTowardsMinima, ): Promise getSortedSetRevRangeWithScores( key: string, start: number, stop: number, ): Promise getSortedSetRevUnion( params: SortedSetTheoryOperation & { withScores?: false }, ): Promise getSortedSetRevUnion( params: SortedSetTheoryOperation & { withScores: true }, ): Promise getSortedSetScan( params: SortedSetScanBaseParameters & { withScores: true }, ): Promise getSortedSetScan( params: SortedSetScanBaseParameters & { withScores?: false }, ): Promise getSortedSetUnion( params: SortedSetTheoryOperation & { withScores: true }, ): Promise getSortedSetUnion( params: SortedSetTheoryOperation & { withScores?: false }, ): Promise getSortedSetsMembers(keys: string[]): Promise getSortedSetsMembersWithScores(keys: string[]): Promise isMemberOfSortedSets(keys: string[], value: string): Promise isSortedSetMember(key: string, value: string): Promise isSortedSetMembers(key: string, values: string[]): Promise processSortedSet( setKey: string, processFn: (ids: number[]) => Promise | void, options: { withScores?: boolean; batch?: number; interval?: number, reverse?: boolean; }, ): Promise sortedSetAdd(key: string, score: number, value: string): Promise sortedSetAdd(key: string, score: number[], value: string[]): Promise sortedSetAddBulk( args: [key: string, score: number[], value: string[]][], ): Promise sortedSetCard(key: string): Promise sortedSetCount( key: string, min: NumberTowardsMinima, max: NumberTowardsMaxima, ): Promise sortedSetIncrBy( key: string, increment: number, value: string, ): Promise sortedSetIncrByBulk( data: [key: string, increment: number, value: string][], ): Promise sortedSetIntersectCard(keys: string[]): Promise sortedSetLexCount( key: string, min: RedisStyleRangeString, max: RedisStyleRangeString, ): Promise sortedSetRank(key: string, value: string): Promise sortedSetRanks(key: string, values: string[]): Promise<(number | null)[]> sortedSetRemove( key: string | string[], value: string | string[], ): Promise sortedSetRemoveBulk(data: [key: string, member: string][]): Promise sortedSetRemoveRangeByLex( key: string, min: RedisStyleRangeString | '-', max: RedisStyleRangeString | '+', ): Promise sortedSetRevRank(key: string, value: string): Promise sortedSetRevRanks(key: string, values: string[]): Promise sortedSetScore(key: string, value: string): Promise sortedSetScores(key: string, values: string[]): Promise sortedSetUnionCard(keys: string[]): Promise sortedSetsAdd( keys: string[], scores: number | number[], value: string, ): Promise sortedSetsCard(keys: string[]): Promise sortedSetsCardSum(keys: string[]): Promise sortedSetsRanks( keys: T, values: { [K in keyof T]: string }, ): Promise sortedSetsRemove(keys: string[], value: string): Promise sortedSetsRemoveRangeByScore( keys: string[], min: NumberTowardsMinima, max: NumberTowardsMaxima, ): Promise sortedSetsRevRanks(keys: string[], values: string[]): Promise sortedSetsScore(keys: string[], value: string): Promise }