import { LayerManager, LayerCollection } from '../../layer/index.js'; import { AudioLayer } from '../../layer/AudioLayer/index.js'; import { CaptionLayer } from '../../layer/CaptionLayer/index.js'; import { CMTrackLayer } from '../../layer/CMTrackLayer/index.js'; import { GroupLayer } from '../../layer/GroupLayer/index.js'; import { ImageLayer } from '../../layer/ImageLayer/index.js'; import { StickerLayer } from '../../layer/StickerLayer/index.js'; import { EffectLayer } from '../../layer/EffectLayer/index.js'; import { TextLayer } from '../../layer/TextLayer/index.js'; import { TrackLayer } from '../../layer/TrackLayer/index.js'; import { VideoLayer } from '../../layer/VideoLayer/index.js'; import { SchemaNode, LayerChildNodeMap } from '../../schema.type.js'; import { LinkedList } from '../../shared/linkList.js'; import { DownloadHandler, UploadHandler, UpdateHandler } from '../AssetsManage/index.js'; import { NameSpaceEngine } from './helper.js'; type LinkedChildLayer = LinkedList; type Options = { transferToAssets?: boolean; download?: DownloadHandler; upload?: UploadHandler; update?: UpdateHandler; }; type Handler = (options?: Options | undefined) => Promise; type AddDep = (handler: Handler) => void; /** * 判断是否有子节点 */ declare const hasNoChildren: (layer: LayerCollection) => layer is AudioLayer | VideoLayer | ImageLayer | CaptionLayer | TextLayer | StickerLayer | EffectLayer; type LayerType = T extends { layerType: keyof LayerChildNodeMap; } ? T['layerType'] : never; type ParseReturnType = LayerType extends keyof LayerChildNodeMap ? LayerChildNodeMap[LayerType] : never; declare abstract class BaseEngine { /** * 根据safeKey获取engine */ getEngineByFullName: (safeKey: string) => NameSpaceEngine; /** * 根据namespace获取engine */ getEngine: (name?: string) => NameSpaceEngine; /** * 根据name获取safeKey */ getSafeKey: (name: string) => string; /** * 根据schema解析layer */ parseSchema: (schema: SchemaNode, layerManager: LayerManager, addDep: AddDep, parent?: LayerCollection | null) => LayerCollection; /** * 根据schema解析layer */ parse(schema: SchemaNode, layerManager: LayerManager, options?: Options): LayerCollection; /** * 根据uuid查找Layer */ getLayerByUuid: (layer: LayerCollection, uuid: string) => LayerCollection | null; parseLayer: (layer: T) => ParseReturnType; /** * 复制Layer */ duplicateLayer: (layer: LayerCollection, parent?: LayerCollection | null) => LayerCollection; /** * 导出prj */ exportProjectToPrj(layer: LayerCollection, fileName?: string): Promise; /** * 获取工程封面 */ getProjectThumb: () => Promise; /** * 释放layer */ releaseLayer: (layer: LayerCollection) => void; getSelectedLayers: (position: { offsetX: number; offsetY: number; }) => LayerCollection[]; getSelectedLayersV2: (position: { offsetX: number; offsetY: number; }) => LayerCollection[]; abstract namespace: string; } export { BaseEngine, hasNoChildren }; export type { LinkedChildLayer, Options };