import { ClientConnection } from '@sourcegraph/extensions-client-common/lib/messaging';
import * as React from 'react';
import * as GQL from './backend/graphqlschema';
import { ExtensionsEnvironmentProps } from './extensions/environment/ExtensionsEnvironment';
import { ExtensionAreaRoute } from './extensions/extension/ExtensionArea';
import { ExtensionAreaHeaderNavItem } from './extensions/extension/ExtensionAreaHeader';
import { ExtensionsAreaRoute } from './extensions/ExtensionsArea';
import { ExtensionsAreaHeaderActionButton } from './extensions/ExtensionsAreaHeader';
import { ConfigurationCascadeProps, ExtensionsControllerProps, ExtensionsProps } from './extensions/ExtensionsClientCommonContext';
import { LayoutProps } from './Layout';
import { RepoHeaderActionButton } from './repo/RepoHeader';
import { RepoRevContainerRoute } from './repo/RepoRevContainer';
import { SiteAdminAreaRoute } from './site-admin/SiteAdminArea';
import { SiteAdminSideBarGroups } from './site-admin/SiteAdminSidebar';
import { UserAccountAreaRoute } from './user/account/UserAccountArea';
import { UserAccountSidebarItems } from './user/account/UserAccountSidebar';
import { UserAreaRoute } from './user/area/UserArea';
import { UserAreaHeaderNavItem } from './user/area/UserAreaHeader';
export interface SourcegraphWebAppProps {
    extensionAreaRoutes: ReadonlyArray<ExtensionAreaRoute>;
    extensionAreaHeaderNavItems: ReadonlyArray<ExtensionAreaHeaderNavItem>;
    extensionsAreaRoutes: ReadonlyArray<ExtensionsAreaRoute>;
    extensionsAreaHeaderActionButtons: ReadonlyArray<ExtensionsAreaHeaderActionButton>;
    siteAdminAreaRoutes: ReadonlyArray<SiteAdminAreaRoute>;
    siteAdminSideBarGroups: SiteAdminSideBarGroups;
    siteAdminOverviewComponents: ReadonlyArray<React.ComponentType>;
    userAreaHeaderNavItems: ReadonlyArray<UserAreaHeaderNavItem>;
    userAreaRoutes: ReadonlyArray<UserAreaRoute>;
    userAccountSideBarItems: UserAccountSidebarItems;
    userAccountAreaRoutes: ReadonlyArray<UserAccountAreaRoute>;
    repoRevContainerRoutes: ReadonlyArray<RepoRevContainerRoute>;
    repoHeaderActionButtons: ReadonlyArray<RepoHeaderActionButton>;
}
interface SourcegraphWebAppState extends ConfigurationCascadeProps, ExtensionsProps, ExtensionsEnvironmentProps, ExtensionsControllerProps {
    error?: Error;
    user?: GQL.IUser | null;
    viewerSubject: LayoutProps['viewerSubject'];
    /**
     * Whether the light theme is enabled or not
     */
    isLightTheme: boolean;
    /**
     * Whether the user is on MainPage and therefore not logged in
     */
    isMainPage: boolean;
    /**
     * The current search query in the navbar.
     */
    navbarSearchQuery: string;
    /** Whether the help popover is shown. */
    showHelpPopover: boolean;
    clientConnection: Promise<ClientConnection>;
}
/**
 * The root component
 */
export declare class SourcegraphWebApp extends React.Component<SourcegraphWebAppProps, SourcegraphWebAppState> {
    constructor(props: SourcegraphWebAppProps);
    private subscriptions;
    componentDidMount(): void;
    componentWillUnmount(): void;
    componentDidUpdate(): void;
    render(): React.ReactFragment | null;
    private onThemeChange;
    private onMainPage;
    private onNavbarQueryChange;
    private onHelpPopoverToggle;
    private onConfigurationCascadeChange;
    private onViewerConfiguredExtensionsChange;
    private extensionsOnVisibleTextDocumentsChange;
}
export {};
//# sourceMappingURL=SourcegraphWebApp.d.ts.map