/**
 * @module JwtUtils
 * @description A comprehensive collection of utility functions for working with JSON Web Tokens (JWT).
 * Provides methods for decoding, parsing, validating, and managing JWT tokens including expiration checks,
 * claim extraction, and token lifecycle management.
 * @example
 * ```typescript
 * import { JwtUtils } from 'houser-js-utils';
 *
 * // Decode a JWT token
 * const payload = JwtUtils.decodeToken(token);
 *
 * // Check if token is expired
 * const isExpired = JwtUtils.isTokenExpired(token);
 *
 * // Get specific claim
 * const userId = JwtUtils.getPayloadClaim(token, 'sub');
 * ```
 */
/**
 * Interface representing the structure of a JWT payload with standard claims.
 */
export interface JwtPayload {
    /** Subject (user ID) */
    sub?: string;
    /** Issuer */
    iss?: string;
    /** Audience */
    aud?: string;
    /** Expiration time (Unix timestamp in seconds) */
    exp?: number;
    /** Not before time (Unix timestamp in seconds) */
    nbf?: number;
    /** Issued at time (Unix timestamp in seconds) */
    iat?: number;
    /** JWT ID */
    jti?: string;
    /** Additional custom claims */
    [key: string]: any;
}
export declare const JwtUtils: {
    /**
     * Decodes and parses a JWT token into its payload object.
     * @param token - The JWT token string to decode
     * @returns The decoded JWT payload containing all claims
     * @throws Error if token is invalid, malformed, or cannot be parsed
     * @example
     * ```typescript
     * const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
     * const payload = JwtUtils.decodeToken(token);
     * console.log(payload.sub); // '1234567890'
     * console.log(payload.exp); // 1234567890
     * ```
     */
    decodeToken(token: string): JwtPayload;
    /**
     * Extracts a specific claim value from a JWT token's payload.
     * @param token - The JWT token string to parse
     * @param claim - The name of the claim to retrieve
     * @returns The claim value or undefined if the claim is not found
     * @throws Error if token is invalid or cannot be parsed
     * @example
     * ```typescript
     * const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
     * const userId = JwtUtils.getPayloadClaim(token, 'sub'); // "1234567890"
     * const role = JwtUtils.getPayloadClaim(token, 'role'); // "admin"
     * const email = JwtUtils.getPayloadClaim(token, 'email'); // "user@example.com"
     * ```
     */
    getPayloadClaim(token: string, claim: string): any;
    /**
     * Calculates the time remaining until a JWT token expires.
     * @param token - The JWT token to check for expiration
     * @returns The time remaining in seconds, or null if no expiration time is set
     * @throws Error if token is invalid or cannot be parsed
     * @example
     * ```typescript
     * const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
     * const timeRemaining = JwtUtils.getTokenTimeRemaining(token);
     * if (timeRemaining !== null) {
     *   console.log(`Token expires in ${timeRemaining} seconds`);
     * } else {
     *   console.log('Token has no expiration time');
     * }
     * ```
     */
    getTokenTimeRemaining(token: string): number | null;
    /**
     * Validates if a string follows the correct JWT token format (three base64url-encoded parts).
     * @param token - The string to validate as a JWT token
     * @returns True if the string follows JWT format, false otherwise
     * @example
     * ```typescript
     * const validToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.signature';
     * const invalidToken = 'not.a.jwt.token';
     *
     * JwtUtils.isJwt(validToken); // true
     * JwtUtils.isJwt(invalidToken); // false
     * JwtUtils.isJwt('invalid'); // false
     * ```
     */
    isJwt(token: string): boolean;
    /**
     * Checks if the JWT token stored in localStorage will expire within the next hour.
     * @returns True if token will expire within an hour, false if not expiring soon, null if no token exists
     * @example
     * ```typescript
     * const result = JwtUtils.isTokenExpiringSoon();
     * if (result === null) {
     *   console.log('No token found in localStorage');
     * } else if (result) {
     *   console.log('Token expires soon - consider refreshing');
     * } else {
     *   console.log('Token is still valid for more than an hour');
     * }
     * ```
     */
    isTokenExpiringSoon(): boolean | null;
    /**
     * Determines if a JWT token has expired based on its expiration time claim.
     * @param token - The JWT token string to check
     * @returns True if the token is expired, false if still valid or has no expiration
     * @throws Error if token is invalid or cannot be parsed
     * @example
     * ```typescript
     * const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
     *
     * if (JwtUtils.isTokenExpired(token)) {
     *   console.log('Token has expired - please authenticate again');
     * } else {
     *   console.log('Token is still valid');
     * }
     * ```
     */
    isTokenExpired(token: string): boolean;
    /**
     * Performs comprehensive validation of a JWT token including expiration and required claims.
     * @param token - The JWT token string to validate
     * @param requiredClaims - Array of claim names that must be present in the token
     * @returns True if token is valid, not expired, and contains all required claims
     * @throws Error if token is invalid or cannot be parsed
     * @example
     * ```typescript
     * const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
     *
     * // Basic validation (just check expiration)
     * const isValid = JwtUtils.isValidToken(token);
     *
     * // Validation with required claims
     * const isValidWithClaims = JwtUtils.isValidToken(token, ['sub', 'role', 'email']);
     *
     * if (isValidWithClaims) {
     *   console.log('Token is valid and has all required claims');
     * }
     * ```
     */
    isValidToken(token: string, requiredClaims?: string[]): boolean;
};
