/// <reference types="node" />
import { Repository } from 'typeorm';
import { OrderClientType, OrderEntity, OrderPaymentGateway, OrderPaymentMethod, OrderPaymentStatus, OrderShippingType, OrderStatus } from './entities/order.entity';
import { AddOrderDto } from './dto/add-order.dto';
import { ProductService } from '../product/product.service';
import { SiteInfoService } from '../siteInfo/site-info.service';
import { OrderItemEntity } from './entities/order-item.entity';
import { AddServiceDto } from '../service/dto/add-service.dto';
import { UpdateOrderStatusDto } from './dto/update-order-status.dto';
import { PointService } from '../point/point.service';
import { SmsService } from '../../sms/sms.service';
import { CarService } from '../car/car.service';
import { UpdateOrderServiceManDto } from './dto/update-order-service-man.dto';
import { UserService } from '../user/user.service';
import { ErrorService } from 'src/error/error.service';
import { AddressService } from '../address/address.service';
import { AddProductDto } from './dto/add-product.dto';
import { DiscountService } from '../discount/discount.service';
import { UpdateOrderItemDto } from './dto/update-order-item.dto';
import { CalculatePriceForClientDto } from './dto/calculate-price-for-client.dto';
import { AlopeykService } from 'src/thirdParty/alopeyk/alopeyk.service';
import { requestShippingDto } from './dto/request-shipping.dto';
import { LogService } from '../log/log.service';
import { MahexService } from '../../thirdParty/mahex/mahex.service';
import { SamtService } from '../../thirdParty/samt/samt.service';
import { UserEntity } from '../user/entities/user.entity';
import { GovernmentOilSaleOrderDto } from './dto/government-oil-sale-order.dto';
import { AddOrderByUserDto } from './dto/add-order-by-user.dto';
import { PayOrderByUserDto } from './dto/pay-order-by-user.dto';
import { PaymentService } from '../payment/payment.service';
import { SnappPayService } from '../../gateway/snappPay/snappPay.service';
import { SshafDto } from './dto/sshaf.dto';
import { SshafService } from '../../thirdParty/sshaf/sshaf.service';
import { SamtDto } from './dto/samt.dto';
export declare class OrderService {
    private orderRepository;
    private orderItemRepository;
    private sms;
    private productService;
    private siteInfoService;
    private pointService;
    private addressService;
    private discountService;
    private alopeykService;
    private mahexService;
    private samtService;
    private error;
    private logService;
    private snappPayService;
    private sshafService;
    private readonly carService;
    private readonly userService;
    private readonly paymentService;
    constructor(orderRepository: Repository<OrderEntity>, orderItemRepository: Repository<OrderItemEntity>, sms: SmsService, productService: ProductService, siteInfoService: SiteInfoService, pointService: PointService, addressService: AddressService, discountService: DiscountService, alopeykService: AlopeykService, mahexService: MahexService, samtService: SamtService, error: ErrorService, logService: LogService, snappPayService: SnappPayService, sshafService: SshafService, carService: CarService, userService: UserService, paymentService: PaymentService);
    addProduct(dto: AddProductDto): Promise<OrderItemEntity>;
    updateOrderItem(dto: UpdateOrderItemDto): Promise<boolean>;
    deleteOrderItem(orderItemId: number): Promise<void>;
    getReportAll(page?: number, limit?: number, sorts?: any, filters?: any, generateExcel?: boolean): Promise<any>;
    getReportWages(page?: number, limit?: number, sorts?: any, filters?: any, generateExcel?: boolean): Promise<any>;
    getReportShipping(page?: number, limit?: number, sorts?: any, filters?: any, generateExcel?: boolean): Promise<any>;
    getReportUnsettledPaid(page?: number, limit?: number, sorts?: any, filters?: any, generateExcel?: boolean): Promise<any>;
    unsettledsToPaid(): Promise<void>;
    getReportShopping(page?: number, limit?: number, sorts?: any, filters?: any, generateExcel?: boolean, generateExcelSshaf?: boolean): Promise<any>;
    getOrders(page?: number, limit?: number, sorts?: any, filters?: any): Promise<{
        items: {
            finalPrice: number;
            id: number;
            orderNumber: string;
            orderGuid: string;
            userId: string;
            sellerId: string;
            serviceManId: string;
            customerIp: string;
            orderStatusCode: OrderStatus;
            isDeleted: boolean;
            paymentStatusCode: OrderPaymentStatus;
            paymentMethodSystemName: OrderPaymentMethod;
            orderTax: number;
            vat: number;
            kilometers: number;
            minKilometersDay: number;
            maxKilometersDay: number;
            orderDiscount: number;
            orderShipping: number;
            orderTotal: number;
            wageTotal: number;
            customerOrderComment: string;
            bankRefCode: string;
            bankAuthority: string;
            isService: boolean;
            addressId: number;
            addressService: string;
            location: string;
            emailService: string;
            carId: number;
            date: string;
            time: string;
            isRequiredFactor: boolean;
            couponCode: string;
            couponDiscount: number;
            adminDiscountPercent: number;
            deductionsAmount: number;
            usedWalletAmount: number;
            finalAmount: number;
            serviceManRank: number;
            shippingType: OrderShippingType;
            shippingName: string;
            shippingOrderId: string;
            shippingOrderToken: string;
            paymentGateway: OrderPaymentGateway;
            clientType: OrderClientType;
            adminComment: string;
            taraToken: string;
            snappPayPaymentToken: string;
            governmentOilTrackingCode: string;
            cardToCardTrackingCode: string;
            cardToCardImageReceipt: string;
            createdAt: Date;
            updatedAt: Date;
            relatedOrder: OrderEntity[];
            coupon: import("../discount/entities/discount.entity").DiscountEntity;
            orderItems: OrderItemEntity[];
            user: UserEntity;
            serviceMan: UserEntity;
            payments: import("../payment/entities/payment.entity").PaymentEntity[];
            serviceReminders: import("../service/entities/service-reminder.entity").ServiceReminderEntity[];
            car: import("../car/entities/car.entity").CarEntity;
            polls: import("../poll/entities/poll.entity").PollEntity[];
            address: import("../address/entities/address.entity").AddressEntity;
            seller: UserEntity;
        }[];
        pagination: {
            itemsPerPage: number;
            totalItems: number;
            currentPage: number;
            totalPages: number;
        };
    }>;
    getServicesByServiceMan(userId: string, page?: number, limit?: number, sorts?: any, filters?: any): Promise<{
        items: {
            finalPrice: number;
            id: number;
            orderNumber: string;
            orderGuid: string;
            userId: string;
            sellerId: string;
            serviceManId: string;
            customerIp: string;
            orderStatusCode: OrderStatus;
            isDeleted: boolean;
            paymentStatusCode: OrderPaymentStatus;
            paymentMethodSystemName: OrderPaymentMethod;
            orderTax: number;
            vat: number;
            kilometers: number;
            minKilometersDay: number;
            maxKilometersDay: number;
            orderDiscount: number;
            orderShipping: number;
            orderTotal: number;
            wageTotal: number;
            customerOrderComment: string;
            bankRefCode: string;
            bankAuthority: string;
            isService: boolean;
            addressId: number;
            addressService: string;
            location: string;
            emailService: string;
            carId: number;
            date: string;
            time: string;
            isRequiredFactor: boolean;
            couponCode: string;
            couponDiscount: number;
            adminDiscountPercent: number;
            deductionsAmount: number;
            usedWalletAmount: number;
            finalAmount: number;
            serviceManRank: number;
            shippingType: OrderShippingType;
            shippingName: string;
            shippingOrderId: string;
            shippingOrderToken: string;
            paymentGateway: OrderPaymentGateway;
            clientType: OrderClientType;
            adminComment: string;
            taraToken: string;
            snappPayPaymentToken: string;
            governmentOilTrackingCode: string;
            cardToCardTrackingCode: string;
            cardToCardImageReceipt: string;
            createdAt: Date;
            updatedAt: Date;
            relatedOrder: OrderEntity[];
            coupon: import("../discount/entities/discount.entity").DiscountEntity;
            orderItems: OrderItemEntity[];
            user: UserEntity;
            serviceMan: UserEntity;
            payments: import("../payment/entities/payment.entity").PaymentEntity[];
            serviceReminders: import("../service/entities/service-reminder.entity").ServiceReminderEntity[];
            car: import("../car/entities/car.entity").CarEntity;
            polls: import("../poll/entities/poll.entity").PollEntity[];
            address: import("../address/entities/address.entity").AddressEntity;
            seller: UserEntity;
        }[];
        pagination: {
            itemsPerPage: number;
            totalItems: number;
            currentPage: number;
            totalPages: number;
        };
    }>;
    getOrderById(orderId: number): Promise<{
        allowEdit: boolean;
        allowRequestAlopeyk: boolean;
        allowRequestMahex: boolean;
        finalPrice: number;
        id: number;
        orderNumber: string;
        orderGuid: string;
        userId: string;
        sellerId: string;
        serviceManId: string;
        customerIp: string;
        orderStatusCode: OrderStatus;
        isDeleted: boolean;
        paymentStatusCode: OrderPaymentStatus;
        paymentMethodSystemName: OrderPaymentMethod;
        orderTax: number;
        vat: number;
        kilometers: number;
        minKilometersDay: number;
        maxKilometersDay: number;
        orderDiscount: number;
        orderShipping: number;
        orderTotal: number;
        wageTotal: number;
        customerOrderComment: string;
        bankRefCode: string;
        bankAuthority: string;
        isService: boolean;
        addressId: number;
        addressService: string;
        location: string;
        emailService: string;
        carId: number;
        date: string;
        time: string;
        isRequiredFactor: boolean;
        couponCode: string;
        couponDiscount: number;
        adminDiscountPercent: number;
        deductionsAmount: number;
        usedWalletAmount: number;
        finalAmount: number;
        serviceManRank: number;
        shippingType: OrderShippingType;
        shippingName: string;
        shippingOrderId: string;
        shippingOrderToken: string;
        paymentGateway: OrderPaymentGateway;
        clientType: OrderClientType;
        adminComment: string;
        taraToken: string;
        snappPayPaymentToken: string;
        governmentOilTrackingCode: string;
        cardToCardTrackingCode: string;
        cardToCardImageReceipt: string;
        createdAt: Date;
        updatedAt: Date;
        relatedOrder: OrderEntity[];
        coupon: import("../discount/entities/discount.entity").DiscountEntity;
        orderItems: OrderItemEntity[];
        user: UserEntity;
        serviceMan: UserEntity;
        payments: import("../payment/entities/payment.entity").PaymentEntity[];
        serviceReminders: import("../service/entities/service-reminder.entity").ServiceReminderEntity[];
        car: import("../car/entities/car.entity").CarEntity;
        polls: import("../poll/entities/poll.entity").PollEntity[];
        address: import("../address/entities/address.entity").AddressEntity;
        seller: UserEntity;
    }>;
    getServiceWithIdByServiceMan(userId: string, orderId: number): Promise<{
        finalPrice: number;
        id: number;
        orderNumber: string;
        orderGuid: string;
        userId: string;
        sellerId: string;
        serviceManId: string;
        customerIp: string;
        orderStatusCode: OrderStatus;
        isDeleted: boolean;
        paymentStatusCode: OrderPaymentStatus;
        paymentMethodSystemName: OrderPaymentMethod;
        orderTax: number;
        vat: number;
        kilometers: number;
        minKilometersDay: number;
        maxKilometersDay: number;
        orderDiscount: number;
        orderShipping: number;
        orderTotal: number;
        wageTotal: number;
        customerOrderComment: string;
        bankRefCode: string;
        bankAuthority: string;
        isService: boolean;
        addressId: number;
        addressService: string;
        location: string;
        emailService: string;
        carId: number;
        date: string;
        time: string;
        isRequiredFactor: boolean;
        couponCode: string;
        couponDiscount: number;
        adminDiscountPercent: number;
        deductionsAmount: number;
        usedWalletAmount: number;
        finalAmount: number;
        serviceManRank: number;
        shippingType: OrderShippingType;
        shippingName: string;
        shippingOrderId: string;
        shippingOrderToken: string;
        paymentGateway: OrderPaymentGateway;
        clientType: OrderClientType;
        adminComment: string;
        taraToken: string;
        snappPayPaymentToken: string;
        governmentOilTrackingCode: string;
        cardToCardTrackingCode: string;
        cardToCardImageReceipt: string;
        createdAt: Date;
        updatedAt: Date;
        relatedOrder: OrderEntity[];
        coupon: import("../discount/entities/discount.entity").DiscountEntity;
        orderItems: OrderItemEntity[];
        user: UserEntity;
        serviceMan: UserEntity;
        payments: import("../payment/entities/payment.entity").PaymentEntity[];
        serviceReminders: import("../service/entities/service-reminder.entity").ServiceReminderEntity[];
        car: import("../car/entities/car.entity").CarEntity;
        polls: import("../poll/entities/poll.entity").PollEntity[];
        address: import("../address/entities/address.entity").AddressEntity;
        seller: UserEntity;
    }>;
    findAllDeadlineService(deadlineKilometer?: number, deadlineDay?: number): Promise<OrderEntity[]>;
    private _calculateFinalPrice;
    statisticChart(from: any, to: any, type: string, section: any, userId: number, accessAll?: boolean): Promise<unknown[]>;
    statistic(): Promise<{
        shopPending: number;
        servicePending: number;
        shopSales: {
            total: {
                count: number;
                sum: number;
            };
            month: {
                count: number;
                sum: number;
            };
            lastMonth: {
                count: number;
                sum: number;
            };
        };
        serviceSales: {
            total: {
                count: number;
                sum: number;
            };
            month: {
                count: number;
                sum: number;
            };
            lastMonth: {
                count: number;
                sum: number;
            };
        };
        salesCountByCategory: {
            categoryName: any;
            count: number;
        }[];
        salesCountByProduct: {
            productName: any;
            count: number;
        }[];
    }>;
    statisticServiceMan(serviceManId: string): Promise<{
        pending: number;
        accepted: number;
        sent: number;
        delivered: number;
        canceled: number;
    }>;
    private _statisticSales;
    private _statisticByCategory;
    private _statisticByProduct;
    handleDeleteUnpaid(longKeep?: boolean): Promise<boolean>;
    private rollbackStockQuantity;
    updateStatus(orderId: any, dto: UpdateOrderStatusDto, operatorUserId: string): Promise<string[]>;
    updateService(dto: UpdateOrderServiceManDto, operatorUserId: string): Promise<boolean>;
    add(sellerId: string, dto: AddOrderDto): Promise<OrderEntity>;
    addByUser(user: UserEntity, dto: AddOrderByUserDto, customerIp?: string): Promise<{
        orderId: any;
        bankPayAmount: number;
    }>;
    payByUser(user: UserEntity, dto: PayOrderByUserDto): Promise<{
        bankUrl: any;
        paid: boolean;
    }>;
    paidByUser(orderId: number, snappPayPaymentToken?: string): Promise<OrderEntity>;
    generateOrderNumber(): Promise<string>;
    calVat(finalPrice: any): Promise<number>;
    addService(dto: AddServiceDto): Promise<OrderEntity>;
    generatePdf(): Promise<Buffer>;
    requestShippingPeyk(dto: requestShippingDto, operatorUserId: string): Promise<{
        shippingMessage: string;
    }>;
    shippingDetail(orderId: number): Promise<any>;
    getAlopeykRequests(page?: number, perPage?: number): Promise<{
        items: any;
        pagination: {
            itemsPerPage: any;
            totalItems: any;
            currentPage: any;
            totalPages: any;
        };
    }>;
    cancelShipping(orderId: number, operatorUserId: string): Promise<boolean>;
    getServicesByDate(date: any): Promise<any[]>;
    calculatePriceForClient(dto: CalculatePriceForClientDto, userId: string): Promise<{
        orderItems: {
            productUUID: any;
            productId: any;
            quantity: any;
            wagePrice: any;
            tax: any;
            price: any;
            priceInService: any;
            name: any;
            image: any;
            categoryId: any;
            shortDescription: any;
            stockQuantity: any;
            governmentOilStockQuantity: any;
            minStockQuantity: any;
            orderMinimumQuantity: any;
            orderMaximumQuantity: any;
            weight: any;
            isOilGovernment: any;
        }[];
        snappPayEligibility: {
            success: boolean;
            title: any;
            description: any;
        };
        orderTotal: number;
        wageTotal: number;
        orderShipping: number;
        shippingName: string;
        couponDiscount: number;
        adminDiscount: number;
        orderDiscount: number;
        serviceDiscount: number;
        vat: number;
        orderTax: number;
        deductionsAmount: number;
        finalAmount: number;
        usedWalletAmount: number;
        bankPayAmount: number;
        totalOilLitr: any;
        totalOilPrices: any;
        oilGovernmentAllocation: number;
    }>;
    calculateFinalAmount({ productItems, isService, isNewOrder, isOilGovernment, checkStock, makerBrandId, addressId, shippingType, prevOrderShipping, adminDiscountPercent, couponCode, useWallet, userId, carId, paymentGateway, }: {
        productItems?: any[];
        isService?: boolean;
        isNewOrder?: boolean;
        isOilGovernment?: boolean;
        checkStock?: boolean;
        makerBrandId?: any;
        addressId?: any;
        shippingType?: any;
        prevOrderShipping?: number;
        adminDiscountPercent?: number;
        couponCode?: any;
        useWallet?: boolean;
        userId?: any;
        carId?: any;
        paymentGateway?: any;
    }): Promise<{
        orderItems: any[];
        orderTotal: number;
        wageTotal: number;
        orderShipping: number;
        shippingName: string;
        couponDiscount: number;
        adminDiscount: number;
        orderDiscount: number;
        serviceDiscount: number;
        vat: number;
        orderTax: number;
        deductionsAmount: number;
        finalAmount: number;
        usedWalletAmount: number;
        bankPayAmount: number;
        totalOilLitr: any;
        totalOilPrices: any;
        oilGovernmentAllocation: number;
    }>;
    private _calculateShippingByAlopeyk;
    private _calculateShippingByMahex;
    getGovernmentOilAllocation(user: UserEntity, carId?: number): Promise<{
        allocation: number;
        fleetType: number;
    }>;
    getAndSetGovernmentOilAllocationByAdmin(orderId: number): Promise<void>;
    governmentOilSaleOrder(user: UserEntity, dto: GovernmentOilSaleOrderDto): Promise<{
        trackingCode: string;
    }>;
    getRemainDaysToNewGovernmentOil(user: UserEntity, carId: number): Promise<{
        remainDays: number;
        allocation: number;
    }>;
    getRemainDaysToNewService(user: UserEntity, carId: number): Promise<{
        remainDays: number;
    }>;
    prepareSnappPayCartList(orderId: number): Promise<{
        cartList: {
            cartId: number;
            cartItems: {
                amount: number;
                category: string;
                count: number;
                id: number;
                name: string;
                commissionType: number;
            }[];
            totalAmount: number;
            isShipmentIncluded: boolean;
            isTaxIncluded: boolean;
            shippingAmount: number;
            taxAmount: number;
        }[];
        finalAmount: number;
        discountAmount: number;
        externalSourceAmount: number;
        shippingAmount: number;
    }>;
    sendSshafList(dto: SshafDto): Promise<any>;
    sendSamtItem(dto: SamtDto): Promise<unknown>;
}
