/** * Arial Server - JWT utilities * * JWT signing and verification using Node's crypto module */ /** * JWT payload for access tokens */ export interface JwtPayload { /** Subject (user ID) */ sub: string; /** GitHub username */ username: string; /** Token version for revocation */ tokenVersion: number; /** Issued at (Unix timestamp) */ iat: number; /** Expiration (Unix timestamp) */ exp: number; } /** * JWT payload for refresh tokens */ export interface RefreshTokenPayload { /** Subject (user ID) */ sub: string; /** Token version for revocation */ tokenVersion: number; /** Issued at (Unix timestamp) */ iat: number; /** Expiration (Unix timestamp) */ exp: number; /** Token type identifier */ type: "refresh"; } /** * Result of JWT verification */ export type VerifyResult = { ok: true; payload: T; } | { ok: false; error: string; }; /** * Parse duration string to milliseconds * Supports: s (seconds), m (minutes), h (hours), d (days) */ export declare function parseDuration(duration: string): number; /** * Create a JWT access token */ export declare function createAccessToken(userId: string, username: string, tokenVersion: number, secret: string, expiresIn: string): string; /** * Create a JWT refresh token */ export declare function createRefreshToken(userId: string, tokenVersion: number, secret: string, expiresIn: string): string; /** * Verify and decode a JWT access token */ export declare function verifyAccessToken(token: string, secret: string): VerifyResult; /** * Verify and decode a JWT refresh token */ export declare function verifyRefreshToken(token: string, secret: string): VerifyResult; /** * Hash a refresh token for storage */ export declare function hashRefreshToken(token: string): string; /** * Generate a random token (for device codes, etc.) */ export declare function generateRandomToken(length?: number): string; /** * Generate a user-friendly code (for device flow) */ export declare function generateUserCode(): string; //# sourceMappingURL=jwt.d.ts.map