import Express from "express";
import PassportStrategy from "passport-strategy";
import { AfterVerifyCallback, TokenExtractor, Verifier, VerifierOptions } from "./types";
/**
 * @example
 * ```typescript
 * passport.use(new JwtStrategy(jwtVerifier, tokenExtractor, (sections, done, req) => {
 *   User.findOne({ id: sections.payload.sub }, (error, user) => {
 *     if (error) {
 *       return done(err, false)
 *     }
 *     if (!user) {
 *       return done(null, false, "User not found", 404)
 *     }
 *     return done(null, user)
 *   })
 * }))
 *
 * // *-----------* OR *-----------*
 *
 * passport.use(new JwtStrategy(verifierOptions, tokenExtractor, (sections, done, req) => {
 *   User.findOne({ id: sections.payload.sub }, (error, user) => {
 *     if (error) {
 *       return done(err, false)
 *     }
 *     if (!user) {
 *       return done(null, false, "User not found", 404)
 *     }
 *     return done(null, user)
 *   })
 * }))
 * ```
 */
export declare class JwtStrategy extends PassportStrategy.Strategy {
    name: string;
    private extractToken;
    private verifyJwt;
    private afterVerifiedCb;
    constructor(verifierOptions: VerifierOptions, tokenExtractor: TokenExtractor, afterVerifiedCb: AfterVerifyCallback);
    constructor(jwtVerifier: Verifier, tokenExtractor: TokenExtractor, afterVerifiedCb: AfterVerifyCallback);
    private createSections;
    authenticate(req: Express.Request): Promise<void>;
}
