export interface TokenDecoder {
    decode(token: string): Promise<RS256Token>;
}
export type DecodedHeader = {
    kid: string;
    alg: 'RS256';
} & Record<string, any>;
export type DecodedPayload = {
    aud: string;
    exp: number;
    iat: number;
    iss: string;
    sub: string;
} & Record<string, any>;
export type DecodedToken = {
    header: DecodedHeader;
    payload: DecodedPayload;
    signature: Uint8Array;
};
export declare class RS256Token {
    private rawToken;
    readonly decodedToken: DecodedToken;
    constructor(rawToken: string, decodedToken: DecodedToken);
    /**
     *
     * @param token - The JWT to verify.
     * @param currentTimestamp - Current timestamp in seconds since the Unix epoch.
     * @param skipVerifyHeader - skip verification header content if true.
     * @throw Error if the token is invalid.
     * @returns
     */
    static decode(token: string, currentTimestamp: number, skipVerifyHeader?: boolean): RS256Token;
    getHeaderPayloadBytes(): Uint8Array;
}
