import { HoverState } from '@sourcegraph/codeintellify';
import * as H from 'history';
import * as React from 'react';
import { Position } from 'vscode-languageserver-types';
import * as GQL from '../../backend/graphqlschema';
import { ExtensionsDocumentsProps } from '../../extensions/environment/ExtensionsEnvironment';
import { ExtensionsControllerProps } from '../../extensions/ExtensionsClientCommonContext';
import { ErrorLike } from '../../util/errors';
interface Props extends ExtensionsControllerProps, ExtensionsDocumentsProps {
    history: H.History;
    className: string;
    startLine: number;
    endLine: number;
    parentElement: string;
    overlayPortal?: HTMLElement;
    tooltipClass: string;
    defaultHoverPosition: Position;
}
interface State extends HoverState {
    /**
     * The blob data or error that happened.
     * undefined while loading.
     */
    blobOrError?: GQL.IGitBlob | ErrorLike;
    target?: EventTarget;
}
export declare class CodeIntellifyBlob extends React.Component<Props, State> {
    /** Emits whenever the ref callback for the code element is called */
    private codeViewElements;
    private nextCodeViewElement;
    /** Emits whenever the ref callback for the hover element is called */
    private hoverOverlayElements;
    private nextOverlayElement;
    /** Emits whenever the ref callback for the demo file element is called */
    private codeIntellifyBlobElements;
    private nextCodeIntellifyBlobElements;
    /** 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 componentUpdates;
    private target;
    constructor(props: Props);
    componentDidMount(): void;
    componentDidUpdate(): void;
    private getLSPTextDocumentPositionParams;
    render(): JSX.Element;
    /**
     * This function adjusts the position of the hoverOverlay so that it does not overflow on the right side
     * of the viewport. If a hoverOverlay will exceed the viewport, this function will adjust the position
     * so that it aligns the right side of the hover overlay with the right side of the target element.
     *
     */
    private adjustHoverOverlayPosition;
}
export {};
//# sourceMappingURL=CodeIntellifyBlob.d.ts.map