import type { FilterType, ViewTypes } from 'nocodb-sdk' import type { I18n } from 'vue-i18n' import type { Theme as AntTheme } from 'ant-design-vue/es/config-provider' import type { ProjectRole, Role, TabType } from './enums' import type { rolePermissions } from './constants' export interface User { id: string email: string firstname: string | null lastname: string | null roles: Roles | string invite_token?: string project_id?: string } export interface ProjectMetaInfo { Node?: string Arch?: string Platform?: string Docker?: boolean Database?: string ProjectOnRootDB?: string RootDB?: string PackageVersion?: string } export interface Field { order: number show: number | boolean title: string fk_column_id?: string system?: boolean } export type Roles = Record export type Filter = FilterType & { status?: 'update' | 'delete' | 'create'; parentId?: string; readOnly?: boolean } export type NocoI18n = I18n<{}, unknown, unknown, string, false> export interface ThemeConfig extends AntTheme { primaryColor: string accentColor: string } export interface Row { row: Record oldRow: Record rowMeta: { new?: boolean selected?: boolean commentCount?: number changed?: boolean } } type RolePermissions = Omit type GetKeys = T extends Record> ? Key : never export type Permission = RolePermissions[K] extends Record ? GetKeys : never export interface TabItem { type: TabType title: string id?: string viewTitle?: string viewId?: string } export interface SharedViewMeta extends Record { surveyMode?: boolean theme?: Partial allowCSVDownload?: boolean } export interface SharedView { uuid?: string id: string password?: string type?: ViewTypes meta: SharedViewMeta }