import { Pool } from 'pg';
import { Logger } from 'pino-nestjs';
import { WalletService } from '../wallet/wallet.service';
import { DeviceService } from '../devices/device.service';
import { PushService } from '../push/push.service';
import { ImageService } from "../../utils/image/image.service";
import { IMatchGroups } from './ai.types';
export declare class AiService {
    private readonly pool;
    private readonly walletService;
    private readonly deviceService;
    private readonly pushService;
    private readonly imageService;
    private readonly logger;
    private readonly websiteUrl;
    private readonly classifierUrl;
    constructor(pool: Pool, walletService: WalletService, deviceService: DeviceService, pushService: PushService, imageService: ImageService, logger: Logger);
    getMatches(reportId: string): Promise<{
        status: boolean;
        statusCode: number;
        data?: IMatchGroups;
        message?: string;
    }>;
    private scoreCandidate;
    private notifyMatchFound;
    quickSnapMatch(photoFiles: Express.Multer.File[], petType?: string): Promise<{
        status: boolean;
        statusCode: number;
        data: {
            matches: unknown[];
        };
    }>;
    scanPost(userId: string, postText?: string, url?: string): Promise<{
        status: boolean;
        statusCode: number;
        data: {
            extracted: {
                isRelevant: boolean;
                status: string;
                pet_type: string;
                pet_name: string;
                breed: string;
                size: string;
                color: string;
                markings: string;
                description: string;
                location_name: string;
                contactInfo: string;
                reward: string;
                postSummary: string;
            };
            matches: unknown[];
            message: string | undefined;
        };
    }>;
    detectBreed(userId: string, photoFiles: Express.Multer.File[], requestId?: string, idempotencyKey?: string): Promise<{
        status: boolean;
        statusCode: import("@nestjs/common").HttpStatus;
        data: {
            duplicate: boolean;
            delta: number;
            balance_after: number;
            balance: import("../wallet/wallet.service").WalletBalance;
        };
        message?: undefined;
    } | {
        status: boolean;
        statusCode: import("@nestjs/common").HttpStatus;
        message: string;
        data: {
            basic_credits: number;
            additional_credits: number;
            total_credits: number;
            required_credits: number;
            duplicate?: undefined;
            delta?: undefined;
            balance_after?: undefined;
            balance?: undefined;
        };
    } | {
        status: boolean;
        statusCode: import("@nestjs/common").HttpStatus;
        data: {
            duplicate: boolean;
            delta: number;
            balance: {
                basic_credits: number;
                additional_credits: number;
                total_credits: number;
            };
            balance_after?: undefined;
        };
        message?: undefined;
    } | {
        status: boolean;
        statusCode: number;
        data: {
            detection: {
                pet_type: string;
                breed: null;
                confidence: null;
                size: null;
                color: null;
                supported: boolean;
                is_animal: boolean;
                detection_reason: string;
                not_animal_reason: string;
                detected_object: string | null;
                detected_object_confidence: number | null;
                detected_objects: any[];
                images_processed: number | null;
            };
            flagged: boolean;
            flag_id: string;
            balance: null;
            duplicate: boolean;
            credits_used: number;
        };
    } | {
        status: boolean;
        statusCode: number;
        data: {
            detection: {
                pet_type: {};
                breed: {};
                size: {};
                color: {};
                confidence: {} | null;
            };
            balance: import("../wallet/wallet.service").WalletBalance | null;
            duplicate: boolean;
            credits_used: number;
            flagged?: undefined;
            flag_id?: undefined;
        };
    }>;
    disputeDetectionFlag(userId: string, flagId: string | undefined, reason: string, detection?: Record<string, unknown>): Promise<{
        status: boolean;
        statusCode: number;
        data: {
            message: string;
        };
    }>;
    private insertFlaggedReport;
    private callBreedClassifier;
}
