import { DomRenderConfig } from './configs/DomRenderConfig';
import { ConstructorType } from '@dooboostore/core';
import { RawSet } from './rawsets/RawSet';
import { Router } from '@dooboostore/core-web';
import { EventManager } from './events/EventManager';
export type DomRenderRunConfig<T = any> = Omit<DomRenderConfig<T>, 'router' | 'uuid' | 'eventManager' | 'messenger' | 'root' | 'rootElement'> & {
    routerType?: 'path' | 'hash' | ((obj: T, targetConfig: DomRenderConfig) => Router) | Router;
};
export type CreateComponentParam = {
    type: ConstructorType<any> | any;
    tagName?: string;
    noStrip?: boolean;
    template?: string;
    styles?: string[] | string;
};
export type DomRenderRunParameter<T extends object> = {
    rootObject: T | (() => T);
    target?: Element | null;
    config?: DomRenderRunConfig | DomRenderConfig;
};
export type ExecuteConfig = {
    firstUrl?: string;
};
export declare class DomRender<T extends object = any> {
    private _config;
    private _target;
    private _rootObject;
    private _router;
    private _eventManager;
    constructor(parameter: DomRenderRunParameter<T>, executeConfig?: ExecuteConfig);
    get rootObject(): T;
    get config(): DomRenderConfig;
    get router(): Router;
    get eventManager(): EventManager;
    get target(): Element | null | undefined;
    static run<T extends object>(data: DomRenderRunParameter<T>): T;
    static runSet<T extends object>({ rootObject, target, config }: DomRenderRunParameter<T>, executeConfig?: ExecuteConfig): {
        rootObject: T;
        target?: Element | null;
        config: DomRenderConfig;
    };
    static createComponent(param: CreateComponentParam): import("./configs").TargetElement<any>;
    static createAttribute(attrName: string, getThisObj: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => any, factory: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => DocumentFragment): import("./configs").TargetAttr;
}
//# sourceMappingURL=DomRender.d.ts.map