///
import * as express from 'express';
import { Client } from './models/client';
import { Token } from './models/token';
export { Client } from './models/client';
export { Token } from './models/token';
export { OAuth2FrameworkRouter } from './router';
export { OAuth2FrameworkError } from './models/oauth2-error';
export declare class OAuth2Framework {
model: {
findClient(client_id: string, request: express.Request): Promise;
generateAccessToken(client_id: string, userName: string, scopes: string[], request: express.Request): Promise;
generateCode(client_id: string, userName: string, scopes: string[], request: express.Request): Promise;
register(client_id: string, emailAddress: string, userName: string, password: string, request: express.Request): Promise;
resetPassword(client_id: string, userName: string, password: string, request: express.Request): Promise;
sendForgotPasswordEmail(client_id: string, userName: string, resetPasswordUrl: string, request: express.Request): Promise;
sendVerificationEmail(client_id: string, emailAddress: string, userName: string, verificationUrl: string, request: express.Request): Promise;
validateAccessToken(access_token: string, request: express.Request): Promise;
validateCode(code: string, request: express.Request): Promise;
validateCredentials(client_id: string, userName: string, password: string, request: express.Request): Promise;
verify(client_id: string, userName: string, request: express.Request): Promise;
};
secret: string;
constructor(model: {
findClient(client_id: string, request: express.Request): Promise;
generateAccessToken(client_id: string, userName: string, scopes: string[], request: express.Request): Promise;
generateCode(client_id: string, userName: string, scopes: string[], request: express.Request): Promise;
register(client_id: string, emailAddress: string, userName: string, password: string, request: express.Request): Promise;
resetPassword(client_id: string, userName: string, password: string, request: express.Request): Promise;
sendForgotPasswordEmail(client_id: string, userName: string, resetPasswordUrl: string, request: express.Request): Promise;
sendVerificationEmail(client_id: string, emailAddress: string, userName: string, verificationUrl: string, request: express.Request): Promise;
validateAccessToken(access_token: string, request: express.Request): Promise;
validateCode(code: string, request: express.Request): Promise;
validateCredentials(client_id: string, userName: string, password: string, request: express.Request): Promise;
verify(client_id: string, userName: string, request: express.Request): Promise;
}, secret: string);
accessTokenRequest(grant_type: string, code: string, redirect_uri: string, client_id: string, client_secret: string, userName: string, password: string, scopes: string[], request: express.Request): Promise;
authorizationRequest(response_type: string, client_id: string, redirect_uri: string, scopes: string[], state: string, userName: string, password: string, request: express.Request): Promise;
validateAccessToken(access_token: string, request: express.Request): Promise;
decodeAccessToken(access_token: string, request: express.Request): Promise;
forgotPasswordRequest(client_id: string, userName: string, response_type: string, redirect_uri: string, state: string, request: express.Request): Promise;
emailVerificationRequest(token: string, request: express.Request): Promise;
registerRequest(client_id: string, emailAddress: string, userName: string, password: string, response_type: string, redirect_uri: string, state: string, request: express.Request): Promise;
resetPasswordRequest(token: string, password: string, request: express.Request): Promise;
decodeResetPasswordToken(token: string): Promise;
decodeEmailVerificationToken(token: string): Promise;
private decodeJWT(jwt);
private findClientAndValidate(client_id, redirect_uri, scopes, request);
private generateEmailVerificationToken(client_id, userName, return_url);
private generateResetPasswordToken(client_id, userName, return_url);
private throwIfClientDoesNotContainScope(client, scopes);
private throwIfClientDoesNotContainUri(client, uri);
private throwIfClientDoesNotMatchClientSecret(client, client_secret);
private throwIfClientNull(client);
private throwIfInvalidCredentials(validCredentials);
private throwIfInvalidGrantType(grant_type);
private throwIfInvalidResponseType(response_type);
}