declare type Selector<T, ReturnType> = (state: T) => ReturnType;
declare type SubscriptionCallback<T> = () => void;
declare type ProducerCallback<T> = (currentState: T) => T | void;
export declare class Store<T> {
    private _state;
    private watcher;
    private selectorCache;
    constructor(initialState: T);
    state(): T;
    select<ReturnType>(selector: Selector<T, ReturnType>): ReturnType;
    update(callbackOrState: T | ProducerCallback<T>): void;
    subscribe(callback: SubscriptionCallback<T>): () => void;
    subscribeSelection(selector: Selector<T, any>, callback: SubscriptionCallback<T>): () => void;
}
export {};
