import { LoginToken, RegisteredReport, RegisteredSerialNumber, RegisteredUser, RegisterReportsGetResponse, ZohoTicket, ZohoTicketStatus } from '../types/serviceProgramDatabase';
declare class WarrantyService {
    private static instance;
    constructor(privateKey: string);
    private ticketsQueue;
    static getInstance(): WarrantyService;
    isSerialNumberRegistered(serialNumber: string): Promise<boolean>;
    registerSerialNumber(serialNumber: string, email: string): Promise<boolean>;
    private registerSerialNumbers;
    getSerialNumber(serialNumber: string): Promise<RegisteredSerialNumber | null>;
    removeRegisteredSerialNumber(serialNumber: string): Promise<boolean>;
    getPrimaryEmailGivenAlternativeEmail(alternativeEmail: string): Promise<string | null>;
    addAlternativeToPrimaryEntry(primaryEmailToBeSet: string, alternativeEmail: string): Promise<boolean>;
    removeAlternativeToPrimaryEntry(alternativeEmail: string): Promise<boolean>;
    getAlternativeEmailsGivenPrimaryEmail(primaryEmail: string): Promise<string[]>;
    addAlternativeEmailToPrimaryEmail(primaryEmail: string, alternativeEmail: string): Promise<boolean>;
    removeAlternativeEmailFromPrimaryToAlternativeMap(primaryEmail: string, alternativeEmail: string): Promise<boolean>;
    removePrimaryToAlternativeEntry(primaryEmail: string): Promise<boolean>;
    getUser(email: string): Promise<RegisteredUser | null>;
    registerUser(email: string, establishment: string, serialNumbers: string[]): Promise<boolean>;
    removeRegisteredUser(email: string): Promise<boolean>;
    addSerialNumberToUser(email: string, serialNumber: string): Promise<boolean>;
    appendSerialNumbersToUser(email: string, serialNumbers: string[]): Promise<boolean>;
    addRobotNameToSerialNumber(serialNumber: string, name: string): Promise<boolean>;
    getEmailGivenSerialNumber(serialNumber: string): Promise<string | null>;
    addLoginTokenToUser(email: string): Promise<LoginToken | false>;
    getLoginToken(email: string): Promise<LoginToken | undefined>;
    setAnalyticsConsent(email: string, consent: boolean): Promise<boolean>;
    setAutomatedFaultReportingConsent(email: string, consent: boolean): Promise<boolean>;
    getAlternativeEmailsOfRegisteredUser(primaryEmail: string): Promise<string[]>;
    addAlternativeEmailToRegisteredUser(primaryEmail: string, alternativeEmail: string): Promise<boolean>;
    removeAlternativeEmailFromRegisteredUser(primaryEmail: string, alternativeEmail: string): Promise<boolean>;
    getReport(reportId: string, email: string, serialNumber: string): Promise<RegisteredReport | null>;
    registerReport(email: string, serialNumber: string, reportTitle: string, reportDescription: string, robotName?: string, robotType?: string): Promise<string | false>;
    private addReportToUser;
    private removeReportFromUser;
    swapPrimaryAndAlternativeEmailsFromMaps(primaryEmail: string, alternativeEmail: string): Promise<boolean>;
    changePrimaryEmailOfRegisteredUser(oldEmail: string, newEmail: string): Promise<boolean>;
    checkExistenceOfUserAndSerial(email: string, serial: string): Promise<RegisteredUser | null>;
    getReportsWithSameTitle(reports: RegisteredReport[], title: string): RegisteredReport[];
    getZohoTicketsFromReports(reports: RegisterReportsGetResponse): Promise<ZohoTicket[]>;
    updateZohoTicketStatus(ticketId: string, status: ZohoTicketStatus): Promise<boolean>;
}
export default WarrantyService;
