import { URL, URLSearchParams } from 'url'; import type { DateTime } from 'luxon'; import type { SearchParams } from './link.js'; import { FilteredQuery } from './query.js'; import type { Bug, User, History, Comment, CreateCommentContent, CreateBugContent, UpdateBugContent, UpdatedBug, Attachment, CreateAttachmentContent, UpdateAttachmentContent, UpdatedAttachment } from './types.js'; export type { Bug, User, History, Change, Flag, Comment, Attachment, } from './types.js'; export default class BugzillaAPI { private readonly link; constructor(instance: URL | string); constructor(instance: URL | string, apiKey: string); constructor(instance: URL | string, username: string, password: string, restrictLogin?: boolean); version(): Promise; whoami(): Promise; bugHistory(bugId: number | string, since?: DateTime): Promise; searchBugs(query: SearchParams): FilteredQuery; getBugs(ids: (number | string)[]): FilteredQuery; quicksearch(query: string): FilteredQuery; advancedSearch(query: string | URL | Record | [string, string][] | URLSearchParams): FilteredQuery; getComment(commentId: number): Promise; getBugComments(bugId: number): Promise; createComment(bugId: number, comment: string, options?: Partial>): Promise; createBug(bug: CreateBugContent): Promise; updateBug(bugIdOrAlias: number | string, data: UpdateBugContent): Promise; getAttachment(attachmentId: number): Promise; getBugAttachments(bugId: number): Promise; createAttachment(bugId: number, attachment: CreateAttachmentContent): Promise; updateAttachment(attachmentId: number, data: UpdateAttachmentContent): Promise; }