import { Observable } from 'rxjs';
import { Handler, Selector } from './models';
export declare class Store<T> {
    private readonly devMode;
    private readonly state;
    private readonly handlers;
    readonly state$: Observable<T>;
    readonly handlers$: Observable<Handler<any, any>>;
    constructor(initialState: T, devMode: boolean);
    dispatch(handler: Handler<any, any>): void;
    select<K extends keyof T>(key: K): Observable<T[K]>;
    select<R>(selector: Selector<T, R>): Observable<R>;
    select<K extends keyof T, R>(keyOrSelector: K | Selector<T, R>): Observable<T[K] | R>;
    addFeatureState(featureKey: keyof T, initialState: T[keyof T]): void;
}
export declare const createStore: <T>(initialState: T, devMode?: boolean) => Store<T>;
