import { TicketsService } from './tickets.service';
import { AddTicketMessageDto, AssignTicketDto, CreateTicketDto, UpdateTicketStatusDto } from './dto/ticket.dto';
import { AuthenticatedUser } from '../../common/decorators/current-user.decorator';
export declare class TicketsController {
    private readonly service;
    constructor(service: TicketsService);
    create(user: AuthenticatedUser, dto: CreateTicketDto): Promise<{
        author: {
            id: string;
            email: string;
            firstName: string | null;
            lastName: string | null;
        };
    } & {
        id: string;
        description: string;
        createdAt: Date;
        updatedAt: Date;
        status: import(".prisma/client").$Enums.TicketStatus;
        tenantId: string;
        complexId: string;
        lotId: string | null;
        category: import(".prisma/client").$Enums.TicketCategory;
        title: string;
        priority: import(".prisma/client").$Enums.TicketPriority;
        location: string | null;
        assigneeId: string | null;
        authorId: string;
        slaDueAt: Date | null;
        acknowledgedAt: Date | null;
        resolvedAt: Date | null;
        closedAt: Date | null;
    }>;
    list(user: AuthenticatedUser, status?: string, complexId?: string, assignedToMe?: string, mine?: string, priority?: string): Promise<({
        _count: {
            messages: number;
            attachments: number;
        };
        lot: {
            id: string;
            lotNumber: string;
        } | null;
        author: {
            id: string;
            email: string;
            firstName: string | null;
            lastName: string | null;
        };
        assignee: {
            id: string;
            email: string;
        } | null;
    } & {
        id: string;
        description: string;
        createdAt: Date;
        updatedAt: Date;
        status: import(".prisma/client").$Enums.TicketStatus;
        tenantId: string;
        complexId: string;
        lotId: string | null;
        category: import(".prisma/client").$Enums.TicketCategory;
        title: string;
        priority: import(".prisma/client").$Enums.TicketPriority;
        location: string | null;
        assigneeId: string | null;
        authorId: string;
        slaDueAt: Date | null;
        acknowledgedAt: Date | null;
        resolvedAt: Date | null;
        closedAt: Date | null;
    })[]>;
    findOne(user: AuthenticatedUser, id: string): Promise<{
        lot: {
            id: string;
            lotNumber: string;
        } | null;
        author: {
            id: string;
            email: string;
            firstName: string | null;
        };
        assignee: {
            id: string;
            email: string;
        } | null;
        messages: ({
            author: {
                id: string;
                email: string;
                firstName: string | null;
            };
        } & {
            id: string;
            createdAt: Date;
            body: string;
            isInternal: boolean;
            authorId: string;
            ticketId: string;
        })[];
        attachments: {
            id: string;
            createdAt: Date;
            url: string;
            ticketId: string;
            filename: string;
            mimeType: string | null;
            sizeBytes: number | null;
        }[];
    } & {
        id: string;
        description: string;
        createdAt: Date;
        updatedAt: Date;
        status: import(".prisma/client").$Enums.TicketStatus;
        tenantId: string;
        complexId: string;
        lotId: string | null;
        category: import(".prisma/client").$Enums.TicketCategory;
        title: string;
        priority: import(".prisma/client").$Enums.TicketPriority;
        location: string | null;
        assigneeId: string | null;
        authorId: string;
        slaDueAt: Date | null;
        acknowledgedAt: Date | null;
        resolvedAt: Date | null;
        closedAt: Date | null;
    }>;
    addMessage(user: AuthenticatedUser, id: string, dto: AddTicketMessageDto): Promise<{
        id: string;
        createdAt: Date;
        body: string;
        isInternal: boolean;
        authorId: string;
        ticketId: string;
    }>;
    assign(user: AuthenticatedUser, id: string, dto: AssignTicketDto): Promise<{
        id: string;
        description: string;
        createdAt: Date;
        updatedAt: Date;
        status: import(".prisma/client").$Enums.TicketStatus;
        tenantId: string;
        complexId: string;
        lotId: string | null;
        category: import(".prisma/client").$Enums.TicketCategory;
        title: string;
        priority: import(".prisma/client").$Enums.TicketPriority;
        location: string | null;
        assigneeId: string | null;
        authorId: string;
        slaDueAt: Date | null;
        acknowledgedAt: Date | null;
        resolvedAt: Date | null;
        closedAt: Date | null;
    }>;
    updateStatus(user: AuthenticatedUser, id: string, dto: UpdateTicketStatusDto): Promise<{
        id: string;
        description: string;
        createdAt: Date;
        updatedAt: Date;
        status: import(".prisma/client").$Enums.TicketStatus;
        tenantId: string;
        complexId: string;
        lotId: string | null;
        category: import(".prisma/client").$Enums.TicketCategory;
        title: string;
        priority: import(".prisma/client").$Enums.TicketPriority;
        location: string | null;
        assigneeId: string | null;
        authorId: string;
        slaDueAt: Date | null;
        acknowledgedAt: Date | null;
        resolvedAt: Date | null;
        closedAt: Date | null;
    }>;
}
