import { Subscribable } from 'rx-subject'; export interface ComponentFromStreamFactory, N> {

(operator: Operator): ComponentFromStreamConstructor;

(render: (props: Q) => N, factory: OperatorFactory): ComponentFromStreamConstructor;

(render: (props: Q) => N, project: Mapper, operator: OperatorFactory, ...operators: OperatorFactory[]): ComponentFromStreamConstructor; } export interface ComponentFromStreamOptions { } export interface ComponentFromStreamConstructor, N> { new

(props?: P, context?: any): C & ComponentFromStream; } export interface ComponentFromStream extends Component> { componentDidMount(): void; componentWillReceiveProps(nextProps: Readonly

, nextContext: any): void; componentWillUnmount(): void; shouldComponentUpdate(props: Readonly

, state: Readonly>): boolean; } export interface ComponentConstructor { new

(props: P, context?: any): Component; } export interface Component { setState(state: Reducer | Partial, cb?: () => void): void; render(props?: P, state?: S, context?: any): N | void; props: Readonly

; state: Readonly; context: any; } export interface PropsState { props: Q; } export declare type Mapper = (props: P) => A; export declare type OperatorFactory = Subscribable, S extends Subscribable = Subscribable> = (dispatch?: StreamableDispatcher, fromESObservable?: >(stream: Subscribable) => O, toESObservable?: >(stream: O) => Subscribable) => Operator; export declare type Operator = Subscribable, S extends Subscribable = Subscribable> = (q$: Q) => S; export interface StreamableDispatcher = Subscribable> { next(val: A): void; from>(source$: E): void; source$: S; } export declare type Reducer = (acc: A, val: V) => A; export { Subscribable }; export default function createComponentFromStreamFactory, N>(ComponentCtor: new (props: any, context?: any) => C & Component, fromESObservable: >(stream: Subscribable) => O, opts?: Partial): ComponentFromStreamFactory; export default function createComponentFromStreamFactory, N>(ComponentCtor: new (props: any, context?: any) => C & Component, fromESObservable: >(stream: Subscribable) => O, toESObservable: >(stream: O) => Subscribable, opts?: Partial): ComponentFromStreamFactory; export declare function identity(v: T): T;