import AssistantV1 from 'ibm-watson/assistant/v1';
import { IPreprocessingService } from '../../interface/IPreprocessingService';
import { ISession } from '../../interface/ISession';
import { IWAChatServerConfig } from '../../interface/IWAChatServerConfig';
import { ILogger } from '../../interface/ILogger';
/**
 * This class implements adding of the logged user info to the WA request.
 * Information is set to context variable internal.authentication.
 * Authentication flow is the following:
 * - The client calls the API /auth/getLoginUrl and redirects the user to the URL returned
 *   by this API (the Azure login page). The API call starts a session if not started yet.
 * - Azure redirects the user back with GET parameters 'code' and 'state'.
 * - The client calls the API /auth/loginWithAuthorizationCode which uses the parameters
 *   provided by Azure in the redirect, fetches information about the user and stores it in the
 *   session.
 * - The service checks the information about the logged user in the session. If it is found
 *   then the service adds it to the internal.authentication section of the WA context.
 */
export declare class AuthenticationPreProcessingService implements IPreprocessingService {
    private logger;
    private config;
    private context;
    constructor(logger: ILogger, config: IWAChatServerConfig);
    processRequest(request: AssistantV1.MessageRequest, session: ISession): Promise<void>;
    private resolveAuthenticationContext;
    private addAuthenticationDataToContext;
    private removeAuthenticationDataFromContext;
}
