import { CSSResult } from 'lit';
import { LitElement } from 'lit';
import { PropertyValueMap } from 'lit';
import { TemplateResult } from 'lit-html';

declare type PlacementType = "top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end" | "left" | "left-start" | "left-end" | "right" | "right-start" | "right-end";

declare abstract class PlusBase extends LitElement {
    static styles: CSSResult[];
    id: string;
    name: string;
    value: string | number;
    disabled: boolean;
    readonly: boolean;
    required: boolean;
    loading: boolean;
    title: string;
    emit(name: string, options?: CustomEventInit): CustomEvent<any>;
}

export declare class SelectComponent extends PlusBase {
    input: Promise<HTMLElement> | undefined;
    position: PlacementType;
    size: "sm" | "md" | "lg";
    placeholder: string;
    label?: string;
    error: boolean;
    caption?: string;
    clearable: boolean;
    selected: string;
    open: boolean;
    inputWrapper: Promise<HTMLElement> | undefined;
    context: SelectContext;
    connectedCallback(): void;
    protected update(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
    render(): TemplateResult<1>;
}

export declare interface SelectContext {
    onSelect: (id: string | number) => void;
    size: "sm" | "md" | "lg";
    slot: HTMLElement[];
}

export declare const selectContext: {
    __context__: SelectContext;
};

export { }
