# Bit.Blex public API 45 public types across 4 packages. Call `GetBlexApi(typeName: "...")` for one of them in full - its parameters, properties, methods or enum values, with the default value each one really has. ## Bit.Blex - **BitBlex** (Static class) - DI helpers for registering Blex and its stores. - **BlexActionArg** (Struct) - A named action argument captured at dispatch time. - **BlexActionAttribute** (Attribute) - Marks a partial void method whose name starts with On as an action implementation. - **BlexActionContext** (Class) - Context passed to middleware after an action has mutated a store. - **BlexActionErrorContext** (Class) - Context describing an action whose body threw. - **BlexComparers** (Static class) - Equality comparers for selector subscriptions whose projection is a collection. - **BlexComputedAttribute** (Attribute) - Marks a parameterless method (named ComputeXxx or GetXxx) as derived/computed state. - **BlexDelegateMiddleware** (Class) - A simple middleware that forwards each applied action to a delegate. - **BlexEffectAttribute** (Attribute) - Marks an asynchronous method (returning Task or ValueTask, named OnXxx) as an effect: an async action whose loading/error lifecycle is managed for you. - **BlexEffectConcurrency** (Enum) - How overlapping invocations of the same BlexEffectAttribute are handled, mirroring the RxJS flattening operators used by NgRx effects. - **BlexEntityAdapter** (Class) - Generates CRUD operations and an initial state for a normalized BlexEntityState. - **BlexEntityState** (Class) - An immutable, normalized collection: an ordered list of ids plus an id-keyed entity map. - **BlexError** (Struct) - Describes a non-fatal failure that Blex isolated from the dispatch pipeline (a throwing subscriber, middleware, persistence write, restore, sanitizer, ...). - **BlexFilterMiddleware** (Class) - A middleware that can veto actions before they run. - **BlexHistory** (Class) - In-app undo/redo for the whole application state, independent of the Redux DevTools extension. - **BlexJson** (Static class) - The shared JsonSerializerOptions used by generated snapshot code, persistence and the DevTools bridge. - **BlexManager** (Class) - The central state manager. - **BlexOptions** (Class) - Configuration for the Blex manager, populated via AddBitBlexServices. - **BlexPersistenceOptions** (Class) - Configuration for BlexStatePersistor. - **BlexPreActionContext** (Class) - Context passed to middleware before an action mutates a store. - **BlexSelector** (Class) - A memoized derived value over the whole application state -- what [BlexComputedAttribute] is to a single store, lifted to the manager. - **BlexStateAttribute** (Attribute) - Marks a backing field as a piece of reactive state. - **BlexStatePersistor** (Class) - Coordinates automatic persistence: rehydrates persistent stores on startup and saves their slice through an IBlexStorage after every action (optionally debounced). - **BlexStoreAttribute** (Attribute) - Marks a partial class as a Blex state store. - **BlexStoreBase** (Class) - Base class for all Blex stores. - **BlexStoreSubscriptionExtensions** (Static class) - Selector-based subscription helpers. - **IBlexDevTools** (Interface) - Abstraction over a DevTools sink. - **IBlexExternalStorageChange** (Interface) - Implemented by an IBlexStorage that can tell Blex when a key was changed by something outside this application instance -- most commonly another browser tab writing to the same localStorage. - **IBlexMiddleware** (Interface) - A pipeline hook invoked for every dispatched action. - **IBlexStorage** (Interface) - Storage-agnostic, asynchronous key/value sink used to persist store state. - **IBlexStore** (Interface) - A reactive state container. ## Bit.Blex.Blazor - **BitBlexBlazor** (Static class) - Blazor-specific DI helpers for wiring Blex persistence to browser storage. - **BlexBrowserStorage** (Class) - IBlexStorage backed by the browser's localStorage/sessionStorage via a tiny JS bridge. - **BlexBrowserStorageKind** (Enum) - Which Web Storage area a BlexBrowserStorage instance targets. - **BlexComponentBase** (Component) - Optional base component that re-renders automatically when subscribed stores change. - **BlexComponentStatePersistence** (Class) - Bridges Blex stores to Blazor's PersistentComponentState so that state produced during prerendering is handed to the interactive render without re-fetching, eliminating the "double render" flicker. - **BlexProvider** (Component) - Root component that wires every registered IBlexStore into the BlexManager manager and (on first render) connects the Redux DevTools bridge. - **BlexReduxDevToolsConnector** (Class) - Bridges a BlexManager to the Redux DevTools browser extension, enabling live action inspection and time-travel. ## Bit.Blex.Maui - **BitBlexMaui** (Static class) - DI helpers for wiring Blex into a .NET MAUI application. - **BlexPreferencesStorage** (Class) - IBlexStorage backed by .NET MAUI IPreferences, so persisted store state lives in the OS-native app preferences (SharedPreferences on Android, NSUserDefaults on iOS/Mac Catalyst, the local settings store on Windows). ## Bit.Blex.Testing - **BlexActionLog** (Class) - Records every action dispatched through a BlexManager for assertions in tests. - **BlexRecordedAction** (Record) - A single recorded action and the state snapshot taken immediately after it. - **BlexTestExtensions** (Static class) - Convenience extensions for testing Blex stores and managers. - **BlexTestHarness** (Static class) - Factory helpers for BlexTestHarness. - **BlexTestHarness** (Class) - A self-contained test fixture around a single store: it creates a BlexManager, registers the store, and records every action so tests can assert on dispatch behavior without any Blazor or DI setup.