import { IConfigurationService } from '../../../../platform/configuration/common/configuration.service.js';
import { ITerminalConfiguration, ITerminalFont } from '../common/terminal.js';
import { INotificationService } from '../../../../platform/notification/common/notification.service.js';
import { ITerminalConfigHelper, LinuxDistro } from './terminal.js';
import { Event } from '../../../../base/common/event.js';
import { IExtensionManagementService } from '../../../../platform/extensionManagement/common/extensionManagement.service.js';
import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';
import { IProductService } from '../../../../platform/product/common/productService.service.js';
import { IXtermCore } from './xterm-private.js';
import { IShellLaunchConfig } from '../../../../platform/terminal/common/terminal.js';
import { Disposable } from '../../../../base/common/lifecycle.js';

/**
 * Encapsulates terminal configuration logic, the primary purpose of this file is so that platform
 * specific test cases can be written.
 */
declare class TerminalConfigHelper extends Disposable implements ITerminalConfigHelper {
    private readonly _configurationService;
    private readonly _extensionManagementService;
    private readonly _notificationService;
    private readonly _instantiationService;
    private readonly _productService;
    panelContainer: HTMLElement | undefined;
    private _charMeasureElement;
    private _lastFontMeasurement;
    protected _linuxDistro: LinuxDistro;
    config: ITerminalConfiguration;
    private readonly _onConfigChanged;
    get onConfigChanged(): Event<void>;
    constructor(_configurationService: IConfigurationService, _extensionManagementService: IExtensionManagementService, _notificationService: INotificationService, _instantiationService: IInstantiationService, _productService: IProductService);
    private _updateConfig;
    configFontIsMonospace(): boolean;
    private _createCharMeasureElementIfNecessary;
    private _getBoundingRectFor;
    private _measureFont;
    /**
     * Gets the font information based on the terminal.integrated.fontFamily
     * terminal.integrated.fontSize, terminal.integrated.lineHeight configuration properties
     */
    getFont(w: Window, xtermCore?: IXtermCore, excludeDimensions?: boolean): ITerminalFont;
    private _clampInt;
    private _recommendationsShown;
    showRecommendations(shellLaunchConfig: IShellLaunchConfig): Promise<void>;
    private _isExtensionInstalled;
    private _normalizeFontWeight;
}

export { TerminalConfigHelper };
