import { ElmerAnimation, TypeElmerAnimationType } from "../animation/ElmerAnimation";
import { TypeAnimationProperty } from "../animation/ElmerAnimationProperty";
import { ElmerDomQuery } from "./ElmerDomQuery";
declare type TypeAnimationOption = {
    type: TypeElmerAnimationType;
    from?: TypeAnimationProperty;
    to: TypeAnimationProperty;
    duration: number;
    beginTime?: number;
    dom: HTMLElement;
    optionA?: number;
    optionP?: number;
    optionS?: number;
    onStart?(): void;
    onFinish?(): void;
};
declare type TypeAnimationOptions = {
    duration: number;
    beginTime?: number;
    options: TypeAnimationOption[];
    onStart?(): void;
    onFinish?(): void;
};
declare type TypeAnimationParam = {
    [P in Exclude<keyof TypeAnimationOptions, "options">]?: TypeAnimationOptions[P];
} & {
    type?: TypeElmerAnimationType;
};
declare type TypeShowAnimationParam = TypeAnimationParam & {
    display?: string;
};
export interface IElmerDOM {
    supportCss3: boolean;
    attr(dom: HTMLElement | Node | Element, attrName: any, attrValue?: any): any;
    addClass(dom: HTMLElement | NodeList, className: String): void;
    byId(id: string, dom?: HTMLElement | null): Element | HTMLElement;
    contains(parent: HTMLElement | Element | Node, node: HTMLElement | Element | Node): Function;
    css(dom: NodeList | HTMLElement, key: any, value?: string | number): void;
    query(queryString: string, dom?: HTMLElement | Node): NodeList;
    width(dom: HTMLElement): number;
    height(dom: HTMLElement): number;
    on(dom: HTMLElement | NodeList, eventName: string, callBack: Function): void;
    removeClass(dom: HTMLElement | NodeList, className: string): void;
    removeEvent(dom: HTMLElement | NodeList, eventName: String, callBack?: Function): void;
    support(key: string): boolean;
}
export interface IElmerDOMEvent {
    eventName: string;
    handler: Function;
    listener?: EventListenerObject;
}
export declare class ElmerDOM extends ElmerDomQuery {
    bindEvents: string[];
    supportCss3: boolean;
    contains: Function;
    listener: any[];
    private eventObj;
    private mDomModel;
    constructor();
    support(key: string): boolean;
    byId(id: string, dom?: HTMLElement | Element | null): Element | HTMLElement | null;
    query(queryString: string, dom?: HTMLElement | null): NodeList;
    width(dom: HTMLElement): number;
    height(dom: HTMLElement): number;
    css(dom: NodeList | HTMLElement | HTMLElement[], key: any, value?: string | number): void;
    setCss(dom: HTMLElement, key: any, value?: string | number): void;
    setCss3(dom: HTMLElement, key: string, value?: string | number): void;
    getCss3(key: string, value: string): string;
    hasClass(dom: HTMLElement, className: string): boolean;
    attr(dom: HTMLElement | Node | Element, attrName: any, attrValue?: any): any;
    addClass(dom: HTMLElement | NodeList | HTMLElement[], className: string): void;
    removeClass(dom: HTMLElement | NodeList | HTMLElement[], className: string): void;
    on(dom: any | HTMLElement, eventName: string, callBack: Function, options?: AddEventListenerOptions): void;
    addEvent(dom: any | HTMLElement, eventName: string, callBack: Function, options?: AddEventListenerOptions): void;
    removeEvent(dom: any | HTMLElement, eventName: string, callBack: Function, options?: any): void;
    unbind(dom: HTMLElement): void;
    getMaxWidth(domList: HTMLElement[] | NodeList): number;
    find(dom: HTMLElement, selector: string): HTMLElement[];
    animation(options: TypeAnimationOption): ElmerAnimation;
    animations(animationData: TypeAnimationOptions): ElmerAnimation;
    show(dom: HTMLElement, options?: TypeAnimationParam): void;
    hide(dom: HTMLElement, options?: TypeAnimationParam): void;
    slideIn(dom: HTMLElement, options?: TypeShowAnimationParam): void;
    slideOut(dom: HTMLElement, options?: TypeShowAnimationParam): void;
    private onAnimationChange;
    private queryInDom;
    private getElementsBySelectValue;
    private getNextSilbingElement;
    private matchQueryNode;
    private updateDomClassName;
}
export {};
