/** * Claims defined by RFC 9068: "JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens" * https://datatracker.ietf.org/doc/html/rfc9068 * * These tokens are intended for consumption by resource servers. */ export type DecodedAccessToken_RFC9068 = { iss: string; sub: string; aud: string | string[]; exp: number; iat: number; client_id?: string; scope?: string; jti?: string; nbf?: number; auth_time?: number; cnf?: Record; [key: string]: unknown; }; export type ValidateAndDecodeAccessToken = (params: ValidateAndDecodeAccessToken.Params) => Promise>; export declare namespace ValidateAndDecodeAccessToken { type Params = Params.Bearer | Params.DPoP; namespace Params { type Common = { accessToken: string; }; export type Bearer = Common & { scheme: "Bearer"; rejectIfAccessTokenDPoPBound: boolean; }; export type DPoP = Common & { scheme: "DPoP"; dpopProof: string; expectedHtu: string | undefined; expectedHtm: string | undefined; }; export {}; } type ReturnType = (ReturnType.Success & { errorCause?: never; debugErrorMessage?: never; }) | (ReturnType.Errored & { decodedAccessToken?: never; decodedAccessToken_original?: never; accessToken?: never; }); namespace ReturnType { type Success = { isSuccess: true; decodedAccessToken: DecodedAccessToken; decodedAccessToken_original: DecodedAccessToken_RFC9068; accessToken: string; }; type Errored = { isSuccess: false; errorCause: "validation error" | "validation error - access token expired" | "validation error - invalid signature"; debugErrorMessage: string; }; } } export type ParamsOfBootstrap = ParamsOfBootstrap.Real | ParamsOfBootstrap.Mock; export declare namespace ParamsOfBootstrap { type Real = { implementation: "real"; issuerUri: string; expectedAudience: string | undefined; }; type Mock = Mock.DecodeOnly | Mock.UseStaticIdentity; namespace Mock { type Common = { implementation: "mock"; }; export type DecodeOnly = Common & { behavior: "decode only"; }; export type UseStaticIdentity = Common & { behavior: "use static identity"; decodedAccessToken_mock: DecodedAccessToken; decodedAccessToken_original_mock?: DecodedAccessToken_RFC9068; accessToken_mock?: string; }; export {}; } } export type OidcSpaUtils = { bootstrapAuth: (params: ParamsOfBootstrap) => Promise; validateAndDecodeAccessToken: ValidateAndDecodeAccessToken; ofTypeDecodedAccessToken: DecodedAccessToken; };