export declare type JWTAlgorithm = 'HS256' | 'HS384' | 'HS512' | 'RS256' | 'RS384' | 'RS512';
export declare type JWTClaims = JWTRegisteredClaims & JWTPrivateClaims;
export declare type JWTPayloadData = JWTClaims | string;
export interface JWTHeaderData {
    typ: string;
    alg: string;
}
export interface JWTOptions {
    algorithm?: JWTAlgorithm;
    autoValidate?: boolean;
    expiresIn?: number;
    timeOffset?: number;
    key?: string;
    privateKey?: string;
    publicKey?: string;
}
export interface JWTData {
    header: JWTHeaderData;
    payload: JWTPayloadData;
    signature: string;
}
export interface JWTRegisteredClaims {
    iss?: any;
    sub?: any;
    aud?: any;
    exp?: number;
    nbf?: number;
    iat?: number;
    jid?: any;
}
export interface JWTPrivateClaims {
    [key: string]: string | number | boolean | Object | any[];
}
export declare class JWT {
    private _algorithm;
    private _autoValidate;
    private _expiresIn;
    private _key;
    private _privateKey;
    private _publicKey;
    private _timeOffset;
    constructor(options?: JWTOptions);
    static parsePayload(payload: string): JWTPayloadData;
    algorithm: JWTAlgorithm;
    autoValidate: boolean;
    expiresIn: number;
    key: string;
    privateKey: string;
    publicKey: string;
    timeOffset: number;
    signRaw(data: string, key?: string, algorithm?: JWTAlgorithm): string;
    verifyRaw(data: string, signature: string, key?: string, algorithm?: JWTAlgorithm): boolean;
    decode(encoded: string, key?: string, algorithm?: JWTAlgorithm): JWTData;
    encode(payload: JWTPayloadData, key?: string, algorithm?: JWTAlgorithm): string;
    validate(token: JWTData, key?: string, algorithm?: JWTAlgorithm): JWTData;
}
declare const _default: JWT;
export default _default;
