/**
 * useGameAssetEditor.ts — State and logic hook for GameAsset2dEditor
 */
import type { GameAssetProject, SpriteFrame, SpriteAnimation, AnimationState, AnimationParameter, Effect, EditorState, EditorMode, TileMapTool, SpriteSheetTool } from './gameAssetTypes';
export interface UseGameAssetEditorOptions {
    onSave?: (project: GameAssetProject) => void;
    onExport?: (data: string, format: string) => void;
}
export interface GameAssetEditorApi {
    project: GameAssetProject;
    setProject: (project: GameAssetProject) => void;
    newProject: (name: string) => void;
    saveProject: () => void;
    loadProject: (file: File) => Promise<void>;
    editorState: EditorState;
    setMode: (mode: EditorMode) => void;
    setTileMapTool: (tool: TileMapTool) => void;
    setSpriteSheetTool: (tool: SpriteSheetTool) => void;
    setZoom: (zoom: number) => void;
    setPan: (x: number, y: number) => void;
    toggleGrid: () => void;
    toggleCollision: () => void;
    toggleSnap: () => void;
    addTile: (imageData: ImageData, name: string) => void;
    removeTile: (id: string) => void;
    selectTile: (id: string | null) => void;
    importTileSet: (file: File) => Promise<void>;
    createTileMap: (name: string, width: number, height: number) => void;
    removeTileMap: (id: string) => void;
    selectTileMap: (id: string | null) => void;
    setTile: (layerId: string, x: number, y: number, tileId: string | null) => void;
    fillTiles: (layerId: string, x: number, y: number, tileId: string | null) => void;
    addLayer: () => void;
    removeLayer: (id: string) => void;
    selectLayer: (id: string | null) => void;
    toggleLayerVisibility: (id: string) => void;
    setLayerOpacity: (id: string, opacity: number) => void;
    moveLayer: (id: string, direction: 'up' | 'down') => void;
    importSpriteSheet: (file: File) => Promise<void>;
    removeSpriteSheet: (id: string) => void;
    selectSpriteSheet: (id: string | null) => void;
    autoSlice: (frameWidth: number, frameHeight: number) => void;
    detectSprites: () => void;
    addFrame: (frame: Omit<SpriteFrame, 'id'>) => void;
    updateFrame: (id: string, updates: Partial<SpriteFrame>) => void;
    removeFrame: (id: string) => void;
    selectFrames: (ids: string[]) => void;
    createAnimation: (name: string, frameIds: string[]) => void;
    removeAnimation: (id: string) => void;
    updateAnimation: (id: string, updates: Partial<SpriteAnimation>) => void;
    createStateMachine: (name: string) => void;
    removeStateMachine: (id: string) => void;
    selectStateMachine: (id: string | null) => void;
    addState: (name: string, animationId: string) => void;
    removeState: (id: string) => void;
    selectState: (id: string | null) => void;
    updateState: (id: string, updates: Partial<AnimationState>) => void;
    addTransition: (fromId: string, toId: string) => void;
    removeTransition: (id: string) => void;
    addParameter: (name: string, type: AnimationParameter['type']) => void;
    removeParameter: (id: string) => void;
    addEffect: (type: Effect['type']) => void;
    removeEffect: (id: string) => void;
    updateEffect: (id: string, updates: Partial<Effect>) => void;
    toggleEffect: (id: string) => void;
    saveEffectPreset: (name: string) => void;
    loadEffectPreset: (id: string) => void;
    previewEffects: (imageData: ImageData) => ImageData;
    undo: () => void;
    redo: () => void;
    canUndo: boolean;
    canRedo: boolean;
    exportTileMap: (format: 'json' | 'tiled-json' | 'png') => void;
    exportSpriteSheet: (format: 'json' | 'png' | 'atlas') => void;
    exportStateMachine: (format: 'json') => void;
    canvasRef: React.RefObject<HTMLCanvasElement>;
    fileInputRef: React.RefObject<HTMLInputElement>;
}
export declare const useGameAssetEditor: (options?: UseGameAssetEditorOptions) => GameAssetEditorApi;
