import { CommonService } from 'src/common/common.service';
import { DbService } from 'src/db/db.service';
import { BookingListDto, BookingStatusDto, slotBookingDto, slotListDto } from './dto/slot.dto';
import mongoose, { Types } from 'mongoose';
import { RazorpayService } from 'src/common/helpers/razorpay-helper.service';
import { PaymentService } from 'src/payment/payment.service';
import { PaytabService } from 'src/common/helpers/paytab-helper.service';
import { CashfreeService } from 'src/common/helpers/cashfree-helper.service';
import { Connection } from 'mongoose';
export declare class SlotService {
    private readonly connection;
    private readonly model;
    private readonly commonService;
    private readonly RazorpayService;
    private readonly paymentService;
    private readonly PaytabService;
    private readonly cashfreeService;
    constructor(connection: Connection, model: DbService, commonService: CommonService, RazorpayService: RazorpayService, paymentService: PaymentService, PaytabService: PaytabService, cashfreeService: CashfreeService);
    generateTimeSlots(restaurant: any, today: any, start: string, end: string): any[];
    createSlot(restaurant?: any): Promise<void>;
    createSlotByCron(): Promise<void>;
    slotList(id: string, dto: slotListDto): Promise<{
        total: number;
        data: (mongoose.Document<unknown, {}, import("./schema/slot.schema").Slot, {}, {}> & import("./schema/slot.schema").Slot & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
    }>;
    booking(req: any, dto: slotBookingDto): Promise<{
        client_secret: string;
        data: any;
        booking_amount: number;
        ephemeralKey: string;
        customer: string;
        razorpay?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
        status?: undefined;
        message?: undefined;
    } | {
        razorpay: {
            amount: any;
            currency: any;
            id: any;
            order_id: any;
            slot_id: any;
            plate_id: any;
        };
        booking_amount: number;
        client_secret?: undefined;
        data?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
        status?: undefined;
        message?: undefined;
    } | {
        cashfree: {
            id: any;
            order_meta: any;
            payment_session_id: any;
        };
        amount: number;
        client_secret?: undefined;
        data?: undefined;
        booking_amount?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        paytab?: undefined;
        status?: undefined;
        message?: undefined;
    } | {
        paytab: {
            redirect_url: any;
        };
        amount: number;
        client_secret?: undefined;
        data?: undefined;
        booking_amount?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
        status?: undefined;
        message?: undefined;
    } | {
        status: string;
        message: string;
        client_secret?: undefined;
        data?: undefined;
        booking_amount?: undefined;
        ephemeralKey?: undefined;
        customer?: undefined;
        razorpay?: undefined;
        cashfree?: undefined;
        amount?: undefined;
        paytab?: undefined;
    }>;
    bookingList(req: any, dto: BookingListDto): Promise<{
        total: number;
        data: any[];
        paid_count: number;
        arrived_count: number;
        cancelled_count: number;
        refunded_count: number;
    }>;
    bookingStatus(req: any, dto: BookingStatusDto): Promise<{
        data: mongoose.Document<unknown, {}, import("./schema/customer-slot.schema").CustomerSlot, {}, {}> & import("./schema/customer-slot.schema").CustomerSlot & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        };
    }>;
    bookingDetails(req: any, id: string): Promise<{
        data: any;
    }>;
}
