/** * Frontend Files Domain Service * * Uses inherited methods from BaseFrontendDomainService: * - uploadFile() - inherited (POST /upload via @plyaz/api) * - uploadFiles() - inherited (POST /upload/bulk via @plyaz/api) * - generateFile() - inherited (POST /generate-document via @plyaz/api) * - fetchById() - via fetchers.fetchById (GET /files/:id) * - delete() - via fetchers.delete (DELETE /files/:id) * * Custom methods: * - download() - GET /files/:id/download * - getSignedUrlForFile() - GET /files/:id/signed-url */ import type { CoreBaseValidatorInstance, CoreServiceCreateOptions } from '@plyaz/types/core'; import type { DownloadFileRequest, DownloadFileResponse, GetSignedUrlRequest, GetSignedUrlResponse, GetFileResponse, ServiceOptions } from '@plyaz/types/api'; import type { FilesEntity, FilesFrontendServiceConfig, FilesCreateInput } from '@plyaz/types/core'; import type { FilesFrontendStoreSlice, FilesFrontendStoreData, FilesStoreItem } from '@plyaz/types/store'; import { BaseFrontendDomainService } from '../base'; import type { CoreStreamHandlerDeclaration, CoreStreamHandlerIds } from '@plyaz/types/core'; import { FilesMapperClass } from './mappers/FilesMapper'; /** * Frontend Files Domain Service * * Inherited from BaseFrontendDomainService: * - uploadFile() - upload single file * - uploadFiles() - upload multiple files * - generateFile() - generate document * - fetchById() - get file metadata * - delete() - delete file * * Custom methods: * - download() - download file content * - getSignedUrlForFile() - get signed URL */ export declare class FrontendFilesDomainService extends BaseFrontendDomainService, Record, FilesStoreItem, InstanceType, CoreBaseValidatorInstance, void> { static readonly serviceKey: "files-frontend"; /** * Primary store key for this service. * Used by ServiceRegistry to auto-inject the store. * Must be static for base class constructor to access. */ static readonly primaryStoreKey: "files"; protected eventPrefix: string; static create(config?: FilesFrontendServiceConfig, options?: CoreServiceCreateOptions): Promise; constructor(config?: FilesFrontendServiceConfig, options?: CoreServiceCreateOptions); isAvailable(): boolean; dispose(): void; private static _eventHandlersRegistered; /** Stream handler IDs - overrides base class pattern */ protected static readonly STREAM_HANDLER_IDS: CoreStreamHandlerIds<'UPLOAD_PROGRESS' | 'DOWNLOAD_PROGRESS' | 'GENERATE_PROGRESS'>; /** Default priority for stream handlers */ private static readonly DEFAULT_HANDLER_PRIORITY; /** * Declarative stream handlers - auto-registered by base class */ protected static readonly STREAM_HANDLERS: CoreStreamHandlerDeclaration[]; /** * Register all frontend event handlers for files domain. * * Handles: * 1. Loading state events (setUploading, setGenerating) * 2. Data persistence events (addUpload, addGenerated) * * Uses CoreEventManager to listen for file events from ANY service. * This ensures a single source of truth via events. * * @param verbose - Enable verbose logging * @returns Cleanup function to unregister all handlers * * @example * ```typescript * // Auto-called during Core.initialize() for frontend * FrontendFilesDomainService.registerEventHandlers(verbose); * ``` */ static registerEventHandlers(verbose?: boolean): () => void; /** * Download file content * GET /files/:id/download * * Follows same pattern as CRUD methods: * 1. ensureReady * 2. Lifecycle hook: beforeDownload * 3. Call fetcher * 4. Lifecycle hook: afterDownload * 5. Emit events * 6. Record metrics */ download(request: DownloadFileRequest, options?: ServiceOptions): Promise; /** * Lifecycle hook: called before download. * Override in subclass for custom pre-download logic. */ protected beforeDownload?(request: DownloadFileRequest): Promise; /** * Lifecycle hook: called after download. * Override in subclass for custom post-download logic. */ protected afterDownload?(result: DownloadFileResponse): Promise; /** * Get signed URL for file * GET /files/:id/signed-url * * Follows same pattern as CRUD methods. */ getSignedUrlForFile(request: GetSignedUrlRequest): Promise; /** * Lifecycle hook: called before getting signed URL. * Override in subclass for custom pre-signedUrl logic. */ protected beforeGetSignedUrl?(request: GetSignedUrlRequest): Promise; /** * Lifecycle hook: called after getting signed URL. * Override in subclass for custom post-signedUrl logic. */ protected afterGetSignedUrl?(result: GetSignedUrlResponse): Promise; } export declare function getFrontendFilesDomainService(config?: FilesFrontendServiceConfig, options?: CoreServiceCreateOptions): Promise; export declare function resetFilesFrontendService(): void; //# sourceMappingURL=FrontendFilesDomainService.d.ts.map