import * as H from 'history';
import * as React from 'react';
import { ServerCapabilities } from 'vscode-languageserver/lib/main';
import { AbsoluteRepoFile, PositionSpec } from '../..';
import { HoverMerged, ModeSpec } from '../../../backend/features';
import * as GQL from '../../../backend/graphqlschema';
import { ConfigurationCascadeProps, ExtensionsControllerProps, ExtensionsProps } from '../../../extensions/ExtensionsClientCommonContext';
import { ErrorLike } from '../../../util/errors';
import { RepoHeaderContributionsLifecycleProps } from '../../RepoHeader';
interface Props extends AbsoluteRepoFile, Partial<PositionSpec>, ModeSpec, RepoHeaderContributionsLifecycleProps, ConfigurationCascadeProps, ExtensionsProps, ExtensionsControllerProps {
    location: H.Location;
    history: H.History;
    repoID: GQL.ID;
    repoPath: string;
    commitID: string;
    isLightTheme: boolean;
    user: GQL.IUser | null;
}
export declare type BlobPanelTabID = 'info' | 'def' | 'references' | 'references:external' | 'discussions' | 'impl' | 'history';
declare const LOADING: 'loading';
interface State {
    /** The language server capabilities information. */
    serverCapabilitiesOrError?: ServerCapabilities | ErrorLike;
    /** The hover information for the subject. */
    hoverOrError?: HoverMerged | ErrorLike | typeof LOADING;
}
/**
 * A panel on the blob page that displays contextual information.
 */
export declare class BlobPanel extends React.PureComponent<Props, State> {
    state: State;
    private componentUpdates;
    private locationsUpdates;
    private subscriptions;
    componentDidMount(): void;
    componentDidUpdate(): void;
    componentWillUnmount(): void;
    render(): JSX.Element | null;
    private onSelectLocation;
    private queryDefinition;
    private queryReferencesLocal;
    private queryReferencesExternal;
    private queryImplementation;
}
export {};
//# sourceMappingURL=BlobPanel.d.ts.map