/** * Core TypeScript types for ticket-mate */ /** * Jira Authentication Mode */ export type JiraAuthMode = 'token' | 'oauth'; /** * Jira Authentication Context */ export interface JiraAuthContext { mode: JiraAuthMode; host?: string; email?: string; apiToken?: string; cloudId?: string; accessToken?: string; projectKey?: string; epicKey?: string; label?: string; webhookSecret?: string; epicLinkFieldId?: string; acceptanceCriteriaFieldId?: string | null; useCloudApi?: boolean; transitions?: { todo?: string; inProgress?: string; inReview?: string; done?: string; }; ai?: { model?: string; repoPath?: string; allowCommands?: string[]; }; } /** * Jira Configuration (legacy - for backwards compatibility) */ export interface JiraConfig { baseUrl: string; email: string; apiToken?: string; projectKey?: string; epicKey?: string; label?: string; webhookSecret?: string; epicLinkFieldId?: string; acceptanceCriteriaFieldId?: string | null; cloudId?: string; useCloudApi?: boolean; defaultReporter?: string; transitions?: { todo?: string; inProgress?: string; inReview?: string; done?: string; }; ai?: { model?: string; repoPath?: string; allowCommands?: string[]; }; } /** * Jira Issue */ export interface JiraIssue { id: string; key: string; self: string; fields: { summary?: string; description?: string | any; status?: { id: string; name: string; statusCategory?: { id: number; key: string; name: string; }; }; issuetype?: { id: string; name: string; iconUrl?: string; }; priority?: { id: string; name: string; }; labels?: string[]; assignee?: { accountId: string; displayName: string; emailAddress?: string; }; reporter?: { accountId: string; displayName: string; emailAddress?: string; }; comment?: { comments: Array<{ id: string; body: string | any; author: { accountId: string; displayName: string; emailAddress?: string; }; created: string; }>; }; attachment?: Array<{ id: string; filename: string; content: string; thumbnail?: string; mimeType: string; size: number; }>; [key: string]: unknown; }; } /** * JQL Autocomplete Data */ export interface JqlAutocompleteData { visibleFieldNames: Array<{ value: string; displayName: string; auto?: string; orderable?: string; searchable?: string; operators?: string[]; types?: string[]; }>; visibleFunctionNames: Array<{ value: string; displayName: string; types?: string[]; isList?: string; supportsList?: string; }>; jqlReservedWords: string[]; } /** * JQL Parse Result */ export interface JqlParseResult { queries: string[]; structure: { where: string; }; errors: string[]; } /** * JQL Sanitize Result */ export interface JqlSanitizeResult { sanitizedQueries: string[]; accountIds: string[]; errors: Array<{ message: string; line?: number; column?: number; }>; } /** * Jira Epic */ export interface JiraEpic { id: string; key: string; fields: { summary: string; [key: string]: unknown; }; } /** * Jira Transition */ export interface JiraTransition { id: string; name: string; to: { id: string; name: string; statusCategory: { id: number; key: string; name: string; }; }; } /** * Jira Comment */ export interface JiraComment { id: string; body: string | any; created: string; updated?: string; author: { accountId: string; displayName: string; emailAddress?: string; }; } /** * Issue Type Mapping */ export interface IssueTypeMapping { bug_report: string; technical_issue: string; feature_request: string; sales_question: string; } /** * Priority Mapping */ export interface PriorityMapping { low: string; medium: string; high: string; critical: string; } /** * Progress Ticket File */ export interface ProgressTicketFile { issueKey: string; epicKey?: string; path: string; content: string; lastSynced?: Date; isUpToDate: boolean; } /** * Ticket Prompt Input */ export interface TicketPromptInput { ticketKey: string; markdownPath: string; repoRoot?: string; constraints?: string[]; } /** * Ticket Prompt Output */ export interface TicketPromptOutput { systemPrompt: string; userPrompt: string; metadata: { ticketKey: string; epic?: string; acceptanceCriteria: string[]; implementationNotes?: string; testingExpectations?: string; }; } /** * Pull Request Creator Interface */ export interface PullRequestCreator { createPullRequest(input: { ticketKey: string; branchName: string; baseBranch: string; title: string; body: string; }): Promise<{ url: string; }>; } /** * Sync Result */ export interface SyncResult { success: boolean; ticketsSynced: number; filesCreated: number; filesUpdated: number; errors: Array<{ ticketKey: string; error: string; }>; } /** * Validation Result */ export interface ValidationResult { valid: boolean; reason: string; suggestion?: string; foundKeys?: string[]; } /** * Jira Project */ export interface JiraProject { key: string; name: string; lead?: { displayName: string; }; issueCount?: number; } //# sourceMappingURL=types.d.ts.map