import { type ComponentInternalInstance, type Ref } from 'vue'; import type { DockviewIDisposable } from 'dockview'; import { VueRendererRegistry } from '../utils'; export interface UseViewComponentReturn { el: Ref; instance: Ref; registry: VueRendererRegistry; } export interface ViewComponentConfig { componentName: string; propertyKeys: readonly (keyof TOptions)[]; createApi: (element: HTMLElement, options: TOptions & TFrameworkOptions) => TApi; createView: (id: string, name: string | undefined, component: any, instance: ComponentInternalInstance, registry: VueRendererRegistry) => TView; extractCoreOptions: (props: TProps) => TOptions; onApiCreated?: (api: TApi) => DockviewIDisposable[]; } export interface UseViewComponentReturn { el: Ref; instance: Ref; registry: VueRendererRegistry; } export declare function useViewComponent): void; layout(width: number, height: number): void; }, TOptions, TProps, TEvents, TView, TFrameworkOptions>(config: ViewComponentConfig, props: TProps, emit: (event: 'ready', payload: { api: TApi; }) => void): UseViewComponentReturn;