import type { WithNormalizedProps } from "../../global";
import type { AttrOnOff, AttrString, AttrStringOrNumber } from "marko/tags-html";
export interface TextboxEvent {
    originalEvent: Event;
    value: string;
}
export interface TextboxInput extends Omit<Marko.HTML.Input, `on${string}`> {
    multiline?: boolean;
    type?: Marko.HTML.Input["type"];
    "input-size"?: "regular" | "large";
    fluid?: boolean;
    "opaque-label"?: boolean;
    "floating-label"?: AttrString;
    "floating-label-static"?: boolean;
    "prefix-icon"?: Marko.AttrTag<{
        renderBody: Marko.Body;
    }>;
    "prefix-text"?: Marko.AttrTag<{
        renderBody: Marko.Body;
    }>;
    "postfix-text"?: Marko.AttrTag<{
        renderBody: Marko.Body;
    }>;
    "postfix-icon"?: Marko.AttrTag<{
        renderBody: Marko.Body;
    }>;
    invalid?: boolean;
    "button-aria-label"?: AttrString;
    "on-floating-label-init"?: () => void;
    "on-keydown"?: (event: TextboxEvent) => void;
    "on-keypress"?: (event: TextboxEvent) => void;
    "on-keyup"?: (event: TextboxEvent) => void;
    "on-change"?: (event: TextboxEvent) => void;
    "on-input-change"?: (event: TextboxEvent) => void;
    "on-focus"?: (event: TextboxEvent) => void;
    "on-blur"?: (event: TextboxEvent) => void;
    "on-invalid"?: (event: TextboxEvent) => void;
    "on-button-click"?: (event: TextboxEvent) => void;
    autocorrect?: AttrOnOff;
    cols?: AttrStringOrNumber;
    rows?: AttrStringOrNumber;
}
export interface Input extends WithNormalizedProps<TextboxInput> {
}
declare class Textbox extends Marko.Component<Input> {
    _floatingLabel: any;
    onMount(): void;
    onUpdate(): void;
    focus(): void;
    /** Can be removed after `:has` is fully supported */
    onFocus(e: FocusEvent, el: HTMLInputElement): void;
    /** Can be removed after `:has` is fully supported */
    onBlur(e: FocusEvent, el: HTMLInputElement): void;
    _setupMakeup(): void;
    forwardEvent(eventName: string, originalEvent: Event, el: HTMLInputElement | HTMLTextAreaElement | HTMLButtonElement): void;
}
export default Textbox;
