import { PresignedUpload, StoredObject } from '../interfaces/file.interface'; import { StorageService } from '../storage/storage.service'; import { FileValidatorService } from '../validation/file-validator.service'; export interface PresignRequest { filename: string; contentType: string; size?: number; category?: string; } /** * Two-phase direct-to-storage upload. presign() issues a PUT URL under the staging prefix; * confirm() verifies the object exists, magic-sniffs its header, then promotes it to a * permanent key. Orphaned (never-confirmed) objects stay in staging for the lifecycle TTL. */ export declare class PresignService { private readonly storage; private readonly validator; constructor(storage: StorageService, validator: FileValidatorService); getUploadUrl(req: PresignRequest): Promise; getDownloadUrl(key: string): Promise; confirm(stagingKey: string, meta?: { originalName?: string; mimeType?: string; }): Promise; }