import { HoverState } from '@sourcegraph/codeintellify';
import * as React from 'react';
import { RouteComponentProps } from 'react-router';
import * as GQL from '../../backend/graphqlschema';
import { ExtensionsDocumentsProps } from '../../extensions/environment/ExtensionsEnvironment';
import { ExtensionsControllerProps, ExtensionsProps } from '../../extensions/ExtensionsClientCommonContext';
import { RepoHeaderContributionsLifecycleProps } from '../RepoHeader';
interface Props extends RouteComponentProps<{
    spec: string;
}>, RepoHeaderContributionsLifecycleProps, ExtensionsProps, ExtensionsControllerProps, ExtensionsDocumentsProps {
    repo: GQL.IRepository;
}
interface State extends HoverState {
    error?: string;
}
/**
 * Properties passed to all page components in the repository compare area.
 */
export interface RepositoryCompareAreaPageProps extends ExtensionsProps {
    /** The repository being compared. */
    repo: GQL.IRepository;
    /** The base of the comparison. */
    base: {
        repoPath: string;
        repoID: GQL.ID;
        rev?: string | null;
    };
    /** The head of the comparison. */
    head: {
        repoPath: string;
        repoID: GQL.ID;
        rev?: string | null;
    };
    /** The URL route prefix for the comparison. */
    routePrefix: string;
}
/**
 * Renders pages related to a repository comparison.
 */
export declare class RepositoryCompareArea extends React.Component<Props, State> {
    private componentUpdates;
    /** Emits whenever the ref callback for the hover element is called */
    private hoverOverlayElements;
    private nextOverlayElement;
    /** Emits whenever the ref callback for the hover element is called */
    private repositoryCompareAreaElements;
    private nextRepositoryCompareAreaElement;
    /** Emits when the go to definition button was clicked */
    private goToDefinitionClicks;
    private nextGoToDefinitionClick;
    /** Emits when the close button was clicked */
    private closeButtonClicks;
    private nextCloseButtonClick;
    private subscriptions;
    private hoverifier;
    constructor(props: Props);
    private getLSPTextDocumentPositionParams;
    componentDidMount(): void;
    shouldComponentUpdate(nextProps: Readonly<Props>, nextState: Readonly<State>): boolean;
    componentDidUpdate(): void;
    componentWillUnmount(): void;
    render(): JSX.Element | null;
    private onUpdateComparisonSpec;
}
export {};
//# sourceMappingURL=RepositoryCompareArea.d.ts.map