interface ProjectFieldBase { readonly id: string; readonly name: string; } interface SingleSelectField extends ProjectFieldBase { readonly type: 'single_select'; readonly options: ReadonlyArray<{ readonly id: string; readonly name: string; }>; } interface IterationField extends ProjectFieldBase { readonly type: 'iteration'; readonly iterations: ReadonlyArray<{ readonly id: string; readonly title: string; readonly startDate: string; readonly duration: number; }>; } interface TextField extends ProjectFieldBase { readonly type: 'text'; } interface OtherField extends ProjectFieldBase { readonly type: 'other'; } export type ProjectField = SingleSelectField | IterationField | TextField | OtherField; export interface ProjectData { readonly id: string; readonly title: string; readonly fields: ReadonlyArray; } export interface IssueContent { readonly type: 'Issue'; readonly number: number; readonly title: string; readonly body: string; readonly state: string; readonly url: string; readonly labels: ReadonlyArray; } export interface DraftIssueContent { readonly type: 'DraftIssue'; readonly title: string; readonly body: string; } export type ProjectItemContent = IssueContent | DraftIssueContent; export interface ProjectItem { readonly id: string; readonly type: 'ISSUE' | 'DRAFT_ISSUE'; readonly databaseId: number; readonly fieldValues: ReadonlyArray<{ readonly field: string; readonly value: string; }>; readonly content: ProjectItemContent; } export declare class ProjectService { private octokit; private owner; private repo; private projectNumber; private _project?; private _items?; constructor(token: string, owner: string, repo: string, projectNumber: number); getProject(): Promise; listProjectItems(): Promise; updateItemStatus(itemId: string, statusName: string, statusFieldName?: string): Promise; getItemByDatabaseId(databaseId: number): Promise; getItemByIssueNumber(issueNumber: number): Promise; private getRepositoryId; convertDraftToIssue(itemId: string): Promise<{ number: number; title: string; url: string; }>; getFieldOptionId(fieldName: string, optionName: string): Promise<{ fieldId: string; optionId: string; }>; } export {};