import { Repository } from "typeorm";
import { User } from "../user/user.entity";
import { UserService } from "../user/user.services";
import { KycVerificationAttempt } from "src/common/kyc/kyc-verification-attempt.entity";
import { KycVerificationStatus } from "src/common/kyc/kyc-status.enum";
import { AdminKycQueryDto, CreateDiditSessionDto, ManualKycStatusUpdateDto } from "./didit.dto";
import { DiditService } from "./didit.service";
import { FirebaseService } from "../fcm/firebase.service";
import { UserRole } from "../user/user.entity";
import { VendorPlanOrder } from "src/common/vendor/vendor_plan_order.entity";
import { Vendor } from "src/common/vendor/vendor.entity";
import { VendorPlan } from "src/common/vendor/vendor_plan.entity";
import { emailOtpService } from "../emailotp/otp-email.service";
export declare class KycVerificationService {
    private readonly diditService;
    private readonly userService;
    private readonly firebaseService;
    private readonly emailService;
    private readonly attemptRepository;
    private readonly userRepository;
    private readonly orderRepo;
    private readonly vendorRepo;
    private readonly vendorPlanRepo;
    private readonly logger;
    constructor(diditService: DiditService, userService: UserService, firebaseService: FirebaseService, emailService: emailOtpService, attemptRepository: Repository<KycVerificationAttempt>, userRepository: Repository<User>, orderRepo: Repository<VendorPlanOrder>, vendorRepo: Repository<Vendor>, vendorPlanRepo: Repository<VendorPlan>);
    createSession(userId: number, dto: CreateDiditSessionDto): Promise<any>;
    getUserStatus(userId: number): Promise<{
        userId: number;
        verified: boolean;
        status: KycVerificationStatus;
        rejectionReason: string;
        verifiedAt: Date;
        latestAttempt: KycVerificationAttempt;
        canRetry: boolean;
    }>;
    getUserHistory(userId: number): Promise<KycVerificationAttempt[]>;
    getAttemptDiditDetails(userId: number): Promise<{
        hasSession: boolean;
        sessionId?: undefined;
        attemptId?: undefined;
        internalStatus?: undefined;
        decisionSource?: undefined;
        diditStatus?: undefined;
        mediaBaseUrl?: undefined;
        documents?: undefined;
        liveness?: undefined;
        extractedData?: undefined;
    } | {
        hasSession: boolean;
        sessionId: string;
        attemptId: number;
        internalStatus: KycVerificationStatus;
        decisionSource: string;
        diditStatus: string;
        mediaBaseUrl: string;
        documents: {
            frontUrl: any;
            backUrl: any;
            documentPhotoUrl: any;
            documentType: any;
            country: any;
            status: any;
        };
        liveness: {
            selfieUrl: any;
            similarityScore: any;
            livenessStatus: any;
        };
        extractedData: {
            firstName: any;
            lastName: any;
            dateOfBirth: any;
            nationality: any;
            documentNumber: any;
            expiryDate: any;
        };
    }>;
    private resolveKycBlock;
    private extractDocumentImages;
    private extractLivenessPhoto;
    private extractDocumentData;
    private get isAutoApproveEnabled();
    handleDiditWebhookPayload(body: any): Promise<{
        providerSessionId: string;
        userId: number;
        mappedStatus: KycVerificationStatus;
        rejectionReason: any;
    }>;
    adminListUsers(query: AdminKycQueryDto): Promise<{
        latestAttempt: KycVerificationAttempt;
        id: number;
        userId: string;
        name: string;
        lastName: string;
        email: string;
        dateOfBirth: string;
        nationality: string;
        preferredLanguage: string;
        gender: string;
        mobileNumber: string;
        googleId: string;
        appleId: string;
        otp: string;
        otpExpiresAt: Date;
        otpStatus: boolean;
        password: string;
        userPhoto: string;
        userVerified: boolean;
        userKycVerified: boolean;
        kycStatus: KycVerificationStatus;
        kycRejectedReason: string;
        kycLastVerifiedAt: Date;
        trnc: string;
        status: string;
        userLat: number;
        userLong: number;
        userAddress: string;
        deviceId: string;
        deviceType: string;
        createdAt: Date;
        updatedAt: Date;
        tickets: import("../../adminapi/support/ticket.entity").Ticket[];
        givenReviews: import("../../common/driverreview/driver-review.entity").DriverReview[];
        receivedReviews: import("../../common/driverreview/driver-review.entity").DriverReview[];
        roles: UserRole[];
    }[]>;
    adminUpdateUserStatus(userId: number, dto: ManualKycStatusUpdateDto, adminUserId?: number): Promise<{
        user: User;
        latestAttempt: KycVerificationAttempt;
    }>;
    private extractProviderStatus;
    private mapProviderStatus;
    private isFinalStatus;
    private extractProviderSessionId;
    private extractRejectionReason;
    private normalizeMetadata;
    private sendKycStatusNotification;
    private getNotificationPayload;
}
