import { BaseResource } from '@gitbeaker/requester-utils'; import { RequestHelper, endpoint } from '../infrastructure'; import type { Camelize, GitlabAPIResponse, PaginationRequestOptions, PaginationTypes, ShowExpanded, Sudo, } from '../infrastructure'; import type { DiscussionNotePositionSchema } from '../templates/ResourceDiscussions'; export type MergeRequestDraftNotePositionSchema = DiscussionNotePositionSchema & { line_range?: number; }; export interface MergeRequestDraftNoteSchema extends Record { id: number; author_id: number; merge_request_id: number; resolve_discussion: boolean; discussion_id?: number; note: string; commit_id?: number; line_code?: number; position: MergeRequestDraftNotePositionSchema; } export class MergeRequestDraftNotes extends BaseResource { all( projectId: string | number, mergerequestIId: number, options?: PaginationRequestOptions

& Sudo & ShowExpanded, ): Promise> { return RequestHelper.get()( this, endpoint`projects/${projectId}/merge_requests/${mergerequestIId}/draft_notes`, options, ); } create( projectId: string | number, mergerequestIId: number, note: string, options?: { commitId?: string; inReplyToDiscussionId?: number; resolveDiscussion?: boolean; position?: Camelize; } & Sudo & ShowExpanded, ): Promise> { return RequestHelper.post()( this, endpoint`projects/${projectId}/merge_requests/${mergerequestIId}/draft_notes`, { ...options, note, }, ); } edit( projectId: string | number, mergerequestIId: number, draftNoteId: number, options?: { note?: string; position?: Camelize } & Sudo & ShowExpanded, ): Promise> { return RequestHelper.post()( this, endpoint`projects/${projectId}/merge_requests/${mergerequestIId}/draft_notes/${draftNoteId}`, options, ); } publish( projectId: string | number, mergerequestIId: number, draftNoteId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.put()( this, endpoint`projects/${projectId}/merge_requests/${mergerequestIId}/draft_notes/${draftNoteId}/publish`, options, ); } publishBulk( projectId: string | number, mergerequestIId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.post()( this, endpoint`projects/${projectId}/merge_requests/${mergerequestIId}/draft_notes/bulk_publish`, options, ); } remove( projectId: string | number, mergerequestIId: number, draftNoteId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.del()( this, endpoint`projects/${projectId}/merge_requests/${mergerequestIId}/draft_notes/${draftNoteId}`, options, ); } show( projectId: string | number, mergerequestIId: number, draftNoteId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.get()( this, endpoint`projects/${projectId}/merge_requests/${mergerequestIId}/draft_notes/${draftNoteId}`, options, ); } }