import { Response } from 'express';
import { ModelsService } from 'src/models/models.service';
import { CommonService } from 'src/common/common.service';
import { SmsService } from 'src/common/services/sms.service';
import { TripsGateway } from './trips.gateway';
import { CreateTripDto } from './dto/create-trip.dto';
import { UpdateTripDto } from './dto/update-trip.dto';
import { AssignVehicleDto } from './dto/assign-vehicle.dto';
import { AssignDriverDto } from './dto/assign-driver.dto';
import { UpdateTripStatusDto } from './dto/update-trip-status.dto';
import { UpdateLocationDto } from './dto/update-location.dto';
import { ListTripDto } from './dto/list-trip.dto';
import { GetEntityTripsDto } from './dto/get-entity-trips.dto';
import { ExportTripsDto } from './dto/export-trips.dto';
import { SetAdvanceDto } from './dto/set-advance.dto';
import { DashboardStatsDto } from './dto/dashboard-stats.dto';
import { CancelTripDto } from './dto/cancel-trip.dto';
import { ComplianceAlertsDto } from './dto/compliance-alerts.dto';
import { TripStatus } from './schema/trips.schema';
import { Types } from 'mongoose';
import { StatusHistoryService } from 'src/status-history/status-history.service';
import { AgendaService } from 'src/agenda/agenda.service';
import { FinancialCalculationService } from 'src/accounts/services/financial-calculation.service';
import { LeaveService } from 'src/leave/leave.service';
import { ConfigService } from '@nestjs/config';
import { GlacierService } from 'src/uploads/upload.service';
export declare class TripsService {
    private readonly model;
    private readonly commonService;
    private readonly tripsGateway;
    private readonly smsService;
    private readonly statusHistoryService;
    private readonly agendaService;
    private readonly financialCalculationService;
    private readonly leaveService;
    private readonly configService;
    private readonly glacierService;
    constructor(model: ModelsService, commonService: CommonService, tripsGateway: TripsGateway, smsService: SmsService, statusHistoryService: StatusHistoryService, agendaService: AgendaService, financialCalculationService: FinancialCalculationService, leaveService: LeaveService, configService: ConfigService, glacierService: GlacierService);
    private generateRouteMapSnapshot;
    private releaseDriverFromTrip;
    private invalidateTripCaches;
    private generateUniqueTripId;
    private generateLRNumber;
    private resolveOtpRecipient;
    private resolveBrokerFields;
    private resolveHiredVehicleFields;
    private resolveCustomerRef;
    private findOrCreateGuestCustomer;
    createTrip(createTripDto: CreateTripDto, req: any): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    updateTripDistance(id: string, distanceInKm: number, req: any): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    updateTrip(id: string, updateTripDto: UpdateTripDto, req: any): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    listTrips(query: ListTripDto, user: any): Promise<any>;
    getEntityTrips(query: GetEntityTripsDto, user: any): Promise<any>;
    exportTripsCsv(query: ExportTripsDto, user: any, res: Response): Promise<Response<any, Record<string, any>>>;
    getDashboardStats(user: any, query?: DashboardStatsDto): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    getComplianceAlerts(user: any, query: ComplianceAlertsDto): Promise<any>;
    getDriverTrips(query: ListTripDto, req: any): Promise<any>;
    getTripById(id: string, req: any): Promise<any>;
    private sendDriverPushNotification;
    setTripAdvance(id: string, setAdvanceDto: SetAdvanceDto, req: any): Promise<import("mongoose").Document<unknown, {}, import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    }, {}> & import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    } & Required<{
        _id: Types.ObjectId;
    }>>;
    acceptAdvance(id: string, dto: any, user: any): Promise<(import("mongoose").Document<unknown, {}, import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    }, {}> & import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    } & Required<{
        _id: Types.ObjectId;
    }>) | {
        status: string;
        type: string;
        message: string;
        data: {
            pending_expenses_count: number;
        };
    }>;
    assignVehicle(id: string, assignVehicleDto: AssignVehicleDto, user: any): Promise<import("mongoose").Document<unknown, {}, import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    }, {}> & import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    } & Required<{
        _id: Types.ObjectId;
    }>>;
    private static readonly LEAVE_CONFLICT_MONTH_ABBR;
    private static readonly IST_OFFSET_MS;
    private static readonly DAY_MS;
    private getIstYmd;
    private formatLeaveConflictDate;
    private getIstDayBounds;
    private assertDriverNotOnLeave;
    assignDriver(id: string, assignDriverDto: AssignDriverDto, user: any): Promise<any>;
    updateTripStatus(id: string, updateDto: UpdateTripStatusDto, user: any): Promise<(import("mongoose").FlattenMaps<import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    }> & Required<{
        _id: Types.ObjectId;
    }>) | null>;
    verifyTripOtp(id: string, otp: string, user: any): Promise<import("mongoose").Document<unknown, {}, import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    }, {}> & import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    } & Required<{
        _id: Types.ObjectId;
    }>>;
    resendTripOtp(id: string, user: any): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    private emitRouteTrackingCompleted;
    private readonly TRIP_PING_LAST_KEY_PREFIX;
    private readonly TRIP_PING_PENDING_KEY_PREFIX;
    private readonly TRIP_PING_PENDING_TRIPS_SET;
    private readonly TRIP_PING_LAST_TTL_SECONDS;
    private getLastKnownRoutePoint;
    private getPendingBufferedPoints;
    private bufferRoutePoint;
    updateLiveLocation(updateLocationDto: UpdateLocationDto, user: any): Promise<{
        live_latitude: number;
        live_longitude: number;
        live_location_updated_at: number;
        _id: Types.ObjectId;
        $assertPopulated: <Paths = {}>(path: string | string[], values?: Partial<Paths> | undefined) => Omit<import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        }, keyof Paths> & Paths;
        $clearModifiedPaths: () => import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
        $clone: () => import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
        $createModifiedPathsSnapshot: () => import("mongoose").ModifiedPathsSnapshot;
        $getAllSubdocs: () => import("mongoose").Document[];
        $ignore: (path: string) => void;
        $isDefault: (path: string) => boolean;
        $isDeleted: (val?: boolean) => boolean;
        $getPopulatedDocs: () => import("mongoose").Document[];
        $inc: (path: string | string[], val?: number) => import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
        $isEmpty: (path: string) => boolean;
        $isValid: (path: string) => boolean;
        $locals: import("mongoose").FlattenMaps<Record<string, unknown>>;
        $markValid: (path: string) => void;
        $model: {
            <ModelType = import("mongoose").Model<unknown, {}, {}, {}, import("mongoose").Document<unknown, {}, unknown, {}> & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            }, any>>(name: string): ModelType;
            <ModelType = import("mongoose").Model<import("./schema/trips.schema").Trips, {}, {}, {}, import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            }, any>>(): ModelType;
        };
        $op: "save" | "validate" | "remove" | null;
        $restoreModifiedPathsSnapshot: (snapshot: import("mongoose").ModifiedPathsSnapshot) => import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
        $session: (session?: import("mongoose").ClientSession | null) => import("mongoose").ClientSession | null;
        $set: {
            (path: string | Record<string, any>, val: any, type: any, options?: import("mongoose").DocumentSetOptions): import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            };
            (path: string | Record<string, any>, val: any, options?: import("mongoose").DocumentSetOptions): import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            };
            (value: string | Record<string, any>): import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            };
        };
        $where: import("mongoose").FlattenMaps<Record<string, unknown>>;
        baseModelName?: string | undefined;
        collection: import("mongoose").Collection;
        db: import("mongoose").FlattenMaps<import("mongoose").Connection>;
        deleteOne: (options?: import("mongoose").QueryOptions) => import("mongoose").Query<import("mongodb").DeleteResult, import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        }, {}, import("./schema/trips.schema").Trips, "deleteOne", Record<string, never>>;
        depopulate: <Paths = {}>(path?: string | string[]) => import("mongoose").MergeType<import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        }, Paths>;
        directModifiedPaths: () => Array<string>;
        equals: (doc: import("mongoose").Document<unknown, any, any, Record<string, any>>) => boolean;
        errors?: import("mongoose").Error.ValidationError | undefined;
        get: {
            <T extends keyof import("./schema/trips.schema").Trips>(path: T, type?: any, options?: any): import("./schema/trips.schema").Trips[T];
            (path: string, type?: any, options?: any): any;
        };
        getChanges: () => import("mongoose").UpdateQuery<import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        }>;
        id?: any;
        increment: () => import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
        init: (obj: import("mongoose").AnyObject, opts?: import("mongoose").AnyObject) => import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
        invalidate: {
            <T extends keyof import("./schema/trips.schema").Trips>(path: T, errorMsg: string | NativeError, value?: any, kind?: string): NativeError | null;
            (path: string, errorMsg: string | NativeError, value?: any, kind?: string): NativeError | null;
        };
        isDirectModified: {
            <T extends keyof import("./schema/trips.schema").Trips>(path: T | T[]): boolean;
            (path: string | Array<string>): boolean;
        };
        isDirectSelected: {
            <T extends keyof import("./schema/trips.schema").Trips>(path: T): boolean;
            (path: string): boolean;
        };
        isInit: {
            <T extends keyof import("./schema/trips.schema").Trips>(path: T): boolean;
            (path: string): boolean;
        };
        isModified: {
            <T extends keyof import("./schema/trips.schema").Trips>(path?: T | T[] | undefined, options?: {
                ignoreAtomics?: boolean;
            } | null): boolean;
            (path?: string | Array<string>, options?: {
                ignoreAtomics?: boolean;
            } | null): boolean;
        };
        isNew: boolean;
        isSelected: {
            <T extends keyof import("./schema/trips.schema").Trips>(path: T): boolean;
            (path: string): boolean;
        };
        markModified: {
            <T extends keyof import("./schema/trips.schema").Trips>(path: T, scope?: any): void;
            (path: string, scope?: any): void;
        };
        model: {
            <ModelType = import("mongoose").Model<unknown, {}, {}, {}, import("mongoose").Document<unknown, {}, unknown, {}> & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            }, any>>(name: string): ModelType;
            <ModelType = import("mongoose").Model<import("./schema/trips.schema").Trips, {}, {}, {}, import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            }, any>>(): ModelType;
        };
        modifiedPaths: (options?: {
            includeChildren?: boolean;
        }) => Array<string>;
        overwrite: (obj: import("mongoose").AnyObject) => import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
        $parent: () => import("mongoose").Document | undefined;
        populate: {
            <Paths = {}>(path: string | import("mongoose").PopulateOptions | (string | import("mongoose").PopulateOptions)[]): Promise<import("mongoose").MergeType<import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            }, Paths>>;
            <Paths = {}>(path: string, select?: string | import("mongoose").AnyObject, model?: import("mongoose").Model<any>, match?: import("mongoose").AnyObject, options?: import("mongoose").PopulateOptions): Promise<import("mongoose").MergeType<import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            }, Paths>>;
        };
        populated: (path: string) => any;
        replaceOne: (replacement?: import("mongoose").AnyObject, options?: import("mongoose").QueryOptions | null) => import("mongoose").Query<any, import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        }, {}, unknown, "find", Record<string, never>>;
        save: (options?: import("mongoose").SaveOptions) => Promise<import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        }>;
        schema: import("mongoose").FlattenMaps<import("mongoose").Schema<any, import("mongoose").Model<any, any, any, any, any, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, {
            [x: string]: unknown;
        }, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<{
            [x: string]: unknown;
        }>, {}> & import("mongoose").FlatRecord<{
            [x: string]: unknown;
        }> & Required<{
            _id: unknown;
        }> & {
            __v: number;
        }>>;
        set: {
            <T extends keyof import("./schema/trips.schema").Trips>(path: T, val: import("./schema/trips.schema").Trips[T], type: any, options?: import("mongoose").DocumentSetOptions): import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            };
            (path: string | Record<string, any>, val: any, type: any, options?: import("mongoose").DocumentSetOptions): import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            };
            (path: string | Record<string, any>, val: any, options?: import("mongoose").DocumentSetOptions): import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            };
            (value: string | Record<string, any>): import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            };
        };
        toJSON: {
            (options: import("mongoose").ToObjectOptions & {
                virtuals: true;
            }): import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            };
            (options?: import("mongoose").ToObjectOptions & {
                flattenMaps?: true;
                flattenObjectIds?: false;
            }): import("mongoose").FlattenMaps<import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            }>;
            (options: import("mongoose").ToObjectOptions & {
                flattenObjectIds: false;
            }): import("mongoose").FlattenMaps<import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            }>;
            (options: import("mongoose").ToObjectOptions & {
                flattenObjectIds: true;
            }): {
                trip_id: string;
                customer_id: string;
                payment_terms: import("./schema/trips.schema").PaymentTerms;
                total_invoice_amount: number;
                outstanding_balance: number;
                outstanding_income: number;
                outstanding_gst: number;
                business_id: string;
                customer_name: string;
                customer_country_code: string;
                customer_phone: string;
                sender_id: string;
                freight_payer: string;
                sender_name: string;
                sender_country_code: string;
                sender_phone_no: string;
                biller_id: string;
                biller_name: string;
                biller_country_code: string;
                biller_phone: string;
                biller_gst_number: string;
                trip_source: string;
                broker_id: string;
                gross_trip_amount: number;
                commission_type: string;
                commission_value: number;
                commission_amount: number;
                vehicle_source: string;
                hired_vehicle_id: {
                    _id: string;
                    transporter_name: string;
                    country_code: string;
                    phone_number: string;
                    truck_number: string;
                };
                hired_vehicle_amount: number;
                pickup_location: string;
                pickup_address: string;
                pickup_latitude: number;
                pickup_longitude: number;
                delivery_location: string;
                destination_city: string;
                delivery_address: string;
                delivery_latitude: number;
                delivery_longitude: number;
                pickup_property_number: string;
                dropoff_property_number: string;
                description: string;
                hsn_code: string;
                material_type: string;
                eway_bill_number: string;
                quantity: number;
                vehicle_type: string;
                freight_amount: number;
                distance: number;
                trip_start_date: number;
                delivery_estimate_date: number;
                status: TripStatus;
                vehicle_id: {
                    _id: string;
                    registration_number: string;
                    model: string;
                    make_brand: string;
                };
                driver_id: {
                    _id: string;
                    name: string;
                    phone_no: string;
                    country_code: string;
                    profile_pic: string;
                    payment_structure?: string | undefined;
                };
                pod_url: string;
                pdf_url: string;
                loaded_invoice_url: string;
                route_map_snapshot_url: string;
                trip_otp: string;
                trip_otp_verified: boolean;
                live_location: {
                    type: string;
                    coordinates: number[];
                };
                live_location_updated_at: number;
                live_latitude: number;
                live_longitude: number;
                route_path: {
                    latitude: number;
                    longitude: number;
                    timestamp: number;
                }[];
                created_by: {
                    _id: string;
                    name: string;
                    user_type: string;
                    profile_pic: string;
                    email: string;
                    phone_no: string;
                };
                trip_advanced_to_driver: number;
                route_advance: number;
                per_km_earning: number;
                net_payable_to_reserve: number;
                is_reserve_credited: boolean;
                is_reserve_jama_credited: boolean;
                total_approved_expense: number;
                total_pending_expense: number;
                total_rejected_expense: number;
                net_profit: number;
                advance_remaining: number;
                driver_incentive: number;
                is_deleted: boolean;
                is_demo: boolean;
                is_gst: boolean;
                gst_amount: number;
                created_at: number;
                completed_at: number;
                started_at: number;
                updated_at: number;
                expenses: string[];
                admin_expense: number;
                accept_advance: boolean;
                cancel_reason: string;
                sender_gst_number: string;
                receiver_gst_number: string;
                refunded_amount: number;
                _id: string;
                __v: number;
            };
            (options: import("mongoose").ToObjectOptions & {
                flattenMaps: false;
            }): import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            };
            (options: import("mongoose").ToObjectOptions & {
                flattenMaps: false;
                flattenObjectIds: true;
            }): {
                trip_id: string;
                customer_id: string;
                payment_terms: import("./schema/trips.schema").PaymentTerms;
                total_invoice_amount: number;
                outstanding_balance: number;
                outstanding_income: number;
                outstanding_gst: number;
                business_id: string;
                customer_name: string;
                customer_country_code: string;
                customer_phone: string;
                sender_id: string;
                freight_payer: string;
                sender_name: string;
                sender_country_code: string;
                sender_phone_no: string;
                biller_id: string;
                biller_name: string;
                biller_country_code: string;
                biller_phone: string;
                biller_gst_number: string;
                trip_source: string;
                broker_id: string;
                gross_trip_amount: number;
                commission_type: string;
                commission_value: number;
                commission_amount: number;
                vehicle_source: string;
                hired_vehicle_id: {
                    _id: string;
                    transporter_name: string;
                    country_code: string;
                    phone_number: string;
                    truck_number: string;
                };
                hired_vehicle_amount: number;
                pickup_location: string;
                pickup_address: string;
                pickup_latitude: number;
                pickup_longitude: number;
                delivery_location: string;
                destination_city: string;
                delivery_address: string;
                delivery_latitude: number;
                delivery_longitude: number;
                pickup_property_number: string;
                dropoff_property_number: string;
                description: string;
                hsn_code: string;
                material_type: string;
                eway_bill_number: string;
                quantity: number;
                vehicle_type: string;
                freight_amount: number;
                distance: number;
                trip_start_date: number;
                delivery_estimate_date: number;
                status: TripStatus;
                vehicle_id: {
                    _id: string;
                    registration_number: string;
                    model: string;
                    make_brand: string;
                };
                driver_id: {
                    _id: string;
                    name: string;
                    phone_no: string;
                    country_code: string;
                    profile_pic: string;
                    payment_structure?: string | undefined;
                };
                pod_url: string;
                pdf_url: string;
                loaded_invoice_url: string;
                route_map_snapshot_url: string;
                trip_otp: string;
                trip_otp_verified: boolean;
                live_location: {
                    type: string;
                    coordinates: number[];
                };
                live_location_updated_at: number;
                live_latitude: number;
                live_longitude: number;
                route_path: {
                    latitude: number;
                    longitude: number;
                    timestamp: number;
                }[];
                created_by: {
                    _id: string;
                    name: string;
                    user_type: string;
                    profile_pic: string;
                    email: string;
                    phone_no: string;
                };
                trip_advanced_to_driver: number;
                route_advance: number;
                per_km_earning: number;
                net_payable_to_reserve: number;
                is_reserve_credited: boolean;
                is_reserve_jama_credited: boolean;
                total_approved_expense: number;
                total_pending_expense: number;
                total_rejected_expense: number;
                net_profit: number;
                advance_remaining: number;
                driver_incentive: number;
                is_deleted: boolean;
                is_demo: boolean;
                is_gst: boolean;
                gst_amount: number;
                created_at: number;
                completed_at: number;
                started_at: number;
                updated_at: number;
                expenses: string[];
                admin_expense: number;
                accept_advance: boolean;
                cancel_reason: string;
                sender_gst_number: string;
                receiver_gst_number: string;
                refunded_amount: number;
                _id: string;
                __v: number;
            };
            <T = import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            }>(options?: import("mongoose").ToObjectOptions & {
                flattenMaps?: true;
                flattenObjectIds?: false;
            }): import("mongoose").FlattenMaps<T>;
            <T = import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            }>(options: import("mongoose").ToObjectOptions & {
                flattenObjectIds: false;
            }): import("mongoose").FlattenMaps<T>;
            <T = import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            }>(options: import("mongoose").ToObjectOptions & {
                flattenObjectIds: true;
            }): import("mongoose").ObjectIdToString<import("mongoose").FlattenMaps<T>>;
            <T = import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            }>(options: import("mongoose").ToObjectOptions & {
                flattenMaps: false;
            }): T;
            <T = import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            }>(options: import("mongoose").ToObjectOptions & {
                flattenMaps: false;
                flattenObjectIds: true;
            }): import("mongoose").ObjectIdToString<T>;
        };
        toObject: {
            (options: import("mongoose").ToObjectOptions & {
                virtuals: true;
            }): import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            };
            (options?: import("mongoose").ToObjectOptions): import("./schema/trips.schema").Trips & {
                _id: Types.ObjectId;
            } & {
                __v: number;
            };
            <T>(options?: import("mongoose").ToObjectOptions): import("mongoose").Default__v<import("mongoose").Require_id<T>>;
        };
        unmarkModified: {
            <T extends keyof import("./schema/trips.schema").Trips>(path: T): void;
            (path: string): void;
        };
        updateOne: (update?: import("mongoose").UpdateWithAggregationPipeline | import("mongoose").UpdateQuery<import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        }> | undefined, options?: import("mongoose").QueryOptions | null) => import("mongoose").Query<any, import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        }, {}, unknown, "find", Record<string, never>>;
        validate: {
            <T extends keyof import("./schema/trips.schema").Trips>(pathsToValidate?: T | T[] | undefined, options?: import("mongoose").AnyObject): Promise<void>;
            (pathsToValidate?: import("mongoose").pathsToValidate, options?: import("mongoose").AnyObject): Promise<void>;
            (options: {
                pathsToSkip?: import("mongoose").pathsToSkip;
            }): Promise<void>;
        };
        validateSync: {
            (options: {
                pathsToSkip?: import("mongoose").pathsToSkip;
                [k: string]: any;
            }): import("mongoose").Error.ValidationError | null;
            <T extends keyof import("./schema/trips.schema").Trips>(pathsToValidate?: T | T[] | undefined, options?: import("mongoose").AnyObject): import("mongoose").Error.ValidationError | null;
            (pathsToValidate?: import("mongoose").pathsToValidate, options?: import("mongoose").AnyObject): import("mongoose").Error.ValidationError | null;
        };
        trip_id: string;
        customer_id: Types.ObjectId;
        payment_terms: import("./schema/trips.schema").PaymentTerms;
        total_invoice_amount: number;
        outstanding_balance: number;
        outstanding_income: number;
        outstanding_gst: number;
        business_id: Types.ObjectId;
        customer_name: string;
        customer_country_code: string;
        customer_phone: string;
        sender_id: Types.ObjectId;
        freight_payer: string;
        sender_name: string;
        sender_country_code: string;
        sender_phone_no: string;
        biller_id: Types.ObjectId;
        biller_name: string;
        biller_country_code: string;
        biller_phone: string;
        biller_gst_number: string;
        trip_source: string;
        broker_id: Types.ObjectId;
        gross_trip_amount: number;
        commission_type: string;
        commission_value: number;
        commission_amount: number;
        vehicle_source: string;
        hired_vehicle_id: import("mongoose").FlattenMaps<{
            _id: Types.ObjectId | string;
            transporter_name: string;
            country_code: string;
            phone_number: string;
            truck_number: string;
        }>;
        hired_vehicle_amount: number;
        pickup_location: string;
        pickup_address: string;
        pickup_latitude: number;
        pickup_longitude: number;
        delivery_location: string;
        destination_city: string;
        delivery_address: string;
        delivery_latitude: number;
        delivery_longitude: number;
        pickup_property_number: string;
        dropoff_property_number: string;
        description: string;
        hsn_code: string;
        material_type: string;
        eway_bill_number: string;
        quantity: number;
        vehicle_type: string;
        freight_amount: number;
        distance: number;
        trip_start_date: number;
        delivery_estimate_date: number;
        status: TripStatus;
        vehicle_id: import("mongoose").FlattenMaps<{
            _id: Types.ObjectId | string;
            registration_number: string;
            model: string;
            make_brand: string;
        }>;
        driver_id: import("mongoose").FlattenMaps<{
            _id: Types.ObjectId | string;
            name: string;
            phone_no: string;
            country_code: string;
            profile_pic: string;
            payment_structure?: string;
        }>;
        pod_url: string;
        pdf_url: string;
        loaded_invoice_url: string;
        route_map_snapshot_url: string;
        trip_otp: string;
        trip_otp_verified: boolean;
        live_location: import("mongoose").FlattenMaps<{
            type: string;
            coordinates: number[];
        }>;
        route_path: import("mongoose").FlattenMaps<{
            latitude: number;
            longitude: number;
            timestamp: number;
        }>[];
        created_by: import("mongoose").FlattenMaps<{
            _id: Types.ObjectId;
            name: string;
            user_type: string;
            profile_pic: string;
            email: string;
            phone_no: string;
        }>;
        trip_advanced_to_driver: number;
        route_advance: number;
        per_km_earning: number;
        net_payable_to_reserve: number;
        is_reserve_credited: boolean;
        is_reserve_jama_credited: boolean;
        total_approved_expense: number;
        total_pending_expense: number;
        total_rejected_expense: number;
        net_profit: number;
        advance_remaining: number;
        driver_incentive: number;
        is_deleted: boolean;
        is_demo: boolean;
        is_gst: boolean;
        gst_amount: number;
        created_at: number;
        completed_at: number;
        started_at: number;
        updated_at: number;
        expenses: Types.ObjectId[];
        admin_expense: number;
        accept_advance: boolean;
        cancel_reason: string;
        sender_gst_number: string;
        receiver_gst_number: string;
        refunded_amount: number;
        __v: number;
    }>;
    cancelTrip(id: string, dto: CancelTripDto, user: any): Promise<import("mongoose").Document<unknown, {}, import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    }, {}> & import("mongoose").Document<unknown, {}, import("./schema/trips.schema").Trips, {}> & import("./schema/trips.schema").Trips & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    } & Required<{
        _id: Types.ObjectId;
    }>>;
    deleteTrip(id: string, user: any): Promise<{
        message: string;
    }>;
    refundAdvance(tripId: string, body: any, user: any): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    private calculateDistanceInKm;
    private getTripDistanceInKm;
    private handlePerKmReserveOnTripCompletion;
    generateTripReceiptPdf(id: string, req: any, res: Response): Promise<void>;
}
