/// import { InjectedRouter } from 'react-router'; import { Location } from 'history'; import { ReactServePlugin, ComponentDecorator } from './types'; /** Provider */ export interface AuthConfig { provider: AuthProvider; handleUnauthorized?: (params: { router: InjectedRouter; location: Location; }) => void; handleForbidden?: (params: { router: InjectedRouter; location: Location; }) => void; handleSessionTimeout?: (params: { router: InjectedRouter; location: Location; }) => void; } export interface AuthProvider { service: S; handleRefresh?: (refreshToken: string) => Promise; initialize: () => Promise; } export interface AuthClient { service: S; getToken(): Token; commitLogout(): void; commitLogin(token: Credentials): void; registerOnLogoutListener(onLogoutListener: () => void): void; unauthorized(): void; forbidden(): void; } export declare type Token = string | undefined; export interface Credentials { token: string; refresh?: string; expires: number; } export declare function authPlugin(config: AuthConfig): ReactServePlugin; export declare const connectAuth: ComponentDecorator; export declare const LoggedIn: React.ComponentClass<{}>;