{"path":"NexusReader.UI.Shared/Services/IFocusModeService.cs","purpose":"Defines the IFocusModeService interface for UI focus mode control (querying state, initialization, toggling, and change notifications).","classification":{"role":"service","layer":"frontend","confidence":0.8,"evidence":["Service naming pattern","Application/service path heuristic","Namespace NexusReader.UI.Shared.Services indicates a UI-shared service","Interface exposes InitializeAsync and ToggleAsync for runtime control and an event for change notifications"]},"className":"IFocusModeService","methods":[{"name":"IsFocusModeActive","line":5,"endLine":5,"signature":"get -> bool","purpose":"Property getter that indicates whether focus mode is currently active.","calls":[],"actions":[{"id":"declaration-only_5","kind":"mapping","label":"Read-only property declaration","line":5,"detail":"Interface exposes a read-only boolean property; no implementation here.","visibility":"detail-only","confidence":0.7}]},{"name":"OnFocusModeChanged","line":6,"endLine":6,"signature":"event Func? -> void","purpose":"Event raised when focus mode changes, subscribers receive an asynchronous notification.","calls":[],"actions":[{"id":"declaration-only_6","kind":"mapping","label":"Event declaration","line":6,"detail":"Interface declares an async event; implementation is responsible for invocation and subscription semantics.","visibility":"detail-only","confidence":0.7}]},{"name":"InitializeAsync","line":7,"endLine":7,"signature":"() -> Task","purpose":"Asynchronously initializes the focus mode service (e.g., load persisted state or perform startup tasks).","calls":[],"actions":[{"id":"declaration-only_7","kind":"mapping","label":"Initialization contract","line":7,"detail":"Interface method; concrete implementation may perform persistence reads, setup, or raise OnFocusModeChanged.","visibility":"detail-only","confidence":0.7}]},{"name":"ToggleAsync","line":8,"endLine":8,"signature":"() -> Task","purpose":"Asynchronously toggles the focus mode state and typically notifies subscribers.","calls":[],"actions":[{"id":"declaration-only_8","kind":"mapping","label":"Toggle contract","line":8,"detail":"Interface method; concrete implementation likely flips state, persists it, and triggers OnFocusModeChanged.","visibility":"detail-only","confidence":0.7}]}],"types":[{"name":"IFocusModeService","kind":"interface","line":3,"purpose":"Contract for a UI-level service that manages focus mode state, initialization, toggling, and change notifications.","fields":[{"name":"IsFocusModeActive","type":"bool","required":true,"line":5,"description":"Read-only property indicating current focus mode state."},{"name":"OnFocusModeChanged","type":"Func?","required":false,"line":6,"description":"Event invoked when focus mode changes to notify subscribers asynchronously."},{"name":"InitializeAsync","type":"Task","required":true,"line":7,"description":"Asynchronous initialization operation for the service."},{"name":"ToggleAsync","type":"Task","required":true,"line":8,"description":"Asynchronous operation that toggles the focus mode state."}]}],"serviceRegistrations":[],"startupActions":[],"dependencies":[],"patterns":["Service","Observer (event)"],"domainConcepts":["FocusMode"],"keyDetails":"Interface is declaration-only; concrete implementations are expected to handle persistence, event invocation, and startup initialization behavior.","orchestrationMethods":[],"typedContracts":[{"name":"IFocusModeService","kind":"interface","line":3,"fieldCount":4,"evidencePaths":["NexusReader.UI.Shared/Services/IFocusModeService.cs"]}],"persistenceInteractions":[],"externalInteractions":[],"evidenceAnchors":[{"kind":"typed-contract","label":"IFocusModeService","line":3,"summary":"interface with 4 fields.","confidence":0.8,"evidencePaths":["NexusReader.UI.Shared/Services/IFocusModeService.cs"]}],"cacheMetadata":{"schemaVersion":2,"analysisVersion":"2026-05-23.cache-v1","contentChecksum":"4bf8ed48782bd3e256a6c785bd7ac44ce35e876cea0afa241d8a3672ef306bae","sourceByteSize":221,"analyzedAt":"2026-05-23T16:21:36.039Z","technology":"dotnet"}}