import { Strategy } from 'passport-jwt';
import { ConfigService } from '@nestjs/config';
import { ClsService } from 'nestjs-cls';
import { Repository } from 'typeorm';
import { AuthService, JwtPayload } from '../auth.service';
import { RolePermissionEntity } from '../../entities/role-permission.entity';
import { RedisService } from '../../redis/redis.service';
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 authService;
    private readonly cls;
    private readonly redisService;
    private readonly rolePermRepo;
    private static readonly PERM_CACHE_PREFIX;
    constructor(configService: ConfigService, authService: AuthService, cls: ClsService, redisService: RedisService, rolePermRepo: Repository<RolePermissionEntity>);
    validate(payload: JwtPayload): Promise<{
        id: string;
        email: string;
        name: string;
        tenant_id: string;
        role: import("../../entities").RoleEntity;
        read_only: boolean;
        impersonator_id: string | null;
    }>;
    private getRolePermissions;
}
export {};
