/// <reference types="express" />
import { RequestContext, UserContext } from '../requestContext';
import * as express from 'express';
export declare abstract class AbstractExpressAuthentication {
    static readonly Anonymous: UserContext;
    private strategies;
    addOrReplaceStrategy(name: string, verify: (ctx: RequestContext, token: string) => Promise<UserContext>): void;
    /**
     * Initialize authentication process
     *
     * @param {UserContext} testUser User to use for testing when no authentication is provide
     * @param {boolean} ignoreInvalidBearer Do not reject invalid bearer token, just ignore it. Can be initialize with application.ignoreInvalidBearer property.
     * @returns
     *
     * @memberOf ExpressAuthentication
     */
    init(testUser: UserContext, ignoreInvalidBearer: boolean): (req: any, res: express.Response, next: any) => Promise<void>;
}
