import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { Observable } from 'rxjs/Observable';
import { ReplaySubject } from 'rxjs/ReplaySubject';
import { Subject } from 'rxjs/Subject';
import { StateConstructor } from './constructor';
import { ReduxStateSelectorSubjectType } from './selector/subject-type';
export declare class ReduxStateSelector {
    private expression;
    private context;
    private static readonly DELIMITER;
    constructor(expression: string, context?: StateConstructor);
    getObservable<S>(): Observable<S>;
    getBehaviorSubject<S>(initialValue: S): BehaviorSubject<S>;
    getReplaySubject<S>(): ReplaySubject<S>;
    getSubject<S>(): Subject<S>;
    getBySubjectType<S>(type: ReduxStateSelectorSubjectType, initialValue?: S): ReplaySubject<S> | Subject<S> | BehaviorSubject<S>;
    getValueFromState<T, S = {}>(state: S): T;
    private static isPropertyKeyValid(propertyKey);
}
