import { ITGitRequestConfig } from '.'; import { IProject, IPerPageParams, ProjectId, AccessLevel, IGroupUser } from './base'; export interface IGroupsInfo { id: ProjectId; name: string; path: string; web_url: string; description: string; avatar_url: string | null; projects?: IProject[]; full_name: string; full_path: string; parent_id: ProjectId; sub_projects?: IProject[]; } export interface IGroups { (params: IPerPageParams, requestOptions?: ITGitRequestConfig): Promise; add: IGroupsAdd; get: IGroupsGet; delete: IGroupsDelete; members: IGroupsMembers; } export type IGroupsAdd = ( params: { name: string; path: string; description: string; }, requestOptions?: ITGitRequestConfig, ) => Promise; export type IGroupsGet = ( params: { id: ProjectId }, requestOptions?: ITGitRequestConfig, ) => Promise< IGroupsInfo & { projects: IProject[]; } >; export type IGroupsDelete = (params: { id: ProjectId }, requestOptions?: ITGitRequestConfig) => Promise; export interface IGroupsMembers { (params: { id: ProjectId } & IPerPageParams, requestOptions?: ITGitRequestConfig): Promise; add: IGroupsMembersAdd; modify: IGroupsMembersModify; delete: IGroupsMembersDelete; } export interface IGroupsMembersParams { id: ProjectId; user_id: number; } export type IGroupsMembersAdd = ( params: { access_level: AccessLevel } & IGroupsMembersParams, requestOptions?: ITGitRequestConfig, ) => Promise; export type IGroupsMembersModify = ( params: { access_level: AccessLevel } & IGroupsMembersParams, requestOptions?: ITGitRequestConfig, ) => Promise; export type IGroupsMembersDelete = (params: IGroupsMembersParams, requestOptions?: ITGitRequestConfig) => Promise;