declare type StringMap = { [k: string]: T; }; export interface PlaybackMetaType { expect?: StringMap; provide?: StringMap; all?: boolean; isvoid?: boolean; children?: string[]; update?: string; } export interface CompiledCode { js?: string; scrub?: any; meta?: PlaybackMetaType; } interface MMap { [key: string]: T; } export interface BlockSourceInfo extends CompiledCode { compiled?: MMap; } export interface BlockType extends BlockSourceInfo { id: string; name: string; source: string; sources?: StringMap; } export interface UIPosType { x: number; y: number; } export interface UINodeSize { cacheName: string; w: number; h: number; tx: number; ty: number; wd: number; wu: number; ds: number; hasExtra: boolean; us: number; wde: number; } export interface SlotFlagType { free?: boolean; incompatible?: boolean; detached?: boolean; } export interface UISlotType { pos: UIPosType; idx: number; flags: SlotFlagType; path: string; click: string; plus: string; } export interface UIArrowType { path: string; click: string; class: { open?: boolean; closed?: boolean; arrow: boolean; }; } export interface UINodeType { type?: string; name: string; id: string; parent: string; size: UINodeSize; pos: UIPosType; sextra: number[]; className: string; invalid?: boolean; closed?: boolean; path: string; invalidPath?: string; slots: UISlotType[]; slotIdx: number; arrow: UIArrowType; } export interface UIDropType { blockId: string; slotId: number; } export {};