import { AdminDocument } from '../schema/admin.schema';
import { Model } from 'mongoose';
import { Request, Response } from 'express';
import { AdminLoginDto } from './dto/login.dto';
import { JwtService } from '@nestjs/jwt';
import { UserDocument } from 'src/schema/user.schema';
import { ShipmentDocument } from 'src/schema/shipment.schema';
import { CreateShipmentDto } from './dto/create-shipment.dto';
import { UserRegisterDto } from './dto/user.register.dto';
import { Shipment_Mode_Document } from 'src/schema/map-shipment-mode.schema';
import { Map_Shipment_Attachment } from 'src/schema/map-shipment-attachment';
import { MapShipmentStatusDocument } from 'src/schema/map_shipment_status.schema';
import { AddStatusDto } from './dto/add-status.dto';
import { InquiryDocument } from 'src/schema/inquiry.schema';
import { UpdateShipmentDto } from './dto/update-shipment.dto';
import { Map_Company_Employee_Document } from 'src/schema/map-company-employees.schema';
import { OtpDocument } from 'src/schema/otp.schema';
import { VerifyAdminOtpDto } from './dto/verify-otp.dto';
import { ChangePasswordDto } from 'src/users/dto/change-password.dto';
import { NotificationDocument } from 'src/schema/notifications.schema';
import { Map_Inquiry_Reply_Document } from 'src/schema/map-inquiry-reply.schema';
import { ReplyInquiryDto } from 'src/users/dto/reply-inquiry.dto';
import { Map_Inquiry_Attachment_Document } from 'src/schema/map-inquiry-attachments';
import { CreateShipmentModeDto } from './dto/create-shipment-mode.dto';
import { SendFirebaseNotifications } from 'src/utils/send-notification.helper';
import { Map_User_Device_Document } from 'src/schema/map-user-device.schema';
import { SHIPMENT_TYPE } from 'src/utils/constants';
import { Map_Shipment_Commodity_Document } from 'src/schema/map-shipment-commodity.schema';
import { DeleteUserDto } from './dto/delete-user.dto';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateSingleUserDto } from './dto/update-single-user.dto';
import { AddMultiStatusDto } from './dto/add-multi-status.dto';
import { SendMsg91PasswordService } from 'src/utils/send-msg91-password.helper';
import { QuotationDocument } from 'src/schema/quotation.schema';
import { CreateEstimateDto, CreateQuotationDto } from './dto/quotation.dto';
import { EstimateDocument } from 'src/schema/estimate.schema';
export declare class AdminService {
    private readonly adminModel;
    private readonly userModel;
    private readonly shipmentModel;
    private readonly shipmentModeModel;
    private readonly jwtService;
    private readonly mapShipmentAttachmentModel;
    private readonly mapShipmentStatusModel;
    private readonly inquiryModel;
    private readonly mapCompanyEmployeeModel;
    private readonly otpModel;
    private readonly notificationModel;
    private readonly mapInquiryReplyModel;
    private readonly mapInquiryAttachmentModel;
    private readonly sendFirbaseNotificationService;
    private readonly mapUserDeviceModal;
    private readonly quotationModal;
    private readonly estimateModal;
    private readonly mapShipmentCommodityModal;
    private readonly sendMsg91PasswordService;
    constructor(adminModel: Model<AdminDocument>, userModel: Model<UserDocument>, shipmentModel: Model<ShipmentDocument>, shipmentModeModel: Model<Shipment_Mode_Document>, jwtService: JwtService, mapShipmentAttachmentModel: Model<Map_Shipment_Attachment>, mapShipmentStatusModel: Model<MapShipmentStatusDocument>, inquiryModel: Model<InquiryDocument>, mapCompanyEmployeeModel: Model<Map_Company_Employee_Document>, otpModel: Model<OtpDocument>, notificationModel: Model<NotificationDocument>, mapInquiryReplyModel: Model<Map_Inquiry_Reply_Document>, mapInquiryAttachmentModel: Model<Map_Inquiry_Attachment_Document>, sendFirbaseNotificationService: SendFirebaseNotifications, mapUserDeviceModal: Model<Map_User_Device_Document>, quotationModal: Model<QuotationDocument>, estimateModal: Model<EstimateDocument>, mapShipmentCommodityModal: Model<Map_Shipment_Commodity_Document>, sendMsg91PasswordService: SendMsg91PasswordService);
    adminLogin(lang: string, body: AdminLoginDto, res: Response): Promise<Response<any, Record<string, any>>>;
    dashboard(report: string, res: Response): Promise<Response<any, Record<string, any>>>;
    forgotPassword(lang: string, res: Response): Promise<Response<any, Record<string, any>>>;
    verifyOtp(lang: string, body: VerifyAdminOtpDto, res: Response): Promise<Response<any, Record<string, any>>>;
    changePassword(req: Request, lang: string, body: ChangePasswordDto, res: Response): Promise<Response<any, Record<string, any>>>;
    getAllShipments(res: Response, lang: string, page?: number, limit?: number, search?: string, status?: string, modeId?: string, shipment_type?: SHIPMENT_TYPE, userId?: string): Promise<Response<any, Record<string, any>>>;
    getTotalCount(): Promise<any>;
    createShipment(req: Request, lang: string, notify: boolean, body: CreateShipmentDto, files: {
        shipment_document?: Express.Multer.File[];
        shipment_invoice?: Express.Multer.File[];
        receiving_slip?: Express.Multer.File[];
    }, res: Response): Promise<Response<any, Record<string, any>>>;
    updateShipment(req: Request, shipment_id: string, notify: boolean, lang: string, body: UpdateShipmentDto, files: {
        shipment_document?: Express.Multer.File[];
        shipment_invoice?: Express.Multer.File[];
        receiving_slip?: Express.Multer.File[];
    }, res: Response): Promise<Response<any, Record<string, any>>>;
    getSingleShipment(lang: string, shipment_id: string, res: Response): Promise<Response<any, Record<string, any>>>;
    deleteShipment(lang: string, shipment_id: string, res: Response): Promise<Response<any, Record<string, any>>>;
    uploadShipmentDocument(req: Request, lang: string, shipment_id: string, notify: boolean, files: {
        shipment_document?: Express.Multer.File[];
    }, res: Response): Promise<Response<any, Record<string, any>>>;
    uploadReceivingSlip(req: Request, lang: string, shipment_id: string, notify: boolean, files: {
        receiving_slip?: Express.Multer.File[];
    }, res: Response): Promise<Response<any, Record<string, any>>>;
    uploadShipmentInvoice(req: Request, lang: string, shipment_id: string, notify: boolean, files: {
        shipment_invoice?: Express.Multer.File[];
    }, res: Response): Promise<Response<any, Record<string, any>>>;
    deleteShipmentDocument(lang: string, doc_id: string, res: Response): Promise<Response<any, Record<string, any>>>;
    deleteReceivingSlip(lang: string, doc_id: string, res: Response): Promise<Response<any, Record<string, any>>>;
    addShipmentStatus(lang: string, shipment_id: string, notify: boolean, body: AddStatusDto, res: Response): Promise<Response<any, Record<string, any>>>;
    addMultiShipmentStatus(lang: string, notify: boolean, body: AddMultiStatusDto, res: Response): Promise<Response<any, Record<string, any>>>;
    updateShipmentStatus(lang: string, status_id: string, body: AddStatusDto, res: Response): Promise<Response<any, Record<string, any>>>;
    getAllShipmentModes(page: number, limit: number, search: string, res: Response): Promise<Response<any, Record<string, any>>>;
    deleteShipmentMode(lang: string, shipment_mode_id: string, res: Response): Promise<Response<any, Record<string, any>>>;
    getAllUsers(page: number, limit: number, search: string, res: Response): Promise<Response<any, Record<string, any>>>;
    changeUserStatus(lang: string, user_id: string, res: Response): Promise<Response<any, Record<string, any>>>;
    translateKeyword(lang: string, translate_to: string, keyword: string, res: Response): Promise<Response<any, Record<string, any>>>;
    getAllInquiry(lang: string, status: string, page: number, limit: number, search: string, res: Response): Promise<Response<any, Record<string, any>>>;
    getSingleInquiry(lang: string, inquiry_id: string, res: Response): Promise<Response<any, Record<string, any>>>;
    resolveInquiry(lang: string, inquiry_id: string, res: Response): Promise<Response<any, Record<string, any>>>;
    deleteInquiry(lang: string, inquiry_id: string, res: Response): Promise<Response<any, Record<string, any>>>;
    getUsersOptions(lang: string, type: string, res: Response): Promise<Response<any, Record<string, any>>>;
    getSingleUser(user_id: string, res: Response): Promise<Response<any, Record<string, any>>>;
    replyInquiry(inquiry_id: string, notify: boolean, lang: string, body: ReplyInquiryDto, res: Response): Promise<Response<any, Record<string, any>>>;
    completeMultipleShipments(shipment_ids: string[], lang: string, res: Response): Promise<Response<any, Record<string, any>>>;
    addQuotationDocument(req: Request, inquiry_id: string, notify: boolean, lang: string, file: Express.Multer.File, res: Response): Promise<Response<any, Record<string, any>>>;
    completeShipment(shipment_id: string, lang: string, res: Response): Promise<Response<any, Record<string, any>>>;
    verifyShipment(shipmentId: string, lang: string, code: string, res: Response): Promise<Response<any, Record<string, any>>>;
    createShipmentMode(lang: string, body: CreateShipmentModeDto, res: Response): Promise<Response<any, Record<string, any>>>;
    getStatistics(type: string, report: string, starting: Date, ending: Date): Promise<{
        label: any[];
        series: any[];
    }>;
    deleteUser(body: DeleteUserDto, lang: string, res: Response): Promise<Response<any, Record<string, any>>>;
    generateShipmentSerialNumber(): Promise<string>;
    sendShipmentNotifications(shipment_id: string, lang: string, type: string, res: Response): Promise<Response<any, Record<string, any>>>;
    sendInquiryNotifications(inquiry_id: string, lang: string, type: string, res: Response): Promise<Response<any, Record<string, any>>>;
    createUser(body: CreateUserDto, lang: string, res: Response): Promise<Response<any, Record<string, any>>>;
    getUserDetails(user_id: string, res: Response): Promise<Response<any, Record<string, any>>>;
    hardDeleteUser(user_id: string, res: Response): Promise<Response<any, Record<string, any>>>;
    deleteShipmentAllData(shipment_id: string): Promise<boolean>;
    deleteInquiryAllData(inquiry_id: string): Promise<boolean>;
    sendQuotationDocumentNotification(inquiry: any, inquiry_id: string, device_tokens: any): Promise<void>;
    sendReplyInquiryNotification(inquiry: any, inquiry_id: string, device_tokens: any): Promise<void>;
    sendShipmentDocumentNotification(user: any, shipment_id: string, device_tokens: any): Promise<void>;
    sendShipmentInvoiceNotification(user: any, shipment_id: string, device_tokens: any): Promise<void>;
    sendReceivingSlipNotification(user: any, shipment_id: string, device_tokens: any): Promise<void>;
    sendShipmentStatusNotification(user: any, shipment_id: string, device_tokens: any): Promise<void>;
    sendNewShipmentNotification(shipment: any, user: any, shipment_id: string, device_tokens: any): Promise<void>;
    updateSingleUser(user_id: string, body: UpdateSingleUserDto, res: Response): Promise<Response<any, Record<string, any>>>;
    getDummyUsers(page: number, limit: number, res: Response): Promise<Response<any, Record<string, any>>>;
    assignAdmin(user_id: string, lang: string, res: Response): Promise<Response<any, Record<string, any>>>;
    getProfile(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
    undoCompleteShipment(shipment_id: string, res: Response): Promise<Response<any, Record<string, any>>>;
    deleteDevices(single_device_id: string, res: Response): Promise<Response<any, Record<string, any>>>;
    searchModules(page: number, limit: number, search: string, res: Response): Promise<Response<any, Record<string, any>>>;
    getSingleUserData(user_id: string, res: Response): Promise<Response<any, Record<string, any>>>;
    sendNotificationToAllUsers(lang: string, res: Response): Promise<Response<any, Record<string, any>>>;
    sendAndSaveNotificationToAllUsers(shipment_id: string, user_id: string, device_tokens: any, lang: string): Promise<void>;
    Register(lang: string, body: UserRegisterDto, res: Response): Promise<Response<any, Record<string, any>>>;
    getUserShipmentCounts(userId: string, res: Response): Promise<Response<any, Record<string, any>>>;
    createQuotation(lang: string, body: CreateQuotationDto, res: Response): Promise<Response<any, Record<string, any>>>;
    updateQuotation(lang: string, body: CreateQuotationDto, res: Response, id: string): Promise<Response<any, Record<string, any>>>;
    deleteQuotation(lang: string, res: Response, id: string): Promise<Response<any, Record<string, any>>>;
    getQuotation(lang: string, res: Response, id: string): Promise<Response<any, Record<string, any>>>;
    getAllQuotation(lang: string, res: Response, page: number, limit: number, search: string, status: string): Promise<Response<any, Record<string, any>>>;
    createEstimate(lang: string, body: CreateEstimateDto, res: Response): Promise<Response<any, Record<string, any>>>;
    updateEstimate(lang: string, body: CreateEstimateDto, res: Response, id: string): Promise<Response<any, Record<string, any>>>;
}
