import type { Vec2, Rect } from '../core/types'; export interface CameraShake { intensity: number; duration: number; elapsed: number; decay: boolean; } export declare class Camera2D { position: Vec2; zoom: number; rotation: number; private _viewportWidth; private _viewportHeight; private _target; private _smoothing; private _deadzone; private _bounds; private _shake; private _shakeOffset; constructor(viewportWidth: number, viewportHeight: number); get viewportWidth(): number; get viewportHeight(): number; get worldBounds(): Rect; follow(target: Vec2, smoothing?: number, deadzone?: Vec2): void; unfollow(): void; /** Set world boundaries the camera cannot exceed. */ setBounds(bounds: Rect | null): void; shake(intensity: number, duration: number, decay?: boolean): void; /** World position → screen position */ worldToScreen(world: Vec2): Vec2; /** Screen position → world position */ screenToWorld(screen: Vec2): Vec2; /** Check if a world-space rect is visible. */ isVisible(rect: Rect): boolean; resize(width: number, height: number): void; update(dt: number): void; /** Apply camera transform to a Canvas2D context. */ applyTransform(ctx: CanvasRenderingContext2D): void; }