import { Model } from 'mongoose';
import { OtpManagementDocument, Channel } from './schemas/otp-management.schema';
export declare class OtpService {
    private readonly otpModel;
    constructor(otpModel: Model<OtpManagementDocument>);
    private now;
    private normalizeValue;
    debugNormalizedValue(channel: Channel, value: string): string;
    private generateCode;
    getExpiryMinutes(): number;
    create(channel: Channel, value: string): Promise<string>;
    canResend(channel: Channel, value: string): Promise<boolean>;
    markResent(channel: Channel, value: string): Promise<void>;
    check(channel: Channel, value: string, otp: string): Promise<boolean>;
    verify(channel: Channel, value: string, otp: string): Promise<boolean>;
    getAttemptsInfo(channel: Channel, value: string): Promise<{
        attemptsUsed: number;
        lockedUntil: number | null;
    }>;
    getResendLeftMs(channel: Channel, value: string): Promise<number>;
}
