/**
 * @fileoverview
 * @author Taketoshi Aono
 */
import React from 'react';
import { Observable } from 'rxjs';
import { StateFactory } from './store/store';
export declare function makeView<P extends {} = any, U = React.ComponentClass<P>>(RootViewOrFactory: React.ReactElement<P> | React.ComponentClass<P> | React.StatelessComponent<P>, renderingFn?: (el: React.ComponentClass<P>) => U): (app: StateFactory, otherProps?: any) => U;
export declare type InitialState<T> = {
    [P in keyof T]: T[P] extends ((a: any, b: infer X) => any) ? X : any;
};
export declare type InitialStateFactory<T> = InitialState<T> | (() => InitialState<T>);
export declare function makeApp<T extends {
    [key: string]: StateFactory<{
        view: Observable<any>;
        [key: string]: Observable<any>;
    }>;
}>(apps: T): (initialState: InitialStateFactory<T>) => StateFactory<{
    view: {
        [P in keyof T]: ReturnType<T[P]>['view'];
    };
} & {
    [key: string]: Observable<any>;
}>;
