import * as Sequelize from 'sequelize' import * as Promise from 'bluebird' import { UserModel } from '../user' export type OAuthTokenInfo = { refreshToken: string refreshTokenExpiresAt: Date, client: { id: number }, user: { id: number } } export namespace OAuthTokenMethods { export type GetByRefreshTokenAndPopulateClient = (refreshToken: string) => Promise export type GetByTokenAndPopulateUser = (bearerToken: string) => Promise export type GetByRefreshTokenAndPopulateUser = (refreshToken: string) => Promise export type RemoveByUserId = (userId) => Promise } export interface OAuthTokenClass { getByRefreshTokenAndPopulateClient: OAuthTokenMethods.GetByRefreshTokenAndPopulateClient getByTokenAndPopulateUser: OAuthTokenMethods.GetByTokenAndPopulateUser getByRefreshTokenAndPopulateUser: OAuthTokenMethods.GetByRefreshTokenAndPopulateUser removeByUserId: OAuthTokenMethods.RemoveByUserId } export interface OAuthTokenAttributes { accessToken: string accessTokenExpiresAt: Date refreshToken: string refreshTokenExpiresAt: Date userId?: number oAuthClientId?: number User?: UserModel } export interface OAuthTokenInstance extends OAuthTokenClass, OAuthTokenAttributes, Sequelize.Instance { id: number createdAt: Date updatedAt: Date } export interface OAuthTokenModel extends OAuthTokenClass, Sequelize.Model {}