export type Thresholds = {
    cardThreshold: number;
    laplacianThreshold: number;
};
export type ScanAttempt = {
    timestamp: number;
    elapsed: number;
    cardScore: number;
    laplacianValue: number;
    captured: boolean;
    adjustmentCount: number;
    thresholds: Thresholds;
    side: Side;
};
export type Side = "front" | "back";
export type AdaptiveThresholdProps = {
    initialCardThreshold?: number;
    initialLaplacianThreshold?: number;
    minCardThreshold?: number;
    minLaplacianThreshold?: number;
    backsideMultiplier?: number;
    stabilizationPeriod?: number;
    adjustmentInterval?: number;
    reductionPerInterval?: number;
    maxAdjustments?: number;
    minAttemptsToReduceFront?: number;
    minAttemptsToReduceBack?: number;
};
export default class AdaptiveThreshold {
    private initialThresholds;
    currentThresholds: Thresholds;
    private intervalId?;
    private stabilizationPeriod;
    private adjustmentInterval;
    private maxAdjustments;
    private minAttemptsToReduceFront;
    private minAttemptsToReduceBack;
    private backsideMultiplier;
    private minCardThreshold;
    private minLaplacianThreshold;
    private scanAttempts;
    private scanStartTime;
    private isScanning;
    private adjustmentCount;
    private currentSide;
    private adjustmentMultiplier;
    private stabilizationTimerId?;
    private didCapture;
    private intervalCount;
    private now;
    private frontSuccessThresholds?;
    constructor({ initialCardThreshold, adjustmentInterval, backsideMultiplier, initialLaplacianThreshold, minCardThreshold, minLaplacianThreshold, reductionPerInterval, stabilizationPeriod, maxAdjustments, minAttemptsToReduceFront, minAttemptsToReduceBack, }: AdaptiveThresholdProps);
    startSession(side?: Side): void;
    getCurrent(): Thresholds;
    stopSession(): void;
    recordAttempt(cardScore: number, laplacian: number, captured: boolean): void;
    private reduce;
    private tick;
    private clearTimers;
}
