import { LitElement, type PropertyValues, type TemplateResult } from 'lit';
import type { ThemingController } from '../../theming/theming-controller.js';
import { type MaskSelection } from '../common/mixins/mask-behavior.js';
import type { DatePartDeltas } from './date-part.js';
export type { MaskSelection };
declare const IgcDateTimeInputBaseComponent_base: import("../common/mixins/constructor.js").AbstractConstructor<import("../common/mixins/mask-behavior.js").MaskBehaviorElementInterface> & import("../common/mixins/constructor.js").Constructor<import("../common/mixins/forms/types.js").FormRequiredInterface & import("../common/mixins/forms/types.js").FormAssociatedElementInterface> & typeof LitElement;
export declare abstract class IgcDateTimeInputBaseComponent extends IgcDateTimeInputBaseComponent_base {
    protected abstract readonly _themes: ThemingController;
    protected readonly _slots: import("../common/controllers/slot.js").SlotController<"invalid" | "prefix" | "[default]" | "helper-text" | "suffix" | "value-missing" | "custom-error" | "range-overflow" | "range-underflow">;
    protected readonly _inputId: string;
    protected readonly _input?: HTMLInputElement;
    /**
     * Externally supplied label elements forwarded by a composite host (e.g. `igc-date-picker`)
     * so that the host's associated labels reach the inner native input. When set, these take
     * precedence over the component's own `ElementInternals` labels.
     *
     * @hidden @internal
     */
    _labelElements: ReadonlyArray<Element> | null;
    /**
     * Resolves the label elements applied to the native input as `aria-labelledby` targets,
     * preferring forwarded labels over the component's own `ElementInternals` labels.
     *
     * @hidden @internal
     */
    protected get _resolvedLabelElements(): ReadonlyArray<Element> | null;
    protected get __validators(): import("../common/validators.js").Validator<import("./date-time-input.js").default>[];
    private readonly _i18nController;
    protected _min: Date | null;
    protected _max: Date | null;
    protected _defaultMask: string;
    protected _defaultDisplayFormat: string;
    protected _displayFormat?: string;
    protected _inputFormat?: string;
    protected get _targetDatePart(): unknown;
    /**
     * Whether the control will have outlined appearance.
     *
     * @attr
     * @default false
     */
    outlined: boolean;
    /**
     * The placeholder attribute of the control.
     * @attr
     */
    placeholder: string;
    /**
     * The label for the control.
     * @attr
     */
    label: string;
    /**
     * The date format to apply on the input.
     * @attr input-format
     */
    get inputFormat(): string;
    set inputFormat(val: string);
    /**
     * The minimum value required for the input to remain valid.
     * @attr
     */
    set min(value: Date | string | null | undefined);
    get min(): Date | null;
    /**
     * The maximum value required for the input to remain valid.
     * @attr
     */
    set max(value: Date | string | null | undefined);
    get max(): Date | null;
    /**
     * Format to display the value in when not editing.
     * Defaults to the locale format if not set.
     * @attr display-format
     */
    set displayFormat(value: string);
    get displayFormat(): string;
    /**
     * Delta values used to increment or decrement each date part on step actions.
     * All values default to `1`.
     */
    spinDelta?: DatePartDeltas;
    /**
     * Sets whether to loop over the currently spun segment.
     * @attr spin-loop
     */
    spinLoop: boolean;
    /**
     * Gets/Sets the locale used for formatting the display value.
     * @attr locale
     */
    set locale(value: string);
    get locale(): string;
    constructor();
    protected update(props: PropertyValues<this>): void;
    private _handleResourceChange;
    protected _handleDragLeave(): void;
    protected _handleDragEnter(): void;
    /**
     * Handles wheel events for spinning date parts.
     */
    protected _handleWheel(event: WheelEvent): Promise<void>;
    /**
     * Navigates to the previous or next date part.
     */
    protected _navigateParts(direction: number): void;
    /**
     * Handles keyboard-triggered spinning (arrow up/down).
     */
    protected _keyboardSpin(direction: 'up' | 'down'): Promise<void>;
    /**
     * Common logic for stepping up or down a date part.
     * @internal
     */
    protected _performStep(datePart: unknown, delta: number | undefined, isDecrement: boolean): void;
    /**
     * Updates the displayed mask value based on focus state.
     * When focused, shows the editable mask. When unfocused, defers to the leaf's display formatter.
     */
    protected _updateMaskDisplay(): void;
    /**
     * Checks if all mask positions are filled (no prompt characters remain).
     */
    protected _isMaskComplete(): boolean;
    /**
     * Applies a mask pattern to the input, parsing the format string into date parts.
     */
    protected _applyMask(formatString: string): void;
    /**
     * Updates the default display format based on current locale.
     */
    private _updateDefaultDisplayFormat;
    protected _initializeDefaultMask(): void;
    /**
     * Resolves the part names for the container based on the current state.
     */
    protected _resolvePartNames(base: string): Record<string, boolean>;
    /** Selects all the text inside the input. */
    select(): void;
    /** Sets focus on the control. */
    focus(options?: FocusOptions): void;
    /** Removes focus from the control. */
    blur(): void;
    /** Increments a date/time portion. */
    stepUp(datePart?: unknown, delta?: number): void;
    /** Decrements a date/time portion. */
    stepDown(datePart?: unknown, delta?: number): void;
    /** Clears the input element of user input. */
    abstract clear(): void;
    protected _renderInput(): TemplateResult;
    protected render(): import("lit-html/directive.js").DirectiveResult<typeof import("lit-html/directives/cache.js").CacheDirective>;
    protected abstract get _datePartDeltas(): DatePartDeltas;
    protected abstract _buildMaskedValue(): string;
    protected abstract _buildDisplayValue(): string;
    protected abstract _syncValueFromMask(): void;
    protected abstract _calculatePartNavigationPosition(value: string, direction: number): number;
    protected abstract _calculateSpunValue(part: unknown, delta: number | undefined, isDecrement: boolean): unknown;
    protected abstract _commitSpunValue(value: unknown): void;
    protected abstract _setCurrentDateTime(): void;
    protected abstract _handleFocus(): Promise<void>;
    protected abstract _getDatePartAtCursor(): unknown;
    protected abstract _getDefaultDatePart(): unknown;
    abstract hasDateParts(): boolean;
    abstract hasTimeParts(): boolean;
}
