import { ComponentInternalInstance, ComponentPublicInstance } from 'vue';

export interface WxsElement extends HTMLElement {
    __id?: number;
    __ownerId?: number;
    __wxsVm?: ComponentDescriptorVm;
    __wxsStyle: Record<string, string | number>;
    __wxsAddClass: string[];
    __wxsRemoveClass: string[];
    __wxsState: Record<string, any>;
    __wxsClassChanged: boolean;
    __wxsStyleChanged: boolean;
    __vueParentComponent?: ComponentInternalInstance;
    __wxsComponentDescriptor?: ComponentDescriptor;
}
export interface ComponentDescriptorVm {
    ownerId?: number;
    $el: WxsElement;
    $emit: (event: string, ...args: any[]) => void;
    $forceUpdate: any;
}
export declare class ComponentDescriptor {
    private $vm;
    private $el;
    private $bindClass;
    private $bindStyle;
    constructor(vm: ComponentDescriptorVm);
    selectComponent(selector: string): ComponentDescriptor | undefined;
    selectAllComponents(selector: string): ComponentDescriptor[];
    forceUpdate(type: 'class' | 'style'): void;
    updateWxsClass(): void;
    updateWxsStyle(): void;
    setStyle(style: string | Record<string, string | number>): this;
    addClass(clazz: string): this;
    removeClass(clazz: string): this;
    hasClass(cls: string): boolean;
    getDataset(): DOMStringMap;
    callMethod(funcName: string, args?: {}): void;
    requestAnimationFrame(callback: FrameRequestCallback): number;
    getState(): Record<string, any>;
    triggerEvent(eventName: string, detail?: {}): this;
    getComputedStyle(names?: string[]): Record<string, any> | CSSStyleDeclaration;
    setTimeout(handler: TimerHandler, timeout?: number): number;
    clearTimeout(handle?: number): void;
    getBoundingClientRect(): DOMRect;
}
export declare function getComponentDescriptor(instance: ComponentDescriptorVm | ComponentPublicInstance, isOwnerInstance: boolean): ComponentDescriptor | undefined;
export declare function wrapperH5WxsEvent(event: Record<string, any>, eventValue?: Function, instance?: ComponentInternalInstance | null, checkArgsLength?: boolean): (Record<string, any> | ComponentDescriptor | undefined)[] | undefined;
export declare function createComponentDescriptorVm(el: WxsElement): ComponentDescriptorVm;
