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