import type { IRouterLocation } from './IRouterLocation';
import type { ILocationStrategy } from './Strategies/ILocationStrategy';
/**
 * Provides an abstraction over `window.location` that automatically adapts
 * to the currently active routing strategy (hash vs. path-based routing).
 *
 * This class delegates all URL access and manipulation to the underlying
 * `ILocationStrategy`, keeping it free of `if (useHash)` branching.
 *
 * @example
 * const strategy = new HashLocationStrategy();
 * const location = new RouterLocation(strategy);
 * const path = location.pathname;
 * const query = location.search;
 *
 * @public
 */
export declare class RouterLocation implements IRouterLocation {
    /**
     * The location strategy that handles URL reading and manipulation.
     */
    private readonly _strategy;
    /**
     * Constructs a new instance of the `RouterLocation` class.
     *
     * @param strategy - The location strategy to delegate to.
     */
    constructor(strategy: ILocationStrategy);
    /**
     * Gets the current full document location URL.
     */
    get href(): string;
    /**
     * Gets the normalized pathname of the application route.
     */
    get pathname(): string;
    /**
     * Gets the normalized search string (query parameters) for the current route.
     */
    get search(): string;
    /**
     * Gets the app-level route, which combines `pathname` and `search`.
     */
    get route(): string;
    /**
     * Gets the application-level fragment/hash.
     */
    get hash(): string;
    /**
     * Gets the hostname (e.g. "localhost").
     */
    get hostname(): string;
    /**
     * Gets the full origin (e.g. "http://localhost:8080").
     */
    get origin(): string;
    /**
     * Gets the host (hostname + port).
     */
    get host(): string;
    /**
     * Gets the port number (e.g. "8080").
     */
    get port(): string;
    /**
     * Gets the protocol used (e.g. "http:").
     */
    get protocol(): string;
    /**
     * Navigates programmatically to a new route.
     *
     * @param path - The route path to navigate to.
     */
    navigate(path: string): void;
    /**
     * Returns the value of a query parameter from the current route URL.
     *
     * @param name - The parameter name.
     * @returns The parameter value, or `null` if not present.
     */
    getSearchParam(name: string): string | null;
    /**
     * Sets a query parameter on the current route URL without triggering navigation.
     *
     * @param name  - The parameter name.
     * @param value - The parameter value.
     */
    setSearchParam(name: string, value: string): void;
    /**
     * Removes a query parameter from the current route URL without triggering navigation.
     *
     * @param name - The parameter name to remove.
     */
    deleteSearchParam(name: string): void;
}
/**
 * Service locator for accessing the current `RouterLocation` instance globally.
 * Intended for use in scenarios where dependency injection is not available.
 *
 * @example
 * const currentPath = RouterLocationServiceLocator.current.pathname;
 *
 * @public
 */
export declare class RouterLocationServiceLocator {
    /**
     * Internal storage for the registered location instance.
     */
    private static _current;
    /**
     * Gets the globally registered `RouterLocation` instance.
     * Throws an error if not set.
     */
    static get current(): RouterLocation;
    /**
     * Returns whether a `RouterLocation` instance is registered.
     */
    static isSet(): boolean;
    /**
     * Registers the current `RouterLocation` instance.
     *
     * @param current - The location instance to register globally.
     */
    static set(current: RouterLocation): void;
}
//# sourceMappingURL=RouterLocation.d.ts.map