import { UserRole } from '@prisma/client';
import { CreateReviewDto } from './dto/create-review.dto';
import { RespondReviewDto } from './dto/respond-review.dto';
import { ReviewsService } from './reviews.service';
type AuthedRequest = {
    user: {
        id: string;
        role: UserRole;
        shopId: string | null;
    };
};
export declare class ReviewsController {
    private readonly reviews;
    constructor(reviews: ReviewsService);
    list(req: AuthedRequest, shopId?: string): Promise<{
        id: string;
        shopId: string;
        createdAt: Date;
        source: import("@prisma/client").$Enums.ReviewSource;
        customerPhone: string | null;
        rating: number;
        customerUserId: string | null;
        category: string | null;
        customerName: string;
        comment: string;
        googleStatus: import("@prisma/client").$Enums.ReviewGoogleStatus;
        googleExternalId: string | null;
        googlePostDate: Date | null;
        cashiStatus: import("@prisma/client").$Enums.ReviewCashiStatus;
        cashiPostDate: Date | null;
        response: string | null;
    }[]>;
    listPaged(req: AuthedRequest, page?: string, limit?: string, q?: string, rating?: string, googleStatus?: string, cashiStatus?: string, source?: string, category?: string, from?: string, to?: string, shopId?: string): Promise<{
        page: number;
        limit: number;
        total: number;
        items: {
            id: string;
            shopId: string;
            createdAt: Date;
            source: import("@prisma/client").$Enums.ReviewSource;
            customerPhone: string | null;
            rating: number;
            customerUserId: string | null;
            category: string | null;
            customerName: string;
            comment: string;
            googleStatus: import("@prisma/client").$Enums.ReviewGoogleStatus;
            googleExternalId: string | null;
            googlePostDate: Date | null;
            cashiStatus: import("@prisma/client").$Enums.ReviewCashiStatus;
            cashiPostDate: Date | null;
            response: string | null;
        }[];
    }>;
    create(req: AuthedRequest, dto: CreateReviewDto): Promise<{
        id: string;
        shopId: string;
        createdAt: Date;
        source: import("@prisma/client").$Enums.ReviewSource;
        customerPhone: string | null;
        rating: number;
        customerUserId: string | null;
        category: string | null;
        customerName: string;
        comment: string;
        googleStatus: import("@prisma/client").$Enums.ReviewGoogleStatus;
        googleExternalId: string | null;
        googlePostDate: Date | null;
        cashiStatus: import("@prisma/client").$Enums.ReviewCashiStatus;
        cashiPostDate: Date | null;
        response: string | null;
    }>;
    respond(req: AuthedRequest, id: string, dto: RespondReviewDto): Promise<{
        id: string;
        updatedAt: Date;
        response: string | null;
    }>;
    postToGoogle(req: AuthedRequest, id: string): Promise<{
        posted: boolean;
        review?: undefined;
    } | {
        posted: boolean;
        review: {
            id: string;
            googleStatus: import("@prisma/client").$Enums.ReviewGoogleStatus;
            googlePostDate: Date | null;
        };
    }>;
    removeFromGoogle(req: AuthedRequest, id: string): Promise<{
        removed: boolean;
        review: {
            id: string;
            googleStatus: import("@prisma/client").$Enums.ReviewGoogleStatus;
        };
    }>;
    postToCashi(req: AuthedRequest, id: string): Promise<{
        posted: boolean;
        review?: undefined;
    } | {
        posted: boolean;
        review: {
            id: string;
            cashiStatus: import("@prisma/client").$Enums.ReviewCashiStatus;
            cashiPostDate: Date | null;
        };
    }>;
    removeFromCashi(req: AuthedRequest, id: string): Promise<{
        removed: boolean;
        review: {
            id: string;
            cashiStatus: import("@prisma/client").$Enums.ReviewCashiStatus;
        };
    }>;
    delete(req: AuthedRequest, id: string): Promise<{
        deleted: boolean;
    }>;
}
export {};
