import type { RawBodyRequest } from '@nestjs/common';
import type { Request as ExpressRequest } from 'express';
import type { AuthenticatedRequest } from '../../common/interfaces/auth-request.interface';
import { DeliveryService } from './delivery.service';
export declare class DeliveryController {
    private readonly deliveryService;
    constructor(deliveryService: DeliveryService);
    list(req: AuthenticatedRequest): Promise<{
        delivery: {
            id: string;
            status: string;
            createdAt: Date;
            updatedAt: Date;
            externalId: string | null;
            currency: string;
            businessId: string;
            orderId: string;
            provider: string;
            trackingUrl: string | null;
            quoteId: string | null;
            feeAmount: number | null;
            distanceMetres: number | null;
            dropoffAddress: string | null;
            dropoffLat: number | null;
            dropoffLng: number | null;
            courierName: string | null;
            courierPhone: string | null;
            eta: string | null;
            lastError: string | null;
            providerUpdatedAt: Date | null;
            bookedAt: Date | null;
            deliveredAt: Date | null;
            cancelledAt: Date | null;
        } | null;
        id: string;
        status: string;
        createdAt: Date;
        orderNumber: string;
        customerName: string;
        customerPhone: string;
        totalAmount: number;
        currency: string;
        deliveryAddress: string | null;
        items: {
            id: string;
            productName: string;
            quantity: number;
            lineTotal: number;
        }[];
        paymentStatus: string;
        deliveryLat: number | null;
        deliveryLng: number | null;
        deliveryFee: number | null;
    }[]>;
    status(req: AuthenticatedRequest): Promise<{
        configured: boolean;
        connected: boolean;
        client?: undefined;
        scopes?: undefined;
        testMode?: undefined;
        environment?: undefined;
        pickupAddress?: undefined;
        maxRadiusKm?: undefined;
        error?: undefined;
    } | {
        configured: boolean;
        connected: boolean;
        client: string;
        scopes: string[];
        testMode: boolean;
        environment: string;
        pickupAddress: string | null;
        maxRadiusKm: number | null;
        error?: undefined;
    } | {
        configured: boolean;
        connected: boolean;
        error: any;
        environment: string;
        client?: undefined;
        scopes?: undefined;
        testMode?: undefined;
        pickupAddress?: undefined;
        maxRadiusKm?: undefined;
    }>;
    events(req: AuthenticatedRequest, orderId: string): Promise<{
        id: string;
        status: string | null;
        createdAt: Date;
        type: string;
        externalEventId: string | null;
        source: string | null;
        occurredAt: Date;
        dataJson: string | null;
        deliveryId: string;
    }[]>;
    book(req: AuthenticatedRequest, orderId: string): Promise<{
        id: string;
        status: string;
        createdAt: Date;
        updatedAt: Date;
        externalId: string | null;
        currency: string;
        businessId: string;
        orderId: string;
        provider: string;
        trackingUrl: string | null;
        quoteId: string | null;
        feeAmount: number | null;
        distanceMetres: number | null;
        dropoffAddress: string | null;
        dropoffLat: number | null;
        dropoffLng: number | null;
        courierName: string | null;
        courierPhone: string | null;
        eta: string | null;
        lastError: string | null;
        providerUpdatedAt: Date | null;
        bookedAt: Date | null;
        deliveredAt: Date | null;
        cancelledAt: Date | null;
    }>;
    refresh(req: AuthenticatedRequest, orderId: string): Promise<{
        id: string;
        status: string;
        createdAt: Date;
        updatedAt: Date;
        externalId: string | null;
        currency: string;
        businessId: string;
        orderId: string;
        provider: string;
        trackingUrl: string | null;
        quoteId: string | null;
        feeAmount: number | null;
        distanceMetres: number | null;
        dropoffAddress: string | null;
        dropoffLat: number | null;
        dropoffLng: number | null;
        courierName: string | null;
        courierPhone: string | null;
        eta: string | null;
        lastError: string | null;
        providerUpdatedAt: Date | null;
        bookedAt: Date | null;
        deliveredAt: Date | null;
        cancelledAt: Date | null;
    } | null>;
    cancel(req: AuthenticatedRequest, orderId: string, body: {
        reason?: string;
        note?: string;
    }): Promise<{
        id: string;
        status: string;
        createdAt: Date;
        updatedAt: Date;
        externalId: string | null;
        currency: string;
        businessId: string;
        orderId: string;
        provider: string;
        trackingUrl: string | null;
        quoteId: string | null;
        feeAmount: number | null;
        distanceMetres: number | null;
        dropoffAddress: string | null;
        dropoffLat: number | null;
        dropoffLng: number | null;
        courierName: string | null;
        courierPhone: string | null;
        eta: string | null;
        lastError: string | null;
        providerUpdatedAt: Date | null;
        bookedAt: Date | null;
        deliveredAt: Date | null;
        cancelledAt: Date | null;
    } | null>;
}
export declare class RoadrunnerWebhookController {
    private readonly deliveryService;
    constructor(deliveryService: DeliveryService);
    receive(req: RawBodyRequest<ExpressRequest>): Promise<{
        received: boolean;
    }>;
}
export declare class PublicTrackingController {
    private readonly deliveryService;
    constructor(deliveryService: DeliveryService);
    getPublicTracking(orderId: string): Promise<{
        business: {
            name: string;
        };
        delivery: {
            status: string;
            updatedAt: Date;
            trackingUrl: string | null;
            dropoffAddress: string | null;
            courierName: string | null;
            eta: string | null;
            bookedAt: Date | null;
            deliveredAt: Date | null;
            events: {
                status: string | null;
                type: string;
                occurredAt: Date;
            }[];
        } | null;
        status: string;
        createdAt: Date;
        orderNumber: string;
        customerName: string;
        deliveryAddress: string | null;
        deliveryMethod: string | null;
    }>;
}
