import { Strategy } from 'passport-jwt';
import { ConfigService } from '@nestjs/config';
import { PrismaService } from '../../../database/prisma.service';
import { UserRole } from '@prisma/client';
export type JwtPayload = {
    sub: string;
    email: string | null;
    role: UserRole;
    shopId: string | null;
    ver: number;
};
declare const JwtStrategy_base: new (...args: [opt: import("passport-jwt").StrategyOptionsWithRequest] | [opt: import("passport-jwt").StrategyOptionsWithoutRequest]) => Strategy & {
    validate(...args: any[]): unknown;
};
export declare class JwtStrategy extends JwtStrategy_base {
    private readonly config;
    private readonly prisma;
    constructor(config: ConfigService, prisma: PrismaService);
    validate(payload: JwtPayload): Promise<{
        adminSubscription: undefined;
        subscription: {
            plan: {
                id: string;
                name: string;
                code: string;
                currency: string;
                priceMonthly: number;
                features: import("@prisma/client/runtime/library").JsonValue;
            };
            planExpiresAt: Date | null;
            scheduledPlanCode: string | null;
            scheduledPlanAt: Date | null;
        } | null;
        shop: {
            admin: undefined;
            plan: {
                id: string;
                name: string;
                code: string;
                currency: string;
                priceMonthly: number;
                features: import("@prisma/client/runtime/library").JsonValue;
            } | null;
            planExpiresAt: Date | null;
            scheduledPlanCode: string | null;
            scheduledPlanAt: Date | null;
            id: string;
            name: string;
            isActive: boolean;
            deactivatedAt: Date | null;
            address: string;
            city: string;
            state: string;
            pincode: string;
            gstNo: string | null;
            upiId: string | null;
            status: import("@prisma/client").$Enums.ShopStatus;
            approvedAt: Date | null;
            rejectedAt: Date | null;
            rejectedReason: string | null;
            walletBalance: number;
        } | null;
        id: string;
        email: string | null;
        phone: string | null;
        referralCode: string | null;
        role: import("@prisma/client").$Enums.UserRole;
        name: string | null;
        tokenVersion: number;
        isActive: boolean;
        deactivatedAt: Date | null;
        shopId: string | null;
        permissions: import("@prisma/client/runtime/library").JsonValue;
    }>;
}
export {};
