/// <reference types="react" />
import * as React from 'react';
import './polyfills';
declare global  {
    interface ObjectConstructor {
        assign(el: any, ...els: any[]): any;
    }
}
export declare function createApp(options?: {
    contextTypes?: any;
    loadingComponent?: any;
    apolloClient: any;
    store?: any;
    state?: any;
}): void;
export { connect, provide } from './mobx';
export { default as mutate } from './mutate';
export { default as query, IQuery } from './query';
export { default as watchQuery } from './watch_query';
export { loadingContainer } from './loading_container';
export { default as waitForData } from './wait_for_data';
export { isQuery, getQuery, isMutation, getMutation, copyQuery } from './reducer_extensions';
export { queriesFinished } from './helpers';
export declare type IReactComponent<P> = React.StatelessComponent<P> | React.ComponentClass<P>;
export declare type IWrappedComponent<P> = {
    wrappedComponent: IReactComponent<P>;
    wrappedInstance: React.ReactElement<P> | void;
};
export declare function ioc<P>(component: IReactComponent<P>): React.ClassicComponentClass<P> & {
    wrappedComponent: React.StatelessComponent<{}> | React.ComponentClass<{}>;
    wrappedInstance: void | React.ReactElement<{}>;
};
export declare function iocs<P>(component: IReactComponent<P>): React.ClassicComponentClass<P> & {
    wrappedComponent: React.StatelessComponent<{}> | React.ComponentClass<{}>;
    wrappedInstance: void | React.ReactElement<{}>;
};
export declare function ic<P>(component: IReactComponent<P>): (React.StatelessComponent<P> & {
    wrappedComponent: IReactComponent<P>;
    wrappedInstance: void | React.ReactElement<P>;
}) | (React.ComponentClass<P> & {
    wrappedComponent: IReactComponent<P>;
    wrappedInstance: void | React.ReactElement<P>;
});
export declare function ics<P>(component: IReactComponent<P>): (React.StatelessComponent<P> & {
    wrappedComponent: IReactComponent<P>;
    wrappedInstance: void | React.ReactElement<P>;
}) | (React.ComponentClass<P> & {
    wrappedComponent: IReactComponent<P>;
    wrappedInstance: void | React.ReactElement<P>;
});
