import { Strategy as PassportStrategy } from 'passport-strategy';
import { Request as ExpressRequest } from 'express';
import { PassportContext, IVerifyOptions } from './types';
declare type VerifyFn = (username: unknown, password: unknown, done: () => void) => void;
declare type VerifyFnWRequest = <U extends {}, Request extends object = ExpressRequest>(req: Request | PassportContext<U, Request>, username: unknown, password: unknown, done: (error: any, user?: any, options?: IVerifyOptions) => void) => void;
interface GraphQLLocalStrategyOptions {
    passReqToCallback?: boolean;
}
declare class GraphQLLocalStrategy<U extends {}, Request extends ExpressRequest = ExpressRequest> extends PassportStrategy {
    constructor(options?: GraphQLLocalStrategyOptions | VerifyFn | VerifyFnWRequest, verify?: VerifyFn | VerifyFnWRequest);
    verify: VerifyFn | VerifyFnWRequest;
    passReqToCallback: boolean | undefined;
    name: string;
    authenticate(req: Request, options: {
        username?: string;
        email?: string;
        password: string;
    }): void;
}
export default GraphQLLocalStrategy;
