import type { ImageDocument } from "@core/document"; import type { Angle, Size, Vec2D } from "@core/geometry"; import type { ArtboardId, AssetId, LayerId } from "@core/id"; import type { ToolState } from "./tools"; import type { TransformSession } from "./transform"; export type ViewportState = { center: Vec2D; zoom: number; rotation: Angle; size: Size; }; export type SelectionState = { artboardId?: ArtboardId; layerIds: LayerId[]; }; export type MaskViewMode = "composite" | "blackWhite" | "alpha" | "overlay"; export type MaskEditState = { targetLayerId: LayerId; maskLayerId: LayerId; viewMode?: MaskViewMode; }; export type BrushPreviewState = { position: Vec2D; }; export type BrushStrokePreviewState = { layerId: LayerId; assetId: AssetId; source: string; }; export type EditorState = { viewport: ViewportState; selection: SelectionState; tools: ToolState; transformSession?: TransformSession; maskEdit?: MaskEditState; brushPreview?: BrushPreviewState; brushStrokePreview?: BrushStrokePreviewState; }; export type HistorySnapshot = { document: ImageDocument; editor: EditorState; }; export type HistoryState = { past: HistorySnapshot[]; future: HistorySnapshot[]; }; export type AppState = { document: ImageDocument; editor: EditorState; history: HistoryState; };