/**
 * This file is part of the NocoBase (R) project.
 * Copyright (c) 2020-2024 NocoBase Co., Ltd.
 * Authors: NocoBase Team.
 *
 * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
 * For more information, please refer to: https://www.nocobase.com/agreement.
 */
import { DragEndEvent } from '@dnd-kit/core';
import { CreateModelOptions, FlowModel } from '@nocobase/flow-engine';
import React, { ReactNode } from 'react';
import { BasePageTabModel } from './PageTabModel';
type PageModelStructure = {
    subModels: {
        tabs: BasePageTabModel[];
    };
};
export declare class PageModel extends FlowModel<PageModelStructure> {
    tabBarExtraContent: {
        left?: ReactNode;
        right?: ReactNode;
    };
    private viewActivatedListener?;
    private dataSourceDirtyListener?;
    private lastSeenEmitterViewActivatedVersion;
    private dirtyRefreshScheduled;
    private unmounted;
    private documentTitleUpdateVersion;
    /**
     * 根页面标签页开关以路由表为准，避免 flow model 里的旧配置覆盖路由管理设置。
     */
    private getEnableTabs;
    private getActiveTabKey;
    private scheduleActiveLifecycleRefresh;
    onMount(): void;
    protected onUnmount(): void;
    invokeTabModelLifecycleMethod(tabActiveKey: string, method: 'onActive' | 'onInactive', forceRefresh?: boolean): void;
    /**
     * Resolve configured document title template and update browser tab title.
     * Priority:
     * 1) page without tabs: page.documentTitle > page title
     * 2) page with tabs: activeTab.documentTitle > active tab name
     */
    updateDocumentTitle(preferredActiveTabKey?: string, retryCount?: number): Promise<void>;
    createPageTabModelOptions: () => CreateModelOptions;
    mapTabs(): {
        key: string;
        label: React.JSX.Element;
        children: any;
    }[];
    getFirstTab(): BasePageTabModel;
    renderFirstTab(): any;
    handleDragEnd(event: DragEndEvent): Promise<void>;
    renderTabs(): React.JSX.Element;
    render(): React.JSX.Element;
}
export {};
