///
import { IncomingMessage, ServerResponse } from 'http';
import { NextApiRequest, NextApiResponse } from 'next';
import { ISession } from './session/session';
import { LoginOptions } from './handlers/login';
import { ITokenCache } from './tokens/token-cache';
import { CallbackOptions } from './handlers/callback';
import { ProfileOptions } from './handlers/profile';
import { IApiRoute } from './handlers/require-authentication';
export interface ISignInWithAuth0 {
/**
* Login handler which will redirect the user to Auth0.
*/
handleLogin: (req: IncomingMessage, res: ServerResponse, options?: LoginOptions) => Promise;
/**
* Callback handler which will complete the transaction and create a local session.
*/
handleCallback: (req: IncomingMessage, res: ServerResponse, options?: CallbackOptions) => Promise;
/**
* Logout handler which will clear the local session and the Auth0 session
*/
handleLogout: (req: IncomingMessage, res: ServerResponse) => Promise;
/**
* Profile handler which return profile information about the user.
*/
handleProfile: (req: NextApiRequest, res: NextApiResponse, options?: ProfileOptions) => Promise;
/**
* Rollover user's session
*/
touch: (req: NextApiRequest, res: NextApiResponse) => Promise;
/**
* Session handler which returns the current session
*/
getSession: (req: IncomingMessage) => Promise;
/**
* Handle to require authentication for an API route.
*/
requireAuthentication: (apiRoute: IApiRoute) => IApiRoute;
/**
* Token cache which allows you to get an access token for the current user.
*/
tokenCache: (req: IncomingMessage, res: ServerResponse) => ITokenCache;
}