interface PlatformApiClientOpts { apiGatewayUrl: string; authServiceUrl: string; defaultTimeoutMs: number; } export interface DetectionResult { id: string; detection_type: string; detected: boolean; confidence: number; model_name: string; model_version: string; processing_time_ms: number; } export type FaceswapVerdict = "REAL" | "FAKE" | "SUSPICIOUS" | "UNKNOWN"; export interface FaceResult { verdict: FaceswapVerdict; confidence: number; bbox?: number[]; } /** * Synchronous result from sentinel_ai_image_detect. * Backend returns the full result inline (not async). * confidence_score range: 0.0–0.98 (AI model) or 1.0 (C2PA signature path only). */ export interface AiImageDetectResult { taskId: string; confidence_score: number; likely_ai_generated: boolean; status: "success" | "error"; processing_time_ms: number; model_info: { model_name: string; model_version: string; }; credits_used: number; error?: string; } export interface FaceAnalysisLiveness { prediction: "live" | "spoof"; spoof_score: number; confidence: number; } export interface FaceAnalysisFaceResult { face_index: number; coordinates: { x_min: number; y_min: number; x_max: number; y_max: number; }; detection_confidence: number; face_area: number; face_angle: { yaw: number; pitch: number; }; sunglasses: { p_sunglasses: number; }; age: { prob_18_plus: number; predicted_age: number; dist_std: number; }; is_reliable: boolean; rejection_reason: string | null; timestamp: number | null; } export interface FaceAnalysisResult { file_name: string; status: "success" | "error"; liveness: FaceAnalysisLiveness; faces: FaceAnalysisFaceResult[]; error?: string; } export interface FaceswapDetectResult { verdict: FaceswapVerdict; confidence: number; is_fake: boolean; likely_ai: boolean; num_faces_detected: number; face_results: FaceResult[]; model_info: { name: string; version: string; }; processing_time_ms: number; error?: string; } export interface DetectionHistoryItem { id: string; task_id: string; service_type: string; service_name: string; success: boolean; processing_time_ms: number; processing_time_display: string; created_at: string; created_at_display: string; request_summary: Record; response_summary: Record; detection_results: DetectionResult[]; } export interface DetectionHistoryPagination { limit: number; offset: number; total: number; has_more: boolean; total_pages: number; current_page: number; } export interface DetectionHistoryStats { total_requests: number; successful_requests: number; failed_requests: number; success_rate: number; average_processing_time: number; } export interface DetectionHistoryResponse { history: DetectionHistoryItem[]; pagination: DetectionHistoryPagination; stats: DetectionHistoryStats; meta: { generated_at: string; available_service_types: string[]; max_limit: number; }; } export interface DashboardOverview { period_days: number; start_date: string; end_date: string; totalRequests: number; successfulRequests: number; failedRequests: number; successRate: number; averageProcessingTime: number; success_rate_display: string; average_processing_time_display: string; } export interface DashboardByService { service_type: string; service_name: string; totalRequests: number; successfulRequests: number; failedRequests: number; successRate: number; averageProcessingTime: number; } export interface DashboardStatsResponse { overview: DashboardOverview; by_service: DashboardByService[]; meta: { generated_at: string; user_id: string; }; } export interface SubscriptionUsage { current: number; limit: number; remaining: number; } export interface SubscriptionInfo { id: string; serviceType: string; tier: string; status: "ACTIVE" | "INACTIVE"; usage: SubscriptionUsage; startAt: string; endAt: string; createdAt: string; } export interface UsageInfoResponse { success: boolean; subscriptions: SubscriptionInfo[]; } export type TaskStatusResponse = { status: "queued"; taskId: string; queuePosition: number; estimatedWaitTime: number; } | { status: "processing"; taskId: string; progress: number; startedAt: string; } | { status: "completed"; taskId: string; result: unknown; processingTime: number; completedAt: string; } | { status: "failed"; taskId: string; error: string; completedAt: string; }; export interface DetectionHistoryParams { limit: number; offset: number; service_type?: string | undefined; } export type AiImageSubmitResult = { kind: "complete"; result: AiImageDetectResult; } | { kind: "submitted"; taskId: string; }; export declare class PlatformApiClient { private readonly http; constructor(opts: PlatformApiClientOpts, apiKey: string); getDetectionHistory(params: DetectionHistoryParams): Promise; getDashboardStats(days: number): Promise; getUsageInfo(): Promise; getPricingInfo(): Promise; getTaskStatus(taskId: string): Promise; detectFaceSwap(payload: { data: { type: string; payload: string; }; filename: string; }, threshold?: number, timeoutMs?: number): Promise; detectFaceAnalysis(payload: { data: { type: string; payload: string; }; filename: string; }, timeoutMs?: number): Promise; detectAiImage(payload: { data: { type: string; payload: string; }; filename: string; }, threshold?: number, timeoutMs?: number): Promise; checkHealth(): Promise<{ apiGateway: boolean; }>; } export {};