/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
import { IContentActionHandler } from "../../formattedTextRenderer.mjs";
import { IContextViewProvider } from "../contextview/contextview.mjs";
import { IListStyles } from "../list/listWidget.mjs";
import { Widget } from "../widget.mjs";
import { Color } from "../../../common/color.mjs";
import { Event } from "../../../common/event.mjs";
import { IDisposable } from "../../../common/lifecycle.mjs";
import { IThemable } from "../../../common/styler.mjs";
import "../../../../css!./selectBox.mjs";
export interface ISelectBoxDelegate extends IDisposable {
    readonly onDidSelect: Event<ISelectData>;
    setOptions(options: ISelectOptionItem[], selected?: number): void;
    select(index: number): void;
    setAriaLabel(label: string): void;
    focus(): void;
    blur(): void;
    setFocusable(focus: boolean): void;
    render(container: HTMLElement): void;
    style(styles: ISelectBoxStyles): void;
    applyStyles(): void;
}
export interface ISelectBoxOptions {
    useCustomDrawn?: boolean;
    ariaLabel?: string;
    ariaDescription?: string;
    minBottomMargin?: number;
    optionsAsChildren?: boolean;
}
export interface ISelectOptionItem {
    text: string;
    detail?: string;
    decoratorRight?: string;
    description?: string;
    descriptionIsMarkdown?: boolean;
    descriptionMarkdownActionHandler?: IContentActionHandler;
    isDisabled?: boolean;
}
export interface ISelectBoxStyles extends IListStyles {
    selectBackground?: Color;
    selectListBackground?: Color;
    selectForeground?: Color;
    decoratorRightForeground?: Color;
    selectBorder?: Color;
    selectListBorder?: Color;
    focusBorder?: Color;
}
export declare const defaultStyles: {
    selectBackground: Color;
    selectForeground: Color;
    selectBorder: Color;
};
export interface ISelectData {
    selected: string;
    index: number;
}
export declare class SelectBox extends Widget implements ISelectBoxDelegate, IThemable {
    private selectBoxDelegate;
    constructor(options: ISelectOptionItem[], selected: number, contextViewProvider: IContextViewProvider, styles?: ISelectBoxStyles, selectBoxOptions?: ISelectBoxOptions);
    get onDidSelect(): Event<ISelectData>;
    setOptions(options: ISelectOptionItem[], selected?: number): void;
    select(index: number): void;
    setAriaLabel(label: string): void;
    focus(): void;
    blur(): void;
    setFocusable(focusable: boolean): void;
    render(container: HTMLElement): void;
    style(styles: ISelectBoxStyles): void;
    applyStyles(): void;
}
