/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

import { IShellIntegration, ShellIntegrationStatus } from '../terminal.mjs';
import { Disposable } from '@sussudio/base/common/lifecycle.mjs';
import { TerminalCapabilityStore } from '../capabilities/terminalCapabilityStore.mjs';
import {
	IBufferMarkCapability,
	ICommandDetectionCapability,
	ICwdDetectionCapability,
	ISerializedCommandDetectionCapability,
} from '../capabilities/capabilities.mjs';
import { ILogService } from '../../../log/common/log.mjs';
import { ITelemetryService } from '../../../telemetry/common/telemetry.mjs';
import type { ITerminalAddon, Terminal } from 'xterm-headless';
/**
 * The shell integration addon extends xterm by reading shell integration sequences and creating
 * capabilities and passing along relevant sequences to the capabilities. This is meant to
 * encapsulate all handling/parsing of sequences so the capabilities don't need to.
 */
export declare class ShellIntegrationAddon extends Disposable implements IShellIntegration, ITerminalAddon {
	private readonly _disableTelemetry;
	private readonly _telemetryService;
	private readonly _logService;
	private _terminal?;
	readonly capabilities: TerminalCapabilityStore;
	private _hasUpdatedTelemetry;
	private _activationTimeout;
	private _commonProtocolDisposables;
	private _status;
	get status(): ShellIntegrationStatus;
	private readonly _onDidChangeStatus;
	readonly onDidChangeStatus: import('@sussudio/base/common/event.mjs').Event<ShellIntegrationStatus>;
	constructor(
		_disableTelemetry: boolean | undefined,
		_telemetryService: ITelemetryService | undefined,
		_logService: ILogService,
	);
	private _disposeCommonProtocol;
	activate(xterm: Terminal): void;
	private _handleFinalTermSequence;
	private _doHandleFinalTermSequence;
	private _handleVSCodeSequence;
	private _ensureCapabilitiesOrAddFailureTelemetry;
	private _clearActivationTimeout;
	private _doHandleVSCodeSequence;
	private _updateCwd;
	private _doHandleITermSequence;
	private _doHandleSetWindowsFriendlyCwd;
	/**
	 * Handles the sequence: `OSC 7 ; scheme://cwd ST`
	 */
	private _doHandleSetCwd;
	serialize(): ISerializedCommandDetectionCapability;
	deserialize(serialized: ISerializedCommandDetectionCapability): void;
	protected _createOrGetCwdDetection(): ICwdDetectionCapability;
	protected _createOrGetCommandDetection(terminal: Terminal): ICommandDetectionCapability;
	protected _createOrGetBufferMarkDetection(terminal: Terminal): IBufferMarkCapability;
}
export declare function deserializeMessage(message: string): string;
export declare function parseKeyValueAssignment(message: string): {
	key: string;
	value: string | undefined;
};
export declare function parseMarkSequence(sequence: string[]): {
	id?: string;
	hidden?: boolean;
};
