import { UserProvider } from "../../misc/custom-types";
import { Abstracts } from "../../routes/abstracts";
import { UserDetails } from "../user-details";
export declare class Authentication {
    protected userProvider: UserProvider;
    protected passwordEncoder: PasswordEncoder;
    constructor(userProvider: UserProvider, passwordEncoder: PasswordEncoder);
    authenticate(info: Abstracts<any, any, any>): Promise<UserDetails>;
}
export interface PasswordEncoder {
    encode: (rawPassword: string) => string;
    matches: (encodedPassword: string, rawPassword: string) => boolean;
}
