import { Observable } from "rxjs"; import { UserId } from "../../types/guid"; import { DerivedStateDependencies } from "../../types/state"; import { DeriveDefinition } from "./derive-definition"; import { DerivedState } from "./derived-state"; import { GlobalState } from "./global-state"; // eslint-disable-next-line @typescript-eslint/no-unused-vars -- used in docs import { GlobalStateProvider } from "./global-state.provider"; import { KeyDefinition } from "./key-definition"; import { ActiveUserState, SingleUserState } from "./user-state"; // eslint-disable-next-line @typescript-eslint/no-unused-vars -- used in docs import { ActiveUserStateProvider, SingleUserStateProvider } from "./user-state.provider"; /** Convenience wrapper class for {@link ActiveUserStateProvider}, {@link SingleUserStateProvider}, * and {@link GlobalStateProvider}. */ export abstract class StateProvider { /** @see{@link ActiveUserStateProvider.get} */ getActive: (keyDefinition: KeyDefinition) => ActiveUserState; /** @see{@link SingleUserStateProvider.get} */ getUser: (userId: UserId, keyDefinition: KeyDefinition) => SingleUserState; /** @see{@link GlobalStateProvider.get} */ getGlobal: (keyDefinition: KeyDefinition) => GlobalState; getDerived: ( parentState$: Observable, deriveDefinition: DeriveDefinition, dependencies: TDeps, ) => DerivedState; }