/**
 * 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 React from 'react';
import { FlowModel } from '@nocobase/flow-engine';
import { AdminLayoutMenuCreationMeta, AdminLayoutMenuCreationParams, AdminLayoutMenuInsertPosition, AdminLayoutMenuItemStructure, AdminLayoutMenuNode, AdminLayoutMenuRouteOptions } from './AdminLayoutMenuUtils';
import { type NocoBaseDesktopRoute } from './route-types';
export * from './AdminLayoutMenuUtils';
export { insertRouteSchema } from './AdminLayoutMenuFlowUtils';
export declare class AdminLayoutMenuItemModel extends FlowModel<AdminLayoutMenuItemStructure> {
    private creationPersisted;
    private persistedStateHydrated;
    private persistedStateHydrating?;
    onInit(options: any): void;
    syncFromRoute(route: NocoBaseDesktopRoute, parentRoute?: NocoBaseDesktopRoute): void;
    getRoute(): NocoBaseDesktopRoute;
    getParentRoute(): NocoBaseDesktopRoute;
    getCreationMeta(): AdminLayoutMenuCreationMeta;
    isCreationSession(): boolean;
    shouldHydratePersistedState(): boolean;
    hydrateLegacyPersistedStateIfCurrentPath(pathname: string, basename?: string): Promise<boolean>;
    openFlowSettings(options?: Parameters<FlowModel['openFlowSettings']>[0]): Promise<boolean>;
    getRouteRepository(): any;
    hasPersistedMenuInstanceFlowFlag(route?: NocoBaseDesktopRoute): boolean;
    getCurrentPersistedInstanceFlowCount(): number;
    hasPersistableMenuLinkageRules(): boolean;
    hasCurrentPersistedMenuState(): boolean;
    buildRouteOptionsWithPersistedFlowFlag(hasPersistedMenuInstanceFlow: boolean): {
        [x: string]: any;
        hasPersistedMenuInstanceFlow?: boolean;
    };
    syncPersistedFlowRouteFlag(): Promise<void>;
    destroyPersistedState(): Promise<void>;
    /**
     * 按固定 uid 从 flowModels 仓库恢复实例级事件流与步骤参数。
     *
     * @returns {Promise<void>} 恢复完成
     */
    hydratePersistedState(): Promise<void>;
    /**
     * 判断当前菜单模型是否存在需要通过 flowModels 持久化的实例事件流。
     *
     * @returns {boolean} 是否需要走 FlowModel 默认保存链路
     */
    hasPersistableInstanceFlows(): boolean;
    serialize(): ReturnType<FlowModel['serialize']>;
    setHidden(value: boolean): void;
    protected renderHiddenInConfig(): React.ReactNode | undefined;
    insertRouteSchema(schema: Record<string, any>): Promise<void>;
    createMenuRoute(route: NocoBaseDesktopRoute, options?: {
        parentId?: string | number;
        refreshAfterMutation?: boolean;
    }): Promise<any>;
    createRouteForInsert(route: NocoBaseDesktopRoute, insertPosition: AdminLayoutMenuInsertPosition, targetRoute?: NocoBaseDesktopRoute): Promise<any>;
    createMenuFromMeta(meta: AdminLayoutMenuCreationMeta, values: AdminLayoutMenuCreationParams): Promise<void>;
    persistMenuCreation(values: AdminLayoutMenuCreationParams): Promise<void>;
    updateMenuRoute(values: Partial<NocoBaseDesktopRoute>): Promise<void>;
    moveMenuRoute(target: string, position: 'beforeBegin' | 'afterEnd' | 'beforeEnd'): Promise<void>;
    saveStepParams(): Promise<boolean>;
    save(): Promise<boolean>;
    destroy(): Promise<boolean>;
    toProLayoutRoute(options: AdminLayoutMenuRouteOptions): AdminLayoutMenuNode | null;
    render(): React.JSX.Element;
}
