import React from 'react'; interface InitOptions { reference?: string; email?: string; callback_url?: string; redirect_url?: string; device_type?: "WEB" | "MOBILE"; ui?: { classNames?: Record; styles?: Record; }; } interface InitResponseData { session_id: string; device_type: "WEB" | "MOBILE"; next_step: string; resume: boolean; verification_url: string; qrcode_url?: string; callback_url: string; redirect_url: string; expired_at: string; } interface InitResponse { status: string; message: string; data: InitResponseData; } declare class VerificationSDK { serverKey: string; sessionId: string | null; deviceType: "WEB" | "MOBILE"; qrCodeUrl: string | null; uiConfig: { classNames?: Record; styles?: Record; }; static defaultUi: { classNames?: Record; styles?: Record; } | null; apiBaseUrl: string; constructor({ serverKey, apiBaseUrl }: { serverKey: string; apiBaseUrl?: string; }); /** * Expose server key so web can embed it in QR for mobile handoff */ getServerKey(): string; /** * Set session ID for existing sessions (used for mobile continuation) */ setSessionId(sessionId: string): void; /** * Clear the active session and related cached artifacts */ resetSession(): void; /** * Get QR code URL for mobile switching (if available from init response) */ getQrCodeUrl(): string | null; /** * Set QR code URL from init response */ setQrCodeUrl(url: string): void; /** * Get current session ID */ getSessionId(): string | null; /** * Step 1: Initialize session */ init(options: InitOptions): Promise; /** * Step 2: Upload face scan */ face(faceBlob: Blob, serverKey: any): Promise; /** * Backwards-compatible alias to match UI usage */ uploadFace(faceBlob: Blob, serverKey: any): Promise; /** * Step 3: Upload document (ID_CARD, PASSPORT, etc.) */ uploadDocument(docBlob: Blob, type: string, serverKey: any): Promise; /** * Step 4: Check verification status */ getStatus(serverKey: any): Promise; /** * Step 5: Fetch final KYC result for the session */ getResult(serverKey: any): Promise; /** * Retry an onsite KYC session (e.g. when face is already registered) */ retrySession(serverKey: any): Promise; /** * Get default UI configuration provided at init */ getUiConfig(): { classNames?: Record; styles?: Record; }; } interface KycModalClassNames { backdrop?: string; container?: string; closeButton?: string; title?: string; input?: string; statusBlock?: string; error?: string; loading?: string; } interface KycModalStyleOverrides { backdrop?: React.CSSProperties; container?: React.CSSProperties; closeButton?: React.CSSProperties; title?: React.CSSProperties; input?: React.CSSProperties; statusBlock?: React.CSSProperties; error?: React.CSSProperties; loading?: React.CSSProperties; } interface KycModalProps { sdk: VerificationSDK; onClose: () => void; classNames?: KycModalClassNames; styles?: KycModalStyleOverrides; defaultDocumentType?: string; } declare const KycModal: React.FC; interface MobileKycPageProps { sessionId?: string; serverKey?: string; sdk?: VerificationSDK; showFinalStatus?: boolean; apiBaseUrl?: string; } declare const MobileKycPage: React.FC; interface MobileKycRouterProps { sdk?: VerificationSDK; serverKey?: string; apiBaseUrl?: string; } /** * Mobile KYC Router Component * Handles routing for mobile KYC continuation * Usage: */ declare const MobileKycRouter: React.FC; interface KycInitFormProps { sdk?: VerificationSDK; serverKey?: string; defaultValues?: { reference?: string; email?: string; callback_url?: string; redirect_url?: string; }; onStarted?: (sdk: VerificationSDK) => void; qrOnlyMode?: boolean; hideCameraPreview?: boolean; onFaceCompleted?: () => void; pollIntervalMs?: number; } declare const KycInitForm: React.FC; interface TermsScreenProps { title?: string; termsHtml?: string; onAccept: () => void; onDecline: () => void; classNames?: { backdrop?: string; container?: string; title?: string; input?: string; }; styles?: { backdrop?: React.CSSProperties; container?: React.CSSProperties; title?: React.CSSProperties; input?: React.CSSProperties; }; } declare const TermsScreen: React.FC; interface KycFlowProps { sdk?: VerificationSDK; serverKey?: string; sessionId?: string; startAtQr?: boolean; pollIntervalMs?: number; onClose?: () => void; apiBaseUrl?: string; mobileBaseUrl?: string; } declare const KycFlow: React.FC; interface WebQRRedirectProps { sessionId: string; serverKey: string; } /** * Simple redirect page shown when QR code is scanned on web * Gives user option to continue on mobile for better camera quality */ declare const WebQRRedirect: React.FC; interface StandaloneKycPageProps { serverKey: string; } declare const StandaloneKycPage: React.FC; declare function openKycInNewWindow(sessionId: string): Window | null; export { type InitOptions, type InitResponse, type InitResponseData, KycFlow, KycInitForm, KycModal, MobileKycPage, MobileKycRouter, StandaloneKycPage, TermsScreen, VerificationSDK, WebQRRedirect, openKycInNewWindow };