import { n as BarcodeCaptureFeedbackJSON, t as BarcodeCaptureFeedback } from "./BarcodeCaptureFeedback-CsqAl7Fd.js";
import { t as BarcodeCaptureSession } from "./BarcodeCaptureSession-3Ds1nRs3.js";
import { n as BarcodeCaptureSettingsJSON, t as BarcodeCaptureSettings } from "./BarcodeCaptureSettings-D7PcXdhH.js";
import { CameraSettings, DataCaptureContext, DataCaptureMode, DataCaptureModeJSON, FrameData, PrivateDataCaptureMode } from "@scandit/web-datacapture-core";
import { Serializable } from "@scandit/web-datacapture-core/build/js/private/Serializable";

//#region src/main/BarcodeCapture.d.ts
interface PrivateBarcodeCapture extends PrivateDataCaptureMode {
  notifyContext: () => Promise<void>;
}
interface BarcodeCaptureListener {
  didScan?: (barcodeCapture: BarcodeCapture, session: BarcodeCaptureSession, frameData: FrameData) => void;
  didUpdateSession?: (barcodeCapture: BarcodeCapture, session: BarcodeCaptureSession) => void;
}
type BarcodeCaptureJSON = DataCaptureModeJSON<BarcodeCaptureSettingsJSON> & {
  feedback: BarcodeCaptureFeedbackJSON;
};
declare class BarcodeCapture implements DataCaptureMode, Serializable<BarcodeCaptureJSON> {
  private readonly type;
  private _isEnabled;
  private _feedback;
  private settings;
  private _context;
  private readonly listeners;
  private allowedRemainingWorkerMessages;
  private readonly workerMessageListener;
  static get recommendedCameraSettings(): CameraSettings;
  get context(): DataCaptureContext | null;
  get feedback(): BarcodeCaptureFeedback;
  static forContext(context: DataCaptureContext | null, settings: BarcodeCaptureSettings): Promise<BarcodeCapture>;
  setFeedback(feedback: BarcodeCaptureFeedback): Promise<void>;
  isEnabled(): boolean;
  setEnabled(enabled: boolean): Promise<void>;
  applySettings(settings: BarcodeCaptureSettings): Promise<void>;
  addListener(listener: BarcodeCaptureListener): void;
  removeListener(listener: BarcodeCaptureListener): void;
  toJSONObject(): BarcodeCaptureJSON;
  private sendClearFrameDataRequest;
  private onDidScan;
  private onDidUpdateSession;
  private onSuccessFeedback;
  private onWorkerMessage;
  private notifyContext;
}
//#endregion
export { BarcodeCapture, BarcodeCaptureListener, PrivateBarcodeCapture };