import { PrismaService } from "../../../core/database/prisma/prisma.service";
import { Prisma, ServiceTicketActivityType, ServiceTicketStatus, TicketSeverity } from '@prisma/client';
export interface CreateTicketInput {
    ticketNo: string;
    robotUnitId: string;
    customerId?: string;
    issueTypeCode: string;
    severity?: TicketSeverity;
    serviceRecord?: string;
}
export declare class ServiceTicketService {
    private readonly prisma;
    private readonly logger;
    constructor(prisma: PrismaService);
    create(input: CreateTicketInput, userId: string, organizationId: string): Promise<{
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.ServiceTicketStatus;
        updatedAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        severity: import("@prisma/client").$Enums.TicketSeverity;
        ticketNo: string;
        closedAt: Date | null;
        robotUnitId: string;
        customerId: string | null;
        resolvedById: string | null;
        issueTypeCode: string;
        serviceRecord: string | null;
        customerFeedback: string | null;
        openedAt: Date;
        openedById: string;
    }>;
    findAll(q: {
        status?: ServiceTicketStatus;
        severity?: TicketSeverity;
        robotUnitId?: string;
        page?: number;
        limit?: number;
    }): Promise<{
        items: {
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.ServiceTicketStatus;
            updatedAt: Date;
            deletedAt: Date | null;
            organizationId: string;
            createdById: string;
            severity: import("@prisma/client").$Enums.TicketSeverity;
            ticketNo: string;
            closedAt: Date | null;
            robotUnitId: string;
            customerId: string | null;
            resolvedById: string | null;
            issueTypeCode: string;
            serviceRecord: string | null;
            customerFeedback: string | null;
            openedAt: Date;
            openedById: string;
        }[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
    }>;
    findOne(id: string): Promise<{
        activities: {
            id: string;
            createdAt: Date;
            createdById: string;
            activityType: import("@prisma/client").$Enums.ServiceTicketActivityType;
            payload: Prisma.JsonValue;
            ticketId: string;
            occurredAt: Date;
        }[];
    } & {
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.ServiceTicketStatus;
        updatedAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        severity: import("@prisma/client").$Enums.TicketSeverity;
        ticketNo: string;
        closedAt: Date | null;
        robotUnitId: string;
        customerId: string | null;
        resolvedById: string | null;
        issueTypeCode: string;
        serviceRecord: string | null;
        customerFeedback: string | null;
        openedAt: Date;
        openedById: string;
    }>;
    update(id: string, input: {
        status?: ServiceTicketStatus;
        serviceRecord?: string;
        customerFeedback?: string;
        severity?: TicketSeverity;
    }, userId: string): Promise<{
        activities: {
            id: string;
            createdAt: Date;
            createdById: string;
            activityType: import("@prisma/client").$Enums.ServiceTicketActivityType;
            payload: Prisma.JsonValue;
            ticketId: string;
            occurredAt: Date;
        }[];
    } & {
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.ServiceTicketStatus;
        updatedAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        severity: import("@prisma/client").$Enums.TicketSeverity;
        ticketNo: string;
        closedAt: Date | null;
        robotUnitId: string;
        customerId: string | null;
        resolvedById: string | null;
        issueTypeCode: string;
        serviceRecord: string | null;
        customerFeedback: string | null;
        openedAt: Date;
        openedById: string;
    }>;
    private closeTicket;
    addActivity(ticketId: string, activityType: ServiceTicketActivityType, payload: any, userId: string): Promise<{
        id: string;
        createdAt: Date;
        createdById: string;
        activityType: import("@prisma/client").$Enums.ServiceTicketActivityType;
        payload: Prisma.JsonValue;
        ticketId: string;
        occurredAt: Date;
    }>;
}
