import type { ObserverDisposer } from "../store/ObservableStore";
export declare type SelectorSubscriptionListener<R> = (value: R, previousValue?: R) => any;
export declare type SelectorFn<S, R> = ((state: S) => R);
export declare type Selector<S, R> = SelectorFn<S, R> & {
    subscribe(listener: SelectorSubscriptionListener<R>): ObserverDisposer;
};
export declare type InferredSelector<Sel extends (state: any) => any> = Sel extends (state: infer S) => infer R ? Selector<S, R> : never;
