import * as express from "express"; import {AnyCallback} from "../lib/fn"; export type DbCallback = (err?: Error, data?: any) => any; export type BooleanResultCallback = (err?: Error, data?: boolean) => any; export interface IDb { deleteObjectField: (key: string, property: string) => Promise; getObject: (key: string) => Promise<{ [key:string]: string }>; getObjectField: (key: string, property: string, callback?: DbCallback) => Promise; setObjectField: (key: string, property: string, value: string|number, callback?: DbCallback) => Promise; } export interface INodebbRequest extends express.Request { uid: number; } export interface INodebbResponse extends express.Response { append: (key: string, value: string) => any; } export interface IPlugins { hooks: { fire: (key: string, data: any, callback?: AnyCallback) => void; } } export interface IUser { uid: number; username: string; picture?: string; } export interface IUserGroup { name: string; } export interface IUsers { getUsersWithFields: (userids: number[], attributes: string[], currentUser: number) => Promise; isModerator: (uid: number, cid: number) => Promise; isAdminOrGlobalMod: (uid: number) => Promise; } export interface IUserGroups { getUserGroups(uids: number[]): Promise } export interface ITopics { exists: (tid: number) => Promise; getFollowers: (uid: number) => Promise; getTopicField: (tid: number, field: string) => Promise; getTopicsByTids: (tids: number[], uid: number) => Promise; } export interface IMeta { settings: { get: (key: string) => Promise; }; config: any //??? }