/** * 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 type { Database, Transaction } from '@nocobase/database'; export declare const DEFAULT_ADMIN_UI_LAYOUT_UID = "admin-layout-model"; export declare const DEFAULT_MOBILE_UI_LAYOUT_UID = "mobile-layout-model"; export declare const DEFAULT_ADMIN_MULTI_PORTAL_UID = "__default_admin__"; export declare const DEFAULT_MOBILE_MULTI_PORTAL_UID = "__default_mobile__"; export type FlowSurfaceNavigationRequestRoles = readonly string[] | string; export type FlowSurfaceResolvedMultiPortal = { uid: string; title: string; icon?: string | null; routeName?: string; routePath?: string; authCheck?: boolean; enabled: true; layoutUid: string; layoutType?: string; }; export type FlowSurfaceNavigationTarget = { kind: 'layout' | 'portal'; uid: string; title: string; icon?: string | null; layoutUid: string; layoutType?: string; routeName?: string; routePath?: string; authCheck?: boolean; default?: boolean; portalUid?: string; }; export type FlowSurfaceNavigationTargetsResult = { version: '1'; capabilities: { multiPortal: boolean; }; targets: FlowSurfaceNavigationTarget[]; }; type PortalResolveOptions = { actionName: string; path: string; currentRoles?: FlowSurfaceNavigationRequestRoles; transaction?: Transaction; }; export declare class FlowSurfaceNavigationTargetsService { private readonly db; constructor(db: Database); hasMultiPortalCapability(): boolean; hasUiLayoutCapability(): boolean; normalizePortalUid(value: unknown): string; listNavigationTargets(currentRoles?: FlowSurfaceNavigationRequestRoles, transaction?: Transaction): Promise; resolvePortal(portalUidValue: unknown, options: PortalResolveOptions): Promise; readRoutePortalUids(routeId: unknown, transaction?: Transaction): Promise; assertRouteBelongsToPortal(actionName: string, routeId: unknown, portalUid: string, path: string, transaction?: Transaction): Promise; attachRouteTreeToPortals(routeId: unknown, portalUids: string[], options: { portalOnly: boolean; transaction?: Transaction; }): Promise; private listLayoutTargets; private listAccessiblePortalTargets; private canAccessPortal; private collectRouteTreeIds; private removeDefaultLayoutRoutePermissions; private grantDefaultPortalRouteAccess; } export {};