import type { CombatActionType, EffectAssetManifest } from './types/effects';
export interface UseCanvasEffectsOptions {
    /** Effect asset manifest (baseUrl + particles + animations) */
    manifest: EffectAssetManifest;
}
export interface UseCanvasEffectsResult {
    /** All effect sprite URLs for preloading via useImageCache */
    effectSpriteUrls: string[];
    /** Spawn a combat effect at the given screen position */
    spawnEffect: (type: CombatActionType, screenX: number, screenY: number) => void;
    /** Draw all active effects — call inside draw() after units, before ctx.restore() */
    drawEffects: (ctx: CanvasRenderingContext2D, animTime: number, getImage: (url: string) => HTMLImageElement | undefined) => void;
    /** Whether there are active effects (keeps RAF alive) */
    hasActiveEffects: boolean;
    /** Screen shake offset to apply to container transform */
    screenShake: {
        x: number;
        y: number;
    };
    /** Screen flash overlay (null = no flash) */
    screenFlash: {
        color: string;
        alpha: number;
    } | null;
}
export declare function useCanvasEffects({ manifest, }: UseCanvasEffectsOptions): UseCanvasEffectsResult;
