/** * Arial Server - Authentication routes * * Endpoints for GitHub Device Flow OAuth and token management */ import type { ResolvedServerConfig } from "../config/types.js"; /** * Response for device flow initiation */ interface DeviceFlowResponse { ok: true; deviceCode: string; userCode: string; verificationUri: string; expiresIn: number; interval: number; } /** * Response for successful authentication */ interface AuthSuccessResponse { ok: true; status: "complete"; accessToken: string; refreshToken: string; expiresIn: number; user: { id: string; username: string; avatarUrl: string; }; } /** * Response for pending authentication */ interface AuthPendingResponse { ok: true; status: "pending"; } /** * Response for expired device flow */ interface AuthExpiredResponse { ok: false; error: "expired"; } /** * Error response */ interface ErrorResponse { ok: false; error: string; } type DeviceFlowPollResponse = AuthSuccessResponse | AuthPendingResponse | AuthExpiredResponse | ErrorResponse; /** * Handle POST /auth/device - Start device flow */ export declare function handleDeviceFlowStart(config: ResolvedServerConfig): Promise; /** * Handle POST /auth/device/poll - Poll for device flow completion * * Note: This endpoint is kept for backward compatibility but clients should * prefer using WebSocket auth.subscribe for better rate limiting. */ export declare function handleDeviceFlowPoll(deviceCode: string, config: ResolvedServerConfig): Promise; /** * Handle POST /auth/refresh - Refresh access token */ export declare function handleTokenRefresh(refreshTokenInput: string, config: ResolvedServerConfig): Promise<{ ok: true; accessToken: string; refreshToken: string; expiresIn: number; } | ErrorResponse>; /** * Handle POST /auth/logout - Invalidate refresh tokens */ export declare function handleLogout(userId: string, _config: ResolvedServerConfig): Promise<{ ok: true; } | ErrorResponse>; export {}; //# sourceMappingURL=routes.d.ts.map