/** * Files Mapper * * Maps between: * - API responses (UploadFileResponse/GetFileResponse) → FilesEntity * - FilesEntity → FilesStoreItem * - FilesDatabaseRow → API response (for backend) */ import { BaseMapper } from '../../base'; import type { UploadFileResponse, GetFileResponse } from '@plyaz/types/api'; import type { FilesEntity, FilesDatabaseRow, FileType, FilesCreateInput } from '@plyaz/types/core'; import type { FilesStoreItem, GeneratedFileItem } from '@plyaz/types/store'; import type { UploadResult } from '@plyaz/types/storage'; /** * Files Mapper implementation * * Maps between: * - API responses → Domain Entity (toDomain) * - Domain Entity → Store State (toStoreState) * - Database Row → API Response (toResponseDTO) */ declare class FilesMapperClass extends BaseMapper, Record, FilesStoreItem> { /** * Type guard for UploadResult from event payloads * Validates that the value has the required structure for DB mapping */ static isUploadResult(value: unknown): value is UploadResult; /** * Infer file type from MIME type * DB ENUM only supports: IMAGE, VIDEO, AUDIO, DOCUMENT * Default to DOCUMENT for unknown types */ static inferFileType(mimeType: string): FileType; /** * API Response → Domain Entity */ toDomain(dto: GetFileResponse | UploadFileResponse): FilesEntity; /** * Domain Entity → Store State (serializable) */ toStoreState(entity: FilesEntity): FilesStoreItem; /** * Store State → Domain Entity */ fromStoreState(state: FilesStoreItem): FilesEntity; /** * Database Row → API Response (for backend) */ toResponseDTO(row: FilesDatabaseRow): GetFileResponse; /** * Create GeneratedFileItem from generation result */ toGeneratedFileItem(templateId: string, buffer: string, size: number, outputFormat?: string): GeneratedFileItem; /** * Convert upload result to database row format * Used by event handlers to persist upload results to DB * * @param uploadResult - Result from storage upload * @param userId - User ID who uploaded the file (from auth context) * @returns Partial database row ready for repository.create() */ toDbRow(uploadResult: UploadResult, userId?: string): Partial; } export { FilesMapperClass }; export declare const FilesMapper: FilesMapperClass; //# sourceMappingURL=FilesMapper.d.ts.map