import { BehaviorSubject, Observable } from 'rxjs'; import { Query } from '..'; import { StoreEvent } from './events'; export declare class Store extends BehaviorSubject { private storeDef; initialState: State; state: State; private batchInProgress; private events; private context; events$: Observable; constructor(storeDef: SDef); get name(): StoreDef['name']; private getInitialState; getConfig>(): Config; query(selector: Query): R; update(...reducers: Array>): void; getValue(): State; reset(): void; combine>>(observables: O): Observable<{ [P in keyof O]: O[P] extends Observable ? R : never; }>; destroy(): void; next(value: State): void; error(): void; complete(): void; } export type StoreValue = ReturnType; export type Reducer = (state: State, context: ReducerContext) => State; export type ReducerContext = { config: Record; setEvent: (action: StoreEvent) => void; }; export interface StoreDef { name: string; state: State; config: any; }