import { SubscritpionService } from './subscritpion.service';
import { PlanCreateDto, PlanListDto, PlanUpdateDto } from './dto/plan.dto';
import { PurchaseSubscriptionDto } from './dto/subscription.dto';
import { RequestDto } from 'src/user/dto/user.dto';
export declare class SubscritpionController {
    private readonly subscritpionService;
    constructor(subscritpionService: SubscritpionService);
    create(req: any, dto: PlanCreateDto): Promise<{
        data: import("mongoose").Document<unknown, {}, import("mongoose").Document<unknown, {}, import("./schema/plan.schema").Plans, {}> & import("./schema/plan.schema").Plans & {
            _id: import("mongoose").Types.ObjectId;
        } & {
            __v: number;
        }, {}> & import("mongoose").Document<unknown, {}, import("./schema/plan.schema").Plans, {}> & import("./schema/plan.schema").Plans & {
            _id: import("mongoose").Types.ObjectId;
        } & {
            __v: number;
        } & Required<{
            _id: import("mongoose").Types.ObjectId;
        }>;
        message: string;
    }>;
    getPlansData(req: any): Promise<{
        data: any;
    }>;
    findOne(req: any, id: string): Promise<{
        data: any;
    }>;
    calculatePlanDetails(vehicle_count: string, billing_cycle: string, req: RequestDto): Promise<{
        data: {
            vehicle_count: number;
            billing_cycle: import("./schema/plan.schema").BillingCycle;
            plan_id: string;
            plan: import("mongoose").FlattenMaps<import("mongoose").Document<unknown, {}, import("./schema/plan.schema").Plans, {}> & import("./schema/plan.schema").Plans & {
                _id: import("mongoose").Types.ObjectId;
            } & {
                __v: number;
            }> & Required<{
                _id: import("mongoose").Types.ObjectId;
            }>;
            slab: import("mongoose").FlattenMaps<import("mongoose").Document<unknown, {}, import("./schema/plan.schema").Plans, {}> & import("./schema/plan.schema").Plans & {
                _id: import("mongoose").Types.ObjectId;
            } & {
                __v: number;
            }> & Required<{
                _id: import("mongoose").Types.ObjectId;
            }>;
            amount: number;
        };
    }>;
    update(req: any, id: string, dto: PlanUpdateDto): Promise<import("mongoose").Document<unknown, {}, import("mongoose").Document<unknown, {}, import("./schema/plan.schema").Plans, {}> & import("./schema/plan.schema").Plans & {
        _id: import("mongoose").Types.ObjectId;
    } & {
        __v: number;
    }, {}> & import("mongoose").Document<unknown, {}, import("./schema/plan.schema").Plans, {}> & import("./schema/plan.schema").Plans & {
        _id: import("mongoose").Types.ObjectId;
    } & {
        __v: number;
    } & Required<{
        _id: import("mongoose").Types.ObjectId;
    }>>;
    updateStatus(req: any, id: string, dto: {
        is_active: boolean;
    }): Promise<{
        message: string;
        data: import("mongoose").Document<unknown, {}, import("mongoose").Document<unknown, {}, import("./schema/plan.schema").Plans, {}> & import("./schema/plan.schema").Plans & {
            _id: import("mongoose").Types.ObjectId;
        } & {
            __v: number;
        }, {}> & import("mongoose").Document<unknown, {}, import("./schema/plan.schema").Plans, {}> & import("./schema/plan.schema").Plans & {
            _id: import("mongoose").Types.ObjectId;
        } & {
            __v: number;
        } & Required<{
            _id: import("mongoose").Types.ObjectId;
        }>;
    }>;
    remove(req: any, id: string): Promise<{
        message: string;
    }>;
    adminGetAllPlans(req: any, payload: PlanListDto): Promise<{
        data: (import("mongoose").Document<unknown, {}, import("mongoose").Document<unknown, {}, import("./schema/plan.schema").Plans, {}> & import("./schema/plan.schema").Plans & {
            _id: import("mongoose").Types.ObjectId;
        } & {
            __v: number;
        }, {}> & import("mongoose").Document<unknown, {}, import("./schema/plan.schema").Plans, {}> & import("./schema/plan.schema").Plans & {
            _id: import("mongoose").Types.ObjectId;
        } & {
            __v: number;
        } & Required<{
            _id: import("mongoose").Types.ObjectId;
        }>)[];
        count: number;
    }>;
    findPlanForEveryOne(req: any, id: string): Promise<import("mongoose").Document<unknown, {}, import("mongoose").Document<unknown, {}, import("./schema/plan.schema").Plans, {}> & import("./schema/plan.schema").Plans & {
        _id: import("mongoose").Types.ObjectId;
    } & {
        __v: number;
    }, {}> & import("mongoose").Document<unknown, {}, import("./schema/plan.schema").Plans, {}> & import("./schema/plan.schema").Plans & {
        _id: import("mongoose").Types.ObjectId;
    } & {
        __v: number;
    } & Required<{
        _id: import("mongoose").Types.ObjectId;
    }>>;
    getMySubscription(req: RequestDto): Promise<{
        data: {
            has_subscription: boolean;
            active_subscription: any;
            plan: (import("mongoose").FlattenMaps<import("mongoose").Document<unknown, {}, import("./schema/plan.schema").Plans, {}> & import("./schema/plan.schema").Plans & {
                _id: import("mongoose").Types.ObjectId;
            } & {
                __v: number;
            }> & Required<{
                _id: import("mongoose").Types.ObjectId;
            }>) | null;
            used_vehicles: number;
            vehicle_limit: any;
            remaining_vehicles: number;
        };
    }>;
    getBillingHistory(req: RequestDto): Promise<{
        data: {
            invoices: never[];
            current_vehicle_count: number;
            plan: null;
            subscription_status: null;
            next_billing_date?: undefined;
        };
    } | {
        data: {
            invoices: any[];
            current_vehicle_count: number;
            plan: (import("mongoose").FlattenMaps<import("mongoose").Document<unknown, {}, import("./schema/plan.schema").Plans, {}> & import("./schema/plan.schema").Plans & {
                _id: import("mongoose").Types.ObjectId;
            } & {
                __v: number;
            }> & Required<{
                _id: import("mongoose").Types.ObjectId;
            }>) | null;
            subscription_status: any;
            next_billing_date: any;
        };
    }>;
    buySubscription(dto: PurchaseSubscriptionDto, req: RequestDto): Promise<{
        updated: boolean;
        message: string;
        amount: number;
        vehicle_count: number;
        plan: import("mongoose").FlattenMaps<import("mongoose").Document<unknown, {}, import("./schema/plan.schema").Plans, {}> & import("./schema/plan.schema").Plans & {
            _id: import("mongoose").Types.ObjectId;
        } & {
            __v: number;
        }> & Required<{
            _id: import("mongoose").Types.ObjectId;
        }>;
        razorpay?: undefined;
        payment_gateway?: undefined;
    } | {
        razorpay: any;
        amount: number;
        payment_gateway: import("../settings/schema/settings.schema").PaymentGateway.RAZORPAY;
        vehicle_count: number;
        plan: import("mongoose").FlattenMaps<import("mongoose").Document<unknown, {}, import("./schema/plan.schema").Plans, {}> & import("./schema/plan.schema").Plans & {
            _id: import("mongoose").Types.ObjectId;
        } & {
            __v: number;
        }> & Required<{
            _id: import("mongoose").Types.ObjectId;
        }>;
        updated?: undefined;
        message?: undefined;
    }>;
    cancelSubscription(req: RequestDto): Promise<{
        message: string;
        data: any;
    }>;
    reactivateSubscription(req: RequestDto): Promise<{
        message: string;
        data: any;
    }>;
}
