import { NextFunction, Request, RequestHandler, Response, Router } from 'express';
import { Client, Issuer, Strategy, TokenSet, UserinfoResponse, HttpOptions } from 'openid-client';
import { OpenIDMetadata } from './OpenIDMetadata.interface';
import { Strategy as AuthStrategy } from '../../models';
import { AuthOptions } from '../../models';
import { XuiLogger } from '../../../common';
export declare class OpenID extends AuthStrategy {
    protected issuer: Issuer<Client> | undefined;
    protected client: Client | undefined;
    constructor(router?: Router, logger?: XuiLogger, options?: HttpOptions);
    /**
     * Helper function to customise GOT defaults and hooks to provide debug information
     * @param options
     */
    setHttpOptionsDefaults: (options: HttpOptions) => void;
    getOpenIDOptions: (authOptions: AuthOptions, discoveryOptions: any) => OpenIDMetadata;
    keepAliveHandler: (req: Request, res: Response, next: NextFunction) => Promise<void>;
    discover: () => Promise<Issuer<Client>>;
    initialiseStrategy: (authOptions: AuthOptions) => Promise<void>;
    convertTokenSet: (tokenset: TokenSet | undefined) => any;
    verify: (tokenset: TokenSet, userinfo: UserinfoResponse, done: (err: any, user?: any, message?: any) => void) => void;
    discoverIssuer: () => Promise<any>;
    newIssuer: (metadata: any) => Issuer<Client>;
    useStrategy: (strategyName: string, strategy: Strategy<any, any>) => void;
    createNewStrategy: (authOptions: AuthOptions) => Promise<Strategy<any, any>>;
    getNewStrategy: (options: OpenIDMetadata, client: Client) => Strategy<any, Client>;
    getClientFromIssuer: (issuer: Issuer<Client>, options: OpenIDMetadata) => Client | undefined;
    getClient: () => Client | undefined;
    /**
     * The login route handler, will attempt to setup security state and nonce param and redirect user if not authenticated
     * @param req Request
     * @param res Response
     * @param next NextFunction
     */
    loginHandler: (req: Request, res: Response, next: NextFunction) => Promise<RequestHandler>;
}
export declare const oidc: OpenID;
//# sourceMappingURL=openid.class.d.ts.map