/**
 * Interface for token storage and retrieval.
 * The CLI implementation stores tokens in ~/.effigenix/config.json.
 */
export interface TokenProvider {
  /** Returns the current access token, or null if not authenticated */
  getAccessToken(): Promise<string | null>;

  /** Returns the current refresh token, or null if not authenticated */
  getRefreshToken(): Promise<string | null>;

  /** Persists new tokens after a successful login or refresh */
  saveTokens(accessToken: string, refreshToken: string, expiresAt: string): Promise<void>;

  /** Clears all stored tokens (called on logout or session expiry) */
  clearTokens(): Promise<void>;
}
