import { StateEffect, type Extension } from '@codemirror/state';
import type { HostPortalCallbacks } from './hostCallbacks';
/** Lifecycle callbacks for an inline panel. See {@link HostPortalCallbacks}. */
export type InlinePanelCallbacks = HostPortalCallbacks;
export type InlinePanelShowOptions = {
    /** Document position the panel anchors to. */
    pos: number;
    /**
     * Where to render the panel relative to the line at `pos`. `'above'`
     * places it before the line, `'below'` after it.
     *
     * @default 'above'
     */
    placement?: 'above' | 'below';
} & InlinePanelCallbacks;
type ShowPayload = InlinePanelShowOptions | null;
export type InlinePanelController = {
    /** CodeMirror extension to register on the editor. */
    extension: Extension;
    /** Build an effect that mounts the panel with the given options. */
    show: (options: InlinePanelShowOptions) => StateEffect<ShowPayload>;
    /** Build an effect that unmounts the panel. */
    hide: () => StateEffect<ShowPayload>;
    updateCallbacks: (callbacks: InlinePanelCallbacks) => void;
};
export declare function createInlinePanelController(): InlinePanelController;
export {};
