import { type JcliConfig } from "./config.js"; interface RequestOptions { method?: string; body?: unknown; query?: Record; } export declare class JiraClient { private config; constructor(config?: JcliConfig); private buildUrl; request(endpoint: string, options?: RequestOptions): Promise; requestRaw(url: string): Promise; downloadAttachment(attachment: JiraAttachment): Promise; getIssue(issueIdOrKey: string, fields?: string, expand?: string): Promise; searchIssues(jql: string, opts?: { fields?: string; maxResults?: number; startAt?: number; expand?: string; }): Promise; getMyself(): Promise; addComment(issueIdOrKey: string, body: string): Promise; transitionIssue(issueIdOrKey: string, transitionId: string): Promise; getTransitions(issueIdOrKey: string): Promise<{ transitions: JiraTransition[]; }>; assignIssue(issueIdOrKey: string, username: string): Promise; getProjectVersions(projectKey: string, opts?: { orderBy?: string; maxResults?: number; startAt?: number; }): Promise; getVersion(versionId: string): Promise; getVersionRelatedIssueCounts(versionId: string): Promise; getVersionUnresolvedIssueCount(versionId: string): Promise; getAllStatuses(): Promise; getStatus(idOrName: string): Promise; getStatusCategories(): Promise; getBoardEpics(boardId: number, opts?: { done?: boolean; maxResults?: number; startAt?: number; }): Promise>; getEpic(epicIdOrKey: string): Promise; getEpicIssues(epicIdOrKey: string, opts?: { jql?: string; fields?: string; maxResults?: number; startAt?: number; }): Promise; getBoards(opts?: { name?: string; maxResults?: number; startAt?: number; }): Promise>; getBoardSprints(boardId: number, opts?: { state?: string; maxResults?: number; startAt?: number; }): Promise>; getSprintIssues(sprintId: number, opts?: { fields?: string; maxResults?: number; startAt?: number; }): Promise; } export interface JiraUser { self: string; key: string; name: string; emailAddress: string; displayName: string; active: boolean; timeZone: string; } export interface JiraIssue { id: string; key: string; self: string; fields: Record & { summary?: string; status?: { name: string; id: string; statusCategory?: JiraStatusCategory; }; assignee?: { displayName: string; name: string; } | null; reporter?: { displayName: string; name: string; } | null; priority?: { name: string; id: string; }; issuetype?: { name: string; id: string; }; created?: string; updated?: string; description?: string; resolution?: { name: string; id: string; } | null; labels?: string[]; fixVersions?: Array<{ id: string; name: string; description?: string; released: boolean; archived: boolean; releaseDate?: string; }>; comment?: { maxResults?: number; total?: number; startAt?: number; comments: Array<{ id: string; author: { displayName: string; }; body: string; created: string; updated: string; }>; }; attachment?: JiraAttachment[]; }; } export interface JiraAttachment { id: string; self: string; filename: string; author: { displayName: string; name: string; }; created: string; size: number; mimeType: string; content: string; thumbnail?: string; } export interface SearchResults { startAt: number; maxResults: number; total: number; issues: JiraIssue[]; } export interface JiraTransition { id: string; name: string; to: { name: string; id: string; }; } export interface JiraVersion { id: string; name: string; description?: string; project?: string; projectId?: number; archived: boolean; released: boolean; overdue?: boolean; startDate?: string; releaseDate?: string; userStartDate?: string; userReleaseDate?: string; self: string; } export interface ProjectVersionPage { maxResults: number; startAt: number; total: number; isLast: boolean; values: JiraVersion[]; } export interface VersionIssueCounts { self: string; issuesFixedCount: number; issuesAffectedCount: number; issueCountWithCustomFieldsShowingVersion: number; } export interface VersionUnresolvedCounts { self: string; issuesUnresolvedCount: number; } export interface JiraStatus { id: string; name: string; description: string; iconUrl?: string; statusCategory?: JiraStatusCategory; self: string; } export interface JiraStatusCategory { id: number; key: string; name: string; colorName: string; self?: string; } export interface JiraBoard { id: number; name: string; type: string; self: string; } export interface JiraSprint { id: number; name: string; state: string; startDate?: string; endDate?: string; completeDate?: string; originBoardId: number; goal?: string; } export interface PaginatedResponse { maxResults: number; startAt: number; total?: number; isLast: boolean; values: T[]; } export interface SprintIssuesResponse { maxResults: number; startAt: number; total: number; issues: JiraIssue[]; } export interface JiraEpic { id: number; key: string; name: string; summary: string; done: boolean; color: { key: string; }; self: string; } export {};