export type JWTPayloadData = { sub: string; }; export type RefreshAccessTokenWithRefreshToken = JWTPayloadData & { accessToken: string; refreshToken: string; }; export class InvalidRefreshTokenError extends Error { constructor() { super(`Invalid refresh token`); } } export class TokenInvalidatedError extends Error { constructor() { super(`Refresh token was invalidated`); } } export class InvalidAccessTokenError extends Error { constructor() { super(`Access token was invalid`); } } export type VerifyAccessToken = JWTPayloadData & { refreshToken?: string; }; export type RefreshTokenPayload = JWTPayloadData & { tokenVersion: string; }; export type IssueNewTokens = { accessToken: string; refreshToken: string; };