import { LinkedList, LinkedNode } from '../../shared/linkList.js'; import Base, { BaseLayerProps } from '../BaseLayer/index.js'; import { GroupLayer } from '../GroupLayer/index.js'; import { ElementType } from '../type.js'; type Range = { start: number; end: number; }; type CMTrackLayerProps = { uuid?: string; audioGain?: number; trackType: string; layerId?: number; trimRange?: Range; } & BaseLayerProps; interface CMTrackLayerType { /** * 轨道类型 */ trackType: string; /** * 轨道中的元素 */ children: LinkedList; /** * 轨道总时长 */ daration: number; /** * 父容器 */ parent: GroupLayer; /** * 获取轨道的元素 */ getElement(uuid: string): LinkedNode | null; /** * 插入元素到轨道 插入index前 * @param type 元素类型 */ insertElement(element: ElementType, index: number): void; pushElement(element: ElementType): void; /** * 删除元素 * @param uuid 元素唯一标识 */ deleteElement(uuid: string): void; /** * 移动元素 * @param uuid 源元素唯一标识 * @param toIndex 目标索引 */ moveElement(uuid: string, toIndex: number): void; /** * 设置引擎合成 */ setComp(): void; /** * 设置引擎裁剪 */ setTrimRange(range: Range, callBack?: () => void): void; /** * 恢复默认裁剪 */ resetTrimRange(callBack?: () => void): void; } declare class CMTrackLayer extends Base implements CMTrackLayerType { trackType: string; children: LinkedList; daration: number; parent: GroupLayer; trimRange: Range | undefined; constructor(namespace: string, props: CMTrackLayerProps); setComp(): void; /** * 设置裁剪范围 */ setTrimRange(range: Range): void; /** * 恢复默认裁剪 */ resetTrimRange(): void; getElement(uuid: any): LinkedNode | null; insertElement(element: ElementType, index: number): void; pushElement(element: ElementType): void; deleteElement(uuid: string): void; moveElement(uuid: string, toIndex: number): void; removeAll(): void; /** * 获取草稿 */ getLayerDraft(): CMTrackLayerProps; duplicate(): CMTrackLayer; } export { CMTrackLayer }; export type { CMTrackLayerProps, CMTrackLayerType };