import { Repository } from 'typeorm';
import { Ticket } from './entities/ticket.entity';
import { Comment } from './entities/comment.entity';
import { CreateTicketDto } from './dto/create-ticket.dto';
import { UpdateTicketDto } from './dto/update-ticket.dto';
import { CreateCommentDto } from './dto/create-comment.dto';
import { UserService } from 'modules/user/users.service';
import { TicketStatus } from 'common/enum/ticket.enum';
import { TicketResponseDto } from './dto/response-ticket.dto';
import { FileUploadService } from 'modules/file-upload/file-upload.service';
import { UserRole } from 'common/enum/UserRole.enum';
export declare class TicketsService {
    private ticketsRepository;
    private commentsRepository;
    private usersService;
    private fileUploadService;
    constructor(ticketsRepository: Repository<Ticket>, commentsRepository: Repository<Comment>, usersService: UserService, fileUploadService: FileUploadService);
    private generateTicketToken;
    create(createTicketDto: CreateTicketDto, file: Express.Multer.File, userRole: UserRole, userId?: number): Promise<TicketResponseDto>;
    findAll(status?: TicketStatus, assigneeId?: number, authorId?: number, labels?: string[]): Promise<TicketResponseDto[]>;
    findOne(id: number, userRole: UserRole): Promise<TicketResponseDto>;
    findMyTickets(userId: number, userRole: UserRole): Promise<TicketResponseDto[]>;
    findByToken(token: string, userRole: UserRole): Promise<TicketResponseDto>;
    update(id: number, updateTicketDto: UpdateTicketDto, userRole: UserRole): Promise<TicketResponseDto>;
    remove(id: number, userId: number): Promise<{
        message: string;
    }>;
    addComment(ticketId: number, createCommentDto: CreateCommentDto, userId: number, userRole: UserRole, file?: Express.Multer.File): Promise<TicketResponseDto>;
    getComments(ticketId: number, userRole: UserRole): Promise<Comment[]>;
    markCommentAsSeen(ticketToken: string, commentId: number, isSeen: boolean, seenAt: Date): Promise<Comment>;
    deleteComment(commentId: number, userId: number): Promise<{
        message: string;
    }>;
}
