import { ShowSignalSoundHelp, ShowAccessibilityAnnouncementHelp } from './commands.js';
import { localizeWithPath } from '../../../../nls.js';
import { registerAction2 } from '../../../../platform/actions/common/actions.js';
import { Extensions as Extensions$1 } from '../../../../platform/configuration/common/configurationRegistry.js';
import { Registry } from '../../../../platform/registry/common/platform.js';
import { Extensions } from '../../../common/contributions.js';
import '../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';
import '../../../../platform/instantiation/common/instantiation.js';
import { AccessibilitySignalLineDebuggerContribution } from './accessibilitySignalDebuggerContribution.js';
import { SignalLineFeatureContribution } from './accessibilitySignalLineFeatureContribution.js';
const _moduleId = "vs/workbench/contrib/accessibilitySignals/browser/accessibilitySignal.contribution";
( (Registry.as(Extensions.Workbench))).registerWorkbenchContribution(SignalLineFeatureContribution, 3 );
( (Registry.as(Extensions.Workbench))).registerWorkbenchContribution(AccessibilitySignalLineDebuggerContribution, 3 );
const soundFeatureBase = {
    'type': 'string',
    'enum': ['auto', 'on', 'off'],
    'default': 'auto',
    'enumDescriptions': [
        ( localizeWithPath(_moduleId, 0, "Enable sound when a screen reader is attached.")),
        ( localizeWithPath(_moduleId, 1, "Enable sound.")),
        ( localizeWithPath(_moduleId, 2, "Disable sound."))
    ],
    tags: ['accessibility'],
};
const markdownDeprecationMessage = ( localizeWithPath(
    _moduleId,
    3,
    "This setting is deprecated. Use `signals` settings instead."
));
const soundDeprecatedFeatureBase = {
    ...soundFeatureBase,
    markdownDeprecationMessage
};
( (Registry.as(Extensions$1.Configuration))).registerConfiguration({
    'properties': {
        'audioCues.enabled': {
            markdownDeprecationMessage: 'Deprecated. Use the specific setting for each audio cue instead (`audioCues.*`).',
            tags: ['accessibility']
        },
        'audioCues.volume': {
            markdownDeprecationMessage: 'Deprecated. Use `accessibility.signals.sounds.volume` instead.',
            tags: ['accessibility']
        },
        'audioCues.debouncePositionChanges': {
            'description': ( localizeWithPath(_moduleId, 4, "Whether or not position changes should be debounced")),
            'type': 'boolean',
            'default': false,
            tags: ['accessibility'],
            'markdownDeprecationMessage': ( localizeWithPath(
                _moduleId,
                5,
                'This setting is deprecated, instead use the `signals.debouncePositionChanges` setting.'
            ))
        },
        'audioCues.lineHasBreakpoint': {
            'description': ( localizeWithPath(_moduleId, 6, "Plays a sound when the active line has a breakpoint.")),
            ...soundDeprecatedFeatureBase
        },
        'audioCues.lineHasInlineSuggestion': {
            'description': ( localizeWithPath(
                _moduleId,
                7,
                "Plays a sound when the active line has an inline suggestion."
            )),
            ...soundDeprecatedFeatureBase
        },
        'audioCues.lineHasError': {
            'description': ( localizeWithPath(_moduleId, 8, "Plays a sound when the active line has an error.")),
            ...soundDeprecatedFeatureBase,
        },
        'audioCues.lineHasFoldedArea': {
            'description': ( localizeWithPath(
                _moduleId,
                9,
                "Plays a sound when the active line has a folded area that can be unfolded."
            )),
            ...soundDeprecatedFeatureBase,
        },
        'audioCues.lineHasWarning': {
            'description': ( localizeWithPath(_moduleId, 10, "Plays a sound when the active line has a warning.")),
            ...soundDeprecatedFeatureBase,
            default: 'off',
        },
        'audioCues.onDebugBreak': {
            'description': ( localizeWithPath(_moduleId, 11, "Plays a sound when the debugger stopped on a breakpoint.")),
            ...soundDeprecatedFeatureBase,
        },
        'audioCues.noInlayHints': {
            'description': ( localizeWithPath(
                _moduleId,
                12,
                "Plays a sound when trying to read a line with inlay hints that has no inlay hints."
            )),
            ...soundDeprecatedFeatureBase,
        },
        'audioCues.taskCompleted': {
            'description': ( localizeWithPath(_moduleId, 13, "Plays a sound when a task is completed.")),
            ...soundDeprecatedFeatureBase,
        },
        'audioCues.taskFailed': {
            'description': ( localizeWithPath(_moduleId, 14, "Plays a sound when a task fails (non-zero exit code).")),
            ...soundDeprecatedFeatureBase,
        },
        'audioCues.terminalCommandFailed': {
            'description': ( localizeWithPath(
                _moduleId,
                15,
                "Plays a sound when a terminal command fails (non-zero exit code)."
            )),
            ...soundDeprecatedFeatureBase,
        },
        'audioCues.terminalQuickFix': {
            'description': ( localizeWithPath(_moduleId, 16, "Plays a sound when terminal Quick Fixes are available.")),
            ...soundDeprecatedFeatureBase,
        },
        'audioCues.terminalBell': {
            'description': ( localizeWithPath(_moduleId, 17, "Plays a sound when the terminal bell is ringing.")),
            ...soundDeprecatedFeatureBase,
            default: 'on'
        },
        'audioCues.diffLineInserted': {
            'description': ( localizeWithPath(
                _moduleId,
                18,
                "Plays a sound when the focus moves to an inserted line in Accessible Diff Viewer mode or to the next/previous change."
            )),
            ...soundDeprecatedFeatureBase,
        },
        'audioCues.diffLineDeleted': {
            'description': ( localizeWithPath(
                _moduleId,
                19,
                "Plays a sound when the focus moves to a deleted line in Accessible Diff Viewer mode or to the next/previous change."
            )),
            ...soundDeprecatedFeatureBase,
        },
        'audioCues.diffLineModified': {
            'description': ( localizeWithPath(
                _moduleId,
                20,
                "Plays a sound when the focus moves to a modified line in Accessible Diff Viewer mode or to the next/previous change."
            )),
            ...soundDeprecatedFeatureBase,
        },
        'audioCues.notebookCellCompleted': {
            'description': ( localizeWithPath(
                _moduleId,
                21,
                "Plays a sound when a notebook cell execution is successfully completed."
            )),
            ...soundDeprecatedFeatureBase,
        },
        'audioCues.notebookCellFailed': {
            'description': ( localizeWithPath(_moduleId, 22, "Plays a sound when a notebook cell execution fails.")),
            ...soundDeprecatedFeatureBase,
        },
        'audioCues.chatRequestSent': {
            'description': ( localizeWithPath(_moduleId, 23, "Plays a sound when a chat request is made.")),
            ...soundDeprecatedFeatureBase,
            default: 'off'
        },
        'audioCues.chatResponsePending': {
            'description': ( localizeWithPath(_moduleId, 24, "Plays a sound on loop while the response is pending.")),
            ...soundDeprecatedFeatureBase,
            default: 'auto'
        },
        'audioCues.chatResponseReceived': {
            'description': ( localizeWithPath(
                _moduleId,
                25,
                "Plays a sound on loop while the response has been received."
            )),
            ...soundDeprecatedFeatureBase,
            default: 'off'
        },
        'audioCues.clear': {
            'description': ( localizeWithPath(
                _moduleId,
                26,
                "Plays a sound when a feature is cleared (for example, the terminal, Debug Console, or Output channel). When this is disabled, an ARIA alert will announce 'Cleared'."
            )),
            ...soundDeprecatedFeatureBase,
            default: 'off'
        },
        'audioCues.save': {
            'markdownDescription': ( localizeWithPath(
                _moduleId,
                27,
                "Plays a sound when a file is saved. Also see {0}",
                '`#accessibility.alert.save#`'
            )),
            'type': 'string',
            'enum': ['userGesture', 'always', 'never'],
            'default': 'never',
            'enumDescriptions': [
                ( localizeWithPath(_moduleId, 28, "Plays the audio cue when a user explicitly saves a file.")),
                ( localizeWithPath(
                    _moduleId,
                    29,
                    "Plays the audio cue whenever a file is saved, including auto save."
                )),
                ( localizeWithPath(_moduleId, 30, "Never plays the audio cue."))
            ],
            tags: ['accessibility'],
            markdownDeprecationMessage
        },
        'audioCues.format': {
            'markdownDescription': ( localizeWithPath(
                _moduleId,
                31,
                "Plays a sound when a file or notebook is formatted. Also see {0}",
                '`#accessibility.alert.format#`'
            )),
            'type': 'string',
            'enum': ['userGesture', 'always', 'never'],
            'default': 'never',
            'enumDescriptions': [
                ( localizeWithPath(
                    _moduleId,
                    32,
                    "Plays the audio cue when a user explicitly formats a file."
                )),
                ( localizeWithPath(
                    _moduleId,
                    33,
                    "Plays the audio cue whenever a file is formatted, including if it is set to format on save, type, or, paste, or run of a cell."
                )),
                ( localizeWithPath(_moduleId, 34, "Never plays the audio cue."))
            ],
            tags: ['accessibility'],
            markdownDeprecationMessage
        },
    },
});
registerAction2(ShowSignalSoundHelp);
registerAction2(ShowAccessibilityAnnouncementHelp);
export { soundFeatureBase };
