import type { Request, Response } from 'express';
import { OrderStatus } from '@prisma/client';
import { AdminAuthService } from './admin-auth.service';
import { AdminService } from './admin.service';
declare class LoginDto {
    email: string;
    password: string;
}
declare class MoveDto {
    to: OrderStatus;
    message?: string;
}
declare class ProofDto {
    accept: boolean;
    reason?: string;
}
declare class NoteDto {
    message: string;
}
declare class TrackingDto {
    courier: string;
    trackingCode: string;
}
declare class ProductDto {
    name?: string;
    pricePaisa?: number;
    comparePaisa?: number;
    stock?: number;
    active?: boolean;
    description?: string;
}
export declare class AdminController {
    private readonly auth;
    private readonly admin;
    constructor(auth: AdminAuthService, admin: AdminService);
    login(dto: LoginDto, res: Response): Promise<{
        admin: {
            id: string;
            email: string;
            name: string | null;
        };
    }>;
    logout(res: Response): {
        ok: boolean;
    };
    me(req: Request & {
        adminId: string;
    }): Promise<{
        id: string;
        email: string;
        name: string | null;
    } | null>;
    counts(): Promise<{
        OPEN: number;
        ALL: number;
    }>;
    stats(): Promise<{
        ordersLast30: number;
        deliveredRevenuePaisa: number;
        lowStock: {
            name: string;
            stock: number;
        }[];
    }>;
    list(status?: string, q?: string): 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, dto: MoveDto, req: Request & {
        adminId: 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;
    }>;
    proof(number: string, dto: ProofDto, req: Request & {
        adminId: string;
    }): Promise<{
        ok: boolean;
    }>;
    note(number: string, dto: NoteDto, req: Request & {
        adminId: string;
    }): Promise<{
        ok: boolean;
    }>;
    tracking(number: string, dto: TrackingDto, req: Request & {
        adminId: string;
    }): Promise<{
        ok: boolean;
    }>;
    products(): import(".prisma/client").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, dto: ProductDto): 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;
    }>;
}
export {};
