import { DomainCreateOptions } from '@node-c/core'; import { IAMAuthenticationType, IAMAuthenticationVerifyExternalAccessTokenResult } from '../authentication'; export interface BaseTokenEntityFields { externalToken?: string; externalTokenAuthService?: IAMAuthenticationType; } export type DecodedTokenContent = { exp?: number; iat: number; data?: TokenEntityFields & BaseTokenEntityFields; }; export type TokenEntity = { token: string; type: TokenType; } & TokenEntityFields & BaseTokenEntityFields; export type TokenManagerCreateData = Partial< Omit, 'token'> >; export type TokenManagerCreateOptions = { expiresInMinutes?: number; identifierDataField?: string; persist?: boolean; purgeOldFromData?: boolean; tokenContentOnlyFields?: string[]; ttl?: number; } & DomainCreateOptions; export enum TokenType { // eslint-disable-next-line no-unused-vars Access = 'access', // eslint-disable-next-line no-unused-vars Id = 'id', // eslint-disable-next-line no-unused-vars Refresh = 'refresh' } export interface TokenManagerVerifyResult { content?: DecodedTokenContent; externalTokenData?: IAMAuthenticationVerifyExternalAccessTokenResult; error?: unknown; } export interface VerifyAccessTokenOptions { deleteFromStoreIfExpired?: boolean; identifierDataField?: string; newAccessTokenExpiresInMinutes?: number; persistNewToken?: boolean; purgeStoreOnRenew?: boolean; refreshToken?: string; refreshTokenAccessTokenIdentifierDataField?: string; } export interface VerifyAccessTokenReturnData { content?: DecodedTokenContent; newAccessToken?: string; newIdToken?: string; newRefreshToken?: string; }