#import 
#import 
#import 
#import 
#import 
typedef (CanvasRenderingContext2D or WebGLRenderingContext or WebGL2RenderingContext) RenderingContext;
// https://html.spec.whatwg.org/multipage/semantics.html#htmlcanvaselement
[Exposed=Window]
interface HTMLCanvasElement : HTMLElement {
    [HTMLConstructor] constructor();
    [CEReactions] attribute unsigned long width;
    [CEReactions] attribute unsigned long height;
    RenderingContext? getContext(DOMString contextId, optional any options = null);
    USVString toDataURL(optional DOMString type = "image/png", optional any quality);
    undefined toBlob(BlobCallback _callback, optional DOMString type = "image/png", optional any quality);
};
callback BlobCallback = undefined (Blob? blob);