/** * 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 { ComponentType, ReactNode } from 'react'; import type { AvailableAction, DataSourceRecord } from './pages/permissions/types'; export type DataSourcePermissionT = (key: string, options?: Record) => string; export interface DataSourcePermissionRole { name: string; title?: string; } export interface DataSourcePermissionTabProps { activeRole?: DataSourcePermissionRole | null; availableActions: AvailableAction[]; dataSource: DataSourceRecord; t: DataSourcePermissionT; } export type ComponentLoader = () => Promise<{ default: ComponentType; }>; export interface DataSourcePermissionTabOptions { key: string; label: ReactNode; componentLoader: ComponentLoader; sort?: number; } export type DataSourcePermissionTabOptionResolver = DataSourcePermissionTabOptions | ((props: DataSourcePermissionTabProps) => DataSourcePermissionTabOptions | null | undefined); export declare class DataSourcePermissionTabRegistry { private readonly permissionTabs; add(options: DataSourcePermissionTabOptionResolver): void; getPermissionTabs(props: DataSourcePermissionTabProps): DataSourcePermissionTabOptions[]; }