/* * Copyright ©️ 2018 Galt•Space Society Construction and Terraforming Company * (Founded by [Nikolai Popeka](https://github.com/npopeka), * [Dima Starodubcev](https://github.com/xhipster), * [Valery Litvin](https://github.com/litvintech) by * [Basic Agreement](http://cyb.ai/QmSAWEG5u5aSsUyMNYuX2A2Eaz4kEuoYWUkVBRdmu9qmct:ipfs)). * * Copyright ©️ 2018 Galt•Core Blockchain Company * (Founded by [Nikolai Popeka](https://github.com/npopeka) and * Galt•Space Society Construction and Terraforming Company by * [Basic Agreement](http://cyb.ai/QmaCiXUmSrP16Gz8Jdzq6AJESY1EAANmmwha15uR3c1bsS:ipfs)). */ import { IContent, IDatabase, IFileCatalogItem, IGroup, IListParams, IPost, IUser, IUserApiKey, IUserLimit } from "../database/interface"; import {IStorage} from "../storage/interface"; import {GeesomeEmitter} from "./v1/events"; export interface IGeesomeApp { config: any; database: IDatabase; storage: IStorage; events: GeesomeEmitter; authorization: any; frontendStorageId; getSecretKey(keyName): Promise; registerUser(email, name, password): Promise; loginUser(usernameOrEmail, password): Promise; updateUser(userId, updateData): Promise; canCreatePostInGroup(userId, groupId); canEditGroup(userId, groupId); isAdminInGroup(userId, groupId): Promise; isMemberInGroup(userId, groupId): Promise; addMemberToGroup(userId, groupId): Promise; removeMemberFromGroup(userId, groupId): Promise; addAdminToGroup(userId, groupId): Promise; removeAdminFromGroup(userId, groupId): Promise; generateUserApiKey(userId, type?): Promise; getUserByApiKey(apiKey): Promise; getUserApiKeys(userId, isDisabled?, search?, listParams?: IListParams): Promise; setUserLimit(adminId, limitData: IUserLimit): Promise; createPost(userId, postData); updatePost(userId, postId, postData); saveData(fileStream, fileName, options); saveDataByUrl(url, options); getFileStream(filePath); checkStorageId(storageId): string; getDataStructure(dataId); getDataStructure(dataId); getMemberInGroups(userId): Promise; getAdminInGroups(userId): Promise; createGroup(userId, groupData): Promise; updateGroup(userId, id, updateData): Promise; getGroup(groupId): Promise; getGroupPosts(groupId, listParams?: IListParams): Promise; getFileCatalogItems(userId, parentItemId, type?, search?, listParams?: IListParams): Promise; getFileCatalogItemsBreadcrumbs(userId, itemId): Promise; getFileCatalogItemsBreadcrumbs(userId, itemId): Promise; getContentsIdsByFileCatalogIds(catalogIds): Promise; createUserFolder(userId, parentItemId, folderName): Promise; addContentToFolder(userId, contentId, folderId): Promise; updateFileCatalogItem(userId, fileCatalogId, updateData): Promise; getAllUserList(adminId, searchString, listParams?: IListParams): Promise; getAllContentList(adminId, searchString, listParams?: IListParams): Promise; getAllGroupList(adminId, searchString, listParams?: IListParams): Promise; getUserLimit(adminId, userId, limitName): Promise; getContent(contentId): Promise; //TODO: define structure getPeers(topic): Promise; //TODO: define structure getIpnsPeers(ipns): Promise; //TODO: define structure getGroupPeers(groupId): Promise; resolveStaticId(staticId): Promise; } export interface IFileCatalogListResponse { list: IFileCatalogItem[]; total: number; } export interface IUserApiKeysListResponse { list: IUserApiKey[]; total: number; }