import { BlueBase, BootOptions } from '../../BlueBase';
import React from 'react';
export interface BlueBaseAppProps extends Partial<BootOptions> {
    /** BlueBase Context */
    BB?: BlueBase;
    /**
     * If this prop is provided, this tree will be rendered instead of BlueBase's own view.
     */
    children?: React.ReactNode;
    /**
     * Used to locate this view in end-to-end tests.
     */
    testID?: string;
}
interface BlueBaseAppState {
    /**
     * Has the app booted yet
     */
    readonly booted: boolean;
    /**
     * Are we loading the app
     */
    readonly loading: boolean;
    /**
     * Any errors occured while booting the app
     */
    readonly error: any;
    /**
     * BlueBase instance used by the app
     */
    readonly BB: BlueBase;
    /**
     * App Component to render
     */
    readonly AppComponent: React.ComponentType<any>;
}
/**
 * # 🚀 BlueBaseApp
 *
 * The main BlueBase app. This is the top level component in BlueBase. Takes care
 * of initialisation, and renders either children, or app with routing.
 *
 * ## Usage
 * ```jsx
 * <BlueBaseApp BB={BB} plugins={{}} hook={{}} themes={{}} />
 * ```
 */
export declare class BlueBaseApp extends React.Component<BlueBaseAppProps, BlueBaseAppState> {
    constructor(props: BlueBaseAppProps);
    componentDidMount(): Promise<void>;
    componentDidCatch(error: Error | null): void;
    render(): JSX.Element;
}
export {};
