import * as Sequelize from 'sequelize' import * as Promise from 'bluebird' import { SortType } from '../../helpers' import { ResultList } from '../../../shared' import { VideoInstance } from './video-interface' // Don't use barrel, import just what we need import { BlacklistedVideo as FormattedBlacklistedVideo } from '../../../shared/models/videos/video-blacklist.model' export namespace BlacklistedVideoMethods { export type ToFormattedJSON = (this: BlacklistedVideoInstance) => FormattedBlacklistedVideo export type CountTotal = () => Promise export type List = () => Promise export type ListForApi = (start: number, count: number, sort: SortType) => Promise< ResultList > export type LoadById = (id: number) => Promise export type LoadByVideoId = (id: number) => Promise } export interface BlacklistedVideoClass { toFormattedJSON: BlacklistedVideoMethods.ToFormattedJSON countTotal: BlacklistedVideoMethods.CountTotal list: BlacklistedVideoMethods.List listForApi: BlacklistedVideoMethods.ListForApi loadById: BlacklistedVideoMethods.LoadById loadByVideoId: BlacklistedVideoMethods.LoadByVideoId } export interface BlacklistedVideoAttributes { videoId: number Video?: VideoInstance } export interface BlacklistedVideoInstance extends BlacklistedVideoClass, BlacklistedVideoAttributes, Sequelize.Instance { id: number createdAt: Date updatedAt: Date toFormattedJSON: BlacklistedVideoMethods.ToFormattedJSON } export interface BlacklistedVideoModel extends BlacklistedVideoClass, Sequelize.Model {}