import { OrderStatus, Prisma } from '@prisma/client';
import { OrdersService } from '../orders/orders.service';
import { PrismaService } from '../prisma/prisma.service';
import { RevalidateService } from '../common/revalidate.service';
import { OrderMailService } from '../mail/order-mail.service';
export declare class AdminService {
    private readonly prisma;
    private readonly orders;
    private readonly revalidate;
    private readonly orderMail;
    constructor(prisma: PrismaService, orders: OrdersService, revalidate: RevalidateService, orderMail: OrderMailService);
    counts(): Promise<{
        OPEN: number;
        ALL: number;
    }>;
    list(opts: {
        status?: string;
        q?: string;
        take?: number;
    }): Promise<({
        items: {
            quantity: number;
            id: string;
            nameSnapshot: string;
        }[];
        address: {
            city: string;
            area: string;
        } | null;
        customer: {
            phone: string;
            name: string | null;
            verified: boolean;
        } | null;
        proofs: {
            id: string;
        }[];
    } & {
        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;
    })[]>;
    detail(number: string): Promise<{
        nextStatuses: import(".prisma/client").$Enums.OrderStatus[];
        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;
        customer: {
            phone: string;
            email: string | null;
            name: string | null;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            verified: boolean;
            notes: string | null;
            blocked: boolean;
        } | null;
        proofs: {
            method: import(".prisma/client").$Enums.PaymentMethod;
            transactionId: string | null;
            senderName: string | null;
            senderPhone: string | null;
            id: string;
            orderId: string;
            amountPaisa: number | null;
            imageUrl: string | null;
            submittedAt: Date;
            verifiedAt: Date | null;
            verifiedBy: string | null;
            rejectReason: string | null;
        }[];
        events: {
            message: string | null;
            from: string | null;
            to: string | null;
            id: string;
            createdAt: Date;
            orderId: string;
            type: string;
            actor: 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;
    }>;
    move(number: 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;
    }>;
    decideProof(number: string, accept: boolean, actor: string, reason?: string): Promise<{
        ok: boolean;
    }>;
    note(number: string, message: string, actor: string): Promise<{
        ok: boolean;
    }>;
    setTracking(number: string, courier: string, trackingCode: string, actor: string): Promise<{
        ok: boolean;
    }>;
    products(): Prisma.PrismaPromise<({
        images: {
            productId: string;
            url: string;
            id: string;
            createdAt: Date;
            sortOrder: number;
            alt: string | null;
            isPrimary: boolean;
        }[];
    } & {
        name: string;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        pricePaisa: number;
        slug: string;
        subtitle: string | null;
        description: string | null;
        howToUse: string | null;
        sizeLabel: string | null;
        comparePaisa: number | null;
        stock: number;
        active: boolean;
        ingredients: string[];
        benefits: string[];
        badges: string[];
        sortOrder: number;
        isBundle: boolean;
    })[]>;
    updateProduct(id: string, data: Prisma.ProductUpdateInput): Promise<{
        name: string;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        pricePaisa: number;
        slug: string;
        subtitle: string | null;
        description: string | null;
        howToUse: string | null;
        sizeLabel: string | null;
        comparePaisa: number | null;
        stock: number;
        active: boolean;
        ingredients: string[];
        benefits: string[];
        badges: string[];
        sortOrder: number;
        isBundle: boolean;
    }>;
    stats(): Promise<{
        ordersLast30: number;
        deliveredRevenuePaisa: number;
        lowStock: {
            name: string;
            stock: number;
        }[];
    }>;
}
