import type { Color } from '../core/types';
import { World, System } from '../ecs/World';
import { Camera2D } from './Camera2D';
export interface RenderStats {
    drawCalls: number;
    entities: number;
    particles: number;
    fps: number;
}
export declare class Renderer2D {
    readonly canvas: HTMLCanvasElement;
    readonly ctx: CanvasRenderingContext2D;
    readonly camera: Camera2D;
    private _bgColor;
    private _textures;
    private _stats;
    private _debugDraw;
    private _particles;
    constructor(canvas: HTMLCanvasElement);
    set backgroundColor(c: Color);
    get backgroundColor(): Color;
    set debugDraw(v: boolean);
    get debugDraw(): boolean;
    get stats(): RenderStats;
    loadTexture(id: string, src: string): Promise<void>;
    setTexture(id: string, source: HTMLImageElement | HTMLCanvasElement): void;
    getTexture(id: string): HTMLImageElement | HTMLCanvasElement | undefined;
    resize(width: number, height: number): void;
    render(world: World, interpolation: number): void;
    private drawSprite;
    private drawShape;
    private drawText;
    updateParticles(world: World, dt: number): void;
    private renderParticles;
    private renderDebug;
}
export declare class RenderSystem extends System {
    private renderer;
    constructor(renderer: Renderer2D, priority?: number);
    update(world: World, dt: number): void;
}
