/**
 * Copyright (c) OpenLens Maintainers. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */
/// <reference types="lodash" />
import type { IComputedValue } from "mobx";
import type { TabId } from "../dock/store";
import type { TerminalApi } from "../../../api/terminal-api";
import type { Logger } from "@openlens/logger";
import type { OpenLinkInBrowser } from "../../../../common/utils/open-link-in-browser.injectable";
import type { TerminalConfig } from "../../../../features/user-preferences/common/preferences-helpers";
export interface TerminalDependencies {
    readonly spawningPool: HTMLElement;
    readonly terminalConfig: IComputedValue<TerminalConfig>;
    readonly terminalCopyOnSelect: IComputedValue<boolean>;
    readonly isMac: boolean;
    readonly xtermColorTheme: IComputedValue<Record<string, string>>;
    readonly logger: Logger;
    openLinkInBrowser: OpenLinkInBrowser;
}
export interface TerminalArguments {
    tabId: TabId;
    api: TerminalApi;
}
export declare class Terminal {
    protected readonly dependencies: TerminalDependencies;
    private readonly xterm;
    private readonly fitAddon;
    private scrollPos;
    private readonly disposer;
    readonly tabId: TabId;
    protected readonly api: TerminalApi;
    private get elem();
    private get viewport();
    attachTo(parentElem: HTMLElement): void;
    detach(): void;
    get fontFamily(): string;
    get fontSize(): number;
    constructor(dependencies: TerminalDependencies, { tabId, api, }: TerminalArguments);
    destroy(): void;
    fit: () => void;
    fitLazy: import("lodash").DebouncedFunc<() => void>;
    focus: () => void;
    onApiData: (data: string) => void;
    onData: (data: string) => void;
    onScroll: () => void;
    onClear: () => void;
    onResize: () => void;
    onActivate: () => void;
    onContextMenu: () => void;
    onSelectionChange: () => void;
    setFontSize: (fontSize: number) => void;
    setFontFamily: (fontFamily: string) => void;
    keyHandler: (evt: KeyboardEvent) => boolean;
}
