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>;
}

declare type SizeType = "sm" | "md" | "lg";

declare type StatusType = "success" | "warning" | "error" | "info" | "default";

declare class ToastComponent extends PlusBase {
    toast: HTMLElement | undefined;
    size: SizeType;
    kind: "filled" | "outlined";
    placement: PlacementType;
    status: StatusType;
    invert: boolean;
    dismiss: boolean;
    duration: number;
    position: "top-left" | "top-right" | "bottom-left" | "bottom-right";
    message: string;
    _icon: string;
    set icon(value: any);
    get icon(): any;
    timeOutId: any;
    protected firstUpdated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
    show(): Promise<void>;
    private createToastContainer;
    private toastContainer;
    private mouseEnter;
    private mouseLeave;
    render(): TemplateResult<1>;
}

export declare class ToastContainerComponent extends PlusBase {
    position: "top-left" | "top-right" | "bottom-left" | "bottom-right";
    id: string;
    showToast(toast: ToastComponent): void;
    hideToast(toast: ToastComponent): void;
    render(): TemplateResult<1>;
}

export { }
