import { e as LabelFieldDefinition } from '../../../sdcLabelInternalModuleCapture-CxPSiq2o.js';
import { g as NativeProxyAdapter, N as NativeProxyHandle } from '../../../NativeProxy-BpXwaSl-.js';
import '../../../djinni-types/sdcBarcodeData.js';
import '../../../djinni-types/sdcSymbologySettings.js';
import '@scandit/web-datacapture-core/build/js/worker/dataCaptureWorkerRelated';
import '../../../djinni-types/sdcCoreInternalSdkArea.js';
import '../../../djinni-types/sdcCoreInternalSdkCommonGeometry.js';
import '../../../djinni-types/sdcCoreCommonGraphic.js';
import '../../../djinni-types/sdcCoreCommonGeometry.js';
import '../../../djinni-types/sdcCoreInternalSdkCommonAsync.js';
import '../../../djinni-types/sdcCoreInternalSdkOcr.js';
import '../../../djinni-types/sdcCoreCommon.js';
import '../../../djinni-types/sdcLabelData.js';
import '../../../djinni-types/sdcLabelInternalModuleData.js';
import '../../../djinni-types/sdcBarcodeInternalSdkData.js';
import '../../../djinni-types/sdcCoreCommonBuffer.js';
import '@scandit/web-datacapture-barcode';
import '../../../djinni-types/sdcCoreInternalSdkUiViewfinder.js';
import '../../../djinni-types/sdcCoreInternalSdkCommonGraphics.js';
import '../../../djinni-types/sdcLabelInternalModuleUiOverlay.js';
import '../../../djinni-types/sdcCoreInternalSdkCapture.js';
import '../../../djinni-types/sdcCoreInternalSdkUiStyle.js';
import '@scandit/web-datacapture-core';
import '../../../api/AdaptiveRecognitionMode.js';
import '../../../api/CapturedLabel.js';
import '../../../api/LabelField.js';
import '../../../api/LabelFieldState.js';
import '../../../api/LabelFieldType.js';
import '../../../api/LabelFieldValueType.js';
import '../../../api/LabelDateResult.js';
import '@scandit/web-datacapture-core/build/js/private/nativeHandle.js';
import '../../../api/LabelCaptureSession.js';
import '../../../api/LabelDateFormat.js';
import '../../../api/LabelDateComponentFormat.js';
import '../../../api/LabelFieldLocationType.js';
import '../../../api/ReceiptScanningLineItem.js';
import '../../../api/ValidationFlowField.js';

/**
 * Abstract base class for all label field definition proxies (text and barcode fields).
 * Provides common methods inherited from LabelFieldDefinition in the C++ implementation.
 *
 * Common methods:
 * - getName(), isOptional(), setOptional()
 * - getValueRegexes(), setValueRegexes() (delegates to getPatterns/setPatterns)
 * - getAnchorRegexes(), setAnchorRegexes() (delegates to getDataTypePatterns/setDataTypePatterns)
 * - getHiddenProperties(), setHiddenProperties()
 * - getLocation(), setLocation() (optional, overridden in subclasses that support it)
 * - asLabelFieldDefinition() (polymorphic conversion)
 *
 * Direct concrete implementations:
 * - Text fields: CustomTextProxy, DateTextProxy, ExpiryDateTextProxy, etc.
 *
 * Subclasses with specialized methods:
 * - BarcodeFieldProxyBase (provides barcode-specific methods: getSymbologies, setSymbologies)
 *
 * Generic parameter T: The native type being proxied (e.g., DateText, CustomText, BarcodeField).
 * Location methods are optional and throw notImplementedError() if not overridden.
 */
declare abstract class LabelFieldDefinitionBaseProxy<T extends Omit<LabelFieldDefinition, "getLocation" | "setLocation">> extends NativeProxyAdapter<T> {
    getName(handle: NativeProxyHandle): Promise<string>;
    isOptional(handle: NativeProxyHandle): Promise<boolean>;
    setOptional(handle: NativeProxyHandle, optional: boolean): Promise<void>;
    getValueRegexes(handle: NativeProxyHandle): Promise<string[]>;
    setValueRegexes(handle: NativeProxyHandle, valueRegexes: string[]): Promise<void>;
    getAnchorRegexes(handle: NativeProxyHandle): Promise<string[] | undefined>;
    setAnchorRegexes(handle: NativeProxyHandle, anchorRegexes: string[]): Promise<void>;
    getHiddenProperties(handle: NativeProxyHandle): Promise<string>;
    setHiddenProperties(handle: NativeProxyHandle, jsonString: string): Promise<void>;
    /**
     * Get the field location (if supported by this field type).
     * Override in subclasses that support location-based extraction.
     *
     * @throws Error if location extraction is not supported by this field type
     */
    getLocation(_handle: NativeProxyHandle): Promise<NativeProxyHandle | undefined>;
    /**
     * Set the field location (if supported by this field type).
     * Override in subclasses that support location-based extraction.
     *
     * @throws Error if location extraction is not supported by this field type
     */
    setLocation(_handle: NativeProxyHandle, _locationHandle: NativeProxyHandle): Promise<void>;
    /**
     * Helper method to generate a consistent error message for unsupported asLabelFieldDefinition().
     * Subclasses should call this from their asLabelFieldDefinition() implementation.
     *
     * @returns Error with a descriptive message including the proxy class name
     */
    protected notImplementedError(): Error;
    abstract asLabelFieldDefinition(_handle: NativeProxyHandle): Promise<LabelFieldDefinition>;
}

export { LabelFieldDefinitionBaseProxy };
