import { JwtService as NestJwtService } from '@nestjs/jwt';
import { AuthOptions } from './auth.module';
export interface JwtPayload {
    sub: string | number;
    username?: string;
    email?: string;
    roles?: string[];
    permissions?: string[];
    tenantId?: string | number;
    sessionId?: string;
    type?: 'access' | 'refresh' | 'websocket';
    [key: string]: any;
}
export interface JwtExport {
    accessTokens: string[];
    refreshTokens: string[];
    metadata: {
        exportedAt: string;
        version: string;
    };
}
export interface WsAuthPayload {
    token: string;
    userId: string | number;
    connectionId?: string;
}
export interface TokenResponse {
    accessToken: string;
    refreshToken?: string;
    expiresIn: number;
    tokenType: string;
}
export declare class JwtService {
    private readonly options;
    private readonly jwtService;
    private readonly logger;
    constructor(options: AuthOptions, jwtService: NestJwtService);
    generateToken(payload: JwtPayload): Promise<string>;
    generateRefreshToken(payload: Omit<JwtPayload, 'type'>): Promise<string>;
    generateTokenResponse(payload: Omit<JwtPayload, 'type'>): Promise<TokenResponse>;
    verifyToken(token: string): Promise<JwtPayload>;
    decodeToken(token: string): JwtPayload;
    refreshAccessToken(refreshToken: string): Promise<TokenResponse>;
    exportUserTokens(userId: string | number, exportPath?: string): Promise<JwtExport>;
    importUserTokens(importData: JwtExport | string): Promise<boolean>;
    private getUserTokens;
    generateWsToken(payload: WsAuthPayload): Promise<string>;
    verifyWsToken(token: string): Promise<JwtPayload>;
}
