import { PlatformBindings } from './PlatformBindings.js';
import { AppNavigationEvent, INavRunHttpProjectDetail, INavDetail, INavRunSchemaDesignerDetail, INavRunHttpClient } from '../../events/NavigationEvents.js';
/**
 * Global navigation bindings.
 * This class handles navigation that cannot be handled by any specific
 * application in the suite but rather the event should be transferred
 * to the main process.
 *
 * An example of such is the store configuration which is handled by the main process
 * instead of an application.
 */
export declare abstract class NavigationBindings extends PlatformBindings {
    initialize(): Promise<void>;
    /**
     * The application assumes that all screens are located in the same directory
     * in which we have sub-directories for each screen
     * ```
     * (...)/public/pages
     * (...)/public/pages/page1/main.html
     * (...)/public/pages/page2/main.html
     * (...)/public/pages/page3/main.html
     * ```
     * Then switching from one screen to another should be by providing a relative path from
     * the current page to the target page. For example switching from `page1/main.html`
     * to `page2/main.html` would be
     *
     * ```
     * ../page2/main.html
     * ```
     *
     * In a different platforms this can be overwritten to support different way of creating URLs
     *
     * @param relative The relative position from the current page.
     * @returns The full URL to the screen HTML page.
     */
    getPageUrl(relative: string): URL;
    protected storeConfigHandler(e: Event): void;
    /**
     * Handles and proxies all kind of intra-app navigation.
     */
    protected appNavigationHandler(e: AppNavigationEvent): void;
    /**
     * Opens a new window with the store configuration
     */
    abstract openStoreConfiguration(): Promise<void>;
    /**
     * Opens a new window with the HTTP Client application.
     * @param init The HTTP Project app init options.
     */
    abstract openApiClient(init?: INavRunHttpClient): Promise<void>;
    /**
     * Opens a new window with the HTTP Project
     * @param init The HTTP Project app init options.
     */
    abstract openHttpProject(init: INavRunHttpProjectDetail): Promise<void>;
    /**
     * Opens store authentication configuration.
     */
    abstract openStoreAuthenticate(init?: INavDetail): Promise<void>;
    /**
     * Opens the analytics consent screen
     */
    abstract openTelemetry(init?: INavDetail): Promise<void>;
    /**
     * Opens the schema designer app.
     */
    abstract openSchemaDesigner(init: INavRunSchemaDesignerDetail): Promise<void>;
}
//# sourceMappingURL=NavigationBindings.d.ts.map