import React, { FunctionComponent } from 'react';
import { LayoutComponent, PageComponent } from './types.js';
import { RouteNode } from './utils/flat-routes.js';
/**
 * Router component that define a routing system
 */
export declare class RouterComponent {
    /**
     * Defines the layout applied to the Router
     */
    private _layout;
    /**
     * Defines the list of sub routers
     */
    private _routers;
    /**
     * Defines the list of pages
     */
    private _pages;
    /**
     * Defines the loader component to display when pages aren't available
     */
    private _loaderComponent;
    /**
     * Defines the not found component to display when pages aren't available
     */
    private _notFoundComponent;
    /**
     * Defines if the layout of the parent router must be used
     */
    private _useParentLayout;
    /**
     * Get the layout value
     */
    get layout(): LayoutComponent | RouteNode;
    /**
     * Get the list of routers
     */
    get routers(): Array<RouterComponent>;
    /**
     * Get the list of pages
     */
    get pages(): Array<PageComponent | RouteNode>;
    /**
     * Get the loader component
     */
    get loaderComponent(): FunctionComponent;
    /**
     * Get the not found component
     */
    get notFoundComponent(): React.ReactNode | undefined;
    /**
     * Get the use parent layout value
     */
    get useParentLayout(): boolean;
    /**
     * Set the layout value
     */
    set layout(layout: LayoutComponent | RouteNode);
    /**
     * Set the list of routers
     */
    set routers(routers: Array<RouterComponent>);
    /**
     * Set the list of pages
     */
    set pages(pages: Array<PageComponent | RouteNode>);
    /**
     * Set the loader component
     */
    set loaderComponent(loaderComponent: FunctionComponent);
    /**
     * Set the not found component
     */
    set notFoundComponent(NotFoundComponent: FunctionComponent | undefined);
    /**
     * Set the use parent layout value
     */
    set useParentLayout(useParentLayout: boolean);
}
