import { Service } from '../../providers/service/service';
import { PluginRegistry } from '../plugins';
/**
 * Service that provides access to browser window-related functionality.
 */
export declare class WindowService implements Service {
    /**
     * Returns the current browser window object. The purpose of this encapsulation is to allow for
     * better testability and easier mocking of the window object in unit tests.
     */
    static getWindow(): Window;
    /**
     * Returns the parent window object of the current window. This is useful for accessing properties and methods of the
     * parent window, especially in cases where the current window is an iframe or a child window.
     * @returns The parent window object of the current window, which can be used to access properties and methods of the
     * parent window.
     */
    static getParentWindow(): Window;
    /**
     * Returns the referer of the current document. The referer is the URL of the page that linked to the current page.
     * @returns The referer of the current document, which is the URL of the page that linked to the current page.
     * If the referer is not available or cannot be parsed, it returns the default value '*'.
     */
    static getReferer(): string;
    /**
     * Returns the document object associated with the current window. This method provides a way to access the document
     * object.
     */
    static getDocument(): Document;
    /**
     * Returns the PluginRegistry instance from the global window object. This allows for accessing the plugin registry
     * in a way that can be easily mocked in unit tests.
     * @returns The PluginRegistry instance from the global window object.
     */
    static getPluginRegistry(): PluginRegistry;
    /**
     * Sets the PluginRegistry instance on the global window object.
     * @param pluginRegistry The PluginRegistry instance to set on the global window object.
     */
    static setPluginRegistry(pluginRegistry: PluginRegistry): void;
    /**
     * Returns the Crypto object associated with the current window. This method provides a way to access the Crypto API.
     * @returns The Crypto object from the current window, which provides access to cryptographic functions and secure
     * random number generation.
     */
    static getCrypto(): Crypto;
    /**
     * Reloads the current page. This method provides a way to programmatically trigger a page reload.
     */
    static reloadPage(): void;
    /**
     * Returns the current URL of the browser window. This method provides a way to access the location.href property.
     * @returns The current URL of the browser window, which includes the protocol, hostname, port (if specified), path,
     * query parameters, and hash fragment.
     */
    static getLocationHref(): string;
    /**
     * Sets the current URL of the browser window to the specified href. This method provides a way to change the
     * location.href property.
     * @param href The URL to set as the current location of the browser window. This should be a valid URL string that
     * includes the protocol, hostname, port (if specified), path, query parameters, and hash fragment as needed. Setting
     * this will cause the browser to navigate to the specified URL.
     */
    static setLocationHref(href: string): void;
    /**
     * Returns the query parameters from the current URL of the browser window. This method provides a way to access the
     * location.search property.
     * @returns The query parameters from the current URL of the browser window, which is the part of the URL that comes after
     * the '?' character and includes any key-value pairs representing parameters passed in the URL.
     */
    static getLocationQueryParams(): string;
    /**
     * Returns the hash fragment from the current URL of the browser window. This method provides a way to access the
     * location.hash property.
     * @returns The hash fragment from the current URL of the browser window, which is the part of the URL that comes after
     * the '#' character and is often used to represent a specific section or state within a page.
     */
    static getLocationHash(): string;
    /**
     * Evaluates a media query and returns a MediaQueryList object representing the results of the query.
     * @param query The media query string to evaluate.
     * @returns A MediaQueryList object that can be used to check the results of the media query.
     */
    static matchMedia(query: string): MediaQueryList;
    /**
     * Retrieves the pathname portion of the current URL. This is the part of the URL that comes after the domain and
     * before any query parameters or hash fragments. It is often used to determine the current route or page within a web
     * application.
     * @returns The pathname of the current URL, which represents the path segment that comes after the domain and before
     * any query parameters or hash fragments.
     */
    static getLocationPathname(): string;
    /**
     * Retrieves the origin of the current URL, which includes the protocol, hostname, and port (if specified). The origin
     * is used to determine the base URL of the application and is important for security and cross-origin requests.
     * @returns The origin of the current URL, including the protocol, hostname, and port (if specified).
     */
    static getLocationOrigin(): string;
    /**
     * Retrieves the base href from the `<base>` tag in the document. This is typically used to determine the base path
     * under which the application is deployed, which can be important for constructing URLs and navigating within the
     * application.
     * @returns The base href specified in the `<base>` tag, or '/' if the tag is not present or does not have an href
     * attribute.
     */
    static getBaseHref(): string;
    /**
     * Opens a new browser window or tab with the specified URL and target. The target parameter specifies where to open
     * the URL, such as '_blank' for a new tab, '_self' for the same window, '_parent' for the parent frame, or '_top' for
     * the full body of the window. This method provides a way to programmatically open new windows or tabs while allowing
     * for easier testing and mocking in unit tests.
     * @param url The URL to open in the new window or tab.
     * @param target The target where the URL should be opened, such as '_blank', '_self', '_parent', or '_top'.
     * @param features Optional window features string (e.g. 'noopener,noreferrer')
     */
    static openWindow(url: string, target: string, features?: string): void;
    /**
     * Navigates to the specified URL using the single-spa framework. This method is used to programmatically change the
     * current route within a single-spa application, allowing for seamless navigation without a full page reload. The URL
     * should be a valid route within the single-spa application for the navigation to work correctly.
     * @param url The URL to navigate to within the single-spa application. This should be a valid route that the
     * single-spa application can handle.
     */
    static navigateSingleSpa(url: string): void;
}
