import type { IsometricTile, IsometricUnit, IsometricFeature } from '../../types/isometric';
export interface GameCanvas3DEventConfig {
    /** Event name for tile clicks */
    tileClickEvent?: string;
    /** Event name for unit clicks */
    unitClickEvent?: string;
    /** Event name for feature clicks */
    featureClickEvent?: string;
    /** Event name for canvas clicks */
    canvasClickEvent?: string;
    /** Event name for tile hover */
    tileHoverEvent?: string;
    /** Event name for tile leave */
    tileLeaveEvent?: string;
    /** Event name for unit animation changes */
    unitAnimationEvent?: string;
    /** Event name for camera changes */
    cameraChangeEvent?: string;
}
/** Minimal mouse event interface — satisfied by both React.MouseEvent and ThreeEvent<MouseEvent> */
export interface MinimalMouseEvent {
    clientX: number;
    clientY: number;
    button: number;
}
export interface UseGameCanvas3DEventsOptions extends GameCanvas3DEventConfig {
    /** Callback for tile clicks (direct) */
    onTileClick?: (tile: IsometricTile, event: React.MouseEvent) => void;
    /** Callback for unit clicks (direct) */
    onUnitClick?: (unit: IsometricUnit, event: React.MouseEvent) => void;
    /** Callback for feature clicks (direct) */
    onFeatureClick?: (feature: IsometricFeature, event: React.MouseEvent) => void;
    /** Callback for canvas clicks (direct) */
    onCanvasClick?: (event: React.MouseEvent) => void;
    /** Callback for tile hover (direct) */
    onTileHover?: (tile: IsometricTile | null, event: React.MouseEvent) => void;
    /** Callback for unit animation changes (direct) */
    onUnitAnimation?: (unitId: string, state: string) => void;
}
export interface UseGameCanvas3DEventsReturn {
    /** Handle tile click - emits event and calls callback */
    handleTileClick: (tile: IsometricTile, event: React.MouseEvent) => void;
    /** Handle unit click - emits event and calls callback */
    handleUnitClick: (unit: IsometricUnit, event: React.MouseEvent) => void;
    /** Handle feature click - emits event and calls callback */
    handleFeatureClick: (feature: IsometricFeature, event: React.MouseEvent) => void;
    /** Handle canvas click - emits event and calls callback */
    handleCanvasClick: (event: MinimalMouseEvent) => void;
    /** Handle tile hover - emits event and calls callback */
    handleTileHover: (tile: IsometricTile | null, event: React.MouseEvent) => void;
    /** Handle unit animation - emits event and calls callback */
    handleUnitAnimation: (unitId: string, state: string) => void;
    /** Handle camera change - emits event */
    handleCameraChange: (position: {
        x: number;
        y: number;
        z: number;
    }) => void;
}
/**
 * Hook for integrating GameCanvas3D with the event bus
 *
 * Supports both declarative event props (tileClickEvent) and
 * direct callback props (onTileClick).
 *
 * @example
 * ```tsx
 * const events = useGameCanvas3DEvents({
 *     tileClickEvent: 'TILE_SELECTED',
 *     unitClickEvent: 'UNIT_SELECTED',
 *     onTileClick: (tile) => console.log('Tile:', tile)
 * });
 *
 * // In component:
 * <TileRenderer onTileClick={events.handleTileClick} />
 * ```
 */
export declare function useGameCanvas3DEvents(options: UseGameCanvas3DEventsOptions): UseGameCanvas3DEventsReturn;
export default useGameCanvas3DEvents;
