import { PrismaService } from "../../core/database/prisma/prisma.service";
import { CreateTicketDto, UpdateTicketDto, UpdateTicketStatusDto, AssignTicketDto, QueryTicketDto, CreateCommentDto, QueryCommentDto, CreateSatisfactionDto, QueryActivityDto } from './dto';
import { PaginatedResponse, TicketDetailResponse, TicketListItemResponse, CommentResponse, ActivityResponse } from './entities';
import { CategoryService } from './services/category.service';
import { AssignService } from './services/assign.service';
export declare class TicketsService {
    private readonly prisma;
    private readonly categoryService;
    private readonly assignService;
    private readonly logger;
    private ticketCounter;
    constructor(prisma: PrismaService, categoryService: CategoryService, assignService: AssignService);
    private generateTicketNo;
    create(createTicketDto: CreateTicketDto, creatorId: string, region?: string, tenantId?: string): Promise<TicketDetailResponse>;
    findAll(query: QueryTicketDto, userId: string, userGroupIds?: string[], isAdmin?: boolean): Promise<PaginatedResponse<TicketListItemResponse>>;
    findOne(id: string, userId: string, userGroupIds?: string[], isAdmin?: boolean): Promise<TicketDetailResponse>;
    update(id: string, updateTicketDto: UpdateTicketDto, userId: string): Promise<TicketDetailResponse>;
    updateStatus(id: string, updateStatusDto: UpdateTicketStatusDto, userId: string): Promise<TicketDetailResponse>;
    assign(id: string, assignDto: AssignTicketDto, userId: string): Promise<TicketDetailResponse>;
    remove(id: string, userId: string): Promise<{
        success: boolean;
    }>;
    getComments(ticketId: string, query: QueryCommentDto, userId: string, isAgent?: boolean): Promise<PaginatedResponse<CommentResponse>>;
    addComment(ticketId: string, createCommentDto: CreateCommentDto, userId: string): Promise<CommentResponse>;
    deleteComment(ticketId: string, commentId: string, userId: string): Promise<{
        success: boolean;
    }>;
    submitSatisfaction(ticketId: string, satisfactionDto: CreateSatisfactionDto, userId: string): Promise<TicketDetailResponse>;
    addWatcher(ticketId: string, watcherId: string, userId: string): Promise<{
        success: boolean;
        message: string;
    } | {
        success: boolean;
        message?: undefined;
    }>;
    removeWatcher(ticketId: string, watcherId: string, userId: string): Promise<{
        success: boolean;
    }>;
    getActivities(ticketId: string, query: QueryActivityDto): Promise<PaginatedResponse<ActivityResponse>>;
    private createActivity;
    private formatTicketDetail;
    private formatTicketListItem;
    private formatComment;
    private formatActivity;
}
