import { ClientConnection } from '@sourcegraph/extensions-client-common/lib/messaging';
import * as React from 'react';
import { RouteComponentProps } from 'react-router';
import * as GQL from '../backend/graphqlschema';
import { RouteDescriptor } from '../util/contributions';
import { ExtensionAreaRoute } from './extension/ExtensionArea';
import { ExtensionAreaHeaderNavItem } from './extension/ExtensionAreaHeader';
import { ExtensionsAreaHeaderActionButton } from './ExtensionsAreaHeader';
import { ConfigurationCascadeProps, ExtensionsProps } from './ExtensionsClientCommonContext';
export interface ExtensionsAreaRoute extends RouteDescriptor<ExtensionsAreaRouteContext> {
}
/**
 * Properties passed to all page components in the extensions area.
 */
export interface ExtensionsAreaRouteContext extends ConfigurationCascadeProps, ExtensionsProps {
    /** The currently authenticated user. */
    authenticatedUser: GQL.IUser | null;
    /** The subject whose extensions and configuration to display. */
    subject: Pick<GQL.IConfigurationSubject, 'id' | 'viewerCanAdminister'>;
    isLightTheme: boolean;
    clientConnection: Promise<ClientConnection>;
    extensionAreaRoutes: ReadonlyArray<ExtensionAreaRoute>;
    extensionAreaHeaderNavItems: ReadonlyArray<ExtensionAreaHeaderNavItem>;
}
interface ExtensionsAreaProps extends RouteComponentProps<{
    extensionID: string;
}>, ConfigurationCascadeProps, ExtensionsProps {
    routes: ReadonlyArray<ExtensionsAreaRoute>;
    /**
     * The currently authenticated user.
     */
    user: GQL.IUser | null;
    viewerSubject: Pick<GQL.IConfigurationSubject, 'id' | 'viewerCanAdminister'>;
    isLightTheme: boolean;
    clientConnection: Promise<ClientConnection>;
    extensionAreaRoutes: ReadonlyArray<ExtensionAreaRoute>;
    extensionsAreaHeaderActionButtons: ReadonlyArray<ExtensionsAreaHeaderActionButton>;
    extensionAreaHeaderNavItems: ReadonlyArray<ExtensionAreaHeaderNavItem>;
}
interface ExtensionsAreaState {
}
/**
 * The extensions area.
 */
export declare class ExtensionsArea extends React.Component<ExtensionsAreaProps, ExtensionsAreaState> {
    state: ExtensionsAreaState;
    private componentUpdates;
    private subscriptions;
    componentDidMount(): void;
    componentWillReceiveProps(props: ExtensionsAreaProps): void;
    componentWillUnmount(): void;
    render(): JSX.Element | null;
}
export {};
//# sourceMappingURL=ExtensionsArea.d.ts.map