import { Component } from 'vue'; export interface TreeNode { id: string; name: string; icon?: string; children: TreeNode[]; } export interface BlockData { id: string; name: string; data: T; } export interface BlockProps { blockId: string; data?: T, onUpdate?: (b?: BlockData) => void; onPrependBlock?: (b?: BlockData) => void; onAppendBlock?: (b?: BlockData) => void; onRemoveSelf?: () => void; onActivateNext?: () => void; onActivatePrevious?: () => void; } export interface BlockDefinition { name: string; icon?: string; getDefaultData: T; edit: Component>; display: Component>; } export interface BlockLibrary { [name: string]: BlockDefinition; }