import { IOverrideResult } from 'metaf-resolvable';
import { Component } from 'react';
import { HOC, IRequirementsOverride } from './Resolver';
/**
 * @description ApplicationRoot props
 */
export interface IApplicationRootProps {
    /**
     * Entities of this array meant to be built with `dependency` helper
     * @description array of overrides for `dependencies`
     */
    dependencies: IOverrideResult[];
    /**
     * Entities of this array meant to be built with `requirement` helper
     * @description array of overrides for `requirements`
     */
    requirements: IRequirementsOverride[];
}
interface IApplicationRootState {
    hocs: HOC[];
}
/**
 * Component that is used for declaring overrides for `dependencies` and `requirements`.
 * Also `requirements` HOCs applied to `render` method of this component in order to
 * wrap you application tree for providing proper environment for your `ResolvableComponent`s
 * @description ApplicationRoot Component
 * > **NOTE:** `<ApplicationRoot>` is meant to appear only once in your app
 * and in majority of cases it should be the first and only wrapper around
 * your `App` component. Adding other `ApplicationRoot`s somewhere in your app
 * won't affect dependency resolution mechanism but instead will throw an error
 */
export declare class ApplicationRoot extends Component<IApplicationRootProps, IApplicationRootState> {
    /**
     * by default there are no predefined `dependencies` or `requirements`
     * @description default props of `ApplicationRoot` component
     */
    static defaultProps: {
        dependencies: never[];
        requirements: never[];
    };
    /**
     * Creates an instance of application root.
     * @param props contains overrides for `dependencies` and `requirements`
     */
    constructor(props: Readonly<IApplicationRootProps>);
    render(): import("react").ReactNode;
}
export {};
//# sourceMappingURL=ApplicationRoot.d.ts.map