import { NodeDataCombined } from './data'; export declare enum ProposedChangeType { PROPOSE_NEW_NODE = "proposeNewNode", PROPOSE_NEW_BEHAVIOR = "proposeNewBehavior", PROPOSE_ENTITY_PROPERTY_CHANGE = "proposeEntityPropertyChange", MOVE_NODE = "moveNode", DELETE_NODE = "deleteNode", DELETE_BEHAVIOR = "deleteBehavior", PROPOSE_NEW_LAYER = "proposeNewLayer", PROPOSE_DELETE_LAYER = "proposeDeleteLayer", PROPOSE_NEW_CLIP = "proposeNewClip", PROPOSE_ADD_CLIP_TO_LAYER = "proposeAddClipToLayer", PROPOSE_DELETE_LAYER_CLIP = "proposeDeleteLayerClip", PROPOSE_ADD_PROPERTY_TRACK = "proposeAddPropertyTrack", PROPOSE_ADD_OR_MODIFY_KEYFRAMES = "proposeAddOrModifyKeyframes", PROPOSE_DELETE_KEYFRAME = "proposeDeleteKeyframe", PROPOSE_MODIFY_LAYER_CLIP = "proposeModifyLayerClip", PROPOSE_MODIFY_CLIP = "proposeModifyClip", PROPOSE_CHANGE_ENTITY_LABEL = "proposeChangeEntityLabel" } export interface BaseProposedChange { name: ProposedChangeType; } export interface ProposeNewNode extends BaseProposedChange { name: ProposedChangeType.PROPOSE_NEW_NODE; data: NodeDataCombined; } export interface ProposeNewBehavior extends BaseProposedChange { name: ProposedChangeType.PROPOSE_NEW_BEHAVIOR; id: string; label: string; parentID: string; parentIndex: number; type: string; } export interface ProposeMoveNode extends BaseProposedChange { name: ProposedChangeType.MOVE_NODE; nodeID: string; newParentID: string; newParentIndex: number; } export interface ProposeDeleteNode extends BaseProposedChange { name: ProposedChangeType.DELETE_NODE; nodeID: string; } export interface ProposeDeleteBehavior extends BaseProposedChange { name: ProposedChangeType.DELETE_BEHAVIOR; behaviorID: string; } export interface ProposeEntityPropertyChange extends BaseProposedChange { name: ProposedChangeType.PROPOSE_ENTITY_PROPERTY_CHANGE; id: string; property: string; value: any; isConstructorProperty: boolean; } export interface ProposeNewLayer extends BaseProposedChange { name: ProposedChangeType.PROPOSE_NEW_LAYER; id: string; label: string; } export interface ProposeDeleteLayer extends BaseProposedChange { name: ProposedChangeType.PROPOSE_DELETE_LAYER; id: string; } export interface ProposeNewClip extends BaseProposedChange { name: ProposedChangeType.PROPOSE_NEW_CLIP; id: string; label: string; isState: boolean; length?: number; addToLayerID?: string; } export interface ProposeAddClipToLayer extends BaseProposedChange { name: ProposedChangeType.PROPOSE_ADD_CLIP_TO_LAYER; id: string; clipID: string; layerID: string; setAsDefault?: boolean; loop?: boolean; playAtStart?: boolean; } export interface ProposeDeleteLayerClip extends BaseProposedChange { name: ProposedChangeType.PROPOSE_DELETE_LAYER_CLIP; layerID: string; layerClipID: string; } export interface ProposeAddPropertyTrack extends BaseProposedChange { id: string; name: ProposedChangeType.PROPOSE_ADD_PROPERTY_TRACK; clipID: string; entityID: string; property: string; defaultKeyframe?: Keyframe; } export interface ProposeAddOrModifyKeyframes extends BaseProposedChange { name: ProposedChangeType.PROPOSE_ADD_OR_MODIFY_KEYFRAMES; clipID: string; trackID: string; keyframes: { id: string; value: any; time: number; easing?: string; }[]; } export interface ProposeDeleteKeyframe extends BaseProposedChange { name: ProposedChangeType.PROPOSE_DELETE_KEYFRAME; clipID: string; trackID: string; keyframeID: string; } export interface ProposeModifyLayerClip extends BaseProposedChange { name: ProposedChangeType.PROPOSE_MODIFY_LAYER_CLIP; layerClipID: string; layerID: string; setAsDefault?: boolean; loop?: boolean; playAtStart?: boolean; } export interface ProposeModifyClip extends BaseProposedChange { name: ProposedChangeType.PROPOSE_MODIFY_CLIP; clipID: string; length?: number; } export interface ProposeChangeEntityLabel extends BaseProposedChange { name: ProposedChangeType.PROPOSE_CHANGE_ENTITY_LABEL; id: string; label: string; } export type ProposedChange = ProposeNewNode | ProposeNewBehavior | ProposeEntityPropertyChange | ProposeMoveNode | ProposeDeleteNode | ProposeDeleteBehavior | ProposeNewLayer | ProposeDeleteLayer | ProposeNewClip | ProposeModifyClip | ProposeAddClipToLayer | ProposeDeleteLayerClip | ProposeAddPropertyTrack | ProposeAddOrModifyKeyframes | ProposeDeleteKeyframe | ProposeModifyLayerClip | ProposeChangeEntityLabel;