import { JWTClaimVerificationOptions, ProduceJWT } from 'jose';
import { JWK } from './jwk.js';
import { JWKS } from './jwks.js';
import { FromJWTOptions, JWTCompleteResult, JWTDecryptOptions, JWTEncryptOptions, JWTPayload, JWTSignOptions, JWTVerifyOptions, ToJWTOptions } from './types.js';
export declare class JWT {
    static verify(token: string, key?: JWK | JWKS, options?: JWTVerifyOptions<false>): Promise<JWTPayload>;
    static verify(token: string, key?: JWK | JWKS, options?: JWTVerifyOptions<true>): Promise<JWTCompleteResult>;
    static sign(payload: JWTPayload, key: JWK | JWKS, options?: JWTSignOptions): Promise<string>;
    static decrypt(cypher: string, key: JWK | JWKS, options?: JWTDecryptOptions<false>): Promise<JWTPayload>;
    static decrypt(cypher: string, key: JWK | JWKS, options?: JWTDecryptOptions<true>): Promise<JWTCompleteResult>;
    static encrypt(payload: JWTPayload, key: JWK | JWKS, options: JWTEncryptOptions): Promise<string>;
    static setupJwt(jwt: ProduceJWT, options: ToJWTOptions): void;
    static verifyJWTClaims(payload: JWTPayload, options?: JWTClaimVerificationOptions & FromJWTOptions): void;
}
