import { Module } from "@intuitionrobotics/ts-common";
import { type BaseIssue, type Config, type IssueType, type JiraIssue, type JiraIssue_Fields, type JiraIssueText, type JiraProject, type JiraQuery } from "./utils.js";
import { type JiraVersion } from "../../shared/version.js";
export declare class JiraModule_Class extends Module<Config> {
    private projects;
    private versions;
    constructor();
    private getHeadersJson;
    private getHeadersForm;
    private getRestUrl;
    private buildHeaders;
    project: {
        query: (projectKey: string) => Promise<JiraProject>;
    };
    version: {
        query: (projectId: string, versionName: string) => Promise<JiraVersion | undefined>;
        create: (projectId: string, versionName: string) => Promise<JiraVersion>;
    };
    comment: {
        add: (issueKey: string, comment: string) => Promise<unknown>;
    };
    issue: {
        query: (query: JiraQuery) => Promise<JiraIssue[]>;
        get: (issueId: string) => Promise<JiraIssue>;
        comment: {
            add: (issueKey: string, comment: string) => Promise<unknown>;
        };
        create: (project: JiraProject, issueType: IssueType, summary: string, descriptions: JiraIssueText[], label?: string[], extraFields?: Partial<JiraIssue_Fields>) => Promise<BaseIssue>;
        update: (issueKey: string, fields: Partial<JiraIssue_Fields>) => Promise<unknown>;
        resolve: (issueKey: string, projectKey: string, versionName: string, _status: string) => Promise<unknown>;
    };
    getIssueTypes: (id: string) => Promise<unknown>;
    query: (query: JiraQuery) => Promise<JiraIssue[]>;
    getIssueRequest: (issueId: string) => Promise<JiraIssue>;
    addIssueAttachment: (issue: string, file: Buffer) => Promise<unknown>;
    private executeFormRequest;
    private executePostRequest;
    private executePutRequest;
    private executeGetRequest;
    private executeRequest;
}
export declare const JiraModule: JiraModule_Class;
//# sourceMappingURL=JiraModule.d.ts.map