import type { SurfaceBinding, TasteDecision, TasteProfile } from "./taste.js"; import type { TasteStore } from "./taste-store.js"; export interface MinimalRedisClient { get(key: string): Promise; set(key: string, value: unknown): Promise; del(...keys: string[]): Promise; sadd(key: string, ...members: string[]): Promise; srem(key: string, ...members: string[]): Promise; smembers(key: string): Promise; rpush(key: string, ...values: unknown[]): Promise; lrange(key: string, start: number, stop: number): Promise; scan(cursor: string | number, opts?: { match?: string; count?: number; }): Promise<[string, string[]]>; } export declare class RedisTasteStore implements TasteStore { private readonly sub; private readonly redis; constructor(sub: string, redis: MinimalRedisClient); private key; private indexKey; getProfile(name: string): Promise; putProfile(profile: TasteProfile): Promise; listProfiles(): Promise>; getSurfaces(name: string): Promise; putSurfaces(name: string, bindings: SurfaceBinding[]): Promise; getDecisions(name: string): Promise; putDecisions(name: string, decisions: TasteDecision[]): Promise; appendDecision(name: string, decision: TasteDecision): Promise; deleteAllUserData(): Promise<{ deleted: number; remaining: number; }>; private scanDelete; private scanCount; describe(name: string, kind: "profile" | "surfaces" | "decisions"): string; }