{"path":"NexusReader.Application/Abstractions/Services/IEpubReader.cs","purpose":"Defines the application service contract for reading and parsing EPUB content for a specific ebook and chapter (async, tenant-aware).","classification":{"role":"service","layer":"application","confidence":0.85,"evidence":["Service naming pattern","Application/service path heuristic","File declares an interface IEpubReader in Application.Abstractions.Services namespace","Method GetEpubContentAsync returns a ReaderPageViewModel result and accepts userId and CancellationToken (service contract)"]},"className":"IEpubReader","methods":[{"name":"GetEpubContentAsync","line":18,"endLine":22,"signature":"(ebookId: Guid, chapterIndex: int, userId: string? = null, cancellationToken: CancellationToken = default) -> Task<Result<ReaderPageViewModel>>","purpose":"Asynchronously retrieves parsed EPUB content blocks (a ReaderPageViewModel) for the specified ebook and zero-based chapter index, optionally scoped to a user and cancellable.","calls":[],"actions":[{"id":"validation-hint_15","kind":"mapping","label":"Chapter index is zero-based","line":15,"detail":"Documentation indicates chapterIndex is zero-based; callers should validate bounds","visibility":"detail-only","confidence":0.7},{"id":"async-return_18","kind":"mapping","label":"Returns a Result-wrapped ReaderPageViewModel","line":18,"detail":"Method returns Task<Result<ReaderPageViewModel>>","visibility":"detail-only","confidence":0.7},{"id":"cancellation_21","kind":"mapping","label":"Supports cancellation","line":21,"detail":"cancellationToken parameter allows caller to cancel the operation","visibility":"detail-only","confidence":0.7},{"id":"tenant-isolation_21","kind":"mapping","label":"User-scoped lookup","line":21,"detail":"userId parameter is documented as used for tenant isolation in DB lookup","visibility":"detail-only","confidence":0.7}]}],"types":[{"name":"IEpubReader","kind":"interface","line":9,"purpose":"Service contract that exposes EPUB reading/parsing behavior for ebooks and chapters.","fields":[]}],"serviceRegistrations":[],"startupActions":[],"dependencies":["NexusReader.Application.Queries.Reader (ReaderPageViewModel referenced)","FluentResults (Result<T> usage)"],"patterns":["Service Interface","Async API"],"domainConcepts":["Ebook","Chapter","EPUB","ReaderPage"],"keyDetails":"Single-method interface; method is async, returns FluentResults-wrapped ReaderPageViewModel, accepts optional userId for tenant isolation and CancellationToken for cancellation.","orchestrationMethods":[],"typedContracts":[{"name":"IEpubReader","kind":"interface","line":9,"fieldCount":0,"evidencePaths":["NexusReader.Application/Abstractions/Services/IEpubReader.cs"]}],"persistenceInteractions":[],"externalInteractions":[],"evidenceAnchors":[{"kind":"typed-contract","label":"IEpubReader","line":9,"summary":"interface with 0 fields.","confidence":0.8,"evidencePaths":["NexusReader.Application/Abstractions/Services/IEpubReader.cs"]}],"cacheMetadata":{"schemaVersion":2,"analysisVersion":"2026-05-23.cache-v1","contentChecksum":"a442a63e2ad648555d1e38653bbf9c5a5642d3afc258a2e0c1f0fcdf85db0858","sourceByteSize":913,"analyzedAt":"2026-05-23T16:19:21.212Z","technology":"dotnet"}}