import { IExtraData } from '../Cards/ICard'; import { IAccessToken, ITokenContext } from './AccessTokenProviders/index'; /** * The callback function used to get the JWT as either `string`, or {@Link Jwt} instance * synchronously or asynchronously. */ export declare type GetJwtCallback = (context: ITokenContext) => Promise | Jwt | string; /** * Interface for objects representing JWT Header. */ export interface IJwtHeader { /** * The algorithm used to calculate the token signature. */ readonly alg: string; /** * The type of the token. Always "JWT". */ readonly typ: string; /** * The content type of the token. */ readonly cty: string; /** * Id of the API Key used to calculate the token signature. */ readonly kid: string; } /** * Interface for objects representing JWT Body. */ export interface IJwtBody { /** * The issuer of the token (i.e. Application ID) */ readonly iss: string; /** * The subject of the token (i.e. User identity) */ readonly sub: string; /** * The token issue date as Unix timestamp */ readonly iat: number; /** * The token expiry date as Unix timestamp */ readonly exp: number; /** * User-defined attributes associated with the token */ readonly ada?: IExtraData; } /** * Class representing the JWT providing access to the * Virgil Security APIs. * Implements {@link IAccessToken} interface. */ export declare class Jwt implements IAccessToken { /** * Parses the string representation of the JWT into * an object representation. * * @param {string} jwtStr - The JWT string. Must have the following format: * * `base64UrlEncode(Header) + "." + base64UrlEncode(Body) + "." + base64UrlEncode(Signature)` * * See the {@link https://jwt.io/introduction/ | Introduction to JWT} for more details. * * @returns {Jwt} */ static fromString(jwtStr: string): Jwt; readonly header: IJwtHeader; readonly body: IJwtBody; readonly signature?: string; /** * The data used to calculate the JWT Signature * * `base64UrlEncode(header) + "." + base64UrlEncode(body)` */ readonly unsignedData: string; private readonly stringRepresentation; /** * Creates a new instance of `Jwt` from the given string. The string * must be in the following format: * `base64UrlEncode(header).base64UrlEncode(body).base64UrlEncode(signature)` * @param {string} stringRepresentation */ constructor(stringRepresentation: string); /** * Creates a new instance of `Jwt` with the given header, body and * optional signature. * * @param {IJwtHeader} header * @param {IJwtBody} body * @param {string} signature */ constructor(header: IJwtHeader, body: IJwtBody, signature?: string); /** * Returns the string representation of this JWT. * @returns {string} */ toString(): string; /** * Retrieves the identity that is the subject of this JWT. * @returns {string} */ identity(): string; /** * Retrieves the application ID that is the issuer of this JWT. * @returns {string} */ appId(): string; /** * Returns a boolean indicating whether this JWT is (or will be) * expired at the given date or not. * * @param {Date} at - The date to check. Defaults to `new Date()`. * @returns {boolean} - `true` if token is expired, otherwise `false`. */ isExpired(at?: Date): boolean; private headerBase64; private bodyBase64; private signatureBase64; }