import { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';
import ToURLSearchParamsParams = ConvertUtils.ToURLSearchParamsParams;
export type RouteData = {
    path: string;
    url: string;
    data?: any;
    searchParams: URLSearchParams;
    pathData?: any;
    router: Router;
};
export type RouterConfig<T = any> = {
    rootObject?: T;
    window: Window;
    disableAttach?: boolean;
};
export type RouteAction = string | {
    path?: string;
    searchParams?: ToURLSearchParamsParams;
};
export declare abstract class Router<T = any> {
    private changeCallbacks;
    private _config;
    get searchParamObject(): {
        [key: string]: string | string[];
    };
    get config(): RouterConfig<T>;
    constructor(config: RouterConfig<any>);
    getSearchFirstParamsObject<T = any>(defaultValue?: T): T & import("@dooboostore/core/types").FieldType<T, string>;
    getHashSearchFirstParamsObject<T = any>(): import("@dooboostore/core/types").FieldType<T, string>;
    addChangeCallback(callback: (routeData: RouteData) => void): void;
    attach(): Promise<void>;
    testRegexp(regexp: string): boolean;
    test(urlExpression: string): boolean;
    getRouteData(urlExpression?: string): RouteData;
    pushState(data: any, title: string, path: string): void;
    replaceState(data: any, title: string, path: string): void;
    dispatchPopStateEvent(): void;
    reload(): void;
    getData(): any;
    getPathData(urlExpression: string, currentUrl?: string): any;
    go(config: {
        path: RouteAction;
        data?: any;
        replace?: boolean;
        title?: string;
        disabledPopEvent?: boolean;
    } | string): Promise<void>;
    toUrl(data: RouteAction): string;
    abstract push(path: RouteAction, data?: any, title?: string): void;
    abstract replace(path: RouteAction, data?: any, title?: string): void;
    abstract pushDeleteSearchParam(name: string | string[], data?: any, title?: string): void;
    abstract pushDeleteHashSearchParam(name: string | string[], data?: any, title?: string): void;
    abstract pushAddSearchParam(params: [[string, string]], data?: any, title?: string): void;
    abstract replaceDeleteSearchParam(name: string | string[], data?: any, title?: string): void;
    abstract replaceDeleteHashSearchParam(name: string | string[], data?: any, title?: string): void;
    abstract replaceAddSearchParam(params: [[string, string]], data?: any, title?: string): void;
    abstract getSearchParams(data?: {
        delete?: string[];
        append?: [[string, string]];
    }): URLSearchParams;
    abstract getHashSearchParams(data?: {
        delete?: string[];
        append?: [[string, string]];
    }): URLSearchParams;
    abstract getUrl(): string;
    abstract getPath(): string;
}
//# sourceMappingURL=Router.d.ts.map