import { ProjectId, IPerPageParams, IUser } from '../base'; import { ProjectsSort } from '.'; import { ITGitRequestConfig } from '..'; export type IssueState = 'opened' | 'closed'; export type IssuesOrder = 'created_at' | 'updated_at'; export type IssuesSort = ProjectsSort; export interface Issue { labels: string[]; milestone?: any; id: number; project_id: number; title: string; state: string; iid: number; description: string; created_at: string; updated_at: string; author: IUser; assignees: string[]; assignee?: any; } export interface IIssues { ( params: { id: ProjectId; iid?: number; state?: IssueState; labels?: string; milestone?: string; order_by?: IssuesOrder; sort?: IssuesSort; } & IPerPageParams, requestOptions?: ITGitRequestConfig, ): Promise; add: IIssuesAdd; get: IIssuesGet; modify: IIssuesModify; subscribe: IIssuesSubscribe; unsubscribe: IIssuesUnSubscribe; isSubscribe: IIssuesIsSubscribe; notes: IIssuesNotes; } export type IIssuesAdd = ( params: { id: ProjectId; title: string; description?: string; assignee_ids?: string; milestone_id?: number; labels?: string; }, requestOptions?: ITGitRequestConfig, ) => Promise; export type IIssuesGet = ( params: { id: ProjectId; issue_id: number; }, requestOptions?: ITGitRequestConfig, ) => Promise; export type IIssuesModify = ( params: { id: ProjectId; issue_id: number; title?: string; description?: string; assignee_ids?: string; milestone_id?: number; labels?: string; state_event?: 'reopen' | 'close'; }, requestOptions?: ITGitRequestConfig, ) => Promise; export type IIssuesSubscribe = ( params: { id: ProjectId; issue_id: number; }, requestOptions?: ITGitRequestConfig, ) => Promise; export type IIssuesUnSubscribe = ( params: { id: ProjectId; issue_id: number; }, requestOptions?: ITGitRequestConfig, ) => Promise; export type IIssuesIsSubscribe = ( params: { id: ProjectId; issue_id: number; }, requestOptions?: ITGitRequestConfig, ) => Promise; export interface INote { id: number; body: string; attachment?: any; author: IUser; created_at: string; system: boolean; upvote: boolean; downvote: boolean; } export interface IIssuesNotes { ( params: { id: ProjectId; issue_id: number; } & IPerPageParams, requestOptions?: ITGitRequestConfig, ): Promise; add: IIssuesNotesAdd; get: IIssuesNotesGet; modify: IIssuesNotesModify; } export type IIssuesNotesAdd = ( params: { id: ProjectId; issue_id: number; body: string; }, requestOptions?: ITGitRequestConfig, ) => Promise; export type IIssuesNotesGet = ( params: { id: ProjectId; issue_id: number; note_id: number; }, requestOptions?: ITGitRequestConfig, ) => Promise; export type IIssuesNotesModify = ( params: { id: ProjectId; issue_id: number; note_id: number; body: string; }, requestOptions?: ITGitRequestConfig, ) => Promise;