///
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<{}>;