import type { ICanvasLike, EnvType, ICreateCanvasParams, IEnvContribution, IGlobal, CreateDOMParamsType } from '../../../interface';
import type { IBoundsLike } from '@visactor/vutils';
export declare abstract class BaseEnvContribution implements IEnvContribution {
    type: EnvType;
    supportsTouchEvents: boolean;
    supportsPointerEvents: boolean;
    supportsMouseEvents: boolean;
    applyStyles: boolean;
    supportEvent: boolean;
    configure(service: IGlobal, ...p: any): void;
    getNativeAABBBounds(dom: any): IBoundsLike;
    removeDom(dom: HTMLElement): boolean;
    createDom(params: CreateDOMParamsType): any;
    updateDom(dom: HTMLElement, params: CreateDOMParamsType): boolean;
    getDynamicCanvasCount(): number;
    getStaticCanvasCount(): number;
    abstract loadImage(url: string): Promise<{
        loadState: 'success' | 'fail';
        data: HTMLImageElement | ImageData | null;
    }>;
    abstract loadSvg(url: string): Promise<{
        loadState: 'success' | 'fail';
        data: HTMLImageElement | ImageData | null;
    }>;
    abstract createCanvas(params: ICreateCanvasParams): ICanvasLike | any;
    abstract createOffscreenCanvas(params: ICreateCanvasParams): ICanvasLike | any;
    abstract releaseCanvas(canvas: ICanvasLike | string): void;
    abstract getDevicePixelRatio(): number;
    abstract getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;
    abstract getCancelAnimationFrame(): (h: number) => void;
    abstract addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions | undefined): void;
    abstract addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void;
    abstract addEventListener(type: unknown, listener: unknown, options?: unknown): void;
    abstract removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions | undefined): void;
    abstract removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions | undefined): void;
    abstract removeEventListener(type: unknown, listener: unknown, options?: unknown): void;
    abstract dispatchEvent(event: any): boolean;
    getElementById(str: string): HTMLElement | null;
    getRootElement(): HTMLElement | null;
    abstract release(...params: any): void;
    loadJson(url: string): Promise<{
        loadState: 'success' | 'fail';
        data: Record<string, unknown> | null;
    }>;
    loadArrayBuffer(url: string): Promise<{
        loadState: 'success' | 'fail';
        data: ArrayBuffer | null;
    }>;
    loadBlob(url: string): Promise<{
        loadState: 'success' | 'fail';
        data: Blob | null;
    }>;
    getElementTop(dom: any, baseWindow?: boolean): number;
    getElementLeft(dom: any, baseWindow?: boolean): number;
    getElementTopLeft(dom: any, baseWindow?: boolean): {
        top: number;
        left: number;
    };
    loadFont(font: string, source: string | BinaryData, descriptors?: FontFaceDescriptors): Promise<{
        loadState: 'success' | 'fail';
    }>;
    isMacOS(): boolean;
    copyToClipBoard(text: string): Promise<any>;
}
