export interface BaseClaims { iss: string; exp?: number; } export interface AccessToken extends BaseClaims { type: "access"; aud: number; name: string; } export interface RefreshToken extends BaseClaims { type: "refresh"; aud: number; name: string; } export interface DeviceRegistrationToken extends BaseClaims { type: "device_reg"; } export interface DeviceToken extends BaseClaims { type: "device"; aud: string; id: number; } export interface SuperuserToken extends BaseClaims { type: "superuser"; } export type TokenClaims = AccessToken | RefreshToken | DeviceRegistrationToken | DeviceToken | SuperuserToken;