import { CanvasBase } from './common';
import { DOMMatrix } from '../Canvas2D';
import { CanvasRenderingContext2D } from '../Canvas2D/CanvasRenderingContext2D';
import { WebGLRenderingContext } from '../WebGL/WebGLRenderingContext';
import { WebGL2RenderingContext } from '../WebGL2/WebGL2RenderingContext';
import { ImageSource } from '@nativescript/core';
import { GPUCanvasContext } from '../WebGPU';
export declare function createSVGMatrix(): DOMMatrix;
export declare class Canvas extends CanvasBase {
    private _2dContext;
    private _webglContext;
    private _webgl2Context;
    private _gpuContext;
    private _canvas;
    private _didPause;
    private _isReady;
    private _readyListener;
    private _contextType;
    private _is2D;
    private _isBatch;
    _didLayout: boolean;
    static useSurface: boolean;
    _renderer: any;
    constructor(nativeInstance?: any);
    get ios(): any;
    get clientWidth(): number;
    get clientHeight(): number;
    get drawingBufferHeight(): any;
    get drawingBufferWidth(): any;
    get width(): number;
    set width(value: number);
    get height(): number;
    set height(value: number);
    private _iosOverflowSafeArea;
    get iosOverflowSafeArea(): boolean;
    set iosOverflowSafeArea(value: boolean);
    static createCustomView(): Canvas;
    onLayout(left: number, top: number, right: number, bottom: number): void;
    onMeasure(widthMeasureSpec: number, heightMeasureSpec: number): void;
    createNativeView(): any;
    disposeNativeView(): void;
    _setNativeViewFrame(nativeView: any, frame: CGRect): void;
    getContext(type: string, options?: any): CanvasRenderingContext2D | WebGLRenderingContext | WebGL2RenderingContext | GPUCanvasContext | null;
    get __native__context(): any;
    get native(): any;
    toDataURL(type?: string, encoderOptions?: number): any;
    snapshot(flip?: boolean): ImageSource | null;
    private _jsBuffer;
    private get _boundingClientRect();
    getBoundingClientRect(): {
        x: number;
        y: number;
        width: number;
        height: number;
        top: number;
        right: number;
        bottom: number;
        left: number;
    };
}
