import { UpdateDriverProfileDto } from './dto/update-driver-profile.dto';
import { UpsertDriverDto } from './dto/upsert-driver.dto';
import { DriversService } from './drivers.service';
export declare class DriversController {
    private readonly driversService;
    constructor(driversService: DriversService);
    index(): import("@prisma/client").Prisma.PrismaPromise<({
        wallet: {
            id: string;
            customerId: string | null;
            restaurantId: string | null;
            createdAt: Date;
            updatedAt: Date;
            type: import("@prisma/client").$Enums.WalletType;
            balance: import("@prisma/client/runtime/library").Decimal;
            blockedBalance: import("@prisma/client/runtime/library").Decimal;
            currency: string;
            userId: string | null;
            driverId: string | null;
        } | null;
        user: {
            id: string;
            status: import("@prisma/client").$Enums.AccountStatus;
            createdAt: Date;
            updatedAt: Date;
            email: string | null;
            phone: string | null;
            passwordHash: string;
            role: import("@prisma/client").$Enums.UserRole;
            emailVerifiedAt: Date | null;
            phoneVerifiedAt: Date | null;
        };
        deliveries: {
            id: string;
            status: import("@prisma/client").$Enums.DeliveryStatus;
            createdAt: Date;
            updatedAt: Date;
            orderId: string;
            driverId: string | null;
            pricePerKm: import("@prisma/client/runtime/library").Decimal;
            distanceKm: import("@prisma/client/runtime/library").Decimal | null;
            etaMinutes: number | null;
            baseFee: import("@prisma/client/runtime/library").Decimal;
            deliveryFeeCustomer: import("@prisma/client/runtime/library").Decimal;
            driverEarning: import("@prisma/client/runtime/library").Decimal;
            platformDeliveryProfit: import("@prisma/client/runtime/library").Decimal;
            demandMultiplier: import("@prisma/client/runtime/library").Decimal;
            weatherMultiplier: import("@prisma/client/runtime/library").Decimal;
            surgeMultiplier: import("@prisma/client/runtime/library").Decimal;
            bonusAmount: import("@prisma/client/runtime/library").Decimal;
            rainBonus: import("@prisma/client/runtime/library").Decimal;
            peakBonus: import("@prisma/client/runtime/library").Decimal;
            tipsAmount: import("@prisma/client/runtime/library").Decimal;
            proofImageUrl: string | null;
            pickedUpAt: Date | null;
            deliveredAt: Date | null;
        }[];
        _count: {
            deliveries: number;
        };
    } & {
        id: string;
        status: import("@prisma/client").$Enums.AccountStatus;
        createdAt: Date;
        updatedAt: Date;
        userId: string;
        documentNumber: string;
        pixKey: string | null;
        fullName: string;
        avatarUrl: string | null;
        rating: import("@prisma/client/runtime/library").Decimal;
        cnhUrl: string | null;
        vehicleDocumentUrl: string | null;
        vehiclePlate: string | null;
        vehicleModel: string | null;
        isOnline: boolean;
    })[]>;
    create(body: UpsertDriverDto): Promise<{
        wallet: {
            id: string;
            customerId: string | null;
            restaurantId: string | null;
            createdAt: Date;
            updatedAt: Date;
            type: import("@prisma/client").$Enums.WalletType;
            balance: import("@prisma/client/runtime/library").Decimal;
            blockedBalance: import("@prisma/client/runtime/library").Decimal;
            currency: string;
            userId: string | null;
            driverId: string | null;
        } | null;
        user: {
            id: string;
            status: import("@prisma/client").$Enums.AccountStatus;
            createdAt: Date;
            updatedAt: Date;
            email: string | null;
            phone: string | null;
            passwordHash: string;
            role: import("@prisma/client").$Enums.UserRole;
            emailVerifiedAt: Date | null;
            phoneVerifiedAt: Date | null;
        };
        deliveries: {
            id: string;
            status: import("@prisma/client").$Enums.DeliveryStatus;
            createdAt: Date;
            updatedAt: Date;
            orderId: string;
            driverId: string | null;
            pricePerKm: import("@prisma/client/runtime/library").Decimal;
            distanceKm: import("@prisma/client/runtime/library").Decimal | null;
            etaMinutes: number | null;
            baseFee: import("@prisma/client/runtime/library").Decimal;
            deliveryFeeCustomer: import("@prisma/client/runtime/library").Decimal;
            driverEarning: import("@prisma/client/runtime/library").Decimal;
            platformDeliveryProfit: import("@prisma/client/runtime/library").Decimal;
            demandMultiplier: import("@prisma/client/runtime/library").Decimal;
            weatherMultiplier: import("@prisma/client/runtime/library").Decimal;
            surgeMultiplier: import("@prisma/client/runtime/library").Decimal;
            bonusAmount: import("@prisma/client/runtime/library").Decimal;
            rainBonus: import("@prisma/client/runtime/library").Decimal;
            peakBonus: import("@prisma/client/runtime/library").Decimal;
            tipsAmount: import("@prisma/client/runtime/library").Decimal;
            proofImageUrl: string | null;
            pickedUpAt: Date | null;
            deliveredAt: Date | null;
        }[];
        _count: {
            deliveries: number;
        };
    } & {
        id: string;
        status: import("@prisma/client").$Enums.AccountStatus;
        createdAt: Date;
        updatedAt: Date;
        userId: string;
        documentNumber: string;
        pixKey: string | null;
        fullName: string;
        avatarUrl: string | null;
        rating: import("@prisma/client/runtime/library").Decimal;
        cnhUrl: string | null;
        vehicleDocumentUrl: string | null;
        vehiclePlate: string | null;
        vehicleModel: string | null;
        isOnline: boolean;
    }>;
    update(id: string, body: Partial<UpsertDriverDto>): Promise<{
        wallet: {
            id: string;
            customerId: string | null;
            restaurantId: string | null;
            createdAt: Date;
            updatedAt: Date;
            type: import("@prisma/client").$Enums.WalletType;
            balance: import("@prisma/client/runtime/library").Decimal;
            blockedBalance: import("@prisma/client/runtime/library").Decimal;
            currency: string;
            userId: string | null;
            driverId: string | null;
        } | null;
        user: {
            id: string;
            status: import("@prisma/client").$Enums.AccountStatus;
            createdAt: Date;
            updatedAt: Date;
            email: string | null;
            phone: string | null;
            passwordHash: string;
            role: import("@prisma/client").$Enums.UserRole;
            emailVerifiedAt: Date | null;
            phoneVerifiedAt: Date | null;
        };
        deliveries: {
            id: string;
            status: import("@prisma/client").$Enums.DeliveryStatus;
            createdAt: Date;
            updatedAt: Date;
            orderId: string;
            driverId: string | null;
            pricePerKm: import("@prisma/client/runtime/library").Decimal;
            distanceKm: import("@prisma/client/runtime/library").Decimal | null;
            etaMinutes: number | null;
            baseFee: import("@prisma/client/runtime/library").Decimal;
            deliveryFeeCustomer: import("@prisma/client/runtime/library").Decimal;
            driverEarning: import("@prisma/client/runtime/library").Decimal;
            platformDeliveryProfit: import("@prisma/client/runtime/library").Decimal;
            demandMultiplier: import("@prisma/client/runtime/library").Decimal;
            weatherMultiplier: import("@prisma/client/runtime/library").Decimal;
            surgeMultiplier: import("@prisma/client/runtime/library").Decimal;
            bonusAmount: import("@prisma/client/runtime/library").Decimal;
            rainBonus: import("@prisma/client/runtime/library").Decimal;
            peakBonus: import("@prisma/client/runtime/library").Decimal;
            tipsAmount: import("@prisma/client/runtime/library").Decimal;
            proofImageUrl: string | null;
            pickedUpAt: Date | null;
            deliveredAt: Date | null;
        }[];
        _count: {
            deliveries: number;
        };
    } & {
        id: string;
        status: import("@prisma/client").$Enums.AccountStatus;
        createdAt: Date;
        updatedAt: Date;
        userId: string;
        documentNumber: string;
        pixKey: string | null;
        fullName: string;
        avatarUrl: string | null;
        rating: import("@prisma/client/runtime/library").Decimal;
        cnhUrl: string | null;
        vehicleDocumentUrl: string | null;
        vehiclePlate: string | null;
        vehicleModel: string | null;
        isOnline: boolean;
    }>;
    archive(id: string): Promise<{
        id: string;
        status: import("@prisma/client").$Enums.AccountStatus;
        createdAt: Date;
        updatedAt: Date;
        userId: string;
        documentNumber: string;
        pixKey: string | null;
        fullName: string;
        avatarUrl: string | null;
        rating: import("@prisma/client/runtime/library").Decimal;
        cnhUrl: string | null;
        vehicleDocumentUrl: string | null;
        vehiclePlate: string | null;
        vehicleModel: string | null;
        isOnline: boolean;
    }>;
    getRoute(req: {
        user: {
            sub: string;
            role: string;
        };
    }, id: string): Promise<{
        id: string;
        status: import("@prisma/client").$Enums.DeliveryRouteStatus;
        createdAt: Date;
        updatedAt: Date;
        orderId: string;
        driverId: string | null;
        restaurantLatitude: import("@prisma/client/runtime/library").Decimal | null;
        restaurantLongitude: import("@prisma/client/runtime/library").Decimal | null;
        customerLatitude: import("@prisma/client/runtime/library").Decimal | null;
        customerLongitude: import("@prisma/client/runtime/library").Decimal | null;
        pickupDistanceKm: import("@prisma/client/runtime/library").Decimal | null;
        deliveryDistanceKm: import("@prisma/client/runtime/library").Decimal | null;
        estimatedPickupTime: number | null;
        estimatedDeliveryTime: number | null;
        encodedPolylineToRestaurant: string | null;
        encodedPolylineToCustomer: string | null;
    } | null>;
    getActiveDeliveries(req: {
        user: {
            sub: string;
            role: string;
        };
    }): Promise<({
        order: {
            address: {
                number: string;
                id: string;
                createdAt: Date;
                updatedAt: Date;
                userId: string;
                street: string;
                complement: string | null;
                state: string;
                zipCode: string;
                latitude: import("@prisma/client/runtime/library").Decimal | null;
                longitude: import("@prisma/client/runtime/library").Decimal | null;
                city: string;
                neighborhood: string;
                label: string;
                isDefault: boolean;
            } | null;
            customer: {
                id: string;
                createdAt: Date;
                updatedAt: Date;
                userId: string;
                fullName: string;
                avatarUrl: string | null;
                defaultAddressId: string | null;
            };
            restaurant: {
                number: string | null;
                id: string;
                status: import("@prisma/client").$Enums.AccountStatus;
                createdAt: Date;
                updatedAt: Date;
                name: string;
                description: string | null;
                userId: string;
                slug: string;
                documentNumber: string;
                pixKey: string | null;
                street: string | null;
                complement: string | null;
                state: string | null;
                zipCode: string | null;
                commissionPercentage: import("@prisma/client/runtime/library").Decimal;
                serviceFeePercentage: import("@prisma/client/runtime/library").Decimal;
                baseDeliveryFee: import("@prisma/client/runtime/library").Decimal;
                pricePerKm: import("@prisma/client/runtime/library").Decimal;
                latitude: import("@prisma/client/runtime/library").Decimal | null;
                longitude: import("@prisma/client/runtime/library").Decimal | null;
                city: string | null;
                neighborhood: string | null;
                acceptsCashOnDelivery: boolean;
                isOpen: boolean;
                isPaused: boolean;
                companyContractUrl: string | null;
                businessLicenseUrl: string | null;
                ownerDocumentUrl: string | null;
                bankProofUrl: string | null;
                documentReviewNotes: string | null;
                documentsSubmittedAt: Date | null;
                approvedAt: Date | null;
                rejectedAt: Date | null;
                coverImageUrl: string | null;
                logoUrl: string | null;
            };
        } & {
            id: string;
            customerId: string;
            restaurantId: string;
            addressId: string | null;
            couponId: string | null;
            status: import("@prisma/client").$Enums.OrderStatus;
            subtotal: import("@prisma/client/runtime/library").Decimal;
            deliveryFee: import("@prisma/client/runtime/library").Decimal;
            serviceFee: import("@prisma/client/runtime/library").Decimal;
            discountAmount: import("@prisma/client/runtime/library").Decimal;
            total: import("@prisma/client/runtime/library").Decimal;
            notes: string | null;
            createdAt: Date;
            updatedAt: Date;
        };
    } & {
        id: string;
        status: import("@prisma/client").$Enums.DeliveryStatus;
        createdAt: Date;
        updatedAt: Date;
        orderId: string;
        driverId: string | null;
        pricePerKm: import("@prisma/client/runtime/library").Decimal;
        distanceKm: import("@prisma/client/runtime/library").Decimal | null;
        etaMinutes: number | null;
        baseFee: import("@prisma/client/runtime/library").Decimal;
        deliveryFeeCustomer: import("@prisma/client/runtime/library").Decimal;
        driverEarning: import("@prisma/client/runtime/library").Decimal;
        platformDeliveryProfit: import("@prisma/client/runtime/library").Decimal;
        demandMultiplier: import("@prisma/client/runtime/library").Decimal;
        weatherMultiplier: import("@prisma/client/runtime/library").Decimal;
        surgeMultiplier: import("@prisma/client/runtime/library").Decimal;
        bonusAmount: import("@prisma/client/runtime/library").Decimal;
        rainBonus: import("@prisma/client/runtime/library").Decimal;
        peakBonus: import("@prisma/client/runtime/library").Decimal;
        tipsAmount: import("@prisma/client/runtime/library").Decimal;
        proofImageUrl: string | null;
        pickedUpAt: Date | null;
        deliveredAt: Date | null;
    })[]>;
    getDeliveryOffers(req: {
        user: {
            sub: string;
            role: string;
        };
    }): Promise<({
        order: {
            address: {
                number: string;
                id: string;
                createdAt: Date;
                updatedAt: Date;
                userId: string;
                street: string;
                complement: string | null;
                state: string;
                zipCode: string;
                latitude: import("@prisma/client/runtime/library").Decimal | null;
                longitude: import("@prisma/client/runtime/library").Decimal | null;
                city: string;
                neighborhood: string;
                label: string;
                isDefault: boolean;
            } | null;
            customer: {
                id: string;
                createdAt: Date;
                updatedAt: Date;
                userId: string;
                fullName: string;
                avatarUrl: string | null;
                defaultAddressId: string | null;
            };
            restaurant: {
                number: string | null;
                id: string;
                status: import("@prisma/client").$Enums.AccountStatus;
                createdAt: Date;
                updatedAt: Date;
                name: string;
                description: string | null;
                userId: string;
                slug: string;
                documentNumber: string;
                pixKey: string | null;
                street: string | null;
                complement: string | null;
                state: string | null;
                zipCode: string | null;
                commissionPercentage: import("@prisma/client/runtime/library").Decimal;
                serviceFeePercentage: import("@prisma/client/runtime/library").Decimal;
                baseDeliveryFee: import("@prisma/client/runtime/library").Decimal;
                pricePerKm: import("@prisma/client/runtime/library").Decimal;
                latitude: import("@prisma/client/runtime/library").Decimal | null;
                longitude: import("@prisma/client/runtime/library").Decimal | null;
                city: string | null;
                neighborhood: string | null;
                acceptsCashOnDelivery: boolean;
                isOpen: boolean;
                isPaused: boolean;
                companyContractUrl: string | null;
                businessLicenseUrl: string | null;
                ownerDocumentUrl: string | null;
                bankProofUrl: string | null;
                documentReviewNotes: string | null;
                documentsSubmittedAt: Date | null;
                approvedAt: Date | null;
                rejectedAt: Date | null;
                coverImageUrl: string | null;
                logoUrl: string | null;
            };
        } & {
            id: string;
            customerId: string;
            restaurantId: string;
            addressId: string | null;
            couponId: string | null;
            status: import("@prisma/client").$Enums.OrderStatus;
            subtotal: import("@prisma/client/runtime/library").Decimal;
            deliveryFee: import("@prisma/client/runtime/library").Decimal;
            serviceFee: import("@prisma/client/runtime/library").Decimal;
            discountAmount: import("@prisma/client/runtime/library").Decimal;
            total: import("@prisma/client/runtime/library").Decimal;
            notes: string | null;
            createdAt: Date;
            updatedAt: Date;
        };
    } & {
        id: string;
        status: import("@prisma/client").$Enums.DeliveryStatus;
        createdAt: Date;
        updatedAt: Date;
        orderId: string;
        driverId: string | null;
        pricePerKm: import("@prisma/client/runtime/library").Decimal;
        distanceKm: import("@prisma/client/runtime/library").Decimal | null;
        etaMinutes: number | null;
        baseFee: import("@prisma/client/runtime/library").Decimal;
        deliveryFeeCustomer: import("@prisma/client/runtime/library").Decimal;
        driverEarning: import("@prisma/client/runtime/library").Decimal;
        platformDeliveryProfit: import("@prisma/client/runtime/library").Decimal;
        demandMultiplier: import("@prisma/client/runtime/library").Decimal;
        weatherMultiplier: import("@prisma/client/runtime/library").Decimal;
        surgeMultiplier: import("@prisma/client/runtime/library").Decimal;
        bonusAmount: import("@prisma/client/runtime/library").Decimal;
        rainBonus: import("@prisma/client/runtime/library").Decimal;
        peakBonus: import("@prisma/client/runtime/library").Decimal;
        tipsAmount: import("@prisma/client/runtime/library").Decimal;
        proofImageUrl: string | null;
        pickedUpAt: Date | null;
        deliveredAt: Date | null;
    })[]>;
    getProfile(req: {
        user: {
            sub: string;
            role: string;
        };
    }): Promise<{
        wallet: {
            id: string;
            customerId: string | null;
            restaurantId: string | null;
            createdAt: Date;
            updatedAt: Date;
            type: import("@prisma/client").$Enums.WalletType;
            balance: import("@prisma/client/runtime/library").Decimal;
            blockedBalance: import("@prisma/client/runtime/library").Decimal;
            currency: string;
            userId: string | null;
            driverId: string | null;
        } | null;
        user: {
            id: string;
            status: import("@prisma/client").$Enums.AccountStatus;
            email: string | null;
            phone: string | null;
        };
    } & {
        id: string;
        status: import("@prisma/client").$Enums.AccountStatus;
        createdAt: Date;
        updatedAt: Date;
        userId: string;
        documentNumber: string;
        pixKey: string | null;
        fullName: string;
        avatarUrl: string | null;
        rating: import("@prisma/client/runtime/library").Decimal;
        cnhUrl: string | null;
        vehicleDocumentUrl: string | null;
        vehiclePlate: string | null;
        vehicleModel: string | null;
        isOnline: boolean;
    }>;
    updateProfile(req: {
        user: {
            sub: string;
            role: string;
        };
    }, body: UpdateDriverProfileDto): Promise<{
        wallet: {
            id: string;
            customerId: string | null;
            restaurantId: string | null;
            createdAt: Date;
            updatedAt: Date;
            type: import("@prisma/client").$Enums.WalletType;
            balance: import("@prisma/client/runtime/library").Decimal;
            blockedBalance: import("@prisma/client/runtime/library").Decimal;
            currency: string;
            userId: string | null;
            driverId: string | null;
        } | null;
        user: {
            id: string;
            status: import("@prisma/client").$Enums.AccountStatus;
            email: string | null;
            phone: string | null;
        };
    } & {
        id: string;
        status: import("@prisma/client").$Enums.AccountStatus;
        createdAt: Date;
        updatedAt: Date;
        userId: string;
        documentNumber: string;
        pixKey: string | null;
        fullName: string;
        avatarUrl: string | null;
        rating: import("@prisma/client/runtime/library").Decimal;
        cnhUrl: string | null;
        vehicleDocumentUrl: string | null;
        vehiclePlate: string | null;
        vehicleModel: string | null;
        isOnline: boolean;
    }>;
    acceptDelivery(req: {
        user: {
            sub: string;
            role: string;
        };
    }, id: string): Promise<{
        orderId: string;
        deliveryId: string;
        driverId: string;
        driverName: string;
        etaMinutes: number | null;
        status: "ACCEPTED";
    }>;
    rejectDelivery(req: {
        user: {
            sub: string;
            role: string;
        };
    }, id: string): Promise<{
        reassigned: boolean;
        driverId: string;
        driverName: string;
        orderId: string;
        deliveryId: string;
        rejectedByDriverId: string;
        status: "SEARCHING_DRIVER";
    } | {
        reassigned: boolean;
        orderId: string;
        deliveryId: string;
        rejectedByDriverId: string;
        status: "SEARCHING_DRIVER";
    }>;
    updateStatus(req: {
        user: {
            sub: string;
            role: string;
        };
    }, body: {
        isOnline: boolean;
    }): Promise<{
        id: string;
        status: import("@prisma/client").$Enums.AccountStatus;
        createdAt: Date;
        updatedAt: Date;
        userId: string;
        documentNumber: string;
        pixKey: string | null;
        fullName: string;
        avatarUrl: string | null;
        rating: import("@prisma/client/runtime/library").Decimal;
        cnhUrl: string | null;
        vehicleDocumentUrl: string | null;
        vehiclePlate: string | null;
        vehicleModel: string | null;
        isOnline: boolean;
    }>;
    updateLocation(req: {
        user: {
            sub: string;
            role: string;
        };
    }, id: string, body: {
        latitude: number;
        longitude: number;
        heading?: number;
        speed?: number;
        accuracy?: number;
    }): Promise<{
        orderId: string;
        deliveryId: string;
        driverId: string;
        location: {
            id: string;
            createdAt: Date;
            orderId: string | null;
            driverId: string;
            latitude: import("@prisma/client/runtime/library").Decimal;
            longitude: import("@prisma/client/runtime/library").Decimal;
            heading: import("@prisma/client/runtime/library").Decimal | null;
            speed: import("@prisma/client/runtime/library").Decimal | null;
            accuracy: import("@prisma/client/runtime/library").Decimal | null;
        };
        route: {
            id: string;
            status: import("@prisma/client").$Enums.DeliveryRouteStatus;
            createdAt: Date;
            updatedAt: Date;
            orderId: string;
            driverId: string | null;
            restaurantLatitude: import("@prisma/client/runtime/library").Decimal | null;
            restaurantLongitude: import("@prisma/client/runtime/library").Decimal | null;
            customerLatitude: import("@prisma/client/runtime/library").Decimal | null;
            customerLongitude: import("@prisma/client/runtime/library").Decimal | null;
            pickupDistanceKm: import("@prisma/client/runtime/library").Decimal | null;
            deliveryDistanceKm: import("@prisma/client/runtime/library").Decimal | null;
            estimatedPickupTime: number | null;
            estimatedDeliveryTime: number | null;
            encodedPolylineToRestaurant: string | null;
            encodedPolylineToCustomer: string | null;
        } | null;
    }>;
    pickup(req: {
        user: {
            sub: string;
            role: string;
        };
    }, id: string, body: {
        confirmationCode?: string;
    }): Promise<{
        orderId: string;
        deliveryId: string;
        confirmationCode: string;
        status: import("@prisma/client").$Enums.DeliveryStatus;
    }>;
    delivered(req: {
        user: {
            sub: string;
            role: string;
        };
    }, id: string, body: {
        confirmationCode?: string;
        proofImageUrl?: string;
    }): Promise<{
        orderId: string;
        deliveryId: string;
        confirmationCode: string | null;
        proofImageUrl: string | null;
        status: import("@prisma/client").$Enums.DeliveryStatus;
        settlement: {
            ok: boolean;
            orderId: string;
            restaurantNet: number;
            driverEarning: number;
            commission: number;
            serviceFee: number;
            deliveryProfit: number;
            alreadySettled: boolean;
        };
    }>;
}
