chromium/chrome/browser/resources/lens/overlay/paint_api.d.ts

// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// API: https://drafts.css-houdini.org/css-paint-api-1/

declare namespace CSS {
  namespace paintWorklet {
    export function addModule(url: string): void;
  }
}

declare class PaintWorkletGlobalScope {
  registerPaint(name: string, paintCtor: PaintInstanceConstructor): void;
  readonly devicePixelRatio: number;
}

declare function registerPaint(
    name: string, paintCtor: PaintInstanceConstructor): void;


declare class PaintSize {
  readonly width: number;
  readonly height: number;
}

interface PaintInstanceConstructor {
  new(): {
    paint(
        ctx: PaintRenderingContext2D,
        size: PaintSize,
        properties: StylePropertyMapReadOnly,
        ): void,
  };
}

interface PaintRenderingContext2D extends CanvasState, CanvasTransform,
                                          CanvasCompositing,
                                          CanvasImageSmoothing,
                                          CanvasFillStrokeStyles,
                                          CanvasShadowStyles, CanvasRect,
                                          CanvasDrawPath, CanvasDrawImage,
                                          CanvasPathDrawingStyles, CanvasPath {}