export interface RenderContext { fillStyle: string | CanvasGradient; strokeStyle: string; lineWidth: number; font: string; textAlign: CanvasTextAlign; textBaseline: CanvasTextBaseline; globalAlpha: number; lineDashOffset: number; lineJoin: CanvasLineJoin; lineCap: CanvasLineCap; save(): void; restore(): void; fillRect(x: number, y: number, w: number, h: number): void; strokeRect(x: number, y: number, w: number, h: number): void; clearRect(x: number, y: number, w: number, h: number): void; beginPath(): void; moveTo(x: number, y: number): void; lineTo(x: number, y: number): void; closePath(): void; rect(x: number, y: number, w: number, h: number): void; arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, ccw?: boolean): void; quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; ellipse(x: number, y: number, rx: number, ry: number, rotation: number, startAngle: number, endAngle: number, ccw?: boolean): void; fill(): void; stroke(): void; clip(): void; fillText(text: string, x: number, y: number, maxWidth?: number): void; strokeText(text: string, x: number, y: number, maxWidth?: number): void; measureText(text: string): TextMetrics; setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void; translate(x: number, y: number): void; rotate(angle: number): void; scale(sx: number, sy: number): void; setLineDash(segments: number[]): void; getLineDash(): number[]; createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient; set globalCompositeOperation(op: GlobalCompositeOperation); get globalCompositeOperation(): GlobalCompositeOperation; drawImage(image: CanvasImageSource, dx: number, dy: number): void; drawImage(image: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): void; flush(): void; } /** Thin wrapper over CanvasRenderingContext2D — zero overhead, just delegates */ export declare class Canvas2DRenderContext implements RenderContext { readonly ctx: CanvasRenderingContext2D; constructor(ctx: CanvasRenderingContext2D); get fillStyle(): string | CanvasGradient; set fillStyle(v: string | CanvasGradient); get strokeStyle(): string; set strokeStyle(v: string); get lineWidth(): number; set lineWidth(v: number); get font(): string; set font(v: string); get textAlign(): CanvasTextAlign; set textAlign(v: CanvasTextAlign); get textBaseline(): CanvasTextBaseline; set textBaseline(v: CanvasTextBaseline); get globalAlpha(): number; set globalAlpha(v: number); get lineDashOffset(): number; set lineDashOffset(v: number); get lineJoin(): CanvasLineJoin; set lineJoin(v: CanvasLineJoin); get lineCap(): CanvasLineCap; set lineCap(v: CanvasLineCap); get globalCompositeOperation(): GlobalCompositeOperation; set globalCompositeOperation(v: GlobalCompositeOperation); save(): void; restore(): void; fillRect(x: number, y: number, w: number, h: number): void; strokeRect(x: number, y: number, w: number, h: number): void; clearRect(x: number, y: number, w: number, h: number): void; beginPath(): void; moveTo(x: number, y: number): void; lineTo(x: number, y: number): void; closePath(): void; rect(x: number, y: number, w: number, h: number): void; arc(x: number, y: number, r: number, sa: number, ea: number, ccw?: boolean): void; quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; ellipse(x: number, y: number, rx: number, ry: number, rot: number, sa: number, ea: number, ccw?: boolean): void; fill(): void; stroke(): void; clip(): void; fillText(text: string, x: number, y: number, maxWidth?: number): void; strokeText(text: string, x: number, y: number, maxWidth?: number): void; measureText(text: string): TextMetrics; setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void; translate(x: number, y: number): void; rotate(angle: number): void; scale(sx: number, sy: number): void; setLineDash(segments: number[]): void; getLineDash(): number[]; createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient; drawImage(image: CanvasImageSource, dx: number, dy: number, dw?: number, dh?: number): void; /** No-op for Canvas 2D — drawing is immediate */ flush(): void; }