import { AddChild, HasId, Page, PageWithParams, RepresentsRoutes } from './common';
import { AnyModalPage } from './ModalPage';
import { CommonRouteObject } from '../type';
import { AnyTabPage } from './TabPage';
interface PanelRoutePartial extends CommonRouteObject {
    panel: string;
    tab?: string;
    modal?: string;
}
type AnySubPage = AnyModalPage | AnyTabPage;
declare abstract class BasePanelPage<I extends string> implements RepresentsRoutes<PanelRoutePartial>, HasId<I> {
    id: I;
    path: string;
    protected modals: AnySubPage[];
    protected constructor(id: I, path: string, modals: AnySubPage[]);
    getRoutes(): PanelRoutePartial[];
}
export declare class PanelPage<I extends string> extends BasePanelPage<I> implements Page, HasId<I> {
    path: string;
    hasParams: false;
    constructor(id: I, path: string, modals?: AnySubPage[]);
}
export declare class PanelPageWithParams<I extends string, T extends string> extends BasePanelPage<I> implements PageWithParams<T>, HasId<I> {
    id: I;
    path: string;
    paramKeys: readonly T[];
    hasParams: true;
    constructor(id: I, path: string, paramKeys: readonly T[], modals?: AnySubPage[]);
}
export type AnyPanel = PanelPage<any> | PanelPageWithParams<any, any>;
export declare function createPanel<T extends string, A extends AnySubPage, B extends AnySubPage, C extends AnySubPage, D extends AnySubPage, E extends AnySubPage, F extends AnySubPage, G extends AnySubPage, H extends AnySubPage, I extends AnySubPage, J extends AnySubPage>(id: T, path: string, modals: [A, B, C, D, E, F, G, H, I, J]): AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<PanelPage<T>, A>, B>, C>, D>, E>, F>, G>, H>, I>, J>;
export declare function createPanel<T extends string, A extends AnySubPage, B extends AnySubPage, C extends AnySubPage, D extends AnySubPage, E extends AnySubPage, F extends AnySubPage, G extends AnySubPage, H extends AnySubPage, I extends AnySubPage>(id: T, path: string, modals: [A, B, C, D, E, F, G, H, I]): AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<PanelPage<T>, A>, B>, C>, D>, E>, F>, G>, H>, I>;
export declare function createPanel<T extends string, A extends AnySubPage, B extends AnySubPage, C extends AnySubPage, D extends AnySubPage, E extends AnySubPage, F extends AnySubPage, G extends AnySubPage, H extends AnySubPage>(id: T, path: string, modals: [A, B, C, D, E, F, G, H]): AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<PanelPage<T>, A>, B>, C>, D>, E>, F>, G>, H>;
export declare function createPanel<T extends string, A extends AnySubPage, B extends AnySubPage, C extends AnySubPage, D extends AnySubPage, E extends AnySubPage, F extends AnySubPage, G extends AnySubPage>(id: T, path: string, modals: [A, B, C, D, E, F, G]): AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<PanelPage<T>, A>, B>, C>, D>, E>, F>, G>;
export declare function createPanel<T extends string, A extends AnySubPage, B extends AnySubPage, C extends AnySubPage, D extends AnySubPage, E extends AnySubPage, F extends AnySubPage>(id: T, path: string, modals: [A, B, C, D, E, F]): AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<PanelPage<T>, A>, B>, C>, D>, E>, F>;
export declare function createPanel<T extends string, A extends AnySubPage, B extends AnySubPage, C extends AnySubPage, D extends AnySubPage, E extends AnySubPage>(id: T, path: string, modals: [A, B, C, D, E]): AddChild<AddChild<AddChild<AddChild<AddChild<PanelPage<T>, A>, B>, C>, D>, E>;
export declare function createPanel<T extends string, A extends AnySubPage, B extends AnySubPage, C extends AnySubPage, D extends AnySubPage>(id: T, path: string, modals: [A, B, C, D]): AddChild<AddChild<AddChild<AddChild<PanelPage<T>, A>, B>, C>, D>;
export declare function createPanel<T extends string, A extends AnySubPage, B extends AnySubPage, C extends AnySubPage>(id: T, path: string, modals: [A, B, C]): AddChild<AddChild<AddChild<PanelPage<T>, A>, B>, C>;
export declare function createPanel<T extends string, A extends AnySubPage, B extends AnySubPage>(id: T, path: string, modals: [A, B]): AddChild<AddChild<PanelPage<T>, A>, B>;
export declare function createPanel<T extends string, A extends AnySubPage>(id: T, path: string, modals: [A]): AddChild<PanelPage<T>, A>;
export declare function createPanel<T extends string>(id: T, path: string, modals?: AnySubPage[]): PanelPage<T>;
export declare function createPanel<T extends string, P extends string, A extends AnySubPage, B extends AnySubPage, C extends AnySubPage, D extends AnySubPage, E extends AnySubPage, F extends AnySubPage, G extends AnySubPage, H extends AnySubPage, I extends AnySubPage, J extends AnySubPage>(id: T, path: string, modals: [A, B, C, D, E, F, G, H, I, J], paramKeys: readonly P[]): AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<PanelPageWithParams<T, P>, A>, B>, C>, D>, E>, F>, G>, H>, I>, J>;
export declare function createPanel<T extends string, P extends string, A extends AnySubPage, B extends AnySubPage, C extends AnySubPage, D extends AnySubPage, E extends AnySubPage, F extends AnySubPage, G extends AnySubPage, H extends AnySubPage, I extends AnySubPage>(id: T, path: string, modals: [A, B, C, D, E, F, G, H, I], paramKeys: readonly P[]): AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<PanelPageWithParams<T, P>, A>, B>, C>, D>, E>, F>, G>, H>, I>;
export declare function createPanel<T extends string, P extends string, A extends AnySubPage, B extends AnySubPage, C extends AnySubPage, D extends AnySubPage, E extends AnySubPage, F extends AnySubPage, G extends AnySubPage, H extends AnySubPage>(id: T, path: string, modals: [A, B, C, D, E, F, G, H], paramKeys: readonly P[]): AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<PanelPageWithParams<T, P>, A>, B>, C>, D>, E>, F>, G>, H>;
export declare function createPanel<T extends string, P extends string, A extends AnySubPage, B extends AnySubPage, C extends AnySubPage, D extends AnySubPage, E extends AnySubPage, F extends AnySubPage, G extends AnySubPage>(id: T, path: string, modals: [A, B, C, D, E, F, G], paramKeys: readonly P[]): AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<PanelPageWithParams<T, P>, A>, B>, C>, D>, E>, F>, G>;
export declare function createPanel<T extends string, P extends string, A extends AnySubPage, B extends AnySubPage, C extends AnySubPage, D extends AnySubPage, E extends AnySubPage, F extends AnySubPage>(id: T, path: string, modals: [A, B, C, D, E, F], paramKeys: readonly P[]): AddChild<AddChild<AddChild<AddChild<AddChild<AddChild<PanelPageWithParams<T, P>, A>, B>, C>, D>, E>, F>;
export declare function createPanel<T extends string, P extends string, A extends AnySubPage, B extends AnySubPage, C extends AnySubPage, D extends AnySubPage, E extends AnySubPage>(id: T, path: string, modals: [A, B, C, D, E], paramKeys: readonly P[]): AddChild<AddChild<AddChild<AddChild<AddChild<PanelPageWithParams<T, P>, A>, B>, C>, D>, E>;
export declare function createPanel<T extends string, P extends string, A extends AnySubPage, B extends AnySubPage, C extends AnySubPage, D extends AnySubPage>(id: T, path: string, modals: [A, B, C, D], paramKeys: readonly P[]): AddChild<AddChild<AddChild<AddChild<PanelPageWithParams<T, P>, A>, B>, C>, D>;
export declare function createPanel<T extends string, P extends string, A extends AnySubPage, B extends AnySubPage, C extends AnySubPage>(id: T, path: string, modals: [A, B, C], paramKeys: readonly P[]): AddChild<AddChild<AddChild<PanelPageWithParams<T, P>, A>, B>, C>;
export declare function createPanel<T extends string, P extends string, A extends AnySubPage, B extends AnySubPage>(id: T, path: string, modals: [A, B], paramKeys: readonly P[]): AddChild<AddChild<PanelPageWithParams<T, P>, A>, B>;
export declare function createPanel<T extends string, P extends string, A extends AnySubPage>(id: T, path: string, modals: [A], paramKeys: readonly P[]): AddChild<PanelPageWithParams<T, P>, A>;
export declare function createPanel<T extends string, P extends string>(id: T, path: string, modals: AnySubPage[], paramKeys: readonly P[]): PanelPageWithParams<T, P>;
export {};
//# sourceMappingURL=PanelPage.d.ts.map