import { DbService } from 'src/db/db.service';
import { AdminUpdateDriverDto, SignInDto } from './dto/admin.dto';
import * as dto from './dto/admin.dto';
import { JwtService } from '@nestjs/jwt';
import { AdminAggregation } from './admin.aggregation';
import { MessageKey } from 'src/common/helpers/message-keys.enum';
import { CommonService } from 'src/common/common.service';
import { PaymentService } from 'src/payment/payment.service';
import * as momentTz from 'moment-timezone';
import { EditvehicleDetailDto, vehicleDetailDto } from 'src/fleet/dto/fleet.dto';
import { VehicleDetailsOwner } from 'src/driver/schema/vehicle-detail.schema';
import mongoose, { Types } from 'mongoose';
import { PaginationDto } from 'src/fleet-pass/dto/create-payout-subscription.dto';
import { PayoutType } from 'src/configuration/schema/app-configuration.schema';
import { AuthService } from 'src/auth/auth.service';
import { AdminDocment, AdminPanelPages, AdminStatus } from './schema/admin.schema';
import { CreateSubAdminDto } from './dto/create-staff.dto';
import { UpdateSubAdminDto } from './dto/update-sub-admin.dto';
import { StaffListDto } from './dto/staff-listing.dto';
import { DecryptDataDto } from './dto/decrypt-data.dto';
import { DriverVerificationStatus } from 'src/driver/schema/driver.schema';
export declare class AdminService {
    private readonly model;
    private readonly jwtService;
    private readonly adminAggregation;
    private readonly commonService;
    private readonly paymentService;
    private readonly authService;
    constructor(model: DbService, jwtService: JwtService, adminAggregation: AdminAggregation, commonService: CommonService, paymentService: PaymentService, authService: AuthService);
    bootstrap_for_admin(): Promise<void>;
    login(signInDto: SignInDto): Promise<{
        token: String;
        data: {
            currency: string;
            currency_symbol: string;
            distance_unit: string;
            type: string;
            name: string;
            email: string;
            password: string;
            decrypt_password: string;
            image: string;
            total_tax_pay: number;
            roles: string[];
            modules: AdminPanelPages[];
            is_active: boolean;
            superAdmin: boolean;
            subAdmin: boolean;
            country_code: string;
            phone: string;
            phone_no: string;
            status: AdminStatus;
            timeZone: string;
            is_deleted: boolean;
            created_at: number;
            updated_at: number;
            deleted_at: number;
            _id: Types.ObjectId;
            __v: number;
        };
    }>;
    get_admin_profile(payload: any): Promise<{
        data: AdminDocment;
    }>;
    addVehicle(body: vehicleDetailDto): Promise<{
        message: MessageKey;
    }>;
    editVehicle(body: EditvehicleDetailDto): Promise<{
        message: MessageKey;
        data: mongoose.Document<unknown, {}, import("src/driver/schema/vehicle-detail.schema").Vehicle_details, {}, {}> & import("src/driver/schema/vehicle-detail.schema").Vehicle_details & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    getAllVehicles(dto: PaginationDto): Promise<{
        message: MessageKey;
        data: (mongoose.FlattenMaps<{
            driver_id: string;
            owner: VehicleDetailsOwner;
            fleet_id: string;
            vehicle_id: string;
            vehicle_manufacture_id: string;
            images: string[];
            vehicle_body_type: string;
            gear_type: string;
            fuel_type: string;
            per_day_price: number;
            allow_self_drive: boolean;
            ac_availability: import("src/driver/schema/vehicle-detail.schema").AcAvailability;
            delivery_charges: number;
            name: string;
            model: string;
            number: string;
            color: string;
            vin: string;
            child_seat_availabilty: boolean;
            wheel_chair_availabilty: boolean;
            vehicle_registration_image: string;
            vehicle_insurance_image: string;
            vehicle_usage: string[];
            insurance_expiry_date: number;
            registration_expiry_date: number;
            status: string;
            approved_on: number;
            rejection_reason: string;
            created_at: number;
            updated_at: number;
        }> & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
        count: number;
    }>;
    getVehicleDetail(vehicleId: string): Promise<{
        message: MessageKey;
        data: mongoose.FlattenMaps<{
            driver_id: string;
            owner: VehicleDetailsOwner;
            fleet_id: string;
            vehicle_id: string;
            vehicle_manufacture_id: string;
            images: string[];
            vehicle_body_type: string;
            gear_type: string;
            fuel_type: string;
            per_day_price: number;
            allow_self_drive: boolean;
            ac_availability: import("src/driver/schema/vehicle-detail.schema").AcAvailability;
            delivery_charges: number;
            name: string;
            model: string;
            number: string;
            color: string;
            vin: string;
            child_seat_availabilty: boolean;
            wheel_chair_availabilty: boolean;
            vehicle_registration_image: string;
            vehicle_insurance_image: string;
            vehicle_usage: string[];
            insurance_expiry_date: number;
            registration_expiry_date: number;
            status: string;
            approved_on: number;
            rejection_reason: string;
            created_at: number;
            updated_at: number;
        }> & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    assignVehicleToDriver(body: any): Promise<{
        message: MessageKey;
        data: mongoose.Document<unknown, {}, import("src/vehicle/schema/vehicle-assignment.schema").VehicleAssignment, {}, {}> & import("src/vehicle/schema/vehicle-assignment.schema").VehicleAssignment & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    updateVehicleAssignment(body: any, assignmentId: string): Promise<{
        message: MessageKey;
        data: mongoose.Document<unknown, {}, import("src/vehicle/schema/vehicle-assignment.schema").VehicleAssignment, {}, {}> & import("src/vehicle/schema/vehicle-assignment.schema").VehicleAssignment & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    getAssignedDriversForVehicle(vehicleId: string): Promise<{
        message: MessageKey;
        data: (mongoose.FlattenMaps<{
            vehicle_detail_id: string;
            driver_id: string;
            owner: string;
            owner_id: string;
            weekdays: {
                day: string;
                time_slots: {
                    start_time: string;
                    end_time: string;
                }[];
            }[];
            start_time: string;
            end_time: string;
            start_date_time: string;
            end_date_time: string;
            isActive: boolean;
            isDeleted: boolean;
            assignment_type: import("src/vehicle/schema/vehicle-assignment.schema").VehicleAssignmentType;
            created_at: number;
            updated_at: number;
        }> & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
    }>;
    unAssignVehicleFromDriver(assignmentId: string): Promise<{
        message: MessageKey;
        data: mongoose.FlattenMaps<{
            vehicle_detail_id: string;
            driver_id: string;
            owner: string;
            owner_id: string;
            weekdays: {
                day: string;
                time_slots: {
                    start_time: string;
                    end_time: string;
                }[];
            }[];
            start_time: string;
            end_time: string;
            start_date_time: string;
            end_date_time: string;
            isActive: boolean;
            isDeleted: boolean;
            assignment_type: import("src/vehicle/schema/vehicle-assignment.schema").VehicleAssignmentType;
            created_at: number;
            updated_at: number;
        }> & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    sent_notification(body: any): Promise<void>;
    sent_email(data: any, title: any, description: any): Promise<void>;
    sent_push(data: any, title: any, description: any): Promise<void>;
    dashboard_count(start_date?: string | number, end_date?: string | number): Promise<{
        OverallBooking: any;
        TodayBooking: any;
        MonthlyBooking: any;
        WeeklyBooking: any;
        rangeBooking: any;
        OverallCustomer: any;
        TodayCustomer: any;
        WeeklyCustomer: any;
        MonthlyCustomer: any;
        Overalldriver: any;
        Idledriver: any;
        OnRidedriver: any;
        Offlinedriver: any;
        driverRequestOverall: any;
        driverRequestMontly: any;
        driverRequestWeekly: any;
        docsUpdateRequest: any;
        TodaydocsUpdateRequest: any;
        WeekdocsUpdateRequest: any;
        MontlydocsUpdateRequest: any;
        driverRequestToday: any;
        FleetRequest: any;
        FleetActive: any;
        FleetOverall: any;
        overallEarning: number;
        todayEarning: number;
        weeklyEarning: number;
        monthlyEarning: number;
        rangeEarning: number;
        Pendingcomplaints: any;
        repliedcomplaints: any;
        due_to_app_month: number;
        due_to_app_week: number;
        due_to_app_year: number;
        overall_payout_due: number;
        montly_tax: number;
        year_tax: number;
        overall_tax: number;
        VehicleRequest: any;
    }>;
    AdminChangePassword(body: any, id: string): Promise<{
        message: MessageKey;
    }>;
    AdminPayout(page: any, limit: any, timezone: any): Promise<{
        total_due_to_app: number;
        total_due_to_driver: number;
        total_tax_to_be_paid: number;
        total_balance_in_stripe: number;
        week_data: any[];
        meta: {};
    }>;
    UpdateTax(body: any, admin_id: any, timeZone?: string): Promise<{
        message: MessageKey;
    }>;
    TaxTransactionHistory(page: any, limit: any): Promise<{
        data: (mongoose.Document<unknown, {}, import("./schema/tax.schema").Tax, {}, {}> & import("./schema/tax.schema").Tax & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
        count: number;
    }>;
    TaxTransactionExport(start_date?: string, end_date?: string): Promise<{
        data: (mongoose.Document<unknown, {}, import("./schema/tax.schema").Tax, {}, {}> & import("./schema/tax.schema").Tax & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
    }>;
    total_tax_amount(): Promise<{
        total_tax_collected: number;
        total_tax_paid: number;
        total_tax_to_be_paid: number;
    }>;
    PayToAppList(page?: number, limit?: number): Promise<{
        count: number;
        data: any[];
    }>;
    AdminPayoutExport(body: any): Promise<{
        week_data: any[];
    }>;
    adminUpdateDriver(driverId: string, body: AdminUpdateDriverDto): Promise<{
        message: string;
    }>;
    adminSetVehicleDetails(driverId: string, body: vehicleDetailDto, req: any): Promise<{
        message: MessageKey;
    }>;
    getDashboardCounts(): Promise<{
        users: {
            total_customers: number;
            blocked_customers: number;
            pending_customers: number;
            total_drivers: number;
            pending_driver_requests: number;
            blocked_drivers: number;
        };
        orders: {
            active_bookings: number;
            completed_bookings: number;
            cancelled_bookings: number;
            total_bookings: number;
            total_coupons: number;
        };
        earnings: {
            year_earnings: number;
        };
        setting: {
            total_service_areas: number;
            total_document_types: number;
        };
        management: {
            total_complaints: number;
            contact_us_count: number;
            contact_pending: number;
            contact_replied: number;
            total_faqs: number;
            total_pages: number;
        };
    }>;
    userReferralPath(user_id: string, query: any): Promise<{
        data: (mongoose.Document<unknown, {}, import("../customer/schema/customer.schema").Customers, {}, {}> & import("../customer/schema/customer.schema").Customers & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
        total: number;
        currentPage: number;
        totalPages: number;
    }>;
    createSubAdmin(dto: CreateSubAdminDto): Promise<mongoose.Document<unknown, {}, import("./schema/admin.schema").Admin, {}, {}> & import("./schema/admin.schema").Admin & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    }>;
    updateSubAdmin(id: string, dto: UpdateSubAdminDto): Promise<{
        message: string;
    }>;
    deleteSubAdmin(id: string): Promise<{
        message: string;
    }>;
    getStaffList(query: StaffListDto): Promise<{
        currentPage: number;
        totalPages: number;
        totalItems: number;
        staffs: (mongoose.Document<unknown, {}, import("./schema/admin.schema").Admin, {}, {}> & import("./schema/admin.schema").Admin & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
    }>;
    getStaffDetail(id: string): Promise<mongoose.Document<unknown, {}, import("./schema/admin.schema").Admin, {}, {}> & import("./schema/admin.schema").Admin & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    }>;
    blockUnblockStaff(id: string, status: boolean): Promise<{
        message: string;
    }>;
    rolesList(): Promise<{
        data: typeof AdminPanelPages;
    }>;
    topUsers(req: any, dto: dto.TopUsersDto): Promise<{
        data: any[];
        total_drivers: number;
        total_restaurants: number;
        total_customers: number;
        total_all: number;
    }>;
    decryptData(body: DecryptDataDto, payload: any, req: any): Promise<any>;
    add_restro_quick_picks: (req: any, body: dto.pick_restro) => Promise<{
        data: any[];
        message: string;
    } | {
        data: mongoose.UpdateWriteOpResult;
        message?: undefined;
    }>;
    cloudNotification(dto: dto.CloudNotificationListDto): Promise<{
        total: number;
        data: (mongoose.Document<unknown, {}, import("../notification/entities/cloud-notification.schema").CloudNotification, {}, {}> & import("../notification/entities/cloud-notification.schema").CloudNotification & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
    }>;
    get_quick_picks_admin: (req: any, body: dto.pick_restro_list) => Promise<{
        data: (mongoose.Document<unknown, {}, import("src/restaurant/schema/restaurant.schema").Restaurant, {}, {}> & import("src/restaurant/schema/restaurant.schema").Restaurant & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
        count: number;
        totalPages: number;
        currentPage: number;
    }>;
    remove_quick_picks_admin: (restaurant_id: string) => Promise<mongoose.UpdateWriteOpResult>;
    vendorFinancialReport(req: any, page?: number, limit?: number): Promise<{
        data: any;
        total_count: any;
        currentPage: number;
        totalPages: number;
    } | {
        data: any[];
        total_count: number;
        currentPage?: undefined;
        totalPages?: undefined;
    }>;
    driverFinancialReport(req: any, page?: number, limit?: number): Promise<{
        data: any;
        total_count: any;
        currentPage: number;
        totalPages: number;
    } | {
        data: any[];
        total_count: number;
        currentPage?: undefined;
        totalPages?: undefined;
    }>;
    totalRevenue(filterType?: string, customStartDate?: string, customEndDate?: string): Promise<{
        total_revenue: number;
        total_vendors: number;
        total_drivers: number;
        total_vendor_earning: number;
        total_driver_earning: number;
        admin_commission: {
            from_restaurant: number;
            from_driver: number;
            platform_fees: number;
            total: number;
        };
        payout_due: {
            vendor_payout_due: number;
            driver_payout_due: number;
            total: number;
        };
        cash_due: {
            driver_cash_due: number;
            total: number;
        };
    }>;
    getAnalyticsTimeframe(filter: string): Promise<{
        startDate: number;
        endDate: number;
        referenceTime: momentTz.Moment;
    }>;
    getAnalyticsOrders(filter: string): Promise<any>;
    revenueAnalytics(filter?: string): Promise<{
        name: string;
        revenue: number;
        commission: number;
        payouts: number;
    }[]>;
    revenueAnalyticsSummaryAdmin(filterType?: string, customStartDate?: string, customEndDate?: string): Promise<{
        admin_commission: {
            restaurant_commission: number;
            driver_commission: number;
            total_platform_fee: number;
            total_admin_commission: number;
        };
        total_revenue: number;
        total_delivery_charges: number;
        total_tax_collected: number;
        total_discounts: number;
        refunds: number;
        average_order_value: number;
        revenue_growth: string;
        period: string;
    }>;
    orderAnalytics(filter?: string): Promise<{
        name: string;
        total: number;
        completed: number;
        cancelled: number;
    }[]>;
    vendorPerformanceLeaderboard(filter?: string, page?: number, limit?: number): Promise<{
        data: {
            name: string;
            rating: number;
            completion_rate: string;
            avg_prep_time: string;
            active_deliveries: any;
        }[];
        total_count: number;
        currentPage: number;
        totalPages: number;
    }>;
    driverPerformanceLeaderboard(filter?: string, page?: number, limit?: number): Promise<{
        data: {
            driver: string;
            rating: any;
            avg_delivery_time: string;
            acceptance_rate: string;
            active_deliveries: any;
        }[];
        total_count: number;
        currentPage: number;
        totalPages: number;
    }>;
    financialDashboardSummary(req: any): Promise<{
        total_revenue: number;
        total_drivers: number;
        vendor_reports: any;
        driver_reports: any;
    }>;
    getDashboardCountsOptimized(): Promise<{
        main_menu: {
            total_top_users: number;
            total_categories: number;
            total_document: number;
            total_cuisine: number;
            total_restaurant_banners: number;
        };
        users: {
            total_customers: any;
            pending_customers: any;
            all_restaurant: any;
            total_categories: number;
            total_restaurant_requests: any;
            total_restaurant_docs_requests: any;
            total_pending_restaurants: any;
            total_drivers: any;
            total_driver_requests: any;
            total_driver_docs_requests: any;
            pending_customers_list: any;
            pending_drivers_list: any;
            total_driver_incentives: number;
            total_driver_incentives_user: number;
            total_customer_queries: number;
        };
        orders: {
            delivery_orders: any;
            total_coupons: number;
            table_order: any;
            dineout_bookings: number;
            auto_renew: number;
            catering_order: number;
            total_driver_product: number;
            total_driver_orders: number;
            total_dineout_services: number;
        };
        earnings: {
            totalEarningCount: number;
            total_payouts_count: any;
            total_payout_requests: number;
        };
        setting: {
            service_location_count: number;
            issue_type_count: number;
            content_pages_count: number;
            faq_count: number;
        };
        management: {
            total_complaints_count: number;
            contact_us_count: number;
            total_extra_chages: number;
        };
    }>;
    getVendorLinkedDrivers(targetId: string): Promise<{
        success: boolean;
        data: (mongoose.FlattenMaps<{
            referral_id: string;
            is_verfication_submitted: boolean;
            verification: DriverVerificationStatus;
            doc_update_verification: DriverVerificationStatus;
            visa_doc: string;
            name: string;
            email: string;
            driver_service_type: import("src/driver/schema/driver.schema").ServiceType;
            deactivate_at: number;
            service_type: string;
            gender: import("src/driver/schema/driver.schema").Gender;
            country_code: string;
            rzr_contact_id: string;
            beneId: string;
            commission: number;
            ulternate_vehicle_types: string[];
            service_prefrence: string[];
            vehicle_type_id: string;
            phone: string;
            license_number: string;
            image: string;
            latitude: string;
            longitude: string;
            temp_email: string;
            temp_phone: string;
            temp_country_code: string;
            fleet_id: string;
            temp_email_otp: number;
            temp_phone_otp: number;
            temp_email_otp_at: number;
            temp_phone_otp_at: number;
            is_bank_added: boolean;
            stripe_customer_id: string;
            is_active: boolean;
            is_block: boolean;
            is_approved: boolean;
            is_doc_update: boolean;
            approved_on: number;
            reject_on: number;
            referral_code: string;
            referral_amount: number;
            applied_referral_code: string;
            missing_documents: Types.ObjectId[];
            applied_referral_code_consumed: boolean;
            reject_reason: string;
            phase_start_at: number;
            total_online_time: number;
            total_on_pickup_time: number;
            total_on_ride_time: number;
            last_phase_start_at: number;
            is_email_verify: boolean;
            is_phone_verify: boolean;
            status: string;
            ride_status: string;
            device_type: string;
            preferred_language: string;
            preferred_currency: string;
            currency_symbol: string;
            pending_submit_cash: number;
            pending_submit_cash_upated_at: number;
            customer_id: string;
            current_booking: string;
            current_pool: string;
            upcoming_booking: string;
            ratings: number;
            socket_id: string;
            connection_id: string;
            currently_send_ride_request: boolean;
            way_points: {
                lat: number;
                lng: number;
            }[];
            currently_send_ride_request_id: string;
            currently_send_ride_request_generate_at: number;
            heading: string;
            set_up_profile: boolean;
            set_up_vehicle: boolean;
            set_up_documents: boolean;
            block_reason: string;
            doc_expiry_type: string[];
            volunteer_ride_count: number;
            level: string;
            documents: {
                type_id: string;
                front_image_id: string;
                back_image_id: string;
                expire_date: number;
                is_expired: boolean;
            }[];
            is_deleted: boolean;
            is_document_missing: boolean;
            timeZone: string;
            created_at: number;
            updated_at: number;
            payout_mode: PayoutType;
            selected_payout_mode: PayoutType;
            location: {
                type: string;
                coordinates: number[];
            };
        }> & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
    }>;
}
