import { HttpEvent, HttpHandler, HttpRequest } from '@angular/common/http'; import { ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router'; import { Observable } from 'rxjs'; export type TriggerReturnType = Observable | Promise | boolean | UrlTree; export interface IdentityProviderCapabilities { editPassword?: boolean; editEmail?: boolean; editProfile?: boolean; } export interface IdentityProvider { /** * Initialization logic. */ init(config: ConfigType): void; /** * Capabilities for the identity provider. */ getCapabilities(): IdentityProviderCapabilities; /** * Route Guard for login */ triggerLogin(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): TriggerReturnType; /** * Route guard for register. If not provided, login logic is reused. */ triggerRegister?(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): TriggerReturnType; /** * Route guard for inviting. */ triggerInvite?(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): TriggerReturnType; /** * Logout method (can be used by route guard or otherwise) */ triggerLogout(): TriggerReturnType; /** * Interceptor for all API requests directed to the ICM */ intercept(req: HttpRequest, next: HttpHandler): Observable>; }