import { App } from "../../App";
import { AtomList } from "../../core/AtomList";
import { AtomUri } from "../../core/AtomUri";
import { IClassOf, INotifyPropertyChanged } from "../../core/types";
import XNode from "../../core/XNode";
import { AtomViewModel } from "../../view-model/AtomViewModel";
import { WindowService } from "../services/WindowService";
import { AtomControl } from "./AtomControl";
import { AtomGridView } from "./AtomGridView";
import { AtomPage } from "./AtomPage";
export declare class AtomTabbedPage extends AtomGridView implements INotifyPropertyChanged {
    static titleTemplate: (attributes: Partial<unknown>, ...nodes: XNode[]) => XNode;
    localViewModel: AtomTabViewModel;
    tabChannelName: string;
    titleTemplate: IClassOf<AtomControl>;
    presenter: HTMLElement;
    private mWindowService;
    protected get windowService(): WindowService;
    private mSelectedPage;
    get selectedPage(): AtomPage;
    set selectedPage(value: AtomPage);
    constructor(app: App, e?: HTMLElement);
    protected preCreate(): void;
    private getParentHost;
}
interface ITabState {
    urls: string[];
    selectedUrl: string;
}
declare class AtomTabViewModel extends AtomViewModel {
    private owner;
    pages: AtomList<AtomPage>;
    selectedPage: AtomPage;
    selectedUrl: string;
    channel: string;
    storageKey: string;
    tabState: ITabState;
    private pageUpdater;
    private navigationService;
    constructor(app: App, owner: AtomTabbedPage);
    init(): Promise<any>;
    watchSelectedPage(): void;
    closePage(page: AtomPage): void;
    protected saveState(a?: any): void;
    protected loadPageForReturn(url: AtomUri): Promise<any>;
    protected loadPage(url: AtomUri, doNotSetSelected: boolean): Promise<AtomPage>;
}
export {};
//# sourceMappingURL=AtomTabbedPage.d.ts.map