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

export declare class AlertComponent extends PlusBase {
    el: HTMLElement;
    kind: "outlined" | "filled" | "dashed";
    status: "success" | "warning" | "error" | "info" | "default";
    size: "sm" | "md" | "lg";
    message: string;
    _icon: string;
    set icon(value: any);
    get icon(): any;
    description: string;
    fullWidth: boolean;
    closable: boolean;
    invert: boolean;
    static styles: CSSResult[];
    render(): TemplateResult;
}

export declare class AvatarComponent extends PlusBase {
    image: string;
    alt: string;
    shape: "circle" | "square";
    size: Plus.Sizes | string;
    color: string;
    icon: string;
    invert: boolean;
    text?: string;
    isSizeLargeEnough(): boolean;
    getText(): string;
    customSize(): boolean;
    sizeValue(): any;
    isFallback: boolean;
    render(): TemplateResult;
}

export declare class BadgeComponent extends PlusBase {
    size: "sm" | "md" | "lg";
    kind: "dot" | "text";
    invert: boolean;
    placement: "top-left" | "top-right" | "bottom-left" | "bottom-right";
    content: string;
    status: "success" | "warning" | "error" | "info" | "default";
    backgroundColor: string;
    offset: [string, string];
    color: string;
    render(): TemplateResult<1>;
}

export declare class BreadComponentNavItem extends PlusBase {
    href: string;
    text: string;
    active: any;
    prefixIcon: string;
    suffixIcon: string;
    separator: string;
    size: "sm" | "md" | "lg";
    static styles: CSSResult[];
    private handleClick;
    render(): TemplateResult;
}

export declare class BreadCrumbComponent extends PlusBase {
    defaultSlot: HTMLSlotElement;
    size: "sm" | "md" | "lg";
    separator: string;
    private get slotItems();
    protected handleChanges(): void;
    protected updated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
    private handleClickItem;
    render(): TemplateResult;
}

export declare class ButtonComponent extends PlusBase {
    static styles: CSSResult[];
    size: "sm" | "md" | "lg";
    kind: "filled" | "outlined" | "dashed" | "text";
    status: "default" | "primary";
    type: "button" | "submit" | "reset";
    href: string;
    target: "_blank" | "_parent" | "_self" | "_top";
    download?: string;
    rel: string;
    groupOrder: "first" | "middle" | "last";
    groupPosition: "vertical" | "horizontal";
    loading: boolean;
    hasFocus: boolean;
    private isLink;
    private handleBlur;
    private handleFocus;
    private handleClick;
    render(): TemplateResult;
}

export declare class ButtonGroupComponent extends PlusBase {
    buttonGroup: HTMLElement;
    type: "vertical" | "horizontal";
    handleSlotChange(): void;
    render(): TemplateResult<1>;
}

export declare class CheckboxComponent extends PlusBase {
    static styles: CSSResult[];
    checkbox: HTMLInputElement;
    size: "sm" | "md" | "lg";
    text: string;
    checked: boolean;
    indeterminate: boolean;
    label?: string;
    caption?: string;
    error: boolean;
    hasFocus: boolean;
    private handleClick;
    private handleFocus;
    private handleBlur;
    private handleChange;
    render(): TemplateResult;
}

export declare class CheckboxGroupComponent extends PlusBase {
    aligment: "horizontal" | "vertical";
    size: "sm" | "md" | "lg";
    label?: string;
    caption?: string;
    error: boolean;
    hasFocus: boolean;
    render(): TemplateResult;
}

export declare class ChipComponent extends PlusBase {
    size: "sm" | "md" | "lg";
    kind: "filled" | "outlined";
    status: "success" | "warning" | "error" | "info" | "default";
    invert: boolean;
    color: string;
    render(): TemplateResult<1>;
}

export declare class DividerComponent extends PlusBase {
    static styles: CSSResult[];
    kind: "default" | "dashed";
    type: "vertical" | "horizontal";
    render(): TemplateResult;
}

export declare class InputComponent extends PlusBase {
    static styles: CSSResult[];
    input: HTMLInputElement;
    private hasFocus;
    type: "date" | "datetime-local" | "email" | "number" | "password" | "search" | "tel" | "text" | "time" | "url";
    name: string;
    value: string;
    placeholder: string;
    size: "sm" | "md" | "lg";
    clearable: boolean;
    passwordToggle: boolean;
    passwordVisible: boolean;
    label?: string;
    pattern: string;
    minlength: number;
    maxlength: number;
    min: number | string;
    max: number | string;
    step: number | "any";
    autocapitalize: "off" | "none" | "on" | "sentences" | "words" | "characters";
    autocorrect: "off" | "on";
    autocomplete: string;
    autofocus: boolean;
    enterkeyhint: "enter" | "done" | "go" | "next" | "previous" | "search" | "send";
    inputmode: "none" | "text" | "decimal" | "numeric" | "tel" | "search" | "email" | "url";
    spellcheck: boolean;
    caption?: string;
    error: boolean;
    fullWidth: boolean;
    private handleBlur;
    private handleChange;
    private handleClearClick;
    private handleFocus;
    private handleInput;
    private handleInvalid;
    private handleKeyDown;
    handleSlotchange(e: any): void;
    render(): TemplateResult;
}

export declare class LinkComponent extends PlusBase {
    kind: "default" | "primary";
    href: string;
    target: "_blank" | "_parent" | "_self" | "_top";
    download?: string;
    rel: string;
    size: string;
    private handleClick;
    render(): TemplateResult;
}

export declare class LoadingComponent extends PlusBase {
    static styles: CSSResult[];
    render(): TemplateResult;
}

declare namespace Plus {
    enum Sizes {
        xs = "xs",
        sm = "sm",
        md = "md",
        lg = "lg",
        xl = "xl",
        custom = "custom"
    }
}

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 ProgressComponent extends PlusBase {
    size: "sm" | "md" | "lg";
    valueFormat: "percent" | "step";
    label?: string;
    caption?: string;
    error: boolean;
    status: "success" | "warning" | "error" | "info" | "default";
    statusIcon: boolean;
    maxValue: number;
    indeterminate: boolean;
    static host: CSSResult;
    static styles: CSSResult[];
    render(): TemplateResult;
}

export declare class RadioComponent extends PlusBase {
    radio: HTMLInputElement;
    size: "sm" | "md" | "lg";
    text: string;
    checked: boolean;
    error: boolean;
    hasFocus: boolean;
    private handleClick;
    private handleFocus;
    private handleBlur;
    render(): TemplateResult;
}

export declare class RadioGroupComponent extends PlusBase {
    aligment: "horizontal" | "vertical";
    defaultSlot: HTMLSlotElement;
    size: "sm" | "md" | "lg";
    label?: string;
    caption?: string;
    error: boolean;
    private handleSlotChange;
    render(): TemplateResult;
}

export declare class RatingComponent extends PlusBase {
    static host: CSSResult;
    static styles: CSSResult[];
    kind: "default" | "icon" | "face";
    status: "default" | "primary" | "custom";
    size: "sm" | "md" | "lg";
    emptyIcon: string;
    icon: string;
    max: number;
    step: number;
    defaultValue: number;
    value: number;
    hoveredValue: number;
    half: boolean;
    name: string;
    hasFocus: boolean;
    calculateSelectedWidth(index: number, half?: boolean, val?: number): string;
    hoveredWidth(index: number): string;
    handleSelect: (value: number) => () => void;
    render(): TemplateResult;
}

export declare class TabComponent extends PlusBase {
    static styles: CSSResult[];
    size: "sm" | "md" | "lg";
    active: boolean;
    kind: "vertical" | "horizontal";
    constructor();
    render(): TemplateResult;
}

export declare class TabGroupComponent extends PlusBase {
    static styles: CSSResult[];
    tabGroup: HTMLDivElement;
    tabSlot: HTMLSlotElement;
    panelSlot: HTMLSlotElement;
    size: "sm" | "md" | "lg";
    kind: "vertical" | "horizontal";
    disabled: boolean;
    private get tabItems();
    private get panelItems();
    protected handleSlotChange(): void;
    protected updated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
    handleClickItem({ target }: Event): void;
    render(): TemplateResult;
}

export declare class TabPanelComponent extends PlusBase {
    active: boolean;
    constructor();
    render(): TemplateResult;
}

export declare class textareaComponent extends PlusBase {
    static styles: CSSResult[];
    textarea: HTMLInputElement;
    private hasFocus;
    name: string;
    value: string;
    placeholder: string;
    size: "sm" | "md" | "lg";
    clearable: boolean;
    label?: string;
    minlength: number;
    maxlength: number;
    autocapitalize: "off" | "none" | "on" | "sentences" | "words" | "characters";
    autocorrect: "off" | "on";
    autocomplete: string;
    autofocus: boolean;
    enterkeyhint: "enter" | "done" | "go" | "next" | "previous" | "search" | "send";
    inputmode: "none" | "text" | "decimal" | "numeric" | "tel" | "search" | "email" | "url";
    spellcheck: boolean;
    caption?: string;
    error: boolean;
    rows: number;
    fullWidth: boolean;
    private handleBlur;
    private handleChange;
    private handleClearClick;
    private handleFocus;
    private handleInput;
    private handleInvalid;
    private handleKeyDown;
    render(): TemplateResult;
}

export declare class TextComponent extends PlusBase {
    static styles: CSSResult[];
    kind: "default" | "placeholder" | "caption";
    status: "default" | "success" | "warning" | "error" | "info";
    underline: boolean;
    overline: boolean;
    lineThrough: boolean;
    highlight: boolean;
    strong: boolean;
    italic: boolean;
    textTransform?: "uppercase" | "lowercase" | "capitalize";
    code: boolean;
    truncate: boolean;
    blockquote: boolean;
    size: string;
    type: string;
    textDecoration(): {
        "text-decoration"?: undefined;
    } | {
        "text-decoration": string;
    };
    render(): TemplateResult;
}

export declare class ToggleComponent extends PlusBase {
    static styles: CSSResult[];
    input: HTMLInputElement;
    private hasFocus;
    name: string;
    value: string;
    checked: boolean;
    size: "sm" | "md" | "lg";
    label?: string;
    text?: string;
    textPosition: "left" | "right";
    toggleIcon?: string;
    toggleActiveIcon?: string;
    toggleInActiveIcon?: string;
    caption?: string;
    error: boolean;
    private handleBlur;
    private handleInput;
    private handleInvalid;
    private handleClick;
    private handleFocus;
    private handleKeyDown;
    click(): void;
    focus(options?: FocusOptions): void;
    blur(): void;
    getToggleIcon(): "" | TemplateResult;
    render(): TemplateResult;
}

export { }
