import { OrderStatus } from '@prisma/client';
import { PrismaService } from '../prisma/prisma.service';
import { RevalidateService } from '../common/revalidate.service';
import { OrderMailService } from '../mail/order-mail.service';
import { OtpService } from '../otp/otp.service';
import { CreateOrderDto, SubmitProofDto } from './dto';
export declare class OrdersService {
    private readonly prisma;
    private readonly otp;
    private readonly revalidate;
    private readonly orderMail;
    constructor(prisma: PrismaService, otp: OtpService, revalidate: RevalidateService, orderMail: OrderMailService);
    private nextOrderNumber;
    create(dto: CreateOrderDto): Promise<{
        items: {
            productId: string | null;
            quantity: number;
            id: string;
            orderId: string;
            nameSnapshot: string;
            pricePaisa: number;
            imageSnapshot: string | null;
        }[];
    } & {
        number: string;
        method: import(".prisma/client").$Enums.PaymentMethod;
        customerNote: string | null;
        id: string;
        customerId: string | null;
        addressId: string | null;
        status: import(".prisma/client").$Enums.OrderStatus;
        paymentStatus: import(".prisma/client").$Enums.PaymentStatus;
        subtotalPaisa: number;
        deliveryPaisa: number;
        discountPaisa: number;
        totalPaisa: number;
        internalNote: string | null;
        trackingCode: string | null;
        courier: string | null;
        placedAt: Date | null;
        confirmedAt: Date | null;
        shippedAt: Date | null;
        deliveredAt: Date | null;
        createdAt: Date;
        updatedAt: Date;
    }>;
    private createInTransaction;
    move(orderId: string, to: OrderStatus, actor: string, message?: string): Promise<{
        number: string;
        method: import(".prisma/client").$Enums.PaymentMethod;
        customerNote: string | null;
        id: string;
        customerId: string | null;
        addressId: string | null;
        status: import(".prisma/client").$Enums.OrderStatus;
        paymentStatus: import(".prisma/client").$Enums.PaymentStatus;
        subtotalPaisa: number;
        deliveryPaisa: number;
        discountPaisa: number;
        totalPaisa: number;
        internalNote: string | null;
        trackingCode: string | null;
        courier: string | null;
        placedAt: Date | null;
        confirmedAt: Date | null;
        shippedAt: Date | null;
        deliveredAt: Date | null;
        createdAt: Date;
        updatedAt: Date;
    }>;
    lookup(phone: string, number: string): Promise<{
        statusLabel: string;
        items: {
            productId: string | null;
            quantity: number;
            id: string;
            orderId: string;
            nameSnapshot: string;
            pricePaisa: number;
            imageSnapshot: string | null;
        }[];
        address: {
            fullName: string;
            phone: string;
            email: string | null;
            city: string;
            area: string;
            street: string;
            landmark: string | null;
            postalCode: string | null;
            id: string;
            customerId: string | null;
            createdAt: Date;
        } | null;
        number: string;
        method: import(".prisma/client").$Enums.PaymentMethod;
        customerNote: string | null;
        id: string;
        customerId: string | null;
        addressId: string | null;
        status: import(".prisma/client").$Enums.OrderStatus;
        paymentStatus: import(".prisma/client").$Enums.PaymentStatus;
        subtotalPaisa: number;
        deliveryPaisa: number;
        discountPaisa: number;
        totalPaisa: number;
        internalNote: string | null;
        trackingCode: string | null;
        courier: string | null;
        placedAt: Date | null;
        confirmedAt: Date | null;
        shippedAt: Date | null;
        deliveredAt: Date | null;
        createdAt: Date;
        updatedAt: Date;
    }>;
    submitProof(number: string, dto: SubmitProofDto): Promise<{
        received: boolean;
    }>;
}
