/*---------------------------------------------------------------------------------------------
 *  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 '@sussudio/base/common/color.mjs';
import { IDisposable } from '@sussudio/base/common/lifecycle.mjs';
import { IThemable, styleFn } from '@sussudio/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;
