import { AfterInit } from '@tsdi/components';
import { IContext } from '@mvx/mvc';
import { Strategy } from './Strategy';
import { IStrategyOption } from './IAuthenticator';
import { Context } from 'koa';
import { ValidationResult } from './results';
/**
 * local verify.
 */
export declare type LocalVerify = (username: string, password: string, ctx: IContext) => Promise<{
    user: any;
    info: any;
}>;
/**
 * LocalStrategy Option
 *
 * @export
 * @interface LocalStrategyOption
 * @extends {IStrategyOption}
 */
export interface LocalStrategyOption extends IStrategyOption {
    usernameField?: string;
    passwordField?: string;
    verify: LocalVerify;
}
/**
 * Local authenticate strategy
 *
 * @export
 * @class LocalStrategy
 * @extends {Strategy}
 * @implements {AfterInit}
 */
export declare class LocalStrategy extends Strategy implements AfterInit {
    protected verify: LocalVerify;
    protected usernameField: any;
    protected passwordField: any;
    onAfterInit(): Promise<void>;
    authenticate(ctx: Context, options?: any): Promise<ValidationResult>;
    static ρAnn(): any;
}
