import { ReportsService } from "./reports.service";
import { CreateReportDto, UpdateReportDto, ReportMyPetDto, AddCommentDto, AddRewardDto, MarkReunitedDto, SearchReportsDto } from './pets.dto';
export declare class ReportsController {
    private readonly reportsService;
    constructor(reportsService: ReportsService);
    getAllReports(req: any, query: any): Promise<{
        status: boolean;
        statusCode: number;
        data: {
            reports: any[];
            total: number;
            page: number;
            hasMore: boolean;
        };
    } | {
        status: boolean;
        statusCode: number;
        data: any[];
    }>;
    getReunitedReports(limit?: string, offset?: string): Promise<{
        status: boolean;
        statusCode: number;
        data: {
            reports: {
                id: any;
                pet_name: any;
                breed: any;
                location_name: any;
                photo_uri: any;
                photo_uris: any;
                reunion_date: any;
                pet_reunited_id: any;
                status: any;
            }[];
            total: number;
            page: number;
            hasMore: boolean;
        };
    }>;
    getReportStats(): Promise<{
        status: boolean;
        statusCode: number;
        data: {
            lost: number;
            found: number;
            reunited: number;
        };
    }>;
    getReportFilterOptions(): Promise<{
        status: boolean;
        statusCode: number;
        data: {
            pet_type: string[];
            breed: string[];
            color: string[];
        };
    }>;
    searchReports(req: any, body: SearchReportsDto): Promise<{
        status: boolean;
        statusCode: number;
        data: {
            reports: any[];
            total: number;
            page: number;
            hasMore: boolean;
        };
    } | {
        status: boolean;
        statusCode: number;
        data: any[];
    }>;
    getMyReports(req: any, query: any): Promise<{
        status: boolean;
        statusCode: number;
        data: {
            reports: any[];
            total: number;
            page: number;
            hasMore: boolean;
        };
    } | {
        status: boolean;
        statusCode: number;
        data: any[];
    }>;
    createReport(req: any, body: CreateReportDto, files?: {
        photos?: Express.Multer.File[];
    }): Promise<{
        status: boolean;
        statusCode: number;
        data: any;
    }>;
    reportMyPet(req: any, body: ReportMyPetDto, files?: {
        photos?: Express.Multer.File[];
    }): Promise<{
        status: boolean;
        statusCode: number;
        data: any;
    }>;
    updateReport(req: any, id: string, body: UpdateReportDto, files?: {
        photos?: Express.Multer.File[];
    }): Promise<{
        status: boolean;
        statusCode: number;
        data: any;
    }>;
    deleteReport(req: any, id: string): Promise<{
        status: boolean;
        statusCode: number;
        message: string;
    }>;
    toggleLike(req: any, id: string): Promise<{
        status: boolean;
        statusCode: number;
        data: {
            likes: number;
            liked_by_me: boolean;
        };
    }>;
    addComment(req: any, id: string, body: AddCommentDto): Promise<{
        status: boolean;
        statusCode: number;
        data: {
            created_at: Date;
            deleted_at: Date | null;
            id: string;
            user_id: string | null;
            text: string;
            report_id: string;
            author: string;
        };
    }>;
    addReward(id: string, body: AddRewardDto): Promise<{
        status: boolean;
        statusCode: number;
        data: {
            description: string;
            created_at: Date;
            deleted_at: Date | null;
            id: string;
            updated_at: Date;
            user_id: string;
            status: string;
            latitude: number;
            longitude: number;
            is_active: boolean;
            pet_type: string;
            breed: string;
            color: string;
            pet_name: string;
            photo_uri: string;
            location_name: string;
            size: string;
            flag_id: string | null;
            markings: string;
            photo_uris: string | number | boolean | import("../../database/database.type").JsonArray | import("../../database/database.type").JsonObject | null;
            last_seen_date: string;
            reward: string;
            contact_name: string;
            contact_phone: string;
            pet_id: string | null;
            is_reunited: boolean | null;
            reunion_message: string | null;
            boost_expires_at: Date | null;
            boosted_at: Date | null;
            is_boosted: boolean;
            is_flagged: boolean;
            pet_reunited_id: string | null;
            reunion_date: Date | null;
            reward_pool: number;
            show_contact_public: boolean;
        };
    }>;
    boostReport(id: string): Promise<{
        status: boolean;
        statusCode: number;
        data: {
            description: string;
            created_at: Date;
            deleted_at: Date | null;
            id: string;
            updated_at: Date;
            user_id: string;
            status: string;
            latitude: number;
            longitude: number;
            is_active: boolean;
            pet_type: string;
            breed: string;
            color: string;
            pet_name: string;
            photo_uri: string;
            location_name: string;
            size: string;
            flag_id: string | null;
            markings: string;
            photo_uris: string | number | boolean | import("../../database/database.type").JsonArray | import("../../database/database.type").JsonObject | null;
            last_seen_date: string;
            reward: string;
            contact_name: string;
            contact_phone: string;
            pet_id: string | null;
            is_reunited: boolean | null;
            reunion_message: string | null;
            boost_expires_at: Date | null;
            boosted_at: Date | null;
            is_boosted: boolean;
            is_flagged: boolean;
            pet_reunited_id: string | null;
            reunion_date: Date | null;
            reward_pool: number;
            show_contact_public: boolean;
        };
    }>;
    markReunited(req: any, id: string, body: MarkReunitedDto): Promise<{
        status: boolean;
        statusCode: number;
        data: {
            description: string;
            created_at: Date;
            deleted_at: Date | null;
            id: string;
            updated_at: Date;
            user_id: string;
            status: string;
            latitude: number;
            longitude: number;
            is_active: boolean;
            pet_type: string;
            breed: string;
            color: string;
            pet_name: string;
            photo_uri: string;
            location_name: string;
            size: string;
            flag_id: string | null;
            markings: string;
            photo_uris: string | number | boolean | import("../../database/database.type").JsonArray | import("../../database/database.type").JsonObject | null;
            last_seen_date: string;
            reward: string;
            contact_name: string;
            contact_phone: string;
            pet_id: string | null;
            is_reunited: boolean | null;
            reunion_message: string | null;
            boost_expires_at: Date | null;
            boosted_at: Date | null;
            is_boosted: boolean;
            is_flagged: boolean;
            pet_reunited_id: string | null;
            reunion_date: Date | null;
            reward_pool: number;
            show_contact_public: boolean;
        };
    }>;
    savePet(req: any, id: string): Promise<{
        status: boolean;
        statusCode: number;
        message: string;
    }>;
    unsavePet(req: any, id: string): Promise<{
        status: boolean;
        statusCode: number;
        message: string;
    }>;
    getReportById(req: any, id: string): Promise<{
        status: boolean;
        statusCode: number;
        data: any;
    }>;
}
