import { ServiceIdentifier } from '../../instantiation/common/instantiation.js';
import { IHoverWidget } from '../../../base/browser/ui/hover/updatableHoverWidget.js';
import { IHoverOptions } from './hover.js';

declare const IHoverService: ServiceIdentifier<IHoverService>;
/**
* Enables the convenient display of rich markdown-based hovers in the workbench.
*/
interface IHoverService {
    readonly _serviceBrand: undefined;
    /**
    * Shows a hover, provided a hover with the same options object is not already visible.
    * @param options A set of options defining the characteristics of the hover.
    * @param focus Whether to focus the hover (useful for keyboard accessibility).
    *
    * **Example:** A simple usage with a single element target.
    *
    * ```typescript
    * showHover({
    *   text: new MarkdownString('Hello world'),
    *   target: someElement
    * });
    * ```
    */
    showHover(options: IHoverOptions, focus?: boolean): IHoverWidget | undefined;
    /**
    * Hides the hover if it was visible. This call will be ignored if the the hover is currently
    * "locked" via the alt/option key.
    */
    hideHover(): void;
    /**
    * This should only be used until we have the ability to show multiple context views
    * simultaneously. #188822
    */
    showAndFocusLastHover(): void;
}

export { IHoverService };
