import { MessageEvent } from '@nestjs/common';
import { ModuleRef } from '@nestjs/core';
import { ProductsService } from './services/products.service';
import { SyncQueueService } from './services/sync-queue.service';
import { OrdersService } from './services/orders.service';
import { OrderEventsService } from './services/order-events.service';
import { DeliveryTrackingService } from './services/delivery-tracking.service';
import { Observable } from 'rxjs';
export declare class CommerceController {
    private readonly productsService;
    private readonly syncQueueService;
    private readonly ordersService;
    private readonly orderEventsService;
    private readonly trackingService;
    private readonly moduleRef;
    constructor(productsService: ProductsService, syncQueueService: SyncQueueService, ordersService: OrdersService, orderEventsService: OrderEventsService, trackingService: DeliveryTrackingService, moduleRef: ModuleRef);
    getProducts(req: any, search?: string, categoryId?: string): Promise<({
        variants: {
            id: string;
            name: string | null;
            createdAt: Date;
            updatedAt: Date;
            sku: string | null;
            price: number;
            stockQuantity: number | null;
            stockStatus: string;
            productId: string;
            externalVariantId: string;
            attributesJson: string | null;
        }[];
    } & {
        id: string;
        name: string;
        status: string;
        createdAt: Date;
        updatedAt: Date;
        businessId: string;
        currency: string;
        sku: string | null;
        sourceSystem: string;
        externalProductId: string;
        description: string | null;
        price: number;
        stockQuantity: number | null;
        stockStatus: string;
        imageUrl: string | null;
        lastSyncedAt: Date;
    })[]>;
    createProduct(req: any, body: any): Promise<{
        id: string;
        name: string;
        status: string;
        createdAt: Date;
        updatedAt: Date;
        businessId: string;
        currency: string;
        sku: string | null;
        sourceSystem: string;
        externalProductId: string;
        description: string | null;
        price: number;
        stockQuantity: number | null;
        stockStatus: string;
        imageUrl: string | null;
        lastSyncedAt: Date;
    }>;
    updateProduct(req: any, id: string, body: any): Promise<{
        id: string;
        name: string;
        status: string;
        createdAt: Date;
        updatedAt: Date;
        businessId: string;
        currency: string;
        sku: string | null;
        sourceSystem: string;
        externalProductId: string;
        description: string | null;
        price: number;
        stockQuantity: number | null;
        stockStatus: string;
        imageUrl: string | null;
        lastSyncedAt: Date;
    }>;
    deleteProduct(req: any, id: string): Promise<{
        id: string;
        name: string;
        status: string;
        createdAt: Date;
        updatedAt: Date;
        businessId: string;
        currency: string;
        sku: string | null;
        sourceSystem: string;
        externalProductId: string;
        description: string | null;
        price: number;
        stockQuantity: number | null;
        stockStatus: string;
        imageUrl: string | null;
        lastSyncedAt: Date;
    }>;
    getCategories(req: any): Promise<{
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        businessId: string;
        parentId: string | null;
        sourceSystem: string;
        externalCategoryId: string;
    }[]>;
    createCategory(req: any, body: any): Promise<{
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        businessId: string;
        parentId: string | null;
        sourceSystem: string;
        externalCategoryId: string;
    }>;
    updateCategory(req: any, id: string, body: any): Promise<{
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        businessId: string;
        parentId: string | null;
        sourceSystem: string;
        externalCategoryId: string;
    }>;
    deleteCategory(req: any, id: string): Promise<{
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        businessId: string;
        parentId: string | null;
        sourceSystem: string;
        externalCategoryId: string;
    }>;
    uploadImage(file: any): Promise<{
        success: boolean;
        message: string;
        imageUrl?: undefined;
    } | {
        imageUrl: string;
        success?: undefined;
        message?: undefined;
    }>;
    syncProducts(req: any): Promise<{
        success: boolean;
        syncLogId: string;
        message: string;
    }>;
    getSyncLogs(req: any): Promise<{
        id: string;
        status: string;
        businessId: string;
        syncType: string;
        recordsProcessed: number;
        recordsFailed: number;
        errorMessage: string | null;
        startedAt: Date;
        completedAt: Date | null;
        integrationId: string;
    }[]>;
    getOrders(req: any): Promise<({
        customer: {
            email: string | null;
            id: string;
            name: string | null;
            createdAt: Date;
            updatedAt: Date;
            businessId: string;
            whatsappNumber: string;
            externalCustomerId: string | null;
        };
        payments: {
            id: string;
            status: string;
            createdAt: Date;
            updatedAt: Date;
            businessId: string;
            paymentReference: string;
            amount: number;
            currency: string;
            gateway: string;
            gatewayReference: string | null;
            paymentLink: string | null;
            orderId: string;
            rawResponseJson: string | null;
        }[];
        items: {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            orderId: string;
            externalProductId: string | null;
            productId: string;
            externalVariantId: string | null;
            variantId: string | null;
            productName: string;
            quantity: number;
            unitPrice: number;
            lineTotal: number;
        }[];
    } & {
        id: string;
        status: string;
        createdAt: Date;
        updatedAt: Date;
        businessId: string;
        currency: string;
        externalOrderId: string | null;
        orderNumber: string;
        customerName: string;
        customerPhone: string;
        totalAmount: number;
        deliveryAddress: string | null;
        sourceSystem: string;
        customerId: string;
        sourceChannel: string;
        paymentStatus: string;
        fulfilmentStatus: string;
        deliveryMethod: string | null;
        deliveryLat: number | null;
        deliveryLng: number | null;
    })[]>;
    getOrder(id: string): Promise<({
        customer: {
            email: string | null;
            id: string;
            name: string | null;
            createdAt: Date;
            updatedAt: Date;
            businessId: string;
            whatsappNumber: string;
            externalCustomerId: string | null;
        };
        payments: {
            id: string;
            status: string;
            createdAt: Date;
            updatedAt: Date;
            businessId: string;
            paymentReference: string;
            amount: number;
            currency: string;
            gateway: string;
            gatewayReference: string | null;
            paymentLink: string | null;
            orderId: string;
            rawResponseJson: string | null;
        }[];
        items: {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            orderId: string;
            externalProductId: string | null;
            productId: string;
            externalVariantId: string | null;
            variantId: string | null;
            productName: string;
            quantity: number;
            unitPrice: number;
            lineTotal: number;
        }[];
    } & {
        id: string;
        status: string;
        createdAt: Date;
        updatedAt: Date;
        businessId: string;
        currency: string;
        externalOrderId: string | null;
        orderNumber: string;
        customerName: string;
        customerPhone: string;
        totalAmount: number;
        deliveryAddress: string | null;
        sourceSystem: string;
        customerId: string;
        sourceChannel: string;
        paymentStatus: string;
        fulfilmentStatus: string;
        deliveryMethod: string | null;
        deliveryLat: number | null;
        deliveryLng: number | null;
    }) | null>;
    updateOrderStatus(req: any, id: string, body: {
        status: string;
    }): Promise<{
        id: string;
        status: string;
        createdAt: Date;
        updatedAt: Date;
        businessId: string;
        currency: string;
        externalOrderId: string | null;
        orderNumber: string;
        customerName: string;
        customerPhone: string;
        totalAmount: number;
        deliveryAddress: string | null;
        sourceSystem: string;
        customerId: string;
        sourceChannel: string;
        paymentStatus: string;
        fulfilmentStatus: string;
        deliveryMethod: string | null;
        deliveryLat: number | null;
        deliveryLng: number | null;
    }>;
    getCustomers(req: any): Promise<{
        id: string;
        name: string;
        whatsappNumber: string;
        createdAt: Date;
        totalOrders: number;
        totalSpent: number;
        orders: {
            orderNumber: string;
            totalAmount: number;
            status: string;
            paymentStatus: string;
            createdAt: Date;
        }[];
    }[]>;
    sendOrderEvents(req: any): Observable<MessageEvent>;
    getOrderTracking(id: string): Promise<{
        id: string;
        status: string;
        createdAt: Date;
        updatedAt: Date;
        orderId: string;
        driverName: string | null;
        driverPhone: string | null;
        currentLat: number | null;
        currentLng: number | null;
        etaMinutes: number | null;
        notes: string | null;
        notifiedAt: Date | null;
    } | null>;
    createOrderTracking(req: any, id: string, body: any): Promise<{
        id: string;
        status: string;
        createdAt: Date;
        updatedAt: Date;
        orderId: string;
        driverName: string | null;
        driverPhone: string | null;
        currentLat: number | null;
        currentLng: number | null;
        etaMinutes: number | null;
        notes: string | null;
        notifiedAt: Date | null;
    }>;
    updateOrderTracking(req: any, id: string, body: any): Promise<{
        id: string;
        status: string;
        createdAt: Date;
        updatedAt: Date;
        orderId: string;
        driverName: string | null;
        driverPhone: string | null;
        currentLat: number | null;
        currentLng: number | null;
        etaMinutes: number | null;
        notes: string | null;
        notifiedAt: Date | null;
    }>;
    private handleTrackingUpsert;
}
