/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
import { Color } from "../../../base/common/color.mjs";
import { IDisposable } from "../../../base/common/lifecycle.mjs";
import { IThemable, styleFn } from "../../../base/common/styler.mjs";
import { ColorIdentifier, ColorValue } from "./colorRegistry.mjs";
import { IColorTheme, IThemeService } from "./themeService.mjs";
export interface IStyleOverrides {
    [color: string]: ColorIdentifier | undefined;
}
export interface IColorMapping {
    [optionsKey: string]: ColorValue | undefined;
}
export interface IComputedStyles {
    [color: string]: Color | undefined;
}
export declare function computeStyles(theme: IColorTheme, styleMap: IColorMapping): IComputedStyles;
export declare function attachStyler<T extends IColorMapping>(themeService: IThemeService, styleMap: T, widgetOrCallback: IThemable | styleFn): IDisposable;
export interface ISelectBoxStyleOverrides extends IStyleOverrides, IListStyleOverrides {
    selectBackground?: ColorIdentifier;
    selectListBackground?: ColorIdentifier;
    selectForeground?: ColorIdentifier;
    decoratorRightForeground?: ColorIdentifier;
    selectBorder?: ColorIdentifier;
    focusBorder?: ColorIdentifier;
}
export declare function attachSelectBoxStyler(widget: IThemable, themeService: IThemeService, style?: ISelectBoxStyleOverrides): IDisposable;
export interface IListStyleOverrides extends IStyleOverrides {
    listBackground?: ColorIdentifier;
    listFocusBackground?: ColorIdentifier;
    listFocusForeground?: ColorIdentifier;
    listFocusOutline?: ColorIdentifier;
    listActiveSelectionBackground?: ColorIdentifier;
    listActiveSelectionForeground?: ColorIdentifier;
    listActiveSelectionIconForeground?: ColorIdentifier;
    listFocusAndSelectionOutline?: ColorIdentifier;
    listFocusAndSelectionBackground?: ColorIdentifier;
    listFocusAndSelectionForeground?: ColorIdentifier;
    listInactiveSelectionBackground?: ColorIdentifier;
    listInactiveSelectionIconForeground?: ColorIdentifier;
    listInactiveSelectionForeground?: ColorIdentifier;
    listInactiveFocusBackground?: ColorIdentifier;
    listInactiveFocusOutline?: ColorIdentifier;
    listHoverBackground?: ColorIdentifier;
    listHoverForeground?: ColorIdentifier;
    listDropBackground?: ColorIdentifier;
    listSelectionOutline?: ColorIdentifier;
    listHoverOutline?: ColorIdentifier;
    treeIndentGuidesStroke?: ColorIdentifier;
    tableColumnsBorder?: ColorIdentifier;
    tableOddRowsBackgroundColor?: ColorIdentifier;
}
export declare function attachListStyler(widget: IThemable, themeService: IThemeService, overrides?: IColorMapping): IDisposable;
export declare const defaultListStyles: IColorMapping;
export declare function attachStylerCallback(themeService: IThemeService, colors: {
    [name: string]: ColorIdentifier;
}, callback: styleFn): IDisposable;
export interface IMenuStyleOverrides extends IColorMapping {
    shadowColor?: ColorIdentifier;
    borderColor?: ColorIdentifier;
    foregroundColor?: ColorIdentifier;
    backgroundColor?: ColorIdentifier;
    selectionForegroundColor?: ColorIdentifier;
    selectionBackgroundColor?: ColorIdentifier;
    selectionBorderColor?: ColorIdentifier;
    separatorColor?: ColorIdentifier;
}
export declare const defaultMenuStyles: IMenuStyleOverrides;
export declare function attachMenuStyler(widget: IThemable, themeService: IThemeService, style?: IMenuStyleOverrides): IDisposable;
