import { JWTPayload, CryptoKey } from './types.d.js';

declare class JOSEError extends Error {
    static code: string;
    code: string;
    constructor(message?: string, options?: {
        cause?: unknown;
    });
}
declare class JWTClaimValidationFailed extends JOSEError {
    static code: string;
    code: string;
    claim: string;
    reason: string;
    payload: JWTPayload;
    constructor(message: string, payload: JWTPayload, claim?: string, reason?: string);
}
declare class JWTExpired extends JOSEError implements JWTClaimValidationFailed {
    static code: string;
    code: string;
    claim: string;
    reason: string;
    payload: JWTPayload;
    constructor(message: string, payload: JWTPayload, claim?: string, reason?: string);
}
declare class JOSEAlgNotAllowed extends JOSEError {
    static code: string;
    code: string;
}
declare class JOSENotSupported extends JOSEError {
    static code: string;
    code: string;
}
declare class JWEDecryptionFailed extends JOSEError {
    static code: string;
    code: string;
    constructor(message?: string, options?: {
        cause?: unknown;
    });
}
declare class JWEInvalid extends JOSEError {
    static code: string;
    code: string;
}
declare class JWSInvalid extends JOSEError {
    static code: string;
    code: string;
}
declare class JWTInvalid extends JOSEError {
    static code: string;
    code: string;
}
declare class JWKInvalid extends JOSEError {
    static code: string;
    code: string;
}
declare class JWKSInvalid extends JOSEError {
    static code: string;
    code: string;
}
declare class JWKSNoMatchingKey extends JOSEError {
    static code: string;
    code: string;
    constructor(message?: string, options?: {
        cause?: unknown;
    });
}
declare class JWKSMultipleMatchingKeys extends JOSEError {
    [Symbol.asyncIterator]: () => AsyncIterableIterator<CryptoKey>;
    static code: string;
    code: string;
    constructor(message?: string, options?: {
        cause?: unknown;
    });
}
declare class JWKSTimeout extends JOSEError {
    static code: string;
    code: string;
    constructor(message?: string, options?: {
        cause?: unknown;
    });
}
declare class JWSSignatureVerificationFailed extends JOSEError {
    static code: string;
    code: string;
    constructor(message?: string, options?: {
        cause?: unknown;
    });
}

type errors_JOSEAlgNotAllowed = JOSEAlgNotAllowed;
declare const errors_JOSEAlgNotAllowed: typeof JOSEAlgNotAllowed;
type errors_JOSEError = JOSEError;
declare const errors_JOSEError: typeof JOSEError;
type errors_JOSENotSupported = JOSENotSupported;
declare const errors_JOSENotSupported: typeof JOSENotSupported;
type errors_JWEDecryptionFailed = JWEDecryptionFailed;
declare const errors_JWEDecryptionFailed: typeof JWEDecryptionFailed;
type errors_JWEInvalid = JWEInvalid;
declare const errors_JWEInvalid: typeof JWEInvalid;
type errors_JWKInvalid = JWKInvalid;
declare const errors_JWKInvalid: typeof JWKInvalid;
type errors_JWKSInvalid = JWKSInvalid;
declare const errors_JWKSInvalid: typeof JWKSInvalid;
type errors_JWKSMultipleMatchingKeys = JWKSMultipleMatchingKeys;
declare const errors_JWKSMultipleMatchingKeys: typeof JWKSMultipleMatchingKeys;
type errors_JWKSNoMatchingKey = JWKSNoMatchingKey;
declare const errors_JWKSNoMatchingKey: typeof JWKSNoMatchingKey;
type errors_JWKSTimeout = JWKSTimeout;
declare const errors_JWKSTimeout: typeof JWKSTimeout;
type errors_JWSInvalid = JWSInvalid;
declare const errors_JWSInvalid: typeof JWSInvalid;
type errors_JWSSignatureVerificationFailed = JWSSignatureVerificationFailed;
declare const errors_JWSSignatureVerificationFailed: typeof JWSSignatureVerificationFailed;
type errors_JWTClaimValidationFailed = JWTClaimValidationFailed;
declare const errors_JWTClaimValidationFailed: typeof JWTClaimValidationFailed;
type errors_JWTExpired = JWTExpired;
declare const errors_JWTExpired: typeof JWTExpired;
type errors_JWTInvalid = JWTInvalid;
declare const errors_JWTInvalid: typeof JWTInvalid;
declare namespace errors {
  export { errors_JOSEAlgNotAllowed as JOSEAlgNotAllowed, errors_JOSEError as JOSEError, errors_JOSENotSupported as JOSENotSupported, errors_JWEDecryptionFailed as JWEDecryptionFailed, errors_JWEInvalid as JWEInvalid, errors_JWKInvalid as JWKInvalid, errors_JWKSInvalid as JWKSInvalid, errors_JWKSMultipleMatchingKeys as JWKSMultipleMatchingKeys, errors_JWKSNoMatchingKey as JWKSNoMatchingKey, errors_JWKSTimeout as JWKSTimeout, errors_JWSInvalid as JWSInvalid, errors_JWSSignatureVerificationFailed as JWSSignatureVerificationFailed, errors_JWTClaimValidationFailed as JWTClaimValidationFailed, errors_JWTExpired as JWTExpired, errors_JWTInvalid as JWTInvalid };
}

export { JWEInvalid as J, JWSInvalid as a, JOSEError as b, JWTClaimValidationFailed as c, JWTExpired as d, errors as e, JOSEAlgNotAllowed as f, JOSENotSupported as g, JWEDecryptionFailed as h, JWTInvalid as i, JWKInvalid as j, JWKSInvalid as k, JWKSNoMatchingKey as l, JWKSMultipleMatchingKeys as m, JWKSTimeout as n, JWSSignatureVerificationFailed as o };
