declare const algorithms: {
    ES256: {
        name: string;
        namedCurve: string;
        hash: {
            name: string;
        };
    };
    ES384: {
        name: string;
        namedCurve: string;
        hash: {
            name: string;
        };
    };
    ES512: {
        name: string;
        namedCurve: string;
        hash: {
            name: string;
        };
    };
    HS256: {
        name: string;
        hash: {
            name: string;
        };
    };
    HS384: {
        name: string;
        hash: {
            name: string;
        };
    };
    HS512: {
        name: string;
        hash: {
            name: string;
        };
    };
    RS256: {
        name: string;
        hash: {
            name: string;
        };
    };
    RS384: {
        name: string;
        hash: {
            name: string;
        };
    };
    RS512: {
        name: string;
        hash: {
            name: string;
        };
    };
};
type Algorithm = keyof typeof algorithms;
type JWTHeader = {
    alg: Algorithm;
    kid?: string;
    typ?: string;
    cty?: string;
    crit?: string[];
    [key: string]: any;
};
type JWTPayload = Record<string, any>;
type JWT = {
    header: JWTHeader;
    payload: JWTPayload;
    signature: Uint8Array;
};
export type SignOptions = {
    algorithm: Algorithm;
    header?: Record<string, any>;
};
export declare function sign(payload: JWTPayload, secret: string | JsonWebKey, options?: SignOptions): Promise<string>;
export type VerifyOptions = {
    algorithms?: Array<Algorithm>;
    clockTolerance?: number;
    clockTimestamp?: number;
};
export declare function verify<T = JWTPayload>(token: string, secret: string, options?: VerifyOptions): Promise<T>;
export declare function verify<T = JWTPayload>(token: string, publicKey: JsonWebKey, options?: VerifyOptions): Promise<T>;
export declare function decode(token: string): JWT;
export {};
