import * as passport from 'passport';
import { Request } from '@loopback/rest';
import { IAuthClient, IAuthUser } from '../../../types';
export declare namespace Oauth2ResourceOwnerPassword {
    interface StrategyOptionsWithRequestInterface {
        passReqToCallback: boolean;
    }
    interface VerifyFunctionWithRequest {
        (req: Request, clientId: string, clientSecret: string, username: string, password: string, done: (error: Error | null, client?: IAuthClient | false, info?: IAuthUser | false) => void): void;
    }
    interface VerifyFunction {
        (clientId: string, clientSecret: string, username: string, password: string, done: (error: Error | null, client?: IAuthClient | false, info?: IAuthUser | false) => void): void;
    }
    class Strategy extends passport.Strategy {
        constructor(verify: VerifyFunction);
        constructor(options: StrategyOptionsWithRequestInterface | VerifyFunction, verify?: VerifyFunctionWithRequest | VerifyFunction);
        name: string;
        private readonly verify;
        private readonly passReqToCallback;
        authenticate(req: Request, options?: {}): void;
    }
}
