import { Backdrop } from '@scandit/web-datacapture-core/build/js/private/ui/atoms/Backdrop.js';
import { ScanditHTMLElement } from '@scandit/web-datacapture-core/build/js/private/utils/index.js';
import { Button } from '../atoms/Button.js';
import { TextInputEventMap, TextInput } from '../atoms/TextInput.js';
import '@scandit/web-datacapture-core/build/js/private/GestureRecognizer/GestureRecognizer.js';
import '@scandit/web-datacapture-core/build/js/commons/Color.js';

/**
 * Custom events emitted by LabelCaptureValidationFlowLayout
 */
declare const LabelCaptureValidationFlowLayoutEvents: {
    readonly ClearAllButtonClicked: "scandit-clear-all-button-clicked";
    readonly PauseButtonClicked: "scandit-pause-button-clicked";
    readonly ClickedOutsideList: "scandit-clicked-outside-list";
    readonly ValidationFlowLayoutChange: "scandit-validation-flow-layout-change";
};
interface LabelCaptureValidationFlowLayoutEventMap extends TextInputEventMap {
    [LabelCaptureValidationFlowLayoutEvents.ClearAllButtonClicked]: CustomEvent<{
        inputs: TextInput[];
    }>;
    [LabelCaptureValidationFlowLayoutEvents.PauseButtonClicked]: CustomEvent<void>;
    [LabelCaptureValidationFlowLayoutEvents.ClickedOutsideList]: CustomEvent<void>;
    [LabelCaptureValidationFlowLayoutEvents.ValidationFlowLayoutChange]: CustomEvent<{
        buttonContainerHeight: number;
        safeAreaInsetBottom: number;
        safeAreaInsetTop: number;
        safeAreaInsetLeft: number;
        safeAreaInsetRight: number;
    }>;
}
declare global {
    interface HTMLElementEventMap extends LabelCaptureValidationFlowLayoutEventMap {
    }
}
declare class LabelCaptureValidationFlowLayout extends ScanditHTMLElement {
    static tag: "scandit-label-capture-validation-flow-layout";
    private static injectedStyleElement;
    private dataCaptureViewContainer_;
    private dataCaptureViewWrapper_;
    private backdrop_;
    private adaptiveRecognitionOverlay_;
    private clearButton_;
    private submitButton_;
    private pauseButton_;
    private gridLayoutContainer_;
    private buttonsContainer_;
    private orientationObserver_;
    private onOrientationChangeHandler;
    private onClearButtonClickHandler;
    private onPauseButtonClickHandler;
    private onDataCaptureViewWrapperClickHandler;
    private collapseAnimations;
    private focusedInput;
    private focusedInputOffset;
    private currentAnimationPromise;
    private lastOrientationEvent_;
    private static createStyleElement;
    static create(): LabelCaptureValidationFlowLayout;
    static register(): void;
    get dataCaptureViewContainer(): HTMLDivElement | null;
    get backdrop(): Backdrop | null;
    get clearButton(): Button | null;
    get submitButton(): Button | null;
    get pauseButton(): Button | null;
    getInputs(): TextInput[];
    getInputByName(name: string): TextInput | undefined;
    private static injectStyles;
    connectedCallback(): void;
    disconnectedCallback(): void;
    private onClearButtonClick;
    private onPauseButtonClick;
    private onDataCaptureViewWrapperClick;
    private addButtonIcons;
    private setupOrientationObserver;
    private onOrientationChange;
    private showButton;
    private hideButton;
    showValidationButtons(): void;
    showScanningButtons(): void;
    hideAllButtons(): void;
    private get buttonsContainerHeight();
    get finishButtonText(): string;
    set finishButtonText(text: string);
    get restartButtonText(): string;
    set restartButtonText(text: string);
    get pauseButtonText(): string;
    set pauseButtonText(text: string);
    appendInputs(...inputs: TextInput[]): void;
    waitForAnimations(): Promise<void>;
    /**
     * Cancel all collapse animations and reset every input to a clean state
     * (no inline pointer-events, no running animations). Use after restore or before a new move.
     */
    private resetInputsState;
    moveInputToTop(focusedInput: TextInput): Promise<void>;
    restoreInputsPositions(): Promise<void>;
    showAdaptiveRecognitionOverlay(): void;
    hideAdaptiveRecognitionOverlay(): void;
}
declare global {
    interface HTMLElementTagNameMap {
        [LabelCaptureValidationFlowLayout.tag]: LabelCaptureValidationFlowLayout;
    }
}

export { LabelCaptureValidationFlowLayout, type LabelCaptureValidationFlowLayoutEventMap, LabelCaptureValidationFlowLayoutEvents };
