/// import { Request, Response, NextFunction } from 'express'; import { PasswordTokenRequest, RefreshTokenRequest } from '../utils/auth-requests'; export declare type Success = { isSuccess: true; value: T; }; export declare type Failure = { isSuccess: false; type: string; error: T; }; export declare function success(value?: T): Success; export declare function failure(type: string, error?: T): Failure; export declare type ModelError = { type: 'ModelError'; message: string; translationKey?: string; translationObject?: any; fieldErrors?: FieldError[]; }; export declare type FieldError = { field: string; message: string; translationKey: string; translationObject?: any; }; export declare type Token = { jti: string; iss: string; sub: string; exp: number; iat: number; name: string; permissions: string; }; export declare type IdentityUser = { _id: string; email: string; permissions: string; }; export declare type TokenRequest = PasswordTokenRequest | RefreshTokenRequest; export declare type IdentityConfig = { issuer: string; secretKey: string; tokenExpiration: number; refreshTokenExpiration: number; }; export declare type TokenData = { token: Token; signedToken: string; refreshToken: string; refreshTokenExpiration: Date; identity: IdentityUser; clientId: string; }; export declare type RefreshToken = { refreshToken: string; expires: Date; userId: string; clientId: string; }; export declare const ensureToken: (req: Request & { token: string; }, res: Response, next: NextFunction) => void; export declare class Identity { private configuration; constructor(configuration: IdentityConfig); grant(): (req: Request, res: Response, next: NextFunction) => Promise; decodeToken(): (req: any, _: any, next: NextFunction) => void; private renderResponse(_, res, next); private grantRefreshToken(); private grantPassword(); private generateToken(identity, clientId); private generateAccessToken(user); private signToken(token); validatePasswordTokenRequest(request: PasswordTokenRequest): Success | Failure; validateRefreshTokenRequest(request: RefreshTokenRequest): Success | Failure; loadUser(request: PasswordTokenRequest): Promise | Failure | Failure>; loadUserForRefreshToken(request: RefreshToken): Promise | Failure | Failure>; saveAccessToken(signedAccessToken: string, clientId: string, expires: Date, user: IdentityUser): Promise; saveRefreshToken(refreshToken: string, clientId: string, expires: Date, user: IdentityUser): Promise; loadRefreshToken(refreshToken: string, clientId: string): Promise; removeTokens(identity: IdentityUser, clientId: string): Promise; removeRefreshToken(token: string): Promise; removeAccessToken(accessToken: string): Promise; validateRefreshToken(refreshToken: RefreshToken): Success | Failure | Failure | Failure; }