import CNShell from "cn-shell";
interface AuthDetails {
    username: string;
    password: string;
}
interface FieldDict {
    byName: {
        [key: string]: {
            id: string;
            type: string;
            itemType: string;
        };
    };
    byId: {
        [key: string]: {
            name: string;
            type: string;
            itemType: string;
        };
    };
}
interface JqlResults {
    startAt: number;
    maxResults: number;
    total: number;
    issues: {
        key: string;
    }[];
}
declare class CNJira extends CNShell {
    private _server;
    private _user;
    private _password;
    private _jiraSessionId;
    private _refreshPeriod;
    private _timeout;
    private _resourceUrls;
    private _fieldDict;
    constructor(name: string, master?: CNShell);
    start(): Promise<boolean>;
    stop(): Promise<void>;
    healthCheck(): Promise<boolean>;
    login(auth?: AuthDetails): Promise<void>;
    logout(): Promise<void>;
    getFieldDict(update?: boolean): Promise<FieldDict>;
    getAllowedFieldValues(projectKey: string, issueType: string, fieldName: string): Promise<string[]>;
    getComponents(projectKey: string): Promise<{
        [key: string]: string;
    }>;
    getProjects(component?: string): Promise<any[]>;
    updateProject(project: string, data: {
        [key: string]: string;
    }): Promise<void>;
    updateProjectLead(project: string, lead: string): Promise<void>;
    createIssue(projectKey: string, issueType: string, component: string, fields: {
        [key: string]: any;
    }): Promise<string>;
    updateIssue(key: string, fields: {
        [key: string]: any;
    }, notifyUsers?: boolean): Promise<string>;
    getIssue(idOrKey: string): Promise<any>;
    issueReporter(key: string, reporter: string, notifyUsers?: boolean): Promise<void>;
    assignIssue(key: string, assignee: string, notifyUsers?: boolean): Promise<void>;
    updateLabels(key: string, action: "add" | "remove", labels: string[], notifyUsers?: boolean): Promise<string>;
    addComment(idOrKey: string, comment: string): Promise<void>;
    addWatcher(idOrKey: string, watcher: string): Promise<void>;
    removeWatcher(idOrKey: string, watcher: string): Promise<void>;
    getTransitions(idOrKey: string): Promise<{
        [key: string]: string;
    }>;
    doTransition(idOrKey: string, transitionIdOrName: string, fields?: string[], comment?: string): Promise<void>;
    runJql(jql: string): Promise<any[]>;
    jqlGetAll(jql: string): Promise<string[]>;
    getUserDashboardIds(userId: string): Promise<number[]>;
    getUserFilterIds(userId: string): Promise<string[]>;
    migrateDashboards(fromUserId: string, toUserId: string, dashboardIds: number[]): Promise<void>;
    migrateFilters(fromUserId: string, toUserId: string, filterIds: string[]): Promise<void>;
    getUser(user: string, byKey: boolean, includeGroups?: boolean): Promise<any>;
    addUserToGroup(user: string, group: string): Promise<Object>;
    getUserGroups(user: string): Promise<string[]>;
    addUserToApplication(user: string, applicationKey: string): Promise<void>;
}
export { CNJira, AuthDetails, FieldDict, JqlResults };
