declare module '@ember/routing/history-location' {
    import EmberObject from "@ember/object";
    import type { default as EmberLocation, UpdateCallback } from "@ember/routing/location";
    /**
      HistoryLocation implements the location API using the browser's
      history.pushState API.

      Using `HistoryLocation` results in URLs that are indistinguishable from a
      standard URL. This relies upon the browser's `history` API.

      Example:

      ```app/router.js
      Router.map(function() {
        this.route('posts', function() {
          this.route('new');
        });
      });

      Router.reopen({
        location: 'history'
      });
      ```

      This will result in a posts.new url of `/posts/new`.

      Keep in mind that your server must serve the Ember app at all the routes you
      define.

      Using `HistoryLocation` will also result in location states being recorded by
      the browser `history` API with the following schema:

      ```
      window.history.state -> { path: '/', uuid: '3552e730-b4a6-46bd-b8bf-d8c3c1a97e0a' }
      ```

      This allows each in-app location state to be tracked uniquely across history
      state changes via the `uuid` field.

      @class HistoryLocation
      @extends EmberObject
      @protected
    */
    export default class HistoryLocation extends EmberObject implements EmberLocation {
        location: Location;
        baseURL: string;
        history?: Window["history"];
        _previousURL?: string;
        _popstateHandler?: EventListener;
        /**
          Will be pre-pended to path upon state change
      
          @property rootURL
          @default '/'
          @private
        */
        rootURL: string;
        /**
          @private
      
          Returns normalized location.hash
      
          @method getHash
        */
        getHash(): string;
        init(): void;
        /**
          Used to set state on first call to setURL
      
          @private
          @method initState
        */
        initState(): void;
        /**
          Returns the current `location.pathname` without `rootURL` or `baseURL`
      
          @private
          @method getURL
          @return url {String}
        */
        getURL(): string;
        /**
          Uses `history.pushState` to update the url without a page reload.
      
          @private
          @method setURL
          @param path {String}
        */
        setURL(path: string): void;
        /**
          Uses `history.replaceState` to update the url without a page reload
          or history modification.
      
          @private
          @method replaceURL
          @param path {String}
        */
        replaceURL(path: string): void;
        /**
         Pushes a new state.
      
         @private
         @method pushState
         @param path {String}
        */
        pushState(path: string): void;
        /**
         Replaces the current state.
      
         @private
         @method replaceState
         @param path {String}
        */
        replaceState(path: string): void;
        /**
          Register a callback to be invoked whenever the browser
          history changes, including using forward and back buttons.
      
          @private
          @method onUpdateURL
          @param callback {Function}
        */
        onUpdateURL(callback: UpdateCallback): void;
        /**
          Formats url to be placed into href attribute.
      
          @private
          @method formatURL
          @param url {String}
          @return formatted url {String}
        */
        formatURL(url: string): string;
        /**
          Cleans up the HistoryLocation event listener.
      
          @private
          @method willDestroy
        */
        willDestroy(): void;
        _removeEventListener(): void;
    }
}