import type { NDiscoveryService } from "../services"; export interface IAbstractFileStorageStrategy { start(): Promise; stop(): Promise; count(): Promise; setOne( name: N, files: NAbstractFileStorageStrategy.FileInfo ): Promise; setMany(files: NAbstractFileStorageStrategy.FilesInfo): Promise; getOne( name: N ): Promise; getAll(): Promise; updateOne( name: N, file: NAbstractFileStorageStrategy.FileInfo ): Promise; loadOne( name: N ): Promise; loadAll(): Promise; removeOne(name: N): Promise; clear(): Promise; } export namespace NAbstractFileStorageStrategy { export type BufferConfig = Pick< NDiscoveryService.CoreConfig["strategies"]["fileStorage"], "enable" | "buffer" >; export type RedisConfig = Pick< NDiscoveryService.CoreConfig["strategies"]["fileStorage"], "enable" > & Required< Pick< NDiscoveryService.CoreConfig["strategies"]["fileStorage"]["buffer"], "valueTimeout" > >; export type StreamLimits = { fieldNameSize?: number; fieldSize?: number; fields?: number; fileSize?: number; parts?: number; }; interface StreamInfo { type: string; fieldname: string; filename: string; encoding: string; mimetype: string; file: Buffer; toBuffer(): Promise; } type FileInfo = Pick< StreamInfo, "type" | "encoding" | "mimetype" | "file" > & { fieldName: string; fileName: string; }; type RedisItem = Pick & { file: string; fieldName: string; fileName: string; }; type FilesInfo = Map; }