import { GlueEditChromeLocation, GlueEditChromeTopbarLocation } from './Enums';
import { IGlue } from '../../models';
export declare module Glue {
    var pageContext: IGlue.IGluePageContext;
    var baseUrl: string;
    var isGluePage: boolean;
    var defaultGlueLayoutId: string;
    function init(): void;
    function navigate(pageContext: IGlue.IGluePageContext): void;
    function getAbsoluteUrl(relativeUrl: string): string;
    function onProvideNavigationContext(callback: (url: string) => Promise<any>): void;
    function onGluePageMajorVersionChanged(callback: (url: string, version: number, pageContext: IGlue.IGluePageContext) => Promise<any>): void;
    function onRestoreGluePageMajorVersion(callback: (url: string, version: number, pageContext: IGlue.IGluePageContext) => Promise<any>): void;
    function onNavigate(callback: (navigationContext: IGlue.IGluePageContext) => void): void;
    function onQueryParameterChanged(callback: (url: string) => void): void;
    function getGluePageMajorVersion(pageContext: IGlue.IGluePageContext, version: number, versionCallback: (data: IGlue.IGlueResourceVersion) => void): void;
    function restoreGluePageMajorVersion(pageContext: IGlue.IGluePageContext, version: number, versionCallback: (data: IGlue.IGlueResourceVersion) => void): void;
    function addQueryParameter(paramName: string, paramValue: string): void;
    function getQueryParameter(paramName: string): string;
    function isShowingNavigationLoadingIndicator(): void;
    function showNavigationLoadingIndicator(): void;
    function hideNavigationLoadingIndicator(): void;
    function showNotificationInfo(message: string): void;
    function hideNotificationInfo(): void;
    module Callbacks {
        interface ICallbackItem {
            hash: string;
            callback: {
                (...args: any[]): any;
            };
        }
        /** Registers a callback */
        function add(id: string, callback: (...args: any[]) => void): void;
        /** Calls all registered callbacks with the specified parameters. */
        function fire(id: string | RegExp, ...args: any[]): void;
        /** Removes all registered callbacks on the specified id */
        function removeById(id: string | RegExp): void;
        /** Gets the callbacks registered on the specified id */
        function getById(id: string): ICallbackItem[];
        /** Gets all registered callbacks */
        function getAll(): {
            [id: string]: ICallbackItem[];
        };
        function createDestroyResult(): {
            callbackDestroy: boolean;
        };
    }
    module Layout {
        function getContext(): Promise<void>;
        function getGlueToolbarItems(location: GlueEditChromeLocation): Array<IGlue.IGlueToolbarItemMetadataExtend>;
        function getGlueTopbarItems(location: GlueEditChromeTopbarLocation): Array<IGlue.IGlueTopbarItemMetadataExtend>;
        function getPaneTabs(): Array<IGlue.IGluePaneTabMetadata>;
        function getPaneContents(): Array<IGlue.IGluePaneContentMetadataExtend>;
    }
}
export declare function GluePaneTab(meta: IGlue.IGluePaneTabMetadata): (target: any) => void;
export declare function GluePaneContent(meta: IGlue.IGluePaneContentMetadata): (target: any) => void;
export declare function GlueToolbarItem(meta: IGlue.IGlueToolbarItemMetadata): (target: any) => void;
export declare function GlueTopbarItem(meta: IGlue.IGlueTopbarItemMetadata): (target: any) => void;
