///
///
import { StreamMetadataWrapper } from "../models.js";
import { Duration } from "durr";
import { BasePayload, ClientEvents, JobQueue, WorkerEvents } from "../job";
import EventEmitter from "events";
export interface Cache {
mkJobQueue = ClientEvents, Worker extends WorkerEvents = WorkerEvents>(id: string): Promise>;
getStreamMetadata(id: string): Promise;
putStreamMetadata(id: string, m3u8: StreamMetadataWrapper, expiration: Date): Promise;
delStreamMetadata(id: string): Promise;
expireStreamMetadata(id: string, expiration: Date): Promise;
getSegmentM4s(streamId: string, segmentId: number): Promise;
putSegmentM4s(streamId: string, segmentId: number, segment: Buffer, expiration: Date): Promise;
delSegmentM4s(streamId: string, segmentId: number): Promise;
expireSegmentM4s(streamId: string, segmentId: number, expiration: Date): Promise;
getInitMp4(streamId: string): Promise;
putInitMp4(streamId: string, initMp4: Buffer, expiration: Date): Promise;
delInitMp4(streamId: string): Promise;
expireInitMp4(id: string, expiration: Date): Promise;
getImage(imageId: string): Promise;
putImage(imageId: string, image: Buffer, expirationSecs: number): Promise;
delImage(imageId: string): Promise;
expireImage(imageId: string, seconds: number): Promise;
put(key: string, value: string, expiration: Date): Promise;
get(key: string): Promise;
del(key: string): Promise;
tryAcquire(key: string, timeout: Duration): Promise;
pub(key: string, value: string): Promise;
sub(key: string): Promise;
}
export interface SubEmitterEvents {
readonly message: (value: string) => void;
}
export interface NotificationEmitter extends EventEmitter {
on(event: U, listener: SubEmitterEvents[U]): this;
emit(event: U, ...args: Parameters): boolean;
}
export declare class NotificationEmitter extends EventEmitter {
close(): Promise;
constructor();
}
export interface Lock {
readonly extend: (timeout: Duration) => Promise;
readonly release: () => Promise;
}
//# sourceMappingURL=Cache.d.ts.map