import { Algorithm } from 'jsonwebtoken';
import type { Logger } from '@iota-big3/sdk-types';
export interface JWTConfig {
    accessTokenSecret: string;
    refreshTokenSecret: string;
    accessTokenExpiry?: string;
    refreshTokenExpiry?: string;
    algorithm?: Algorithm;
    issuer?: string;
    audience?: string | string[];
    clockTolerance?: number;
}
export interface TokenPayload {
    userId: string;
    email?: string;
    roles?: string[];
    permissions?: string[];
    sessionId?: string;
    [key: string]: any;
}
export interface TokenPair {
    accessToken: string;
    refreshToken: string;
    accessTokenExpiry: Date;
    refreshTokenExpiry: Date;
}
export interface DecodedToken extends TokenPayload {
    iat: number;
    exp: number;
    iss?: string;
    aud?: string | string[];
    jti?: string;
}
export declare class JWTService {
    private config;
    private revokedTokens;
    private logger?;
    constructor(config: JWTConfig, logger?: Logger);
    generateTokenPairAsync(payload: TokenPayload): Promise<TokenPair>;
    verifyAccessTokenAsync(token: string): Promise<DecodedToken>;
    verifyRefreshTokenAsync(token: string): Promise<DecodedToken>;
    refreshTokensAsync(refreshToken: string): Promise<TokenPair>;
    revokeToken(): void;
    revokeSession(): void;
    private isTokenRevoked;
    private generateJTI;
    private decodeToken;
    cleanupRevokedTokens(): void;
}
//# sourceMappingURL=jwt-service.d.ts.map