///
import { ParsedRequest } from '@loopback/core';
import { Provider } from '@loopback/context';
import { Strategy } from 'passport';
/**
* interface definition of a function which accepts a request
* and returns an authenticated user
*/
export interface AuthenticateFn {
(request: ParsedRequest): Promise;
}
/**
* interface definition of a user profile
* http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims
*/
export interface UserProfile {
id: string;
name?: string;
email?: string;
}
/**
* @description Provider of a function which authenticates
* @example `context.bind('authentication_key')
* .toProvider(AuthenticationProvider)`
*/
export declare class AuthenticationProvider implements Provider {
readonly strategy: Strategy;
constructor(strategy: Strategy);
/**
* @returns authenticateFn
*/
value(): AuthenticateFn;
}
/**
* @description a function which accepts (passport-strategy, request)
* and returns a user
* @param strategy Passport strategy
* @param request Parsed Request
*
* @example
* ```ts
* const strategy = new BasicStrategy(async (username, password) => {
* return await findUser(username, password);
* };
* getAuthenticatedUser(strategy, ParsedRequest);
* ```
*/
export declare function getAuthenticatedUser(strategy: Strategy, request: ParsedRequest): Promise;