declare module '@ember/routing/hash-location' { import EmberObject from '@ember/object'; import type { default as EmberLocation, UpdateCallback } from '@ember/routing/location'; /** @module @ember/routing/hash-location */ /** `HashLocation` implements the location API using the browser's hash. At present, it relies on a `hashchange` event existing in the browser. Using `HashLocation` results in URLs with a `#` (hash sign) separating the server side URL portion of the URL from the portion that is used by Ember. Example: ```app/router.js Router.map(function() { this.route('posts', function() { this.route('new'); }); }); Router.reopen({ location: 'hash' }); ``` This will result in a posts.new url of `/#/posts/new`. @class HashLocation @extends EmberObject @protected */ export default class HashLocation extends EmberObject implements EmberLocation { _hashchangeHandler?: EventListener; private _location?; location: Location; init(): void; /** @private Returns normalized location.hash @since 1.5.1 @method getHash */ getHash(): string; /** Returns the normalized URL, constructed from `location.hash`. e.g. `#/foo` => `/foo` as well as `#/foo#bar` => `/foo#bar`. By convention, hashed paths must begin with a forward slash, otherwise they are not treated as a path so we can distinguish intent. @private @method getURL */ getURL(): string; /** Set the `location.hash` and remembers what was set. This prevents `onUpdateURL` callbacks from triggering when the hash was set by `HashLocation`. @private @method setURL @param path {String} */ setURL(path: string): void; /** Uses location.replace to update the url without a page reload or history modification. @private @method replaceURL @param path {String} */ replaceURL(path: string): void; lastSetURL: string | null; /** Register a callback to be invoked when the hash changes. These callbacks will execute when the user presses the back or forward button, but not after `setURL` is invoked. @private @method onUpdateURL @param callback {Function} */ onUpdateURL(callback: UpdateCallback): void; /** Given a URL, formats it to be placed into the page as part of an element's `href` attribute. @private @method formatURL @param url {String} */ formatURL(url: string): string; /** Cleans up the HashLocation event listener. @private @method willDestroy */ willDestroy(): void; _removeEventListener(): void; } }