import { IVirtualElement } from "elmer-virtual-dom";
import { IDeclareConnect, IDeclareI18n } from "./IDeclareComponentOptions";
export declare type TypeThemeDefault = {
    default: string;
    themePink: string;
};
export interface IComponent<P = Object, S = Object, C = Object> {
    parent?: HTMLElement;
    domList: any;
    dom: any;
    htmlCode?: string;
    connect?: IDeclareConnect;
    i18nConfig?: IDeclareI18n;
    i18nLocale?: string;
    i18nRegion?: string;
    i18nRootKey?: string;
    i18nData?: any;
    propType?: any;
    props?: P;
    state?: S;
    context?: C;
    model?: any;
    service?: any;
    render(): any;
    insertAdjacentElement(refElement: HTMLElement | Element | Node, newElement: HTMLElement | Element | Node, InsertMethod: string): void;
    checkPropTypes?(checkPropTypesConfig: any): void;
    $contextData?(context: any): void;
    $willReceiveProps?(propData: any, oldProps: any): void;
    $init?(): void;
    $inject?(): void;
    $before?(): void;
    $beforeVirtualRender?(dom?: IVirtualElement): void;
    $beforeDiff?(dom?: IVirtualElement): void;
    $beforeRender?(): boolean;
    $after?(): void;
    $afterVirtualRender?(dom?: IVirtualElement): void;
    $afterDiff?(dom?: IVirtualElement): void;
    $resize?(): void;
    $dispose?(): void;
    $didMount?(): void;
    $didUpdate?(): void;
    $willMount?(): void;
    addEvent?(handle: any, dom: HTMLElement | Element | Node, eventName: string, callBack: Function, options?: AddEventListenerOptions): void;
    animationEnd?(dom: HTMLElement | Element | Node, callBack: Function): void;
    setData(data: object, refresh?: boolean): void;
    setState(data: object, refresh?: boolean): void;
    setTheme<T>(theme: keyof T | keyof TypeThemeDefault, themeConfig?: T): void;
    redirect?(path: string, params?: any): void;
}
export interface IHTMLElementInsertMethod {
    beforeBegin: string;
    afterBegin: string;
    beforeEnd: string;
    afterEnd: string;
}
export declare class HTMLElementInsertMethod implements IHTMLElementInsertMethod {
    afterBegin: string;
    afterEnd: string;
    beforeBegin: string;
    beforeEnd: string;
}
export declare const EnumHTMLElementInsertMethod: HTMLElementInsertMethod;
