import { LitElement, type TemplateResult, nothing } from 'lit';
import type { Constructor } from '../common/mixins/constructor.js';
import type { RangeTextSelectMode, SelectionRangeDirection } from '../types.js';
export interface IgcInputComponentEventMap {
    igcInput: CustomEvent<string>;
    igcChange: CustomEvent<string>;
    focus: FocusEvent;
    blur: FocusEvent;
}
declare const IgcInputBaseComponent_base: Constructor<import("../common/mixins/forms/types.js").FormRequiredInterface & import("../common/mixins/forms/types.js").FormAssociatedElementInterface> & Constructor<import("../common/mixins/event-emitter.js").EventEmitterInterface<IgcInputComponentEventMap>> & Constructor<LitElement>;
export declare abstract class IgcInputBaseComponent extends IgcInputBaseComponent_base {
    protected static shadowRootOptions: {
        delegatesFocus: boolean;
        mode: ShadowRootMode;
        serializable?: boolean;
        slotAssignment?: SlotAssignmentMode;
    };
    static styles: import("lit").CSSResult[];
    private static readonly increment;
    protected inputId: string;
    /** The value attribute of the control. */
    abstract value: string | Date | null;
    protected input: HTMLInputElement;
    protected _helperText: Array<HTMLElement>;
    protected prefixes: Array<HTMLElement>;
    protected suffixes: Array<HTMLElement>;
    protected get _isMaterial(): boolean;
    /**
     * Whether the control will have outlined appearance.
     * @attr
     */
    outlined: boolean;
    /**
     * Makes the control a readonly field.
     * @attr readonly
     */
    readOnly: boolean;
    /**
     * The placeholder attribute of the control.
     * @attr
     */
    placeholder: string;
    /**
     * The label for the control.
     * @attr
     */
    label: string;
    protected createRenderRoot(): HTMLElement | DocumentFragment;
    /** Sets focus on the control. */
    focus(options?: FocusOptions): void;
    /** Removes focus from the control. */
    blur(): void;
    protected abstract renderInput(): TemplateResult;
    protected renderValidatorContainer(): TemplateResult;
    protected resolvePartNames(base: string): {
        [x: string]: boolean;
        prefixed: boolean;
        suffixed: boolean;
        filled: boolean;
    };
    protected renderFileParts(): TemplateResult | typeof nothing;
    /** Sets the text selection range of the control */
    setSelectionRange(start: number, end: number, direction?: SelectionRangeDirection): void;
    /** Replaces the selected text in the input. */
    setRangeText(replacement: string, start: number, end: number, selectMode?: RangeTextSelectMode): void;
    private renderPrefix;
    private renderSuffix;
    private renderLabel;
    private renderMaterial;
    private renderStandard;
    protected render(): TemplateResult<1>;
}
export {};
