export interface ExtensionManifest {
  id: string
  title: string
  subTitle: string
  description: string
  entry: string
  version: string
  iconUrl: string
  publisher: {
    name: string
    email: string
    url: string
    icon?: {
      src: string
      width?: number
      height?: number
    }
  }
  links: {
    title: string
    href: string
  }[]
  config: {
    modalSize?: 'xs' | 'sm' | 'md' | 'lg' | 'fullscreen' | 'extensionFullscreen'
    contentMinHeight?: string
  }
  order: number
  disabled?: boolean
  type: 'extension'
  /**
   * `beta` used for extension visibility.
   */
  beta?: boolean
  onPrem?: boolean
  /**
   * The minimum access role required to access the extension.
   * @default 'creator'
   */
  minAccessRole?: 'owner' | 'creator' | 'editor' | 'commenter' | 'viewer'
  /**
   * `showAsBeta` released as a beta extension.
   * We will add beta tab in market, details and extension places.
   */
  showAsBeta?: boolean
}

export interface ScriptManifest {
  id: string
  title: string
  subTitle: string
  description: string
  entry: string
  version: string
  iconUrl: string
  publisher: {
    name: string
    email: string
    url: string
    icon?: {
      src: string
      width?: number
      height?: number
    }
  }
  links: {
    title: string
    href: string
  }[]
  order: number
  disabled?: boolean
  type: 'script'
  beta?: boolean
  onPrem?: boolean
}

export type PluginManifest = ExtensionManifest | ScriptManifest

export interface ExtensionConfigInjType {
  activeExtensionId?: string
  isPageDesignerPreviewPanel?: boolean
  [key: string]: any
}
